The patch in comment 42 is not acceptable, for two big reasons. First: you need to hold a ref on the GFile object when you put it into the info struct. This means that you cannot simply use g_free for the struct: you need to write a custom free func that handles the unref as well. Also: you can't cast g_source_remove() to a GDestroyNotify and expect that to work... one takes a pointer, and the other an int. This may randomly work on some architectures, sometimes, but you cannot rely on this.
The entire act of keeping the list is slightly suspect. At the sprint I think I mentioned that it would be better to have one global timeout that is set (and reset) when any activity happens. The timeout would run after the activity died down, and it would handle all things together in one go. In that case, you'd still need a list, except for the info objects themselves. It's also fine to keep the list of the timeout IDs, but you can't free it in the way that you're doing in the current patch. Another nice approach, if you want to avoid running the callbacks after teardown: store a weak pointer to the main object in each of the info structs (g_object_add_weak_pointer). The info structs are then used as the user_data to the timeout (this assumes you keep the multiple timeouts). If you find the weak pointer to be empty, then just return without doing anything. That also means that you don't need to handle the "cleanup" -- it will happen automatically. It also means that you can avoid the custom free function if you are clever: the timeout will always run once, and you can do the cleanup from the normal handler (taking care regarding the early exit discussed above). -- You received this bug notification because you are a member of Desktop Packages, which is subscribed to gnome-menus in Ubuntu. https://bugs.launchpad.net/bugs/1506744 Title: Newly installed applications do not show in the dash Status in GLib: Confirmed Status in gnome-menus package in Ubuntu: In Progress Status in libunity package in Ubuntu: Fix Released Status in unity package in Ubuntu: Invalid Bug description: I am running 15.10 development version fully up to date, I installed it a few days ago and I have an issue with newly installed applications not appearing in the dash when I search for them, they can be started via console but the icons/launchers of newly installed applications will only appear in the dash after session is restarted. ProblemType: Bug DistroRelease: Ubuntu 15.10 Package: unity 7.3.2+15.10.20151002.2-0ubuntu1 ProcVersionSignature: Ubuntu 4.2.0-16.19-generic 4.2.3 Uname: Linux 4.2.0-16-generic x86_64 ApportVersion: 2.19.1-0ubuntu2 Architecture: amd64 CompizPlugins: No value set for `/apps/compiz-1/general/screen0/options/active_plugins' CurrentDesktop: Unity Date: Fri Oct 16 08:41:39 2015 InstallationDate: Installed on 2015-10-11 (4 days ago) InstallationMedia: Ubuntu 15.10 "Wily Werewolf" - Alpha amd64 (20151011) SourcePackage: unity UpgradeStatus: No upgrade log present (probably fresh install) To manage notifications about this bug go to: https://bugs.launchpad.net/glib/+bug/1506744/+subscriptions -- Mailing list: https://launchpad.net/~desktop-packages Post to : desktop-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~desktop-packages More help : https://help.launchpad.net/ListHelp