summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2006-05-15 15:24:12 +0000
committerAlexander Larsson <alexl@src.gnome.org>2006-05-15 15:24:12 +0000
commit5e0dc70323142a60f363f66d7994ed0b5a381d4c (patch)
treebb21722e5d97a107eacc63a96c23a1d74cbbbb56 /modules
parent62ede1134c6bad75147eb399f311ad2aec6fd8f1 (diff)
downloadgtk+-5e0dc70323142a60f363f66d7994ed0b5a381d4c.tar.gz
Never unload print backends. Remove gtk_print_backend_unref_at_idle.
2006-05-15 Alexander Larsson <alexl@redhat.com> * gtk/gtk.symbols: * gtk/gtkprintbackend.[ch]: (_gtk_print_backend_create): Never unload print backends. Remove gtk_print_backend_unref_at_idle. * modules/printbackends/cups/gtkprintbackendcups.c: (cups_dispatch_watch_finalize): Don't use the unref_at_idle hack since that caused deadlocks. Instead we never unload print backends, which is not really a big problem.
Diffstat (limited to 'modules')
-rw-r--r--modules/printbackends/cups/gtkprintbackendcups.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/modules/printbackends/cups/gtkprintbackendcups.c b/modules/printbackends/cups/gtkprintbackendcups.c
index 3380d8970d..006e5d446f 100644
--- a/modules/printbackends/cups/gtkprintbackendcups.c
+++ b/modules/printbackends/cups/gtkprintbackendcups.c
@@ -547,10 +547,15 @@ cups_dispatch_watch_finalize (GSource *source)
if (dispatch->backend)
{
/* We need to unref this at idle time, because it might be the
- last reference to this module causing the code to be
- unloaded (including this particular function!)
- */
- gtk_print_backend_unref_at_idle (GTK_PRINT_BACKEND (dispatch->backend));
+ * last reference to this module causing the code to be
+ * unloaded (including this particular function!)
+ * Update: Doing this at idle caused a deadlock taking the
+ * mainloop context lock while being in a GSource callout for
+ * multithreaded apps. So, for now we just disable unloading
+ * of print backends. See _gtk_print_backend_create for the
+ * disabling.
+ */
+ g_object_unref (dispatch->backend);
dispatch->backend = NULL;
}