[Xfce4-commits] <tumbler:master> Improve the code quality and consistency of the last commit.
Jannis Pohlmann
noreply at xfce.org
Fri Feb 26 16:48:02 CET 2010
Updating branch refs/heads/master
to 2619211589771e4dd36f16a5766ab333615be45f (commit)
from 0ba5c311aba05175350ee8118739e7250271664c (commit)
commit 2619211589771e4dd36f16a5766ab333615be45f
Author: Jannis Pohlmann <jannis at xfce.org>
Date: Fri Feb 26 16:46:03 2010 +0100
Improve the code quality and consistency of the last commit.
Signed-off-by: Jannis Pohlmann <jannis at xfce.org>
tumblerd/tumbler-service.c | 269 +++++++++++++++++++++++++-------------------
1 files changed, 151 insertions(+), 118 deletions(-)
diff --git a/tumblerd/tumbler-service.c b/tumblerd/tumbler-service.c
index 2451896..39f47d0 100644
--- a/tumblerd/tumbler-service.c
+++ b/tumblerd/tumbler-service.c
@@ -69,6 +69,10 @@ enum
+typedef struct _SchedulerIdleInfo SchedulerIdleInfo;
+
+
+
static void tumbler_service_constructed (GObject *object);
static void tumbler_service_finalize (GObject *object);
static void tumbler_service_get_property (GObject *object,
@@ -102,6 +106,7 @@ static void tumbler_service_scheduler_started (TumblerScheduler *scheduler,
static void tumbler_service_pre_unmount (TumblerService *service,
GMount *mount,
GVolumeMonitor *monitor);
+static void scheduler_idle_info_free (SchedulerIdleInfo *info);
@@ -122,6 +127,17 @@ struct _TumblerService
GVolumeMonitor *volume_monitor;
};
+struct _SchedulerIdleInfo
+{
+ TumblerScheduler *scheduler;
+ TumblerService *service;
+ GStrv uris;
+ gchar *message;
+ gchar *origin;
+ guint handle;
+ gint error_code;
+};
+
static guint tumbler_service_signals[LAST_SIGNAL];
@@ -357,219 +373,207 @@ tumbler_service_set_property (GObject *object,
}
-typedef struct {
- TumblerScheduler *scheduler;
- guint handle;
- GStrv uris;
- gint error_code;
- gchar *message_s;
- gchar *origin;
- TumblerService *service;
-} MainLoopInfo;
static gboolean
-error_in_idle (gpointer user_data)
+tumbler_service_error_idle (gpointer user_data)
{
- MainLoopInfo *info = user_data;
- DBusMessageIter iter;
- DBusMessageIter strv_iter;
- DBusMessage *message;
- guint n;
- dbus_uint32_t ser;
-
- TumblerScheduler *scheduler = info->scheduler;
- guint handle = info->handle;
- GStrv failed_uris = info->uris;
- gint error_code = info->error_code;
- gchar *message_s = info->message_s;
- gchar *origin = info->origin;
- TumblerService *service = info->service;
-
- g_return_if_fail (TUMBLER_IS_SCHEDULER (scheduler));
- g_return_if_fail (failed_uris != NULL && failed_uris[0] != NULL && *failed_uris[0] != '\0');
- g_return_if_fail (message_s != NULL && *message_s != '\0');
- g_return_if_fail (origin != NULL && *origin != '\0');
- g_return_if_fail (TUMBLER_IS_SERVICE (service));
+ SchedulerIdleInfo *info = user_data;
+ DBusMessageIter iter;
+ DBusMessageIter strv_iter;
+ DBusMessage *message;
+ guint n;
+
+ g_return_if_fail (info != NULL);
+ g_return_if_fail (TUMBLER_IS_SCHEDULER (info->scheduler));
+ g_return_if_fail (info->uris != NULL && info->uris[0] != NULL && *info->uris[0] != '\0');
+ g_return_if_fail (info->message != NULL && *info->message != '\0');
+ g_return_if_fail (info->origin != NULL && *info->origin != '\0');
+ g_return_if_fail (TUMBLER_IS_SERVICE (info->service));
/* create a D-Bus message for the error signal */
message = dbus_message_new_signal (THUMBNAILER_PATH, THUMBNAILER_IFACE, "Error");
/* define the destination (the thumbnailer client) if possible */
- if (origin)
- dbus_message_set_destination (message, origin);
+ if (info->origin)
+ dbus_message_set_destination (message, info->origin);
/* append the request handle */
dbus_message_iter_init_append (message, &iter);
- dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &handle);
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &info->handle);
/* start the URI string array */
dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY,
DBUS_TYPE_STRING_AS_STRING, &strv_iter);
/* insert all failed URIs into the array */
- for (n = 0; failed_uris[n] != NULL; n++)
- dbus_message_iter_append_basic (&strv_iter, DBUS_TYPE_STRING, &failed_uris[n]);
+ for (n = 0; info->uris[n] != NULL; n++)
+ dbus_message_iter_append_basic (&strv_iter, DBUS_TYPE_STRING, &info->uris[n]);
/* finish the URI string array */
dbus_message_iter_close_container (&iter, &strv_iter);
/* append the error code and error message */
- dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, &error_code);
- dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &message_s);
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, &info->error_code);
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &info->message);
/* send the signal message over D-Bus */
- dbus_connection_send (dbus_g_connection_get_connection (service->connection),
- message, &ser);
+ dbus_connection_send (dbus_g_connection_get_connection (info->service->connection),
+ message, NULL);
/* free the allocated D-Bus message */
dbus_message_unref (message);
-
- g_free (info->message_s);
- g_free (info->origin);
- g_strfreev (info->uris);
- g_object_unref (info->scheduler);
- g_object_unref (info->service);
- g_slice_free (MainLoopInfo, info);
+ scheduler_idle_info_free (info);
return FALSE;
}
+
+
static void
tumbler_service_scheduler_error (TumblerScheduler *scheduler,
guint handle,
const gchar *const *failed_uris,
gint error_code,
- const gchar *message_s,
+ const gchar *message,
const gchar *origin,
TumblerService *service)
{
- MainLoopInfo *info = g_slice_new (MainLoopInfo);
+ SchedulerIdleInfo *info;
+
+ g_return_if_fail (TUMBLER_IS_SCHEDULER (scheduler));
+ g_return_if_fail (failed_uris != NULL);
+ g_return_if_fail (message != NULL && *message != '\0');
+ g_return_if_fail (origin != NULL && *origin != '\0');
+ g_return_if_fail (TUMBLER_IS_SERVICE (service));
+
+ info = g_slice_new0 (SchedulerIdleInfo);
info->scheduler = g_object_ref (scheduler);
info->handle = handle;
info->uris = g_strdupv ((GStrv) failed_uris);
info->error_code = error_code;
- info->message_s = g_strdup (message_s);
+ info->message = g_strdup (message);
info->origin = g_strdup (origin);
info->service = g_object_ref (service);
- g_idle_add (error_in_idle, info);
+ g_idle_add (tumbler_service_error_idle, info);
}
+
static gboolean
-finished_in_idle (gpointer user_data)
+tumbler_service_finished_idle (gpointer user_data)
{
- MainLoopInfo *info = user_data;
- DBusMessageIter iter;
- DBusMessage *message;
- dbus_uint32_t ser;
+ SchedulerIdleInfo *info = user_data;
+ DBusMessageIter iter;
+ DBusMessage *message;
- TumblerScheduler *scheduler = info->scheduler;
- guint handle = info->handle;
- gchar *origin = info->origin;
- TumblerService *service = info->service;
+ g_return_val_if_fail (info != NULL, FALSE);
+ g_return_val_if_fail (info->origin != NULL && *info->origin != '\0', FALSE);
+ g_return_val_if_fail (TUMBLER_IS_SERVICE (info->service), FALSE);
/* create a D-Bus message for the finished signal */
message = dbus_message_new_signal (THUMBNAILER_PATH, THUMBNAILER_IFACE, "Finished");
/* define the destination (the thumbnailer client) if possible */
- if (origin)
- dbus_message_set_destination (message, origin);
+ if (info->origin)
+ dbus_message_set_destination (message, info->origin);
/* append the request handle */
dbus_message_iter_init_append (message, &iter);
- dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &handle);
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &info->handle);
/* send the signal message over D-Bus */
- dbus_connection_send (dbus_g_connection_get_connection (service->connection),
- message, &ser);
+ dbus_connection_send (dbus_g_connection_get_connection (info->service->connection),
+ message, NULL);
/* free the allocated D-Bus message */
dbus_message_unref (message);
- g_free (info->origin);
- g_object_unref (info->scheduler);
- g_object_unref (info->service);
- g_slice_free (MainLoopInfo, info);
+ scheduler_idle_info_free (info);
return FALSE;
}
+
+
static void
tumbler_service_scheduler_finished (TumblerScheduler *scheduler,
guint handle,
const gchar *origin,
TumblerService *service)
{
- MainLoopInfo *info = g_slice_new (MainLoopInfo);
+ SchedulerIdleInfo *info;
+
+ g_return_if_fail (TUMBLER_IS_SCHEDULER (scheduler));
+ g_return_if_fail (origin != NULL && *origin != '\0');
+ g_return_if_fail (TUMBLER_IS_SERVICE (service));
+
+ info = g_slice_new0 (SchedulerIdleInfo);
info->scheduler = g_object_ref (scheduler);
info->handle = handle;
info->origin = g_strdup (origin);
info->service = g_object_ref (service);
- g_idle_add (finished_in_idle, info);
+ g_idle_add (tumbler_service_finished_idle, info);
}
+
static gboolean
-ready_in_idle (gpointer user_data)
+tumbler_service_ready_idle (gpointer user_data)
{
- MainLoopInfo *info = user_data;
- DBusMessageIter iter;
- DBusMessageIter strv_iter;
- DBusMessage *message;
- guint n;
- dbus_uint32_t ser;
-
- TumblerScheduler *scheduler = info->scheduler;
- GStrv uris = info->uris;
- guint handle = info->handle;
- gchar *origin = info->origin;
- TumblerService *service = info->service;
+ SchedulerIdleInfo *info = user_data;
+ DBusMessageIter iter;
+ DBusMessageIter strv_iter;
+ DBusMessage *message;
+ guint n;
+
+ g_return_if_fail (info != NULL);
+ g_return_if_fail (TUMBLER_IS_SCHEDULER (info->scheduler));
+ g_return_if_fail (info->uris != NULL && info->uris[0] != NULL && *info->uris[0] != '\0');
+ g_return_if_fail (info->origin != NULL && *info->origin != '\0');
+ g_return_if_fail (TUMBLER_IS_SERVICE (info->service));
/* create a D-Bus message for the ready signal */
message = dbus_message_new_signal (THUMBNAILER_PATH, THUMBNAILER_IFACE, "Ready");
/* define the destination (the thumbnailer client) if possible */
- if (origin)
- dbus_message_set_destination (message, origin);
+ if (info->origin)
+ dbus_message_set_destination (message, info->origin);
dbus_message_iter_init_append (message, &iter);
/* append the request handle */
- dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &handle);
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &info->handle);
/* start the URI string array */
dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY,
DBUS_TYPE_STRING_AS_STRING, &strv_iter);
/* insert all URIs into the array for which we have thumbnails now */
- for (n = 0; uris[n] != NULL; n++)
- dbus_message_iter_append_basic (&strv_iter, DBUS_TYPE_STRING, &uris[n]);
+ for (n = 0; info->uris[n] != NULL; n++)
+ dbus_message_iter_append_basic (&strv_iter, DBUS_TYPE_STRING, &info->uris[n]);
/* finish the URI string array */
dbus_message_iter_close_container (&iter, &strv_iter);
/* send the signal message over D-Bus */
- dbus_connection_send (dbus_g_connection_get_connection (service->connection),
- message, &ser);
+ dbus_connection_send (dbus_g_connection_get_connection (info->service->connection),
+ message, NULL);
/* free the allocated D-Bus message */
dbus_message_unref (message);
-
- g_free (info->origin);
- g_strfreev (info->uris);
- g_object_unref (info->scheduler);
- g_object_unref (info->service);
- g_slice_free (MainLoopInfo, info);
+ scheduler_idle_info_free (info);
return FALSE;
}
+
+
static void
tumbler_service_scheduler_ready (TumblerScheduler *scheduler,
guint handle,
@@ -577,7 +581,14 @@ tumbler_service_scheduler_ready (TumblerScheduler *scheduler,
const gchar *origin,
TumblerService *service)
{
- MainLoopInfo *info = g_slice_new (MainLoopInfo);
+ SchedulerIdleInfo *info;
+
+ g_return_if_fail (TUMBLER_IS_SCHEDULER (scheduler));
+ g_return_if_fail (origin != NULL && *origin != '\0');
+ g_return_if_fail (uris != NULL && uris[0] != NULL && *uris[0] != '\0');
+ g_return_if_fail (TUMBLER_IS_SERVICE (service));
+
+ info = g_slice_new0 (SchedulerIdleInfo);
info->scheduler = g_object_ref (scheduler);
info->handle = handle;
@@ -585,64 +596,68 @@ tumbler_service_scheduler_ready (TumblerScheduler *scheduler,
info->origin = g_strdup (origin);
info->service = g_object_ref (service);
- g_idle_add (ready_in_idle, info);
+ g_idle_add (tumbler_service_ready_idle, info);
}
static gboolean
-started_in_idle (gpointer user_data)
+tumbler_service_started_idle (gpointer user_data)
{
- MainLoopInfo *info = user_data;
- DBusMessageIter iter;
- DBusMessage *message;
- dbus_uint32_t ser;
+ SchedulerIdleInfo *info = user_data;
+ DBusMessageIter iter;
+ DBusMessage *message;
- TumblerScheduler *scheduler = info->scheduler;
- guint handle = info->handle;
- gchar *origin = info->origin;
- TumblerService *service = info->service;
+ g_return_if_fail (info != NULL);
+ g_return_if_fail (TUMBLER_IS_SCHEDULER (info->scheduler));
+ g_return_if_fail (info->origin != NULL && *info->origin != '\0');
+ g_return_if_fail (TUMBLER_IS_SERVICE (info->service));
/* create a D-Bus message for the started signal */
message = dbus_message_new_signal (THUMBNAILER_PATH, THUMBNAILER_IFACE, "Started");
/* define the destination (the thumbnailer client) if possible */
- if (origin)
- dbus_message_set_destination (message, origin);
+ if (info->origin)
+ dbus_message_set_destination (message, info->origin);
/* append the request handle */
dbus_message_iter_init_append (message, &iter);
- dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &handle);
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &info->handle);
/* send the signal message over D-Bus */
- dbus_connection_send (dbus_g_connection_get_connection (service->connection),
- message, &ser);
+ dbus_connection_send (dbus_g_connection_get_connection (info->service->connection),
+ message, NULL);
/* free the allocated D-Bus message */
dbus_message_unref (message);
- g_free (info->origin);
- g_object_unref (info->scheduler);
- g_object_unref (info->service);
- g_slice_free (MainLoopInfo, info);
+ scheduler_idle_info_free (info);
return FALSE;
}
+
+
static void
tumbler_service_scheduler_started (TumblerScheduler *scheduler,
guint handle,
const gchar *origin,
TumblerService *service)
{
- MainLoopInfo *info = g_slice_new (MainLoopInfo);
+ SchedulerIdleInfo *info;
+
+ g_return_if_fail (TUMBLER_IS_SCHEDULER (scheduler));
+ g_return_if_fail (origin != NULL && *origin != '\0');
+ g_return_if_fail (TUMBLER_IS_SERVICE (service));
+
+ info = g_slice_new0 (SchedulerIdleInfo);
info->scheduler = g_object_ref (scheduler);
info->handle = handle;
info->origin = g_strdup (origin);
info->service = g_object_ref (service);
- g_idle_add (started_in_idle, info);
+ g_idle_add (tumbler_service_started_idle, info);
}
@@ -669,6 +684,24 @@ tumbler_service_pre_unmount (TumblerService *service,
+static void
+scheduler_idle_info_free (SchedulerIdleInfo *info)
+{
+ if (info == NULL)
+ return;
+
+ g_free (info->message);
+ g_free (info->origin);
+ g_strfreev (info->uris);
+
+ g_object_unref (info->scheduler);
+ g_object_unref (info->service);
+
+ g_slice_free (SchedulerIdleInfo, info);
+}
+
+
+
TumblerService *
tumbler_service_new (DBusGConnection *connection,
TumblerRegistry *registry)
More information about the Xfce4-commits
mailing list