This has been bothering me too, so I thought I'd take a look. I'm no C++
person, but playing around a bit with the Unity sources I seem to have
found at least part of the problem.
Here's what I found:
1. The VolumeImp::GetIdentifier() function returns "-" when GVolume devices in
the launcher don't return values for G_VOLUME_IDENTIFIER_KIND_LABEL and
G_VOLUME_IDENTIFIER_KIND_UUID.
2. In my case, my phone (USB) and NFS shares both fall into this category and
are all blacklisted/whitelisted together as a single item.
3. Connecting or disconnecting my phone can cause the "-" to become whitelisted
again, which puts them all back on the launcher.
4. Changing this function to look like this:
<pre><code>std::string GetIdentifier() const
{
glib::String label(g_volume_get_identifier(volume_,
G_VOLUME_IDENTIFIER_KIND_LABEL));
glib::String uuid(g_volume_get_identifier(volume_,
G_VOLUME_IDENTIFIER_KIND_UUID));
if (!uuid.Value() && !label.Value())
{
glib::String udi(g_volume_get_identifier(volume_,
G_VOLUME_IDENTIFIER_KIND_HAL_UDI));
glib::String nfsmount(g_volume_get_identifier(volume_,
G_VOLUME_IDENTIFIER_KIND_NFS_MOUNT));
glib::String unix(g_volume_get_identifier(volume_,
G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE));
glib::String cls(g_volume_get_identifier(volume_,
G_VOLUME_IDENTIFIER_KIND_CLASS));
return udi.Str() + "-" + nfsmount.Str() + "-" + unix.Str() + "-" +
cls.Str();
}
return uuid.Str() + "-" + label.Str();
}
</code></pre>
changes the behaviour. The network devices are now blacklisted as "---
network" (which suggests that CLASS is the only identifier type they
respond to) and they don't return to the whitelist when I
connect/disconnect my phone.
I think the correct solution to this (from someone who knows Gtk/GIO/C++
better than me) is to find a good unique identifier for these devices so
they can be blacklisted independently, because it seems like their
GVolume identifiers are not unique enough for this task.
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1103593
Title:
Unity always shows all devices in launcher when CD is inserted
To manage notifications about this bug go to:
https://bugs.launchpad.net/unity/+bug/1103593/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs