[gthumb] respect the IGNORE_ERROR flag for background tasks



commit ea7f82479c119f0d37d79f4159336b77bb8624fa
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Wed Dec 23 21:24:07 2015 +0100

    respect the IGNORE_ERROR flag for background tasks

 gthumb/gth-browser.c |   21 ++++++++++++++-------
 1 files changed, 14 insertions(+), 7 deletions(-)
---
diff --git a/gthumb/gth-browser.c b/gthumb/gth-browser.c
index e79ee99..d41168b 100644
--- a/gthumb/gth-browser.c
+++ b/gthumb/gth-browser.c
@@ -5424,9 +5424,10 @@ gth_browser_reload (GthBrowser *browser)
 
 
 typedef struct {
-       GthBrowser *browser;
-       GthTask    *task;
-       gulong      completed_event;
+       GthBrowser   *browser;
+       GthTask      *task;
+       GthTaskFlags  flags;
+       gulong        completed_event;
 } TaskData;
 
 
@@ -5454,20 +5455,26 @@ background_task_completed_cb (GthTask  *task,
        if (error == NULL)
                return;
 
-       if ((error->domain == G_IO_ERROR) && ! g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+       if ((error->domain == G_IO_ERROR)
+           && ! g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)
+           && ((task_data->flags & GTH_TASK_FLAGS_IGNORE_ERROR) == 0))
+       {
                _gth_browser_show_error (browser, _("Could not perform the operation"), error);
+       }
 }
 
 
 static TaskData *
-task_data_new (GthBrowser *browser,
-              GthTask    *task)
+task_data_new (GthBrowser   *browser,
+              GthTask      *task,
+              GthTaskFlags  flags)
 {
        TaskData *task_data;
 
        task_data = g_new0 (TaskData, 1);
        task_data->browser = g_object_ref (browser);
        task_data->task = g_object_ref (task);
+       task_data->flags = flags;
        task_data->completed_event = g_signal_connect (task_data->task,
                                                       "completed",
                                                       G_CALLBACK (background_task_completed_cb),
@@ -5518,7 +5525,7 @@ gth_browser_exec_task (GthBrowser   *browser,
        if ((flags & GTH_TASK_FLAGS_FOREGROUND) == 0) {
                TaskData *task_data;
 
-               task_data = task_data_new (browser, task);
+               task_data = task_data_new (browser, task, flags);
                browser->priv->background_tasks = g_list_prepend (browser->priv->background_tasks, task_data);
 
                if (browser->priv->progress_dialog == NULL) {


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