[Galago-devel] question on libnotify usage, specifically relating to freeing up a notification

Gregory Hosler ghosler at redhat.com
Fri Dec 21 01:58:18 PST 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Christian Hammond wrote:
> Hi.
> 
> In your usage below, you want to call g_object_unref on the notification
> after you've shown it. You won't need it around unless you're dealing with
> updating it or handling multiple actions, in which case you'd then want to
> unref when you're finished with it then. I recommend looking at
> libnotify/tests/ for some examples on this.
> 
> Christian


Thanks a lot Christian!

best rgds,

- -Greg

> 
> On Dec 19, 2007 8:33 PM, Gregory Hosler <ghosler at redhat.com> wrote:
> 
> Hi all,
> 
> I've gone thru the devhelp documentation on libnotify, and have been
> able to successfully incorporate libnotify into my application.
> 
> I am curious as regards to releasing the memory / structures that are
> used by a NotifyNotification.
> 
> My code is as follows:
> 
>        NotifyNotification* my_popup;
>        GdkPixbufLoader *my_loader;
>        GdkPixbuf *jpg_pixbuf;
>        GError *my_error;
>        int rv;
> 
>        my_popup=notify_notification_new(mytitle, mymsg, NULL,
> systray_get_widget());
>        if (icon_pixbuf) {
>                notify_notification_set_icon_from_pixbuf(my_popup,
> icon_pixbuf);
>                g_object_unref(icon_pixbuf);
>        }
>        notify_notification_set_timeout(my_popup, timeout);
>        my_error = 0;
>        rv = notify_notification_show(my_popup, &my_error);
> 
> 
> Everything works as expected. The notifications show, they timeout and
> disappear. But it seems as though they are never freed/destroyed. When I
> run valgrind on my application, I am seeing:
> 
> ==6969== 10,240 bytes in 5 blocks are still reachable in loss record
> 13,858 of 13,883
> ==6969==    at 0x4005622: realloc (vg_replace_malloc.c:306)
> ==6969==    by 0x26B91A: g_realloc (gmem.c:168)
> ==6969==    by 0x24601F: g_array_maybe_expand (garray.c:339)
> ==6969==    by 0x2467D8: g_array_append_vals (garray.c:132)
> ==6969==    by 0xA9487E: (within /usr/lib/libdbus-glib-1.so.2.1.0)
> ==6969==    by 0xA937A3: (within /usr/lib/libdbus-glib-1.so.2.1.0)
> ==6969==    by 0x3B8569: g_value_copy (gvalue.c:119)
> ==6969==    by 0x3B8B3B: g_value_array_insert (gvaluearray.c:177)
> ==6969==    by 0x3B8C5D: g_value_array_append (gvaluearray.c:153)
> ==6969==    by 0xDEF822: notify_notification_set_icon_from_pixbuf
> (notification.c:894)
> 
> as well as a number of other of instances of "still reachable in loss
> record" ...
> 
> So my question is: what happens when the notification "times out". Is it
> destroyed ?
> 
> Same question when you click on teh notification to dismiss it.
> 
> Are there any objects that are put into the notification that need to be
> "unref"'ed ?
> 
> Thank you, and best rgds,
> 
> -Greg
> 
_______________________________________________
galago-devel mailing list
galago-devel at lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/galago-devel
>>

- --
+---------------------------------------------------------------------+

Please also check the log file at "/dev/null" for additional information.
                (from /var/log/Xorg.setup.log)

| Greg Hosler                                   ghosler at redhat.com    |
+---------------------------------------------------------------------+
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

iD8DBQFHa445404fl/0CV/QRAj26AJ0fZ/omR4X4eRJWMg/8stTdoEpkLwCdE3+A
SsgfCyq2HyloKkO097hG2kg=
=1vxv
-----END PGP SIGNATURE-----


More information about the galago-devel mailing list