Skip to content

Commit 4d276f3

Browse files
committed
Add CriticalSection to PresentSurface()
1 parent f47bc0b commit 4d276f3

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

Dllmain/BuildNo.rc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
#define BUILD_NUMBER 8103
1+
#define BUILD_NUMBER 8104

ddraw/IDirectDrawSurfaceX.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5442,6 +5442,17 @@ HRESULT m_IDirectDrawSurfaceX::PresentSurface(LPRECT lpDestRect, bool IsSkipScen
54425442
m_IDirectDrawSurfaceX* lpDDSrcSurfaceX = ddrawParent->GetPrimarySurface();
54435443
if (lpDDSrcSurfaceX)
54445444
{
5445+
bool ShouldLeaveCriticalSection = false;
5446+
if (GetCriticalSection() != DdrawWrapper::GetDDCriticalSection())
5447+
{
5448+
if (TryEnterCriticalSection(DdrawWrapper::GetDDCriticalSection()) == FALSE)
5449+
{
5450+
return DD_OK;
5451+
}
5452+
ShouldLeaveCriticalSection = true;
5453+
}
5454+
ScopedLeaveCriticalSection ThreadLock(DdrawWrapper::GetDDCriticalSection(), ShouldLeaveCriticalSection);
5455+
54455456
return lpDDSrcSurfaceX->PresentSurface(lpDestRect, IsSkipScene);
54465457
}
54475458
}

0 commit comments

Comments
 (0)