[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