static gboolean io_writeback_job (GIOSchedulerJob *job, GCancellable *cancellable, gpointer user_data) { WritebackData *data = user_data; TrackerControllerPrivate *priv = data->controller->priv; GError *error = NULL; gboolean handled = FALSE; GList *writeback_handlers; #if GLIB_CHECK_VERSION (2,31,0) g_mutex_lock (&priv->mutex); priv->current = data; g_mutex_unlock (&priv->mutex); #else g_mutex_lock (priv->mutex); priv->current = data; g_mutex_unlock (priv->mutex); #endif writeback_handlers = data->writeback_handlers; while (writeback_handlers) { handled |= tracker_writeback_update_metadata (writeback_handlers->data, data->results, data->connection, data->cancellable, (error) ? NULL : &error); writeback_handlers = writeback_handlers->next; } if (!handled) { if (error) { data->error = error; } else { g_set_error_literal (&data->error, TRACKER_DBUS_ERROR, TRACKER_DBUS_ERROR_UNSUPPORTED, "No writeback modules handled " "successfully this file"); } } else { g_clear_error (&error); } g_idle_add (perform_writeback_cb, data); return FALSE; }
static void io_writeback_job (GTask *task, gpointer source_object, gpointer task_data, GCancellable *cancellable) { WritebackData *data = task_data; TrackerControllerPrivate *priv = data->controller->priv; GError *error = NULL; gboolean handled = FALSE; GList *writeback_handlers; g_mutex_lock (&priv->mutex); priv->current = data; g_mutex_unlock (&priv->mutex); writeback_handlers = data->writeback_handlers; while (writeback_handlers) { handled |= tracker_writeback_update_metadata (writeback_handlers->data, data->results, data->connection, data->cancellable, (error) ? NULL : &error); writeback_handlers = writeback_handlers->next; } if (!handled) { if (error) { data->error = error; } else { g_set_error_literal (&data->error, TRACKER_DBUS_ERROR, TRACKER_DBUS_ERROR_UNSUPPORTED, "No writeback modules handled " "successfully this file"); } } else { g_clear_error (&error); } g_idle_add (perform_writeback_cb, data); }