aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.RemoteDesktop/ScreenCaptureEngine.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/Tango.RemoteDesktop/ScreenCaptureEngine.cs')
-rw-r--r--Software/Visual_Studio/Tango.RemoteDesktop/ScreenCaptureEngine.cs43
1 files changed, 25 insertions, 18 deletions
diff --git a/Software/Visual_Studio/Tango.RemoteDesktop/ScreenCaptureEngine.cs b/Software/Visual_Studio/Tango.RemoteDesktop/ScreenCaptureEngine.cs
index 1d7b4d7d4..17f54369c 100644
--- a/Software/Visual_Studio/Tango.RemoteDesktop/ScreenCaptureEngine.cs
+++ b/Software/Visual_Studio/Tango.RemoteDesktop/ScreenCaptureEngine.cs
@@ -136,37 +136,44 @@ namespace Tango.RemoteDesktop
{
watch.Restart();
- var bitmap = CaptureMethod.GetDesktopBitmap(CaptureRegion);
-
- if (CaptureCursor)
+ try
{
- using (Graphics g = Graphics.FromImage(bitmap))
+ var bitmap = CaptureMethod.GetDesktopBitmap(CaptureRegion);
+
+ if (CaptureCursor)
{
- CursorUtils.ApplyCursor(g, bitmap, CaptureRegion.Left, CaptureRegion.Top);
+ using (Graphics g = Graphics.FromImage(bitmap))
+ {
+ CursorUtils.ApplyCursor(g, bitmap, CaptureRegion.Left, CaptureRegion.Top);
+ }
}
- }
- if (EnableComparer && Comparer != null)
- {
- if (_previousBitmap == null)
+ if (EnableComparer && Comparer != null)
{
- _previousBitmap = bitmap.Clone() as Bitmap;
- OnFrameReceived(bitmap, null, 0);
+ if (_previousBitmap == null)
+ {
+ _previousBitmap = bitmap.Clone() as Bitmap;
+ OnFrameReceived(bitmap, null, 0);
+ }
+ else
+ {
+ var result = Comparer.CreateDifference(_previousBitmap, bitmap);
+ _previousBitmap.Dispose();
+ _previousBitmap = bitmap.Clone() as Bitmap;
+ OnFrameReceived(bitmap, result.Frame, result.DifferenceCount);
+ }
}
else
{
- var result = Comparer.CreateDifference(_previousBitmap, bitmap);
- _previousBitmap.Dispose();
- _previousBitmap = bitmap.Clone() as Bitmap;
- OnFrameReceived(bitmap, result.Frame, result.DifferenceCount);
+ OnFrameReceived(bitmap, null, 0);
}
}
- else
+ catch (Exception ex)
{
- OnFrameReceived(bitmap, null, 0);
+ Debug.WriteLine($"Error in screen capture engine: {ex.Message}");
}
- int delay = Math.Max(5, (FrameRate * 10) - (int)watch.ElapsedMilliseconds);
+ int delay = Math.Max(5, (1000 / FrameRate) - (int)watch.ElapsedMilliseconds);
Thread.Sleep(delay);
}
}