mirror of
https://github.com/narzoul/DDrawCompat
synced 2024-12-30 08:55:36 +01:00
Release DirectDraw critical section between GetDC/ReleaseDC
Fixes invisible exit confirmation dialog in Metal Gear Solid (issue #49).
This commit is contained in:
parent
240ddbda57
commit
affc5ab17e
@ -6,6 +6,7 @@
|
||||
#include <DDraw/Surfaces/PrimarySurface.h>
|
||||
#include <DDraw/Surfaces/Surface.h>
|
||||
#include <DDraw/Surfaces/SurfaceImpl.h>
|
||||
#include <Dll/Dll.h>
|
||||
|
||||
namespace DDraw
|
||||
{
|
||||
@ -78,6 +79,7 @@ namespace DDraw
|
||||
if (SUCCEEDED(result))
|
||||
{
|
||||
RealPrimarySurface::waitForFlip(m_data);
|
||||
Dll::g_origProcs.ReleaseDDThreadLock();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@ -159,7 +161,12 @@ namespace DDraw
|
||||
template <typename TSurface>
|
||||
HRESULT SurfaceImpl<TSurface>::ReleaseDC(TSurface* This, HDC hDC)
|
||||
{
|
||||
return s_origVtable.ReleaseDC(This, hDC);
|
||||
HRESULT result = s_origVtable.ReleaseDC(This, hDC);
|
||||
if (SUCCEEDED(result))
|
||||
{
|
||||
Dll::g_origProcs.AcquireDDThreadLock();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template <typename TSurface>
|
||||
|
Loading…
x
Reference in New Issue
Block a user