Comment 15 for bug 1232419

Revision history for this message
Tim Lunn (darkxst) wrote :

Seb, so from the stacktrace the problem seems to be that have_notify_shell is being called after managers is destroyed.

the changes
1. moving unwatch dbus to before xsettings_manager_destroy(): seems there is small chance of a race here if the shell disappears while manager is being destroyed.

2. if (manager->priv->managers == NULL), possibly not needed if 1. was the cause of the crash, but added it to be safe, since there is nothing to do but crash in this case.

3. change dbus name, unity spoofs org.gnome.shell, so actually notify_have_shell would have be getting called twice on startup/shutdown of unity. Not upstreamable

4. Only call notify_have_shell if the have_[shell/unity] values have changed. Upstream already do this however its a bit simpler in their case since they only have a single have_shell. The fact that upstream even do this, makes me think its possible for the callbacks to be fired multiple times or when not required. Not upstreamable