Minor fixes

This commit is contained in:
MaxXor 2015-07-29 00:12:31 +02:00
parent 889f16a60e
commit 5ead60e571
2 changed files with 23 additions and 44 deletions

View File

@ -126,24 +126,22 @@ public void UpdateImage(Bitmap bmp, bool cloneBitmap = false)
lock (_imageLock)
{
if (GetImageSafe != null)
{
GetImageSafe.Dispose();
GetImageSafe = null;
}
// get old image to dispose it correctly
var oldImage = GetImageSafe;
SuspendLayout();
GetImageSafe = cloneBitmap ? new Bitmap(bmp, Width, Height) /*resize bitmap*/ : bmp;
ResumeLayout();
if (oldImage != null)
oldImage.Dispose();
}
}
catch (InvalidOperationException)
{
}
catch (Exception ex)
catch (Exception)
{
MessageBox.Show(
string.Format(
"An unexpected error occurred: {0}\n\nPlease report this as fast as possible here:\\https://github.com/MaxXor/xRAT/issues",
ex.Message), "", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

View File

@ -63,37 +63,20 @@ public void ProcessScreens(object state)
}
if (_connectClient.Value.StreamCodec == null)
{
_connectClient.Value.StreamCodec = new UnsafeStreamCodec(packet.Quality, packet.Monitor, packet.Resolution);
}
else if (_connectClient.Value.StreamCodec.ImageQuality != packet.Quality || _connectClient.Value.StreamCodec.Monitor != packet.Monitor)
if (_connectClient.Value.StreamCodec.ImageQuality != packet.Quality || _connectClient.Value.StreamCodec.Monitor != packet.Monitor
|| _connectClient.Value.StreamCodec.Resolution != packet.Resolution)
{
if (string.Compare(_connectClient.Value.StreamCodec.Resolution, packet.Resolution, StringComparison.InvariantCultureIgnoreCase) != 0)
{
if (_connectClient.Value.StreamCodec != null)
_connectClient.Value.StreamCodec.Dispose();
}
_connectClient.Value.StreamCodec = new UnsafeStreamCodec(packet.Quality, packet.Monitor, packet.Resolution);
}
using (MemoryStream ms = new MemoryStream(packet.Image))
{
try
{
// update the new image from the packet data
picDesktop.UpdateImage(_connectClient.Value.StreamCodec.DecodeData(ms), true);
this.Invoke((MethodInvoker)delegate
{
if (picDesktop != null && !picDesktop.IsDisposed)
{
picDesktop.Invalidate();
}
});
}
catch
{
}
picDesktop.UpdateImage(_connectClient.Value.StreamCodec.DecodeData(ms), true);
}
packet.Image = null;
@ -114,22 +97,20 @@ public void AddMonitors(int monitors)
catch (InvalidOperationException)
{
}
catch (Exception ex)
{
MessageBox.Show(
string.Format(
"An unexpected error occurred: {0}\n\nPlease report this as fast as possible here:\\https://github.com/MaxXor/xRAT/issues",
ex.Message), "", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
// Update on frame change.
private void _frameCounter_FrameUpdated(FrameUpdatedEventArgs e)
{
this.Invoke((MethodInvoker)delegate
try
{
this.Text = string.Format("{0} - FPS: {1}", WindowHelper.GetWindowTitle("Remote Desktop", _connectClient), e.CurrentFramesPerSecond.ToString("0.00"));
});
this.Invoke((MethodInvoker)delegate
{
this.Text = string.Format("{0} - FPS: {1}", WindowHelper.GetWindowTitle("Remote Desktop", _connectClient), e.CurrentFramesPerSecond.ToString("0.00"));
});
}
catch (InvalidOperationException)
{
}
}
private void ToggleControls(bool t)