brasero r1477 - in trunk: . src



Author: philippr
Date: Wed Nov  5 19:36:28 2008
New Revision: 1477
URL: http://svn.gnome.org/viewvc/brasero?rev=1477&view=rev

Log:
	Fix #559229 â Brasero svn trunk crashes when cancel an iso.
	The crash was triggered by our attempt at gtk_main_quit () whereas we
	had not even started it

	* src/brasero-app.c (on_delete_cb), (on_destroy_cb),
	(brasero_app_run):
	* src/brasero-app.h:
	* src/brasero-project-manager.c
	(brasero_project_manager_burn_iso_dialog):
	* src/main.c (brasero_app_parse_options), (main):


Modified:
   trunk/ChangeLog
   trunk/src/brasero-app.c
   trunk/src/brasero-app.h
   trunk/src/brasero-project-manager.c
   trunk/src/main.c

Modified: trunk/src/brasero-app.c
==============================================================================
--- trunk/src/brasero-app.c	(original)
+++ trunk/src/brasero-app.c	Wed Nov  5 19:36:28 2008
@@ -62,7 +62,8 @@
 	gint width;
 	gint height;
 
-	gboolean is_maximised;
+	guint is_maximised:1;
+	guint is_running:1;
 };
 
 #define BRASERO_APP_PRIVATE(o)  (G_TYPE_INSTANCE_GET_PRIVATE ((o), BRASERO_TYPE_APP, BraseroAppPrivate))
@@ -217,13 +218,24 @@
 static gboolean
 on_delete_cb (GtkWidget *window, GdkEvent *event, BraseroApp *app)
 {
+	BraseroAppPrivate *priv;
+
+	priv = BRASERO_APP_PRIVATE (app);
+	if (!priv->is_running)
+		return FALSE;
+
 	return brasero_session_save (app, TRUE, TRUE);
 }
 
 static gboolean
-on_destroy_cb (GtkWidget *window, GdkEvent *event, BraseroApp *app)
+on_destroy_cb (GtkWidget *window, BraseroApp *app)
 {
-	gtk_main_quit ();
+	BraseroAppPrivate *priv;
+
+	priv = BRASERO_APP_PRIVATE (app);
+	if (priv->is_running)
+		gtk_main_quit ();
+
 	return FALSE;
 }
 
@@ -237,6 +249,19 @@
 }
 
 void
+brasero_app_run (BraseroApp *app)
+{
+	BraseroAppPrivate *priv;
+
+	priv = BRASERO_APP_PRIVATE (app);
+	priv->is_running = TRUE;
+
+	gtk_widget_realize (GTK_WIDGET (app));
+	gtk_widget_show (GTK_WIDGET (app));
+	gtk_main ();
+}
+
+void
 brasero_app_blank (BraseroApp *app,
 		   const gchar *device,
 		   gboolean wait_and_close)

Modified: trunk/src/brasero-app.h
==============================================================================
--- trunk/src/brasero-app.h	(original)
+++ trunk/src/brasero-app.h	Wed Nov  5 19:36:28 2008
@@ -52,6 +52,9 @@
 brasero_app_new (void);
 
 void
+brasero_app_run (BraseroApp *app);
+
+void
 brasero_app_blank (BraseroApp *app,
 		   const gchar *device,
 		   gboolean wait_and_close);

Modified: trunk/src/brasero-project-manager.c
==============================================================================
--- trunk/src/brasero-project-manager.c	(original)
+++ trunk/src/brasero-project-manager.c	Wed Nov  5 19:36:28 2008
@@ -586,6 +586,7 @@
 			toplevel = gtk_widget_get_toplevel (GTK_WIDGET (manager));
 			gtk_widget_destroy (toplevel);
 		}
+
 		return;
 	}
 

Modified: trunk/src/main.c
==============================================================================
--- trunk/src/main.c	(original)
+++ trunk/src/main.c	Wed Nov  5 19:36:28 2008
@@ -228,10 +228,12 @@
 		/* this can't combine with any other options */
 		brasero_project_manager_set_oneshot (BRASERO_PROJECT_MANAGER (manager), TRUE);
 		brasero_project_manager_copy (BRASERO_PROJECT_MANAGER (manager), device);
+		return FALSE;
 	}
 	else if (iso_uri) {
 		brasero_project_manager_set_oneshot (BRASERO_PROJECT_MANAGER (manager), TRUE);
 		BRASERO_PROJECT_OPEN_URI (manager, brasero_project_manager_iso, iso_uri);
+		return FALSE;
 	}
 	else if (project_uri) {
 		brasero_project_manager_set_oneshot (BRASERO_PROJECT_MANAGER (manager), TRUE);
@@ -394,11 +396,8 @@
 	if (app == NULL)
 		return 1;
 
-	if (brasero_app_parse_options (BRASERO_APP (app))) {
-		gtk_widget_realize (app);
-		gtk_widget_show (app);
-		gtk_main ();
-	}
+	if (brasero_app_parse_options (BRASERO_APP (app)))
+		brasero_app_run (BRASERO_APP (app));
 
 	brasero_burn_library_shutdown ();
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]