summaryrefslogtreecommitdiff
path: root/testing/gnome-panel/fix-crasher-launchers.patch
blob: b15fdf29c0b5edfaebef58d02aff7524c6aa9123 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
From 8c275a2adf4ad99297a17cabf251344837620831 Mon Sep 17 00:00:00 2001
From: Josselin Mouette <joss@malsain.org>
Date: Mon, 11 Apr 2011 13:05:32 +0000
Subject: panel: Fix crash when starting launcher

Do not destroy a widget in its draw signal. This is bad. Really.

This was happening in the animation that is being drawn after clicking a
launcher.

https://bugzilla.gnome.org/show_bug.cgi?id=641325
---
diff --git a/gnome-panel/xstuff.c b/gnome-panel/xstuff.c
index 8465341..5acbf66 100644
--- a/gnome-panel/xstuff.c
+++ b/gnome-panel/xstuff.c
@@ -305,6 +305,14 @@ zoom_timeout (GtkWidget *window)
 }
 
 static gboolean
+idle_destroy (gpointer data)
+{
+	gtk_widget_destroy (GTK_WIDGET (data));
+
+	return FALSE;
+}
+
+static gboolean
 zoom_draw (GtkWidget *widget,
 	   cairo_t   *cr,
            gpointer    user_data)
@@ -323,7 +331,7 @@ zoom_draw (GtkWidget *widget,
 
 		g_slice_free (CompositedZoomData, zoom);
 
-		gtk_widget_destroy (widget);
+		g_idle_add (idle_destroy, widget);
 	} else {
 		GdkPixbuf *scaled;
 		int width, height;
--
cgit v0.9