diff --git a/Greenshot/Forms/MainForm.cs b/Greenshot/Forms/MainForm.cs index 7c6a6dd3e..c2cf1f5e4 100644 --- a/Greenshot/Forms/MainForm.cs +++ b/Greenshot/Forms/MainForm.cs @@ -407,6 +407,8 @@ namespace Greenshot { if (dataTransport != null) { HandleDataTransport(dataTransport); } + // Make Greenshot use less memory after startup + EmptyWorkingSet(); } /// @@ -1037,6 +1039,13 @@ namespace Greenshot { void Contextmenu_exitClick(object sender, EventArgs e) { Exit(); } + + private void CheckStateChangedHandler(object sender, EventArgs e) { + ToolStripMenuSelectListItem captureMouseItem = sender as ToolStripMenuSelectListItem; + if (captureMouseItem != null) { + _conf.CaptureMousepointer = captureMouseItem.Checked; + } + } /// /// This needs to be called to initialize the quick settings menu entries @@ -1055,9 +1064,7 @@ namespace Greenshot { captureMouseItem.Text = Language.GetString("settings_capture_mousepointer"); captureMouseItem.Checked = _conf.CaptureMousepointer; captureMouseItem.CheckOnClick = true; - captureMouseItem.CheckStateChanged += delegate { - _conf.CaptureMousepointer = captureMouseItem.Checked; - }; + captureMouseItem.CheckStateChanged += CheckStateChangedHandler; contextmenu_quicksettings.DropDownItems.Add(captureMouseItem); } @@ -1371,7 +1378,16 @@ namespace Greenshot { notifyIcon = null; } } - + + /// + /// Make the process use less memory by emptying the working set + /// + private void EmptyWorkingSet() { + using (Process currentProcess = Process.GetCurrentProcess()) { + PsAPI.EmptyWorkingSet(currentProcess.Handle); + } + } + /// /// Do work in the background /// @@ -1380,9 +1396,7 @@ namespace Greenshot { private void BackgroundWorkerTimerTick(object sender, EventArgs e) { if (_conf.MinimizeWorkingSetSize) { LOG.Info("Calling EmptyWorkingSet"); - using (Process currentProcess = Process.GetCurrentProcess()) { - PsAPI.EmptyWorkingSet(currentProcess.Handle); - } + EmptyWorkingSet(); } if (UpdateHelper.IsUpdateCheckNeeded()) { LOG.Debug("BackgroundWorkerTimerTick checking for update");