summaryrefslogtreecommitdiffstats
path: root/platform/linuxbsd/freedesktop_portal_desktop.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/linuxbsd/freedesktop_portal_desktop.cpp')
-rw-r--r--platform/linuxbsd/freedesktop_portal_desktop.cpp27
1 files changed, 25 insertions, 2 deletions
diff --git a/platform/linuxbsd/freedesktop_portal_desktop.cpp b/platform/linuxbsd/freedesktop_portal_desktop.cpp
index 72d4e3772f..c3cb0f411d 100644
--- a/platform/linuxbsd/freedesktop_portal_desktop.cpp
+++ b/platform/linuxbsd/freedesktop_portal_desktop.cpp
@@ -35,10 +35,13 @@
#include "core/error/error_macros.h"
#include "core/os/os.h"
#include "core/string/ustring.h"
+#include "core/variant/variant.h"
+#ifdef SOWRAP_ENABLED
#include "dbus-so_wrap.h"
-
-#include "core/variant/variant.h"
+#else
+#include <dbus/dbus.h>
+#endif
#define BUS_OBJECT_NAME "org.freedesktop.portal.Desktop"
#define BUS_OBJECT_PATH "/org/freedesktop/portal/desktop"
@@ -124,12 +127,32 @@ uint32_t FreeDesktopPortalDesktop::get_appearance_color_scheme() {
}
FreeDesktopPortalDesktop::FreeDesktopPortalDesktop() {
+#ifdef SOWRAP_ENABLED
#ifdef DEBUG_ENABLED
int dylibloader_verbose = 1;
#else
int dylibloader_verbose = 0;
#endif
unsupported = (initialize_dbus(dylibloader_verbose) != 0);
+#else
+ unsupported = false;
+#endif
+
+ if (unsupported) {
+ return;
+ }
+
+ bool ver_ok = false;
+ int version_major = 0;
+ int version_minor = 0;
+ int version_rev = 0;
+ dbus_get_version(&version_major, &version_minor, &version_rev);
+ ver_ok = (version_major == 1 && version_minor >= 10) || (version_major > 1); // 1.10.0
+ print_verbose(vformat("PortalDesktop: DBus %d.%d.%d detected.", version_major, version_minor, version_rev));
+ if (!ver_ok) {
+ print_verbose("PortalDesktop: Unsupported DBus library version!");
+ unsupported = true;
+ }
}
#endif // DBUS_ENABLED