Browse Source

dbus: guard against uninitialized D-Bus

Before calling any D-Bus related methods we should first ensure that
they
were correctly loaded.

In the event where `LoadDBUSLibrary()` was not able to load the D-Bus
library, we should just return early, signalling with SDL_FALSE that we
were unable to inhibit the Screensaver.

Helps: https://github.com/ValveSoftware/steam-for-linux/issues/8815

Signed-off-by: Ludovico de Nittis <ludovico.denittis@collabora.com>
Ludovico de Nittis 2 years ago
parent
commit
379d478055
1 changed files with 6 additions and 0 deletions
  1. 6 0
      src/core/linux/SDL_dbus.c

+ 6 - 0
src/core/linux/SDL_dbus.c

@@ -419,6 +419,12 @@ SDL_DBus_ScreensaverInhibit(SDL_bool inhibit)
         return SDL_TRUE;
     }
 
+    if (!dbus.session_conn) {
+        /* We either lost connection to the session bus or were not able to
+         * load the D-Bus library at all. */
+        return SDL_FALSE;
+    }
+
     if (SDL_DetectSandbox() != SDL_SANDBOX_NONE) {
         const char *bus_name = "org.freedesktop.portal.Desktop";
         const char *path = "/org/freedesktop/portal/desktop";