src/core/linux/SDL_dbus.c
changeset 11041 5aebcca5ff18
parent 10737 3406a0f8b041
child 11042 303c875e47f0
     1.1 --- a/src/core/linux/SDL_dbus.c	Sun May 28 00:41:55 2017 -0400
     1.2 +++ b/src/core/linux/SDL_dbus.c	Sun May 28 07:08:10 2017 -0400
     1.3 @@ -112,14 +112,15 @@
     1.4          DBusError err;
     1.5          dbus.error_init(&err);
     1.6          dbus.session_conn = dbus.bus_get_private(DBUS_BUS_SESSION, &err);
     1.7 +        if (!dbus.error_is_set(&err)) {
     1.8 +            dbus.system_conn = dbus.bus_get_private(DBUS_BUS_SYSTEM, &err);
     1.9 +        }
    1.10          if (dbus.error_is_set(&err)) {
    1.11              dbus.error_free(&err);
    1.12 -            if (dbus.session_conn) {
    1.13 -                dbus.connection_unref(dbus.session_conn);
    1.14 -                dbus.session_conn = NULL;
    1.15 -            }
    1.16 +            SDL_DBus_Quit();
    1.17              return;  /* oh well */
    1.18          }
    1.19 +        dbus.connection_set_exit_on_disconnect(dbus.system_conn, 0);
    1.20          dbus.connection_set_exit_on_disconnect(dbus.session_conn, 0);
    1.21      }
    1.22  }
    1.23 @@ -127,12 +128,18 @@
    1.24  void
    1.25  SDL_DBus_Quit(void)
    1.26  {
    1.27 +    if (dbus.system_conn) {
    1.28 +        dbus.connection_close(dbus.system_conn);
    1.29 +        dbus.connection_unref(dbus.system_conn);
    1.30 +    }
    1.31      if (dbus.session_conn) {
    1.32          dbus.connection_close(dbus.session_conn);
    1.33          dbus.connection_unref(dbus.session_conn);
    1.34 +    }
    1.35 +    if (dbus.shutdown) {
    1.36          dbus.shutdown();
    1.37 -        SDL_memset(&dbus, 0, sizeof(dbus));
    1.38      }
    1.39 +    SDL_zero(dbus);
    1.40      UnloadDBUSLibrary();
    1.41  }
    1.42