mirror of
https://github.com/SourMesen/Mesen2.git
synced 2024-05-11 17:15:36 -04:00
Linux: Fixed video freezing after power cycle/reload rom
This commit is contained in:
parent
9f8c22b434
commit
9af571cac8
|
@ -45,5 +45,6 @@ class IRenderingDevice
|
|||
virtual void ClearFrame() = 0;
|
||||
virtual void Render(RenderSurfaceInfo& emuHud, RenderSurfaceInfo& scriptHud) = 0;
|
||||
virtual void Reset() = 0;
|
||||
virtual void OnRendererThreadStarted() {}
|
||||
virtual void SetExclusiveFullscreenMode(bool fullscreen, void* windowHandle) = 0;
|
||||
};
|
|
@ -69,6 +69,10 @@ void VideoRenderer::StopThread()
|
|||
|
||||
void VideoRenderer::RenderThread()
|
||||
{
|
||||
if(_renderer) {
|
||||
_renderer->OnRendererThreadStarted();
|
||||
}
|
||||
|
||||
while(!_stopFlag.load()) {
|
||||
//Wait until a frame is ready, or until 32ms have passed (to allow HUD to update at ~30fps when paused)
|
||||
bool forceRender = _waitForRender.Wait(32);
|
||||
|
|
|
@ -106,6 +106,13 @@ void SdlRenderer::Cleanup()
|
|||
}
|
||||
}
|
||||
|
||||
void SdlRenderer::OnRendererThreadStarted()
|
||||
{
|
||||
//SDL stops working if the rendering moves to a new thread
|
||||
//Reset everything to make it work again
|
||||
Reset();
|
||||
}
|
||||
|
||||
void SdlRenderer::Reset()
|
||||
{
|
||||
Cleanup();
|
||||
|
|
|
@ -66,6 +66,7 @@ public:
|
|||
void UpdateFrame(RenderedFrame& frame) override;
|
||||
void Render(RenderSurfaceInfo& emuHud, RenderSurfaceInfo& scriptHud) override;
|
||||
void Reset() override;
|
||||
void OnRendererThreadStarted() override;
|
||||
|
||||
void SetExclusiveFullscreenMode(bool fullscreen, void* windowHandle) override;
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue