Update port: x11-toolkits/libgnomeui: fix thread-safety bugs
Jean-Yves Lefort
jylefort at brutele.be
Sun Mar 20 12:20:33 PST 2005
>Submitter-Id: current-users
>Originator: Jean-Yves Lefort
>Organization:
>Confidential: no
>Synopsis: Update port: x11-toolkits/libgnomeui: fix thread-safety bugs
>Severity: non-critical
>Priority: medium
>Category: ports
>Class: update
>Release: FreeBSD 5.3-RELEASE-p5 i386
>Environment:
System: FreeBSD jsite.lefort.net 5.3-RELEASE-p5 FreeBSD 5.3-RELEASE-p5 #0: Mon Feb 14 18:06:40 CET 2005 jylefort at jsite.lefort.net:/usr/obj/usr/src/sys/JSITE i386
>Description:
See http://bugzilla.gnome.org/show_bug.cgi?id=152023
A subset of the fixes had been added to the port, but have been
mistakenly dropped during the 2.10 upgrade.
>How-To-Repeat:
>Fix:
diff -ruN /usr/ports/x11-toolkits/libgnomeui/Makefile libgnomeui/Makefile
--- /usr/ports/x11-toolkits/libgnomeui/Makefile Mon Mar 14 00:31:56 2005
+++ libgnomeui/Makefile Sun Mar 20 21:00:09 2005
@@ -7,6 +7,7 @@
PORTNAME= libgnomeui
PORTVERSION= 2.10.0
+PORTREVISION= 1
CATEGORIES= x11-toolkits gnome
MASTER_SITES= ${MASTER_SITE_GNOME}
MASTER_SITE_SUBDIR= sources/${PORTNAME}/2.10
diff -ruN /usr/ports/x11-toolkits/libgnomeui/files/patch-file-chooser::gtkfilesystemgnomevfs.c libgnomeui/files/patch-file-chooser::gtkfilesystemgnomevfs.c
--- /usr/ports/x11-toolkits/libgnomeui/files/patch-file-chooser::gtkfilesystemgnomevfs.c Thu Jan 1 01:00:00 1970
+++ libgnomeui/files/patch-file-chooser::gtkfilesystemgnomevfs.c Sun Mar 20 21:00:49 2005
@@ -0,0 +1,24 @@
+--- file-chooser/gtkfilesystemgnomevfs.c.orig Sun Mar 20 20:58:22 2005
++++ file-chooser/gtkfilesystemgnomevfs.c Sun Mar 20 20:59:03 2005
+@@ -2536,13 +2536,20 @@
+ GtkFileSystemGnomeVFS *system_vfs;
+ GConfValue *value;
+
++ GDK_THREADS_ENTER();
++
+ system_vfs = GTK_FILE_SYSTEM_GNOME_VFS (data);
+
+ if (strcmp (gconf_entry_get_key (entry), BOOKMARKS_KEY) != 0)
+- return;
++ {
++ GDK_THREADS_LEAVE();
++ return;
++ }
+
+ value = gconf_entry_get_value (entry);
+ set_bookmarks_from_value (system_vfs, value, TRUE);
++
++ GDK_THREADS_LEAVE();
+ }
+ #endif
+
diff -ruN /usr/ports/x11-toolkits/libgnomeui/files/patch-libgnomeui::gnome-app-helper.c libgnomeui/files/patch-libgnomeui::gnome-app-helper.c
--- /usr/ports/x11-toolkits/libgnomeui/files/patch-libgnomeui::gnome-app-helper.c Thu Jan 1 01:00:00 1970
+++ libgnomeui/files/patch-libgnomeui::gnome-app-helper.c Sun Mar 20 21:03:28 2005
@@ -0,0 +1,74 @@
+--- libgnomeui/gnome-app-helper.c.orig Sun Mar 20 20:46:17 2005
++++ libgnomeui/gnome-app-helper.c Sun Mar 20 20:49:57 2005
+@@ -435,6 +435,8 @@
+ new_setting = gconf_value_get_bool(value);
+ }
+
++ GDK_THREADS_ENTER();
++
+ if (new_setting && (mi->image == NULL)) {
+ GtkWidget *pixmap;
+ GnomeUIPixmapType pixmap_type;
+@@ -457,6 +459,8 @@
+ } else if (!new_setting && (mi->image != NULL)) {
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), NULL);
+ }
++
++ GDK_THREADS_LEAVE();
+ }
+
+ /* Note that this function is also used for toolbars, don't assume
+@@ -1320,6 +1324,8 @@
+ if (entry->value->type != GCONF_VALUE_BOOL)
+ return;
+
++ GDK_THREADS_ENTER();
++
+ menu = GTK_WIDGET (user_data);
+
+ if (gconf_value_get_bool (entry->value)) {
+@@ -1329,6 +1335,7 @@
+
+ if (tearoff) {
+ /* Do nothing */
++ GDK_THREADS_LEAVE();
+ return;
+ }
+
+@@ -1345,6 +1352,7 @@
+
+ if (!tearoff) {
+ /* Do nothing */
++ GDK_THREADS_LEAVE();
+ return;
+ }
+
+@@ -1352,6 +1360,8 @@
+ gtk_widget_destroy (tearoff);
+ g_object_set_data (G_OBJECT (menu), "gnome-app-tearoff", NULL);
+ }
++
++ GDK_THREADS_LEAVE();
+ }
+
+
+@@ -2467,7 +2477,9 @@
+ }
+ }
+
++ GDK_THREADS_ENTER();
+ gtk_toolbar_set_style(toolbar, style);
++ GDK_THREADS_LEAVE();
+ }
+
+ static void
+@@ -2511,7 +2523,9 @@
+ style = GTK_TOOLBAR_BOTH;
+ }
+
++ GDK_THREADS_ENTER();
+ gtk_toolbar_set_style(toolbar, style);
++ GDK_THREADS_LEAVE();
+ }
+
+ static void
diff -ruN /usr/ports/x11-toolkits/libgnomeui/files/patch-libgnomeui::gnome-app.c libgnomeui/files/patch-libgnomeui::gnome-app.c
--- /usr/ports/x11-toolkits/libgnomeui/files/patch-libgnomeui::gnome-app.c Thu Jan 1 01:00:00 1970
+++ libgnomeui/files/patch-libgnomeui::gnome-app.c Sun Mar 20 21:03:04 2005
@@ -0,0 +1,12 @@
+--- libgnomeui/gnome-app.c.orig Sun Mar 20 20:51:20 2005
++++ libgnomeui/gnome-app.c Sun Mar 20 20:52:01 2005
+@@ -269,7 +269,9 @@
+ detachable = gconf_value_get_bool (entry->value);
+
+ /* Update */
++ GDK_THREADS_ENTER();
+ bonobo_dock_item_set_locked (item, !detachable);
++ GDK_THREADS_LEAVE();
+ }
+ }
+
diff -ruN /usr/ports/x11-toolkits/libgnomeui/files/patch-libgnomeui::gnome-entry.c libgnomeui/files/patch-libgnomeui::gnome-entry.c
--- /usr/ports/x11-toolkits/libgnomeui/files/patch-libgnomeui::gnome-entry.c Thu Jan 1 01:00:00 1970
+++ libgnomeui/files/patch-libgnomeui::gnome-entry.c Sun Mar 20 21:03:52 2005
@@ -0,0 +1,25 @@
+--- libgnomeui/gnome-entry.c.orig Sun Mar 20 20:54:19 2005
++++ libgnomeui/gnome-entry.c Sun Mar 20 20:54:20 2005
+@@ -419,6 +419,8 @@
+ {
+ GnomeEntry *gentry;
+
++ GDK_THREADS_ENTER();
++
+ gentry = GNOME_ENTRY (user_data);
+
+ /* If we're getting a notification from saving our own
+@@ -427,10 +429,13 @@
+ if (gentry->_priv->saving_history) {
+ gentry->_priv->saving_history = FALSE;
+
++ GDK_THREADS_LEAVE();
+ return;
+ }
+
+ gnome_entry_load_history (gentry);
++
++ GDK_THREADS_LEAVE();
+ }
+
+ /* FIXME: Make this static */
diff -ruN /usr/ports/x11-toolkits/libgnomeui/files/patch-libgnomeui::gnome-gconf-ui.c libgnomeui/files/patch-libgnomeui::gnome-gconf-ui.c
--- /usr/ports/x11-toolkits/libgnomeui/files/patch-libgnomeui::gnome-gconf-ui.c Thu Jan 1 01:00:00 1970
+++ libgnomeui/files/patch-libgnomeui::gnome-gconf-ui.c Sun Mar 20 21:02:10 2005
@@ -0,0 +1,20 @@
+--- libgnomeui/gnome-gconf-ui.c.orig Sun Mar 20 20:38:41 2005
++++ libgnomeui/gnome-gconf-ui.c Sun Mar 20 20:39:51 2005
+@@ -148,6 +148,8 @@
+ g_return_val_if_fail(eid.client != NULL, FALSE);
+ g_return_val_if_fail(pending_errors != NULL, FALSE);
+
++ GDK_THREADS_ENTER();
++
+ if (current_dialog == NULL) {
+ GtkWidget *dialog;
+ gboolean have_overridden = FALSE;
+@@ -245,6 +247,8 @@
+
+ gtk_window_present (GTK_WINDOW (current_dialog));
+
++ GDK_THREADS_LEAVE();
++
+ return FALSE;
+ }
+
diff -ruN /usr/ports/x11-toolkits/libgnomeui/files/patch-libgnomeui::gnome-ice.c libgnomeui/files/patch-libgnomeui::gnome-ice.c
--- /usr/ports/x11-toolkits/libgnomeui/files/patch-libgnomeui::gnome-ice.c Thu Jan 1 01:00:00 1970
+++ libgnomeui/files/patch-libgnomeui::gnome-ice.c Sun Mar 20 21:01:19 2005
@@ -0,0 +1,20 @@
+--- libgnomeui/gnome-ice.c.orig Sun Mar 20 20:33:56 2005
++++ libgnomeui/gnome-ice.c Sun Mar 20 20:34:21 2005
+@@ -54,6 +54,8 @@
+ IceConn connection = (IceConn) data;
+ IceProcessMessagesStatus status;
+
++ GDK_THREADS_ENTER();
++
+ status = IceProcessMessages (connection, NULL, NULL);
+
+ if (status == IceProcessMessagesIOError)
+@@ -73,6 +75,8 @@
+ IceCloseConnection (connection);
+ }
+ }
++
++ GDK_THREADS_LEAVE();
+
+ return TRUE;
+ }
diff -ruN /usr/ports/x11-toolkits/libgnomeui/files/patch-libgnomeui::gnome-icon-sel.c libgnomeui/files/patch-libgnomeui::gnome-icon-sel.c
--- /usr/ports/x11-toolkits/libgnomeui/files/patch-libgnomeui::gnome-icon-sel.c Thu Jan 1 01:00:00 1970
+++ libgnomeui/files/patch-libgnomeui::gnome-icon-sel.c Sun Mar 20 21:02:41 2005
@@ -0,0 +1,20 @@
+--- libgnomeui/gnome-icon-sel.c.orig Sun Mar 20 20:40:05 2005
++++ libgnomeui/gnome-icon-sel.c Sun Mar 20 20:42:24 2005
+@@ -353,6 +353,8 @@
+ return FALSE;
+ }
+
++ GDK_THREADS_ENTER();
++
+ append_an_icon (gis, list->data);
+
+ g_free (list->data);
+@@ -367,6 +369,8 @@
+ (double)gis->_priv->load_i / gis->_priv->load_file_count);
+
+ gis->_priv->load_i ++;
++
++ GDK_THREADS_LEAVE();
+
+ return TRUE;
+ }
diff -ruN /usr/ports/x11-toolkits/libgnomeui/files/patch-libgnomeui::gnome-pixmap-entry.c libgnomeui/files/patch-libgnomeui::gnome-pixmap-entry.c
--- /usr/ports/x11-toolkits/libgnomeui/files/patch-libgnomeui::gnome-pixmap-entry.c Thu Jan 1 01:00:00 1970
+++ libgnomeui/files/patch-libgnomeui::gnome-pixmap-entry.c Sun Mar 20 21:01:46 2005
@@ -0,0 +1,25 @@
+--- libgnomeui/gnome-pixmap-entry.c.orig Sun Mar 20 20:34:49 2005
++++ libgnomeui/gnome-pixmap-entry.c Sun Mar 20 20:38:30 2005
+@@ -237,6 +237,8 @@
+ {
+ GSList *li,*tmp;
+
++ GDK_THREADS_ENTER();
++
+ tmp = changed_pentries;
+ changed_pentries = NULL;
+ if(tmp) {
+@@ -244,9 +246,13 @@
+ refresh_preview(li->data);
+ }
+ g_slist_free(tmp);
++
++ GDK_THREADS_LEAVE();
+ return TRUE;
+ }
+ change_timeout = 0;
++
++ GDK_THREADS_LEAVE();
+
+ return FALSE;
+ }
diff -ruN /usr/ports/x11-toolkits/libgnomeui/files/patch-libgnomeui::gnome-ui-init.c libgnomeui/files/patch-libgnomeui::gnome-ui-init.c
--- /usr/ports/x11-toolkits/libgnomeui/files/patch-libgnomeui::gnome-ui-init.c Thu Jan 1 01:00:00 1970
+++ libgnomeui/files/patch-libgnomeui::gnome-ui-init.c Sun Mar 20 21:04:19 2005
@@ -0,0 +1,13 @@
+--- libgnomeui/gnome-ui-init.c.orig Sun Mar 20 20:56:32 2005
++++ libgnomeui/gnome-ui-init.c Sun Mar 20 20:56:36 2005
+@@ -492,8 +492,10 @@
+ gnome_gconf_get_bool ("/desktop/gnome/sound/event_sounds"));
+
+ if (new_use_event_sounds && !use_event_sounds) {
++ GDK_THREADS_ENTER();
+ initialize_gtk_signal_relay ();
+ initialize_gnome_signal_relay ();
++ GDK_THREADS_LEAVE();
+ }
+
+ use_event_sounds = new_use_event_sounds;
More information about the freebsd-gnome
mailing list