Skip to content

Commit

Permalink
Fixed bug 3950 - Don't always call dbus_shutdown in SDL_DBus
Browse files Browse the repository at this point in the history
Alexander Larsson

dbus_shutdown() is a debug feature which closes all global resources in the dbus library. Calling this should be done by the app, not a library, because if there are multiple users of dbus in the process then SDL could shut it down even though another part is using it.

For example, i had an issue with this in mGBA, which uses both Qt and SDL, both using libdbus. I had a session bus, but no system bus (this was in a flatpak sandbox), and when SDL_DBus_Init() failed to init the system bus it called dbus_shudown() and continued on. This caused issues for Qt when running due to its session bus connections having disappeared beneath it.
  • Loading branch information
slouken committed Feb 13, 2018
1 parent 4ff16ba commit 714085d
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/core/linux/SDL_dbus.c
Expand Up @@ -139,9 +139,14 @@ SDL_DBus_Quit(void)
dbus.connection_close(dbus.session_conn);
dbus.connection_unref(dbus.session_conn);
}
/* Don't do this - bug 3950
dbus_shutdown() is a debug feature which closes all global resources in the dbus library. Calling this should be done by the app, not a library, because if there are multiple users of dbus in the process then SDL could shut it down even though another part is using it.
*/
#if 0
if (dbus.shutdown) {
dbus.shutdown();
}
#endif
SDL_zero(dbus);
UnloadDBUSLibrary();
}
Expand Down

0 comments on commit 714085d

Please sign in to comment.