diff --git a/DDrawCompat/CompatDirectDrawSurface.cpp b/DDrawCompat/CompatDirectDrawSurface.cpp index 7d849d7..3018ed0 100644 --- a/DDrawCompat/CompatDirectDrawSurface.cpp +++ b/DDrawCompat/CompatDirectDrawSurface.cpp @@ -360,6 +360,12 @@ void CompatDirectDrawSurface::initPrimarySurfacePtr(const GUID& guid, } } +template +void CompatDirectDrawSurface::resetPrimarySurfacePtr() +{ + s_compatPrimarySurface = nullptr; +} + template HRESULT STDMETHODCALLTYPE CompatDirectDrawSurface::Blt( TSurface* This, diff --git a/DDrawCompat/CompatDirectDrawSurface.h b/DDrawCompat/CompatDirectDrawSurface.h index 93707cb..de2c5c3 100644 --- a/DDrawCompat/CompatDirectDrawSurface.h +++ b/DDrawCompat/CompatDirectDrawSurface.h @@ -22,6 +22,7 @@ public: static void fixSurfacePtrs(TSurface& surface); static void initPrimarySurfacePtr(const GUID& guid, IUnknown& surface); + static void resetPrimarySurfacePtr(); static void updateSurfaceParams(); static HRESULT STDMETHODCALLTYPE Blt( diff --git a/DDrawCompat/CompatPrimarySurface.cpp b/DDrawCompat/CompatPrimarySurface.cpp index 7bd4a28..29e5fa8 100644 --- a/DDrawCompat/CompatPrimarySurface.cpp +++ b/DDrawCompat/CompatPrimarySurface.cpp @@ -1,4 +1,5 @@ #include "CompatDirectDraw.h" +#include "CompatDirectDrawSurface.h" #include "CompatPrimarySurface.h" #include "IReleaseNotifier.h" #include "RealPrimarySurface.h" @@ -15,6 +16,12 @@ namespace CompatPrimarySurface::pitch = 0; CompatPrimarySurface::surfacePtr = nullptr; + CompatDirectDrawSurface::resetPrimarySurfacePtr(); + CompatDirectDrawSurface::resetPrimarySurfacePtr(); + CompatDirectDrawSurface::resetPrimarySurfacePtr(); + CompatDirectDrawSurface::resetPrimarySurfacePtr(); + CompatDirectDrawSurface::resetPrimarySurfacePtr(); + RealPrimarySurface::release(); } }