Cocoa Port: Rename class "GPUEventHandlerOSX" to "GPUEventHandlerAsync".
- Also make a stub class of GPUEventHandlerAsync to better control some multithreaded stuff in the OpenEmu plug-in.
This commit is contained in:
parent
180df28ce7
commit
dce04f722f
|
@ -65,7 +65,6 @@ enum ClientDisplayBufferState
|
|||
ClientDisplayBufferState_Reading = 4 // The buffer is currently being read. It cannot be accessed.
|
||||
};
|
||||
|
||||
class GPUEventHandlerOSX;
|
||||
class ClientDisplay3DView;
|
||||
|
||||
#ifdef ENABLE_ASYNC_FETCH
|
||||
|
@ -153,7 +152,7 @@ public:
|
|||
|
||||
#endif // ENABLE_ASYNC_FETCH
|
||||
|
||||
class GPUEventHandlerOSX : public GPUEventHandlerDefault
|
||||
class GPUEventHandlerAsync : public GPUEventHandlerDefault
|
||||
{
|
||||
private:
|
||||
GPUClientFetchObject *_fetchObject;
|
||||
|
@ -165,8 +164,8 @@ private:
|
|||
bool _render3DNeedsFinish;
|
||||
|
||||
public:
|
||||
GPUEventHandlerOSX();
|
||||
~GPUEventHandlerOSX();
|
||||
GPUEventHandlerAsync();
|
||||
~GPUEventHandlerAsync();
|
||||
|
||||
GPUClientFetchObject* GetFetchObject() const;
|
||||
void SetFetchObject(GPUClientFetchObject *fetchObject);
|
||||
|
@ -195,6 +194,14 @@ public:
|
|||
virtual void DidApplyRender3DSettingsEnd();
|
||||
};
|
||||
|
||||
// This stub version is useful for clients that want to run the entire emulation on a single thread.
|
||||
class GPUEventHandlerAsync_Stub : public GPUEventHandlerAsync
|
||||
{
|
||||
public:
|
||||
virtual void DidRender3DBegin() {};
|
||||
virtual void DidRender3DEnd() {};
|
||||
};
|
||||
|
||||
@interface CocoaDSGPU : NSObject
|
||||
{
|
||||
UInt32 gpuStateFlags;
|
||||
|
@ -205,7 +212,7 @@ public:
|
|||
BOOL _needRestoreRender3DLock;
|
||||
|
||||
apple_unfairlock_t _unfairlockGpuState;
|
||||
GPUEventHandlerOSX *gpuEvent;
|
||||
GPUEventHandlerAsync *gpuEvent;
|
||||
|
||||
GPUClientFetchObject *fetchObject;
|
||||
}
|
||||
|
|
|
@ -124,7 +124,11 @@ GPU3DInterface *core3DList[GPU_3D_RENDERER_COUNT+1] = {
|
|||
&OSXOpenGLRendererEnd,
|
||||
&OSXOpenGLRendererFramebufferDidResize);
|
||||
|
||||
gpuEvent = new GPUEventHandlerOSX;
|
||||
#ifdef PORT_VERSION_OS_X_APP
|
||||
gpuEvent = new GPUEventHandlerAsync;
|
||||
#else
|
||||
gpuEvent = new GPUEventHandlerAsync_Stub;
|
||||
#endif
|
||||
GPU->SetEventHandler(gpuEvent);
|
||||
|
||||
fetchObject = NULL;
|
||||
|
@ -1659,7 +1663,7 @@ void MacGPUFetchObjectDisplayLink::DoPostFetchActions()
|
|||
|
||||
#pragma mark -
|
||||
|
||||
GPUEventHandlerOSX::GPUEventHandlerOSX()
|
||||
GPUEventHandlerAsync::GPUEventHandlerAsync()
|
||||
{
|
||||
_fetchObject = nil;
|
||||
_render3DNeedsFinish = false;
|
||||
|
@ -1669,7 +1673,7 @@ GPUEventHandlerOSX::GPUEventHandlerOSX()
|
|||
pthread_mutex_init(&_mutexApplyRender3DSettings, NULL);
|
||||
}
|
||||
|
||||
GPUEventHandlerOSX::~GPUEventHandlerOSX()
|
||||
GPUEventHandlerAsync::~GPUEventHandlerAsync()
|
||||
{
|
||||
if (this->_render3DNeedsFinish)
|
||||
{
|
||||
|
@ -1682,19 +1686,19 @@ GPUEventHandlerOSX::~GPUEventHandlerOSX()
|
|||
pthread_mutex_destroy(&this->_mutexApplyRender3DSettings);
|
||||
}
|
||||
|
||||
GPUClientFetchObject* GPUEventHandlerOSX::GetFetchObject() const
|
||||
GPUClientFetchObject* GPUEventHandlerAsync::GetFetchObject() const
|
||||
{
|
||||
return this->_fetchObject;
|
||||
}
|
||||
|
||||
void GPUEventHandlerOSX::SetFetchObject(GPUClientFetchObject *fetchObject)
|
||||
void GPUEventHandlerAsync::SetFetchObject(GPUClientFetchObject *fetchObject)
|
||||
{
|
||||
this->_fetchObject = fetchObject;
|
||||
}
|
||||
|
||||
#ifdef ENABLE_ASYNC_FETCH
|
||||
|
||||
void GPUEventHandlerOSX::DidFrameBegin(const size_t line, const bool isFrameSkipRequested, const size_t pageCount, u8 &selectedBufferIndexInOut)
|
||||
void GPUEventHandlerAsync::DidFrameBegin(const size_t line, const bool isFrameSkipRequested, const size_t pageCount, u8 &selectedBufferIndexInOut)
|
||||
{
|
||||
MacGPUFetchObjectAsync *asyncFetchObj = (MacGPUFetchObjectAsync *)this->_fetchObject;
|
||||
|
||||
|
@ -1712,7 +1716,7 @@ void GPUEventHandlerOSX::DidFrameBegin(const size_t line, const bool isFrameSkip
|
|||
}
|
||||
}
|
||||
|
||||
void GPUEventHandlerOSX::DidFrameEnd(bool isFrameSkipped, const NDSDisplayInfo &latestDisplayInfo)
|
||||
void GPUEventHandlerAsync::DidFrameEnd(bool isFrameSkipped, const NDSDisplayInfo &latestDisplayInfo)
|
||||
{
|
||||
MacGPUFetchObjectAsync *asyncFetchObj = (MacGPUFetchObjectAsync *)this->_fetchObject;
|
||||
|
||||
|
@ -1733,79 +1737,79 @@ void GPUEventHandlerOSX::DidFrameEnd(bool isFrameSkipped, const NDSDisplayInfo &
|
|||
|
||||
#endif // ENABLE_ASYNC_FETCH
|
||||
|
||||
void GPUEventHandlerOSX::DidRender3DBegin()
|
||||
void GPUEventHandlerAsync::DidRender3DBegin()
|
||||
{
|
||||
this->Render3DLock();
|
||||
this->_render3DNeedsFinish = true;
|
||||
}
|
||||
|
||||
void GPUEventHandlerOSX::DidRender3DEnd()
|
||||
void GPUEventHandlerAsync::DidRender3DEnd()
|
||||
{
|
||||
this->_render3DNeedsFinish = false;
|
||||
this->Render3DUnlock();
|
||||
}
|
||||
|
||||
void GPUEventHandlerOSX::DidApplyGPUSettingsBegin()
|
||||
void GPUEventHandlerAsync::DidApplyGPUSettingsBegin()
|
||||
{
|
||||
this->ApplyGPUSettingsLock();
|
||||
}
|
||||
|
||||
void GPUEventHandlerOSX::DidApplyGPUSettingsEnd()
|
||||
void GPUEventHandlerAsync::DidApplyGPUSettingsEnd()
|
||||
{
|
||||
this->ApplyGPUSettingsUnlock();
|
||||
}
|
||||
|
||||
void GPUEventHandlerOSX::DidApplyRender3DSettingsBegin()
|
||||
void GPUEventHandlerAsync::DidApplyRender3DSettingsBegin()
|
||||
{
|
||||
this->ApplyRender3DSettingsLock();
|
||||
}
|
||||
|
||||
void GPUEventHandlerOSX::DidApplyRender3DSettingsEnd()
|
||||
void GPUEventHandlerAsync::DidApplyRender3DSettingsEnd()
|
||||
{
|
||||
this->ApplyRender3DSettingsUnlock();
|
||||
}
|
||||
|
||||
void GPUEventHandlerOSX::FramebufferLock()
|
||||
void GPUEventHandlerAsync::FramebufferLock()
|
||||
{
|
||||
pthread_mutex_lock(&this->_mutexFrame);
|
||||
}
|
||||
|
||||
void GPUEventHandlerOSX::FramebufferUnlock()
|
||||
void GPUEventHandlerAsync::FramebufferUnlock()
|
||||
{
|
||||
pthread_mutex_unlock(&this->_mutexFrame);
|
||||
}
|
||||
|
||||
void GPUEventHandlerOSX::Render3DLock()
|
||||
void GPUEventHandlerAsync::Render3DLock()
|
||||
{
|
||||
pthread_mutex_lock(&this->_mutex3DRender);
|
||||
}
|
||||
|
||||
void GPUEventHandlerOSX::Render3DUnlock()
|
||||
void GPUEventHandlerAsync::Render3DUnlock()
|
||||
{
|
||||
pthread_mutex_unlock(&this->_mutex3DRender);
|
||||
}
|
||||
|
||||
void GPUEventHandlerOSX::ApplyGPUSettingsLock()
|
||||
void GPUEventHandlerAsync::ApplyGPUSettingsLock()
|
||||
{
|
||||
pthread_mutex_lock(&this->_mutexApplyGPUSettings);
|
||||
}
|
||||
|
||||
void GPUEventHandlerOSX::ApplyGPUSettingsUnlock()
|
||||
void GPUEventHandlerAsync::ApplyGPUSettingsUnlock()
|
||||
{
|
||||
pthread_mutex_unlock(&this->_mutexApplyGPUSettings);
|
||||
}
|
||||
|
||||
void GPUEventHandlerOSX::ApplyRender3DSettingsLock()
|
||||
void GPUEventHandlerAsync::ApplyRender3DSettingsLock()
|
||||
{
|
||||
pthread_mutex_lock(&this->_mutexApplyRender3DSettings);
|
||||
}
|
||||
|
||||
void GPUEventHandlerOSX::ApplyRender3DSettingsUnlock()
|
||||
void GPUEventHandlerAsync::ApplyRender3DSettingsUnlock()
|
||||
{
|
||||
pthread_mutex_unlock(&this->_mutexApplyRender3DSettings);
|
||||
}
|
||||
|
||||
bool GPUEventHandlerOSX::GetRender3DNeedsFinish()
|
||||
bool GPUEventHandlerAsync::GetRender3DNeedsFinish()
|
||||
{
|
||||
return this->_render3DNeedsFinish;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue