diff --git a/Desktop.Core/Services/ScreenCaster.cs b/Desktop.Core/Services/ScreenCaster.cs index 97dde1f3..a3cd2eba 100644 --- a/Desktop.Core/Services/ScreenCaster.cs +++ b/Desktop.Core/Services/ScreenCaster.cs @@ -119,8 +119,12 @@ namespace Remotely.Desktop.Core.Services viewer.ThrottleIfNeeded(); - previousFrame?.Dispose(); - previousFrame = (Bitmap)currentFrame?.Clone(); + if (currentFrame != null) + { + previousFrame?.Dispose(); + previousFrame = (Bitmap)currentFrame.Clone(); + } + currentFrame?.Dispose(); currentFrame = viewer.Capturer.GetNextFrame(); diff --git a/Desktop.Core/Utilities/ImageUtils.cs b/Desktop.Core/Utilities/ImageUtils.cs index dfc3c98b..cc5c7b36 100644 --- a/Desktop.Core/Utilities/ImageUtils.cs +++ b/Desktop.Core/Utilities/ImageUtils.cs @@ -21,6 +21,11 @@ namespace Remotely.Desktop.Core.Utilities public static Rectangle GetDiffArea(Bitmap currentFrame, Bitmap previousFrame, bool captureFullscreen) { + if (currentFrame == null || previousFrame == null) + { + return Rectangle.Empty; + } + if (captureFullscreen) { return new Rectangle(new Point(0, 0), currentFrame.Size); diff --git a/Desktop.Linux/Services/ScreenCapturerLinux.cs b/Desktop.Linux/Services/ScreenCapturerLinux.cs index 11eec973..4ab08d05 100644 --- a/Desktop.Linux/Services/ScreenCapturerLinux.cs +++ b/Desktop.Linux/Services/ScreenCapturerLinux.cs @@ -24,7 +24,7 @@ namespace Remotely.Desktop.Linux.Services public event EventHandler ScreenChanged; - public bool CaptureFullscreen { get; set; } + public bool CaptureFullscreen { get; set; } = true; public Rectangle CurrentScreenBounds { get; private set; } public IntPtr Display { get; private set; } public string SelectedScreen { get; private set; } @@ -81,6 +81,7 @@ namespace Remotely.Desktop.Linux.Services { try { + CaptureFullscreen = true; x11Screens.Clear(); for (var i = 0; i < GetScreenCount(); i++) diff --git a/Desktop.Win/Services/ScreenCapturerWin.cs b/Desktop.Win/Services/ScreenCapturerWin.cs index eeb51d75..1a71f878 100644 --- a/Desktop.Win/Services/ScreenCapturerWin.cs +++ b/Desktop.Win/Services/ScreenCapturerWin.cs @@ -116,6 +116,7 @@ namespace Remotely.Desktop.Win.Services public void Init() { + CaptureFullscreen = true; InitBitBlt(); InitDirectX();