From: "Rodolfo García Peñas (kix)" <[email protected]>

The new function unset_icon_image() removes the RImage and the
file path for a given icon.
---
 src/icon.c |   21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/src/icon.c b/src/icon.c
index 018333b..fce0a51 100644
--- a/src/icon.c
+++ b/src/icon.c
@@ -66,6 +66,7 @@ static void get_pixmap_icon_from_user_icon(WIcon *icon);
 static void get_pixmap_icon_from_default_icon(WIcon *icon);
 
 static void icon_update_pixmap(WIcon *icon, RImage *image);
+static void unset_icon_image(WIcon *icon);
 
 static RImage *get_default_image(WScreen *scr);
 /****** Notification Observers ******/
@@ -251,11 +252,7 @@ void wIconDestroy(WIcon * icon)
        if (icon->pixmap)
                XFreePixmap(dpy, icon->pixmap);
 
-       if (icon->file)
-               wfree(icon->file);
-
-       if (icon->file_image != NULL)
-               RReleaseImage(icon->file_image);
+       unset_icon_image(icon);
 
        wCoreDestroy(icon->core);
        wfree(icon);
@@ -390,10 +387,7 @@ Bool wIconChangeImageFile(WIcon *icon, char *file)
        /* New image! */
        if (!error && image) {
                /* Remove the old one */
-               if (icon->file_image) {
-                       RReleaseImage(icon->file_image);
-                       icon->file_image = NULL;
-               }
+               unset_icon_image(icon);
 
                /* Set the new image */
                icon->file_image = image;
@@ -585,6 +579,15 @@ void wIconSelect(WIcon * icon)
        }
 }
 
+static void unset_icon_image(WIcon *icon)
+{
+       if (icon->file)
+               wfree(icon->file);
+
+       if (icon->file_image)
+               RReleaseImage(icon->file_image);
+}
+
 void wIconUpdate(WIcon *icon)
 {
        WScreen *scr = icon->core->screen_ptr;
-- 
1.7.10.4


-- 
To unsubscribe, send mail to [email protected].

Reply via email to