From 43ea61b53764abdc29e0a7b66c551a17c82ed303 Mon Sep 17 00:00:00 2001 From: MaxXor Date: Wed, 1 Apr 2015 16:24:48 +0200 Subject: [PATCH] Fixed Remote Desktop crash when resizing window --- Server/Core/Commands/CommandHandler.cs | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/Server/Core/Commands/CommandHandler.cs b/Server/Core/Commands/CommandHandler.cs index daf3e76c..c100c3f8 100644 --- a/Server/Core/Commands/CommandHandler.cs +++ b/Server/Core/Commands/CommandHandler.cs @@ -123,7 +123,7 @@ public static void HandleRemoteDesktopResponse(Client client, DesktopResponse pa client.Value.LastDesktop = newScreen; client.Value.FrmRdp.Invoke((MethodInvoker)delegate { - client.Value.FrmRdp.picDesktop.Image = newScreen; + client.Value.FrmRdp.picDesktop.Image = (Bitmap)newScreen.Clone(); }); newScreen = null; } @@ -132,21 +132,14 @@ public static void HandleRemoteDesktopResponse(Client client, DesktopResponse pa { using (MemoryStream ms = new MemoryStream(packet.Image)) { - Bitmap screen = client.Value.StreamCodec.DecodeData(ms); - - Bitmap newScreen = new Bitmap(screen.Width, screen.Height); - - using (Graphics g = Graphics.FromImage(newScreen)) - { - g.DrawImage(client.Value.LastDesktop, 0, 0, newScreen.Width, newScreen.Height); - g.DrawImage(screen, 0, 0, newScreen.Width, newScreen.Height); - } + Bitmap newScreen = client.Value.StreamCodec.DecodeData(ms); client.Value.LastDesktop = newScreen; client.Value.FrmRdp.Invoke((MethodInvoker) delegate { - client.Value.FrmRdp.picDesktop.Image = newScreen; + client.Value.FrmRdp.picDesktop.Image = (Bitmap)newScreen.Clone(); }); + newScreen = null; } }