Fix some locking issues

svn path=/trunk/; revision=18105
This commit is contained in:
Matthias Clasen
2007-06-12 02:12:32 +00:00
parent 96b94dd6f8
commit 3f7f212940
3 changed files with 30 additions and 11 deletions

View File

@ -1,3 +1,9 @@
2007-06-11 Matthias Clasen <mclasen@redhat.com>
* modules/printbackends/cups/gtkprintbackendfile.c:
* modules/printbackends/cups/gtkprintbackendcups.c: Fix some
locking issues. (#420249, Christian Persch)
2007-06-11 Matthias Clasen <mclasen@redhat.com>
* configure.in: When debugging is turned on, use error-checking

View File

@ -341,6 +341,8 @@ cups_print_cb (GtkPrintBackendCups *print_backend,
GError *error = NULL;
CupsPrintStreamData *ps = user_data;
GDK_THREADS_ENTER ();
GTK_NOTE (PRINTING,
g_print ("CUPS Backend: %s\n", G_STRFUNC));
@ -375,7 +377,8 @@ cups_print_cb (GtkPrintBackendCups *print_backend,
if (error)
g_error_free (error);
GDK_THREADS_LEAVE ();
}
static void
@ -818,10 +821,12 @@ cups_request_job_info_cb (GtkPrintBackendCups *print_backend,
int state;
gboolean done;
GDK_THREADS_ENTER ();
if (data->job == NULL)
{
cups_job_poll_data_free (data);
return;
goto done;
}
data->counter++;
@ -880,6 +885,9 @@ cups_request_job_info_cb (GtkPrintBackendCups *print_backend,
}
else
cups_job_poll_data_free (data);
done:
GDK_THREADS_LEAVE ();
}
static void
@ -968,6 +976,8 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
gboolean list_has_changed;
GList *removed_printer_checklist;
GDK_THREADS_ENTER ();
list_has_changed = FALSE;
GTK_NOTE (PRINTING,
@ -1182,6 +1192,8 @@ done:
g_signal_emit_by_name (backend, "printer-list-changed");
gtk_print_backend_set_list_done (backend);
GDK_THREADS_LEAVE ();
}
static gboolean
@ -1204,10 +1216,6 @@ cups_request_printer_list (GtkPrintBackendCups *cups_backend)
!cups_backend->got_default_printer)
return TRUE;
g_object_ref (cups_backend);
GDK_THREADS_LEAVE ();
cups_backend->list_printers_pending = TRUE;
request = gtk_cups_request_new (NULL,
@ -1227,10 +1235,6 @@ cups_request_printer_list (GtkPrintBackendCups *cups_backend)
request,
NULL);
GDK_THREADS_ENTER ();
g_object_unref (cups_backend);
return TRUE;
}
@ -1274,6 +1278,8 @@ cups_request_ppd_cb (GtkPrintBackendCups *print_backend,
ipp_t *response;
GtkPrinter *printer;
GDK_THREADS_ENTER ();
GTK_NOTE (PRINTING,
g_print ("CUPS Backend: %s\n", G_STRFUNC));
@ -1294,7 +1300,7 @@ cups_request_ppd_cb (GtkPrintBackendCups *print_backend,
}
g_signal_emit_by_name (printer, "details-acquired", success);
return;
goto done;
}
response = gtk_cups_result_get_response (result);
@ -1305,6 +1311,9 @@ cups_request_ppd_cb (GtkPrintBackendCups *print_backend,
gtk_printer_set_has_details (printer, TRUE);
g_signal_emit_by_name (printer, "details-acquired", TRUE);
done:
GDK_THREADS_LEAVE ();
}
static void

View File

@ -326,6 +326,8 @@ file_print_cb (GtkPrintBackendFile *print_backend,
{
_PrintStreamData *ps = (_PrintStreamData *) user_data;
GDK_THREADS_ENTER ();
if (ps->target_io != NULL)
g_io_channel_unref (ps->target_io);
@ -342,6 +344,8 @@ file_print_cb (GtkPrintBackendFile *print_backend,
g_object_unref (ps->job);
g_free (ps);
GDK_THREADS_LEAVE ();
}
static gboolean