[Xfce4-commits] [xfce/xfdesktop] 02/02: Monitor the wallpaper file for changes (Bug #11620)
noreply at xfce.org
noreply at xfce.org
Fri Mar 20 06:40:37 CET 2015
This is an automated email from the git hooks/post-receive script.
eric pushed a commit to branch master
in repository xfce/xfdesktop.
commit e1829fa8da733da1f5f456b9500eafbc072cc4dd
Author: Eric Koegel <eric.koegel at gmail.com>
Date: Sun Mar 15 14:52:06 2015 +0300
Monitor the wallpaper file for changes (Bug #11620)
Since Xfdesktop is already monitoring the wallpaper folder for
files being added and removed, have it also monitor and update
the current background when it is changed. This way user's custom
scripts can update the background without having to reload all the
desktop icons as well.
---
src/xfce-backdrop.c | 32 +++++++++++++++++++++++++-------
1 file changed, 25 insertions(+), 7 deletions(-)
diff --git a/src/xfce-backdrop.c b/src/xfce-backdrop.c
index 2ffb445..af514be 100644
--- a/src/xfce-backdrop.c
+++ b/src/xfce-backdrop.c
@@ -276,6 +276,8 @@ cb_xfce_backdrop__image_files_changed(GFileMonitor *monitor,
case G_FILE_MONITOR_EVENT_CREATED:
changed_file = g_file_get_path(file);
+ XF_DEBUG("file added: %s", changed_file);
+
/* Make sure we don't already have the new file in the list */
if(g_list_find(backdrop->priv->image_files, changed_file)) {
g_free(changed_file);
@@ -299,6 +301,8 @@ cb_xfce_backdrop__image_files_changed(GFileMonitor *monitor,
case G_FILE_MONITOR_EVENT_DELETED:
changed_file = g_file_get_path(file);
+ XF_DEBUG("file deleted: %s", changed_file);
+
/* find the file in the list */
item = g_list_find_custom(backdrop->priv->image_files,
changed_file,
@@ -310,6 +314,23 @@ cb_xfce_backdrop__image_files_changed(GFileMonitor *monitor,
g_free(changed_file);
break;
+ case G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT:
+ changed_file = g_file_get_path(file);
+
+ XF_DEBUG("file changed: %s", changed_file);
+ XF_DEBUG("image_path: %s", backdrop->priv->image_path);
+
+ if(g_strcmp0(changed_file, backdrop->priv->image_path) == 0) {
+ DBG("match");
+ /* clear the outdated backdrop */
+ xfce_backdrop_clear_cached_image(backdrop);
+
+ /* backdrop changed! */
+ g_signal_emit(G_OBJECT(backdrop), backdrop_signals[BACKDROP_CHANGED], 0);
+ }
+
+ g_free(changed_file);
+ break;
default:
break;
}
@@ -354,6 +375,8 @@ list_image_files_in_dir(const gchar *filename)
static void
xfce_backdrop_load_image_files(XfceBackdrop *backdrop)
{
+ TRACE("entering");
+
/* generate the image_files list if it doesn't exist and monitor that
* directory so we can update the list */
if(backdrop->priv->image_files == NULL && backdrop->priv->image_path) {
@@ -395,9 +418,6 @@ xfce_backdrop_choose_next(XfceBackdrop *backdrop)
filename = backdrop->priv->image_path;
- if(backdrop->priv->image_files == NULL)
- xfce_backdrop_load_image_files(backdrop);
-
if(!backdrop->priv->image_files)
return NULL;
@@ -432,8 +452,6 @@ xfce_backdrop_choose_random(XfceBackdrop *backdrop)
g_return_val_if_fail(XFCE_IS_BACKDROP(backdrop), NULL);
- xfce_backdrop_load_image_files(backdrop);
-
if(!backdrop->priv->image_files)
return NULL;
@@ -470,8 +488,6 @@ xfce_backdrop_choose_chronological(XfceBackdrop *backdrop)
g_return_val_if_fail(XFCE_IS_BACKDROP(backdrop), NULL);
- xfce_backdrop_load_image_files(backdrop);
-
if(!backdrop->priv->image_files)
return NULL;
@@ -1038,6 +1054,8 @@ xfce_backdrop_set_image_filename(XfceBackdrop *backdrop, const gchar *filename)
xfce_backdrop_clear_cached_image(backdrop);
+ xfce_backdrop_load_image_files(backdrop);
+
g_signal_emit(G_OBJECT(backdrop), backdrop_signals[BACKDROP_CHANGED], 0);
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list