[maemo-commits] [maemo-commits] r16080 - in projects/haf/branches/hildon-thumbnail/daemonize: . daemon daemon/plugins
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Wed Sep 10 12:23:57 EEST 2008
- Previous message: [maemo-commits] r16079 - in projects/haf/trunk/gtk+: . gtk
- Next message: [maemo-commits] r16081 - in projects/haf/trunk/gtk+: . gtk
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: pvanhoof Date: 2008-09-10 12:23:55 +0300 (Wed, 10 Sep 2008) New Revision: 16080 Modified: projects/haf/branches/hildon-thumbnail/daemonize/ChangeLog projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.c projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.h projects/haf/branches/hildon-thumbnail/daemonize/daemon/plugins/exec-plugin.c projects/haf/branches/hildon-thumbnail/daemonize/daemon/plugins/gdkpixbuf-plugin.c projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.c Log: 2008-09-09 Philip Van Hoof <pvanhoof at gnome.org> x Modified: projects/haf/branches/hildon-thumbnail/daemonize/ChangeLog =================================================================== --- projects/haf/branches/hildon-thumbnail/daemonize/ChangeLog 2008-09-09 21:25:45 UTC (rev 16079) +++ projects/haf/branches/hildon-thumbnail/daemonize/ChangeLog 2008-09-10 09:23:55 UTC (rev 16080) @@ -1,3 +1,10 @@ +2008-09-10 Philip Van Hoof <pvanhoof at gnome.org> + + * daemon/plugins/gdkpixbuf-plugin.c + * daemon/plugins/exec-plugin.c + * daemon/manager.c + * daemon/manager.h: File monitoring the service and configuration files + 2008-09-09 Philip Van Hoof <pvanhoof at gnome.org> * thumbs/thumber-register.c Modified: projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.c =================================================================== --- projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.c 2008-09-09 21:25:45 UTC (rev 16079) +++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.c 2008-09-10 09:23:55 UTC (rev 16080) @@ -102,7 +102,7 @@ g_slice_free (ValueInfo, info); } -void +static void manager_check_dir (Manager *object, gchar *path, gboolean override) { ManagerPrivate *priv = MANAGER_GET_PRIVATE (object); @@ -216,10 +216,33 @@ g_hash_table_unref (pre); } -void + +static void +on_dir_changed (GFileMonitor *monitor, GFile *file, GFile *other_file, GFileMonitorEvent event_type, gpointer user_data) +{ + switch (event_type) + { + case G_FILE_MONITOR_EVENT_CHANGED: + case G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT: + case G_FILE_MONITOR_EVENT_DELETED: + case G_FILE_MONITOR_EVENT_CREATED: { + gchar *path = g_file_get_path (file); + gboolean override = (strcmp (THUMBNAILERS_DIR, path) == 0); + manager_check_dir (MANAGER (user_data), path, override); + g_free (path); + } + break; + default: + break; + } +} + +static void manager_check (Manager *object) { ManagerPrivate *priv = MANAGER_GET_PRIVATE (object); + GFileMonitor *monitor; + GFile *file; gchar *home_thumbnlrs = g_build_filename (g_get_user_data_dir (), "thumbnailers", NULL); @@ -229,10 +252,25 @@ manager_check_dir (object, THUMBNAILERS_DIR, FALSE); manager_check_dir (object, home_thumbnlrs, TRUE); + file = g_file_new_for_path (home_thumbnlrs); + monitor = g_file_monitor_file (file, G_FILE_MONITOR_NONE, NULL, NULL); + g_signal_connect (G_OBJECT (monitor), "changed", + G_CALLBACK (on_dir_changed), NULL); + + // g_object_unref (file) + // g_object_unref (monitor) + + file = g_file_new_for_path (THUMBNAILERS_DIR); + monitor = g_file_monitor_file (file, G_FILE_MONITOR_NONE, NULL, NULL); + g_signal_connect (G_OBJECT (monitor), "changed", + G_CALLBACK (on_dir_changed), NULL); + g_mutex_unlock (priv->mutex); + // g_object_unref (file) + // g_object_unref (monitor) + g_free (home_thumbnlrs); - } @@ -387,12 +425,12 @@ manager_init (Manager *object) { ManagerPrivate *priv = MANAGER_GET_PRIVATE (object); + GFile *file1, *file2; priv->mutex = g_mutex_new (); priv->handlers = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify) g_free, (GDestroyNotify) g_object_unref); - } void Modified: projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.h =================================================================== --- projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.h 2008-09-09 21:25:45 UTC (rev 16079) +++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/manager.h 2008-09-10 09:23:55 UTC (rev 16080) @@ -49,7 +49,6 @@ void manager_register (Manager *object, gchar *mime_type, DBusGMethodInvocation *context); -void manager_check (Manager *Object); DBusGProxy* manager_get_handler (Manager *object, const gchar *mime_type); void manager_do_stop (void); Modified: projects/haf/branches/hildon-thumbnail/daemonize/daemon/plugins/exec-plugin.c =================================================================== --- projects/haf/branches/hildon-thumbnail/daemonize/daemon/plugins/exec-plugin.c 2008-09-09 21:25:45 UTC (rev 16079) +++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/plugins/exec-plugin.c 2008-09-10 09:23:55 UTC (rev 16080) @@ -43,7 +43,8 @@ static gchar **supported = NULL; static gboolean do_cropped = TRUE; -static GHashTable *execs; +static GHashTable *execs = NULL; +static GFileMonitor *monitor = NULL; const gchar** hildon_thumbnail_plugin_supported (void) @@ -319,14 +320,15 @@ if (supported) g_strfreev (supported); supported = NULL; + if (monitor) + g_object_unref (monitor); g_hash_table_unref (execs); execs = NULL; } -void -hildon_thumbnail_plugin_init (gboolean *cropping, GError **error) +static void +reload_config (const gchar *config) { - gchar *config = g_build_filename (g_get_user_config_dir (), "hildon-thumbnailer", "exec-plugin.conf", NULL); GKeyFile *keyfile; GStrv mimetypes; guint i = 0, length; @@ -334,18 +336,16 @@ keyfile = g_key_file_new (); if (!g_key_file_load_from_file (keyfile, config, G_KEY_FILE_NONE, NULL)) { - g_free (config); do_cropped = TRUE; - *cropping = do_cropped; return; } - execs = g_hash_table_new_full (g_str_hash, g_str_equal, - (GDestroyNotify) g_free, - (GDestroyNotify) g_free); + if (!execs) + execs = g_hash_table_new_full (g_str_hash, g_str_equal, + (GDestroyNotify) g_free, + (GDestroyNotify) g_free); do_cropped = g_key_file_get_boolean (keyfile, "Hildon Thumbnailer", "DoCropping", NULL); - *cropping = do_cropped; mimetypes = g_key_file_get_string_list (keyfile, "Hildon Thumbnailer", "MimeTypes", &length, NULL); @@ -356,6 +356,33 @@ } g_strfreev (mimetypes); - g_free (config); g_key_file_free (keyfile); } + +static void +on_file_changed (GFileMonitor *monitor, GFile *file, GFile *other_file, GFileMonitorEvent event_type, gpointer user_data) +{ + if (event_type == G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT || event_type == G_FILE_MONITOR_EVENT_CREATED) { + gchar *config = g_file_get_path (file); + reload_config (config); + g_free (config); + } +} + +void +hildon_thumbnail_plugin_init (gboolean *cropping, GError **error) +{ + gchar *config = g_build_filename (g_get_user_config_dir (), "hildon-thumbnailer", "exec-plugin.conf", NULL); + GFile *file = g_file_new_for_path (config); + + monitor = g_file_monitor_file (file, G_FILE_MONITOR_NONE, NULL, NULL); + + g_signal_connect (G_OBJECT (monitor), "changed", + G_CALLBACK (on_file_changed), NULL); + + reload_config (config); + + *cropping = do_cropped; + + g_free (config); +} Modified: projects/haf/branches/hildon-thumbnail/daemonize/daemon/plugins/gdkpixbuf-plugin.c =================================================================== --- projects/haf/branches/hildon-thumbnail/daemonize/daemon/plugins/gdkpixbuf-plugin.c 2008-09-09 21:25:45 UTC (rev 16079) +++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/plugins/gdkpixbuf-plugin.c 2008-09-10 09:23:55 UTC (rev 16080) @@ -58,6 +58,7 @@ static gchar **supported = NULL; static gboolean do_cropped = TRUE; +static GFileMonitor *monitor = NULL; const gchar** hildon_thumbnail_plugin_supported (void) @@ -365,26 +366,52 @@ { if (supported) g_strfreev (supported); + if (monitor) + g_object_unref (monitor); supported = NULL; } -void -hildon_thumbnail_plugin_init (gboolean *cropping, GError **error) +static void +reload_config (const gchar *config) { - gchar *config = g_build_filename (g_get_user_config_dir (), "hildon-thumbnailer", "gdkpixbuf-plugin.conf", NULL); GKeyFile *keyfile; keyfile = g_key_file_new (); if (!g_key_file_load_from_file (keyfile, config, G_KEY_FILE_NONE, NULL)) { - g_free (config); do_cropped = TRUE; - *cropping = do_cropped; return; } do_cropped = g_key_file_get_boolean (keyfile, "Hildon Thumbnailer", "DoCropping", NULL); + g_key_file_free (keyfile); +} + +static void +on_file_changed (GFileMonitor *monitor, GFile *file, GFile *other_file, GFileMonitorEvent event_type, gpointer user_data) +{ + if (event_type == G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT || event_type == G_FILE_MONITOR_EVENT_CREATED) { + gchar *config = g_file_get_path (file); + reload_config (config); + g_free (config); + } +} + +void +hildon_thumbnail_plugin_init (gboolean *cropping, GError **error) +{ + gchar *config = g_build_filename (g_get_user_config_dir (), "hildon-thumbnailer", "gdkpixbuf-plugin.conf", NULL); + GFile *file = g_file_new_for_path (config); + + monitor = g_file_monitor_file (file, G_FILE_MONITOR_NONE, NULL, NULL); + + g_signal_connect (G_OBJECT (monitor), "changed", + G_CALLBACK (on_file_changed), NULL); + + reload_config (config); + *cropping = do_cropped; + g_free (config); - g_key_file_free (keyfile); + } Modified: projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.c =================================================================== --- projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.c 2008-09-09 21:25:45 UTC (rev 16079) +++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.c 2008-09-10 09:23:55 UTC (rev 16080) @@ -217,9 +217,6 @@ } g_mutex_unlock (priv->mutex); - - manager_check (priv->manager); - /* We split the request into groups that have items with the same * mime-type and one group with items that already have a thumbnail */
- Previous message: [maemo-commits] r16079 - in projects/haf/trunk/gtk+: . gtk
- Next message: [maemo-commits] r16081 - in projects/haf/trunk/gtk+: . gtk
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]