[Xfce4-commits] r25609 - squeeze/trunk/libsqueeze

Stephan Arts stephan at xfce.org
Thu Apr 19 19:18:29 CEST 2007


Author: stephan
Date: 2007-04-19 17:18:29 +0000 (Thu, 19 Apr 2007)
New Revision: 25609

Modified:
   squeeze/trunk/libsqueeze/archive-command.c
   squeeze/trunk/libsqueeze/macro-command.c
   squeeze/trunk/libsqueeze/remove-command.c
   squeeze/trunk/libsqueeze/spawn-command.c
   squeeze/trunk/libsqueeze/xfce-launch-command.c
Log:
add fix to trunk aswell;


Modified: squeeze/trunk/libsqueeze/archive-command.c
===================================================================
--- squeeze/trunk/libsqueeze/archive-command.c	2007-04-19 14:48:53 UTC (rev 25608)
+++ squeeze/trunk/libsqueeze/archive-command.c	2007-04-19 17:18:29 UTC (rev 25609)
@@ -153,10 +153,7 @@
 	g_return_val_if_fail(LSQ_IS_ARCHIVE(command->archive), FALSE);
 #endif /* DEBUG */
 
-	gboolean ret_val = command->execute(command);
-	if(ret_val)
-		g_object_ref(command->archive);
-	return ret_val;
+	return command->execute(command);
 }
 
 /**
@@ -211,6 +208,7 @@
 
 	archive_command = g_object_new(LSQ_TYPE_ARCHIVE_COMMAND, NULL);
 
+	g_object_ref(G_OBJECT(archive));
 	archive_command->archive = archive;
 	if(comment)
 		archive_command->comment = g_strdup(comment);

Modified: squeeze/trunk/libsqueeze/macro-command.c
===================================================================
--- squeeze/trunk/libsqueeze/macro-command.c	2007-04-19 14:48:53 UTC (rev 25608)
+++ squeeze/trunk/libsqueeze/macro-command.c	2007-04-19 17:18:29 UTC (rev 25609)
@@ -105,6 +105,13 @@
 static void
 lsq_macro_command_dispose(GObject *object)
 {
+	LSQMacroCommand *macro_command = LSQ_MACRO_COMMAND(object);
+	if(macro_command->command_queue)
+	{
+		g_slist_foreach(macro_command->command_queue, (GFunc)g_object_unref, NULL);
+		g_slist_free(macro_command->command_queue);
+		macro_command->command_queue = NULL;
+	}
 	parent_class->dispose(object);
 }
 
@@ -134,6 +141,7 @@
 
 	archive_command = g_object_new(LSQ_TYPE_MACRO_COMMAND, NULL);
 
+	g_object_ref(G_OBJECT(archive));
 	archive_command->archive = archive;
 
 	return archive_command;
@@ -156,6 +164,7 @@
 static gboolean
 lsq_macro_command_stop(LSQArchiveCommand *command)
 {
+	lsq_archive_command_stop(LSQ_MACRO_COMMAND(command)->command_queue->data);
 	return TRUE;
 }
 
@@ -172,33 +181,36 @@
 cb_macro_command_sub_command_terminated(LSQArchiveCommand *sub_command, GError *error, LSQMacroCommand *macro_command)
 {
 	macro_command->command_queue = g_slist_remove(macro_command->command_queue, sub_command);
-	if(macro_command->command_queue)
+
+	if(macro_command->command_queue && !error)
 	{
 		LSQArchiveCommand *command = macro_command->command_queue->data;
 
+
 		g_signal_connect(command, "terminated", G_CALLBACK(cb_macro_command_sub_command_terminated), macro_command);
 
 		LSQ_ARCHIVE_COMMAND(macro_command)->comment = command->comment;
 
-		lsq_archive_state_changed(LSQ_ARCHIVE_COMMAND(macro_command)->archive);
 
-		if(!lsq_archive_command_execute(command) || error)
+		if(!lsq_archive_command_execute(command))
 		{
 			g_signal_handlers_disconnect_by_func(command, cb_macro_command_sub_command_terminated, macro_command);
 			/* And here i kind of have no idea if this works */	
-			GSList *termination_queue = macro_command->command_queue;
-			macro_command->command_queue = NULL;
-			g_slist_foreach(termination_queue, (GFunc)g_object_unref, NULL);
-			g_slist_free(termination_queue);
+			if(error)
+				LSQ_ARCHIVE_COMMAND(macro_command)->error = g_error_copy(error);
+			g_object_unref(command);
 			g_object_unref(macro_command);
 		}
 		else
 		{
+			lsq_archive_state_changed(LSQ_ARCHIVE_COMMAND(macro_command)->archive);
 			g_object_unref(command);
 		}
 	}
 	else
 	{
+		if(error)
+			LSQ_ARCHIVE_COMMAND(macro_command)->error = g_error_copy(error);
 		g_object_unref(macro_command);
 	}
 }

Modified: squeeze/trunk/libsqueeze/remove-command.c
===================================================================
--- squeeze/trunk/libsqueeze/remove-command.c	2007-04-19 14:48:53 UTC (rev 25608)
+++ squeeze/trunk/libsqueeze/remove-command.c	2007-04-19 17:18:29 UTC (rev 25609)
@@ -136,6 +136,7 @@
 
 	archive_command = g_object_new(LSQ_TYPE_REMOVE_COMMAND, NULL);
 
+	g_object_ref(G_OBJECT(archive));
 	archive_command->archive = archive;
 
 	if(comment)

Modified: squeeze/trunk/libsqueeze/spawn-command.c
===================================================================
--- squeeze/trunk/libsqueeze/spawn-command.c	2007-04-19 14:48:53 UTC (rev 25608)
+++ squeeze/trunk/libsqueeze/spawn-command.c	2007-04-19 17:18:29 UTC (rev 25609)
@@ -175,6 +175,7 @@
 	else
 		LSQ_SPAWN_COMMAND(archive_command)->archive_path = g_strdup(lsq_archive_get_path(archive));
 
+	g_object_ref(G_OBJECT(archive));
 	archive_command->archive = archive;
 	if(comment)
 		archive_command->comment = g_strdup(comment);

Modified: squeeze/trunk/libsqueeze/xfce-launch-command.c
===================================================================
--- squeeze/trunk/libsqueeze/xfce-launch-command.c	2007-04-19 14:48:53 UTC (rev 25608)
+++ squeeze/trunk/libsqueeze/xfce-launch-command.c	2007-04-19 17:18:29 UTC (rev 25609)
@@ -141,6 +141,7 @@
 	                                                       "/org/xfce/FileManager",
 	                                                       "org.xfce.FileManager");
 	
+	g_object_ref(G_OBJECT(archive));
 	archive_command->archive = archive;
 	if(comment)
 		archive_command->comment = g_strdup(comment);



More information about the Xfce4-commits mailing list