Example #1
0
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;
}
Example #2
0
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);
}