From f5164f75918a8e65ccde9565c4fd9f366064172e Mon Sep 17 00:00:00 2001 From: lukefromdc Date: Wed, 10 Aug 2016 13:41:53 -0400 Subject: Fix background change crash Apply https://gist.github.com/raveit65/51b40a20f8836562369fc155a828edc4 to add a "finalize" function to the desktop window and stop background-change crashes after turning icons off-or off and back on. Also match tab styling to that in rest of file, the one difference here from the patchfile. --- src/caja-desktop-window.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src') diff --git a/src/caja-desktop-window.c b/src/caja-desktop-window.c index 42f4214e..1cc14348 100644 --- a/src/caja-desktop-window.c +++ b/src/caja-desktop-window.c @@ -136,6 +136,25 @@ caja_desktop_window_draw (GtkWidget *widget, return GTK_WIDGET_CLASS (caja_desktop_window_parent_class)->draw (widget, cr); } +static void +caja_desktop_window_finalize (GObject *obj) +{ + CajaDesktopWindow *window = CAJA_DESKTOP_WINDOW (obj); + + if (window->details->composited == FALSE) { + GdkScreen *screen = gdk_screen_get_default (); + GdkWindow *root = gdk_screen_get_root_window (screen); + + gdk_window_remove_filter (root, (GdkFilterFunc) filter_func, window); + } + + if (window->details->surface) { + cairo_surface_destroy (window->details->surface); + window->details->surface = NULL; + } + + G_OBJECT_CLASS (caja_desktop_window_parent_class)->finalize (obj); +} #endif static void @@ -386,6 +405,11 @@ caja_desktop_window_class_init (CajaDesktopWindowClass *klass) { GtkWidgetClass *wclass = GTK_WIDGET_CLASS (klass); CajaWindowClass *nclass = CAJA_WINDOW_CLASS (klass); +#if GTK_CHECK_VERSION(3, 21, 0) + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->finalize = caja_desktop_window_finalize; +#endif wclass->realize = realize; wclass->unrealize = unrealize; -- cgit v1.2.1