From 77bc2f1b8895b4e3de3b2ee3434c7d5ead5d1ca1 Mon Sep 17 00:00:00 2001 From: Jared Goodwin Date: Sun, 5 Apr 2020 15:08:20 -0700 Subject: [PATCH] Get first frame on dx init. --- ScreenCast.Win/Services/ScreenCapturerWin.cs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/ScreenCast.Win/Services/ScreenCapturerWin.cs b/ScreenCast.Win/Services/ScreenCapturerWin.cs index eb97fbdf..295d23bf 100644 --- a/ScreenCast.Win/Services/ScreenCapturerWin.cs +++ b/ScreenCast.Win/Services/ScreenCapturerWin.cs @@ -214,8 +214,7 @@ namespace Remotely.ScreenCast.Win.Services // TODO: Get dirty rects. //RawRectangle[] dirtyRectsBuffer = new RawRectangle[duplicateFrameInformation.TotalMetadataBufferSize]; //duplicatedOutput.GetFrameDirtyRects(duplicateFrameInformation.TotalMetadataBufferSize, dirtyRectsBuffer, out var dirtyRectsSizeRequired); - - + // copy resource into memory that can be accessed by the CPU using (var screenTexture2D = screenResource.QueryInterface()) { @@ -301,12 +300,15 @@ namespace Remotely.ScreenCast.Win.Services }; var texture2D = new Texture2D(device, textureDesc); + var duplicatedOutput = output1.DuplicateOutput(device); + duplicatedOutput.TryAcquireNextFrame(50, out _, out _); + duplicatedOutput.ReleaseFrame(); directxScreens.Add( output1.Description.DeviceName, - new DirectXOutput(adapter, - device, - output1.DuplicateOutput(device), + new DirectXOutput(adapter, + device, + duplicatedOutput, texture2D)); } catch (Exception ex)