Skip to content

Commit 1db86b6

Browse files
authored
fix(recording): expand locks for OutputMirror in CaptureBlt hook (#154)
It's necessary to expand the lock around `OutputMirror` re-initialization, otherwise we _regularly_ crash when resizing the client.
1 parent c66219f commit 1db86b6

1 file changed

Lines changed: 3 additions & 2 deletions

File tree

dll/ApiHooks.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,8 @@ bool WINAPI MsRdpEx_CaptureBlt(
471471

472472
MsRdpEx_OutputMirror_GetFrameSize(outputMirror, &frameWidth, &frameHeight);
473473

474+
MsRdpEx_OutputMirror_Lock(outputMirror);
475+
474476
if ((frameWidth != bitmapWidth) || (frameHeight != bitmapHeight))
475477
{
476478
MsRdpEx_OutputMirror_Uninit(outputMirror);
@@ -479,11 +481,10 @@ bool WINAPI MsRdpEx_CaptureBlt(
479481
MsRdpEx_OutputMirror_Init(outputMirror);
480482
}
481483

482-
MsRdpEx_OutputMirror_Lock(outputMirror);
483484
HDC hShadowDC = MsRdpEx_OutputMirror_GetShadowDC(outputMirror);
484485
BitBlt(hShadowDC, dstX, dstY, width, height, hdcSrc, srcX, srcY, SRCCOPY);
485-
MsRdpEx_OutputMirror_Unlock(outputMirror);
486486
MsRdpEx_OutputMirror_DumpFrame(outputMirror);
487+
MsRdpEx_OutputMirror_Unlock(outputMirror);
487488

488489
captured = true;
489490
end:

0 commit comments

Comments
 (0)