Skip to content

Commit

Permalink
Merge pull request #439 from cairoshell/reduce-leakage
Browse files Browse the repository at this point in the history
Reduce leakage
  • Loading branch information
josuave committed Sep 26, 2020
2 parents 1f5e9e5 + 5ce37ec commit 4f926c1
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 1 deletion.
3 changes: 2 additions & 1 deletion Cairo Desktop/Cairo Desktop/TaskButton.xaml
Expand Up @@ -5,7 +5,8 @@
x:Class="CairoDesktop.TaskButton"
x:Name="UserControl"
xmlns:support="clr-namespace:CairoDesktop.SupportingClasses"
Loaded="UserControl_Loaded">
Loaded="UserControl_Loaded"
Unloaded="TaskButton_OnUnloaded">
<UserControl.Resources>
<ResourceDictionary>
<support:TaskButtonStyleConverter x:Key="styleConverter" />
Expand Down
6 changes: 6 additions & 0 deletions Cairo Desktop/Cairo Desktop/TaskButton.xaml.cs
Expand Up @@ -122,6 +122,12 @@ private void UserControl_Loaded(object sender, RoutedEventArgs e)
thumbTimer.Tick += thumbTimer_Tick;
}

private void TaskButton_OnUnloaded(object sender, RoutedEventArgs e)
{
Window.PropertyChanged -= Window_PropertyChanged;
Settings.Instance.PropertyChanged -= Instance_PropertyChanged;
}

private void Instance_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e != null && !string.IsNullOrWhiteSpace(e.PropertyName))
Expand Down
1 change: 1 addition & 0 deletions Cairo Desktop/CairoDesktop.Common/IconImageConverter.cs
Expand Up @@ -48,6 +48,7 @@ public static ImageSource GetImageFromHIcon(IntPtr hIcon, bool returnDefault = t
try
{
bs = System.Windows.Interop.Imaging.CreateBitmapSourceFromHIcon(hIcon, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
bs.Freeze();
NativeMethods.DestroyIcon(hIcon);
}
catch
Expand Down
4 changes: 4 additions & 0 deletions Cairo Desktop/CairoDesktop.WindowsTray/NotificationArea.cs
Expand Up @@ -269,9 +269,13 @@ private bool SysTrayCallback(uint message, NOTIFYICONDATA nicData)
try
{
System.Windows.Media.Imaging.BitmapSource bs = System.Windows.Interop.Imaging.CreateBitmapSourceFromHIcon((IntPtr)nicData.hIcon, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
DestroyIcon((IntPtr)nicData.hIcon);

if (bs != null)
{
bs.Freeze();
trayIcon.Icon = bs;
}
}
catch
{
Expand Down

0 comments on commit 4f926c1

Please sign in to comment.