plugins/docklet/docklet-x11.c

changeset 10504
eae130eefbfe
parent 10491
d796f5b823d5
child 10505
4c063ce8ed62
--- a/plugins/docklet/docklet-x11.c	Tue Jan 11 02:00:44 2005 +0000
+++ b/plugins/docklet/docklet-x11.c	Tue Jan 11 17:25:06 2005 +0000
@@ -88,6 +88,8 @@
 {
 	const gchar *icon_name = NULL;
 
+	g_return_if_fail(image != NULL);
+
 	switch (icon) {
 		case offline:
 			icon_name = GAIM_STOCK_ICON_OFFLINE;
@@ -152,9 +154,11 @@
 	*push_in = TRUE;
 }
 
-static gboolean
+static void
 docklet_x11_destroy()
 {
+	g_return_if_fail(docklet != NULL);
+
 	docklet_remove(GTK_WIDGET_VISIBLE(docklet));
 
 	g_signal_handlers_disconnect_by_func(G_OBJECT(docklet), G_CALLBACK(docklet_x11_destroyed_cb), NULL);
@@ -167,7 +171,18 @@
 		g_object_unref(G_OBJECT(blank_icon));
 	blank_icon = NULL;
 
+	if (image)
+		gtk_widget_destroy(image);
+	image = NULL;
+
 	gaim_debug(GAIM_DEBUG_INFO, "tray icon", "destroyed\n");
+}
+
+static gboolean
+docklet_x11_embed_timeout_cb()
+{
+	docklet_unload();
+
 	return FALSE;
 }
 
@@ -203,7 +218,7 @@
 	/* ref the docklet before we bandy it about the place */
 	g_object_ref(G_OBJECT(docklet));
 	docklet_embedded();
-	embed_timeout = g_timeout_add(EMBED_TIMEOUT, docklet_x11_destroy, NULL);
+	embed_timeout = g_timeout_add(EMBED_TIMEOUT, docklet_x11_embed_timeout_cb, NULL);
 
 	gaim_debug(GAIM_DEBUG_INFO, "tray icon", "created\n");
 }

mercurial