mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-04 10:03:36 +00:00
Add GLCriticalSection class. Make PluginAPI descendant of GLCriticalSection.
This commit is contained in:
parent
43a148b72c
commit
347e69007b
37
GLCriticalSection.h
Normal file
37
GLCriticalSection.h
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
#ifndef GLCRITICALSECTION_H
|
||||||
|
#define GLCRITICALSECTION_H
|
||||||
|
|
||||||
|
#include <mutex> // std::mutex
|
||||||
|
|
||||||
|
class GLCriticalSection
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void lock()
|
||||||
|
{
|
||||||
|
m_mtx.lock();
|
||||||
|
m_locked = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void unlock()
|
||||||
|
{
|
||||||
|
m_locked = false;
|
||||||
|
m_mtx.unlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isLocked() const {return m_locked;}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
class Lock {
|
||||||
|
public:
|
||||||
|
Lock(GLCriticalSection * _pCS) : m_pCS(_pCS) {m_pCS->lock();}
|
||||||
|
~Lock() {m_pCS->unlock();}
|
||||||
|
private:
|
||||||
|
GLCriticalSection * m_pCS;
|
||||||
|
};
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::mutex m_mtx;
|
||||||
|
bool m_locked;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // GLCRITICALSECTION_H
|
|
@ -345,6 +345,7 @@
|
||||||
<ClInclude Include="FrameBuffer.h" />
|
<ClInclude Include="FrameBuffer.h" />
|
||||||
<ClInclude Include="GBI.h" />
|
<ClInclude Include="GBI.h" />
|
||||||
<ClInclude Include="gDP.h" />
|
<ClInclude Include="gDP.h" />
|
||||||
|
<ClInclude Include="GLCriticalSection.h" />
|
||||||
<ClInclude Include="glext.h" />
|
<ClInclude Include="glext.h" />
|
||||||
<ClInclude Include="GLideN64.h" />
|
<ClInclude Include="GLideN64.h" />
|
||||||
<ClInclude Include="gSP.h" />
|
<ClInclude Include="gSP.h" />
|
||||||
|
|
|
@ -305,6 +305,9 @@
|
||||||
<ClInclude Include="Log.h">
|
<ClInclude Include="Log.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="GLCriticalSection.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ResourceCompile Include="Resource.rc">
|
<ResourceCompile Include="Resource.rc">
|
||||||
|
|
|
@ -7,7 +7,9 @@
|
||||||
#include "ZilmarGFX_1_3.h"
|
#include "ZilmarGFX_1_3.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
class PluginAPI
|
#include "GLCriticalSection.h"
|
||||||
|
|
||||||
|
class PluginAPI : public GLCriticalSection
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// Common
|
// Common
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
|
|
||||||
void PluginAPI::ProcessDList()
|
void PluginAPI::ProcessDList()
|
||||||
{
|
{
|
||||||
|
Lock lock(this);
|
||||||
RSP_ProcessDList();
|
RSP_ProcessDList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,6 +46,7 @@ void PluginAPI::ShowCFB()
|
||||||
|
|
||||||
void PluginAPI::UpdateScreen()
|
void PluginAPI::UpdateScreen()
|
||||||
{
|
{
|
||||||
|
Lock lock(this);
|
||||||
VI_UpdateScreen();
|
VI_UpdateScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
int PluginAPI::InitiateGFX(const GFX_INFO & _gfxInfo)
|
int PluginAPI::InitiateGFX(const GFX_INFO & _gfxInfo)
|
||||||
{
|
{
|
||||||
|
Lock lock(this);
|
||||||
_initiateGFX(_gfxInfo);
|
_initiateGFX(_gfxInfo);
|
||||||
|
|
||||||
Config_LoadConfig();
|
Config_LoadConfig();
|
||||||
|
|
|
@ -14,6 +14,7 @@ BOOL CALLBACK FindToolBarProc( HWND hWnd, LPARAM lParam )
|
||||||
|
|
||||||
int PluginAPI::InitiateGFX(const GFX_INFO & _gfxInfo)
|
int PluginAPI::InitiateGFX(const GFX_INFO & _gfxInfo)
|
||||||
{
|
{
|
||||||
|
Lock lock(this);
|
||||||
_initiateGFX(_gfxInfo);
|
_initiateGFX(_gfxInfo);
|
||||||
|
|
||||||
hWnd = _gfxInfo.hWnd;
|
hWnd = _gfxInfo.hWnd;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user