brasero r1957 - in trunk: . nautilus
- From: philippr svn gnome org
- To: svn-commits-list gnome org
- Subject: brasero r1957 - in trunk: . nautilus
- Date: Thu, 19 Feb 2009 14:04:31 +0000 (UTC)
Author: philippr
Date: Thu Feb 19 14:04:31 2009
New Revision: 1957
URL: http://svn.gnome.org/viewvc/brasero?rev=1957&view=rev
Log:
2009-02-19 Philippe Rouquier <ykw localhost localdomain>
Rewrite launching code as it was crash prone
* nautilus/nautilus-burn-extension.c (launch_process),
(launch_brasero_on_window), (write_iso_activate_cb),
(copy_disc_activate_cb), (blank_disc_activate_cb),
(check_disc_activate_cb), (nautilus_disc_burn_get_file_items),
(nautilus_disc_burn_instance_init), (nautilus_module_initialize),
(nautilus_module_shutdown):
Modified:
trunk/ChangeLog
trunk/nautilus/nautilus-burn-extension.c
Modified: trunk/nautilus/nautilus-burn-extension.c
==============================================================================
--- trunk/nautilus/nautilus-burn-extension.c (original)
+++ trunk/nautilus/nautilus-burn-extension.c Thu Feb 19 14:04:31 2009
@@ -75,68 +75,31 @@
static GObjectClass *parent_class;
-#undef DEBUG_ENABLE
-
-#ifdef DEBUG_ENABLE
-#ifdef G_HAVE_ISO_VARARGS
-# define DEBUG_PRINT(...) debug_print (__VA_ARGS__);
-#elif defined(G_HAVE_GNUC_VARARGS)
-# define DEBUG_PRINT(args...) debug_print (args);
-#endif
-#else
-#ifdef G_HAVE_ISO_VARARGS
-# define DEBUG_PRINT(...)
-#elif defined(G_HAVE_GNUC_VARARGS)
-# define DEBUG_PRINT(args...)
-#endif
-#endif
-
-#ifdef DEBUG_ENABLE
-static FILE *debug_out = NULL;
-
-static void
-debug_init (void)
-{
- const char path [50] = "burn_extension_debug_XXXXXX";
- int fd = g_file_open_tmp (path, NULL, NULL);
- if (fd >= 0) {
- debug_out = fdopen (fd, "a");
- }
-}
+//#define DEBUG_PRINT(format_MACRO,...) g_print (format_MACRO, ##__VA_ARGS__);
+#define DEBUG_PRINT(format_MACRO,...)
static void
-debug_print (const char *format, ...)
-{
- va_list args;
-
- va_start (args, format);
- vfprintf ((debug_out ? debug_out : stderr), format, args);
- vfprintf (stderr, format, args);
- va_end (args);
- if (debug_out)
- fflush (debug_out);
-}
-#endif
-
-static void
-launch_process (char **argv, gint next_arg, GtkWindow *parent)
+launch_process (GPtrArray *argv, GtkWindow *parent)
{
GtkWidget *dialog;
GError *error;
+ gchar **args;
if (parent && GTK_WIDGET (parent)->window) {
guint xid;
xid = gdk_x11_drawable_get_xid (GDK_DRAWABLE (GTK_WIDGET (parent)->window));
if (xid > 0) {
- argv [next_arg++] = g_strdup ("-x");
- argv [next_arg] = g_strdup_printf ("%d", xid);
+ g_ptr_array_add (argv, g_strdup ("-x"));
+ g_ptr_array_add (argv, g_strdup_printf ("%d", xid));
}
}
error = NULL;
+ g_ptr_array_add (argv, NULL);
+ args = (gchar **) g_ptr_array_free (argv, FALSE);
if (!g_spawn_async (NULL,
- argv, NULL,
+ args, NULL,
0,
NULL, NULL,
NULL,
@@ -158,20 +121,21 @@
g_error_free (error);
}
+
+ g_strfreev (args);
}
static void
launch_brasero_on_window (GtkWindow *window)
{
int i;
- char *argv [5] = { NULL, };
+ GPtrArray *argv = NULL;
- argv [0] = g_build_filename (BINDIR, "brasero", NULL);
- argv [1] = g_strdup ("-n");
+ argv = g_ptr_array_new ();
+ g_ptr_array_add (argv, g_build_filename (BINDIR, "brasero", NULL));
+ g_ptr_array_add (argv, g_strdup ("-n"));
- launch_process (argv, 2, window);
- for (i = 0; argv [i]; i++)
- g_free (argv [i]);
+ launch_process (argv, window);
}
static void
@@ -181,34 +145,22 @@
launch_brasero_on_window (GTK_WINDOW (user_data));
}
-static char *
-uri_to_path (const char *uri)
-{
- GFile *file;
- char *path;
-
- file = g_file_new_for_uri (uri);
- path = g_file_get_path (file);
- g_object_unref (file);
- return path;
-}
-
static void
write_iso_activate_cb (NautilusMenuItem *item,
gpointer user_data)
{
NautilusFileInfo *file_info;
- char *argv [6] = { NULL, };
+ GPtrArray *argv = NULL;
char *uri;
- char *image_name;
+ char *image_path;
int i;
file_info = g_object_get_data (G_OBJECT (item), "file_info");
uri = nautilus_file_info_get_uri (file_info);
- image_name = uri_to_path (uri);
+ image_path = g_filename_from_uri (uri, NULL, NULL);
- if (image_name == NULL) {
+ if (image_path == NULL) {
g_warning ("Can not get local path for URI %s", uri);
g_free (uri);
return;
@@ -216,14 +168,12 @@
g_free (uri);
- argv [0] = g_build_filename (BINDIR, "brasero", NULL);
- argv [1] = g_strdup ("-i");
- argv [2] = image_name;
-
- launch_process (argv, 3, GTK_WINDOW (user_data));
+ argv = g_ptr_array_new ();
+ g_ptr_array_add (argv, g_build_filename (BINDIR, "brasero", NULL));
+ g_ptr_array_add (argv, g_strdup ("-i"));
+ g_ptr_array_add (argv, image_path);
- for (i = 0; argv [i]; i++)
- g_free (argv [i]);
+ launch_process (argv, GTK_WINDOW (user_data));
}
static void
@@ -231,7 +181,7 @@
gpointer user_data)
{
int i;
- char *argv [6] = { NULL, };
+ GPtrArray *argv = NULL;
char *device_path;
device_path = g_object_get_data (G_OBJECT (item), "drive_device_path");
@@ -241,14 +191,12 @@
return;
}
- argv [0] = g_build_filename (BINDIR, "brasero", NULL);
- argv [1] = g_strdup ("-c");
- argv [2] = device_path;
-
- launch_process (argv, 3, GTK_WINDOW (user_data));
+ argv = g_ptr_array_new ();
+ g_ptr_array_add (argv, g_build_filename (BINDIR, "brasero", NULL));
+ g_ptr_array_add (argv, g_strdup ("-c"));
+ g_ptr_array_add (argv, g_strdup (device_path));
- for (i = 0; argv [i]; i++)
- g_free (argv [i]);
+ launch_process (argv, GTK_WINDOW (user_data));
}
static void
@@ -256,7 +204,7 @@
gpointer user_data)
{
int i;
- char *argv [6]= { NULL, };
+ GPtrArray *argv = NULL;
char *device_path;
device_path = g_object_get_data (G_OBJECT (item), "drive_device_path");
@@ -266,14 +214,12 @@
return;
}
- argv [0] = g_build_filename (BINDIR, "brasero", NULL);
- argv [1] = g_strdup ("-b");
- argv [2] = device_path;
+ argv = g_ptr_array_new ();
+ g_ptr_array_add (argv, g_build_filename (BINDIR, "brasero", NULL));
+ g_ptr_array_add (argv, g_strdup ("-b"));
+ g_ptr_array_add (argv, g_strdup (device_path));
- launch_process (argv, 3, GTK_WINDOW (user_data));
-
- for (i = 0; argv [i]; i++)
- g_free (argv [i]);
+ launch_process (argv, GTK_WINDOW (user_data));
}
static void
@@ -281,7 +227,7 @@
gpointer user_data)
{
int i;
- char *argv [6] = { NULL, };
+ GPtrArray *argv = NULL;
char *device_path;
device_path = g_object_get_data (G_OBJECT (item), "drive_device_path");
@@ -291,14 +237,12 @@
return;
}
- argv [0] = g_build_filename (BINDIR, "brasero", NULL);
- argv [1] = g_strdup ("-k");
- argv [2] = device_path;
-
- launch_process (argv, 3, GTK_WINDOW (user_data));
+ argv = g_ptr_array_new ();
+ g_ptr_array_add (argv, g_build_filename (BINDIR, "brasero", NULL));
+ g_ptr_array_add (argv, g_strdup ("-k"));
+ g_ptr_array_add (argv, g_strdup (device_path));
- for (i = 0; argv [i]; i++)
- g_free (argv [i]);
+ launch_process (argv, GTK_WINDOW (user_data));
}
static gboolean
@@ -409,7 +353,6 @@
if (file == NULL) {
DEBUG_PRINT ("No file found\n");
-
return NULL;
}
@@ -530,6 +473,7 @@
g_free (mime_type);
+ DEBUG_PRINT ("Items returned\n");
return items;
}
@@ -797,11 +741,6 @@
nautilus_disc_burn_instance_init (NautilusDiscBurn *burn)
{
burn->priv = NAUTILUS_DISC_BURN_GET_PRIVATE (burn);
-
-#ifdef DEBUG_ENABLE
- debug_init ();
-#endif
-
burn->priv->start_monitor_id = g_timeout_add_seconds (1,
(GSourceFunc)start_monitor,
burn);
@@ -904,7 +843,10 @@
void
nautilus_module_initialize (GTypeModule *module)
{
+ DEBUG_PRINT ("Initializing nautilus disc recorder\n");
+
brasero_media_library_start ();
+ DEBUG_PRINT ("Libbrasero-media started\n");
nautilus_disc_burn_register_type (module);
}
@@ -912,6 +854,8 @@
void
nautilus_module_shutdown (void)
{
+ DEBUG_PRINT ("Shutting down nautilus disc recorder\n");
+
/* Don't do that in case another module would need the library */
//brasero_media_library_stop ();
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]