ports/79061: Update port: x11-toolkits/libgnomeui: fix thread-safety bugs

Jean-Yves Lefort jylefort at brutele.be
Sun Mar 20 20:30:03 UTC 2005


>Number:         79061
>Category:       ports
>Synopsis:       Update port: x11-toolkits/libgnomeui: fix thread-safety bugs
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Sun Mar 20 20:30:02 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Jean-Yves Lefort
>Release:        FreeBSD 5.3-RELEASE-p5 i386
>Organization:
>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;
>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list