diff --git a/DDrawCompat/DDraw/Surfaces/SurfaceImpl.cpp b/DDrawCompat/DDraw/Surfaces/SurfaceImpl.cpp index 45c9101..5266010 100644 --- a/DDrawCompat/DDraw/Surfaces/SurfaceImpl.cpp +++ b/DDrawCompat/DDraw/Surfaces/SurfaceImpl.cpp @@ -6,6 +6,7 @@ #include #include #include +#include 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 HRESULT SurfaceImpl::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