diff options
-rw-r--r-- | CMakeLists.txt | 3 | ||||
-rw-r--r-- | build_files/cmake/platform/platform_unix.cmake | 13 | ||||
-rw-r--r-- | intern/ghost/CMakeLists.txt | 7 | ||||
-rw-r--r-- | intern/ghost/intern/GHOST_WaylandCursorSettings.h | 15 |
4 files changed, 34 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 60d980930c1..3c3127e0f64 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -226,6 +226,9 @@ if(UNIX AND NOT (APPLE OR HAIKU)) if (WITH_GHOST_WAYLAND) option(WITH_GHOST_WAYLAND_LIBDECOR "Optionally build with LibDecor window decorations" OFF) mark_as_advanced(WITH_GHOST_WAYLAND_LIBDECOR) + + option(WITH_GHOST_WAYLAND_DBUS "Optionally build with DBUS support (used for Cursor themes). May hang on startup systems where DBUS is not used." OFF) + mark_as_advanced(WITH_GHOST_WAYLAND_DBUS) endif() endif() diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake index 781e2798fea..875305b0564 100644 --- a/build_files/cmake/platform/platform_unix.cmake +++ b/build_files/cmake/platform/platform_unix.cmake @@ -613,7 +613,10 @@ if(WITH_GHOST_WAYLAND) pkg_check_modules(wayland-scanner REQUIRED wayland-scanner) pkg_check_modules(xkbcommon REQUIRED xkbcommon) pkg_check_modules(wayland-cursor REQUIRED wayland-cursor) - pkg_check_modules(dbus REQUIRED dbus-1) + + if(WITH_GHOST_WAYLAND_DBUS) + pkg_check_modules(dbus REQUIRED dbus-1) + endif() if(WITH_GHOST_WAYLAND_LIBDECOR) pkg_check_modules(libdecor REQUIRED libdecor-0>=0.1) @@ -626,9 +629,15 @@ if(WITH_GHOST_WAYLAND) ${wayland-egl_LINK_LIBRARIES} ${xkbcommon_LINK_LIBRARIES} ${wayland-cursor_LINK_LIBRARIES} - ${dbus_LINK_LIBRARIES} ) + if(WITH_GHOST_WAYLAND_DBUS) + list(APPEND PLATFORM_LINKLIBS + ${dbus_LINK_LIBRARIES} + ) + add_definitions(-DWITH_GHOST_WAYLAND_DBUS) + endif() + if(WITH_GHOST_WAYLAND_LIBDECOR) list(APPEND PLATFORM_LINKLIBS ${libdecor_LIBRARIES} diff --git a/intern/ghost/CMakeLists.txt b/intern/ghost/CMakeLists.txt index 150bcb9273e..6a11d00cbc4 100644 --- a/intern/ghost/CMakeLists.txt +++ b/intern/ghost/CMakeLists.txt @@ -268,9 +268,14 @@ elseif(WITH_GHOST_X11 OR WITH_GHOST_WAYLAND) ${wayland-egl_INCLUDE_DIRS} ${xkbcommon_INCLUDE_DIRS} ${wayland-cursor_INCLUDE_DIRS} - ${dbus_INCLUDE_DIRS} ) + if(WITH_GHOST_WAYLAND_DBUS) + list(APPEND INC_SYS + ${dbus_INCLUDE_DIRS} + ) + endif() + if(WITH_GHOST_WAYLAND_LIBDECOR) list(APPEND INC_SYS ${libdecor_INCLUDE_DIRS} diff --git a/intern/ghost/intern/GHOST_WaylandCursorSettings.h b/intern/ghost/intern/GHOST_WaylandCursorSettings.h index 2491f6ca31f..f5649d20850 100644 --- a/intern/ghost/intern/GHOST_WaylandCursorSettings.h +++ b/intern/ghost/intern/GHOST_WaylandCursorSettings.h @@ -5,9 +5,13 @@ */ #pragma once -#include <dbus/dbus.h> #include <string> +#ifdef WITH_GHOST_WAYLAND_DBUS +# include <dbus/dbus.h> +#endif + +#ifdef WITH_GHOST_WAYLAND_DBUS static DBusMessage *get_setting_sync(DBusConnection *const connection, const char *key, const char *value) @@ -66,9 +70,11 @@ static bool parse_type(DBusMessage *const reply, const int type, void *value) return true; } +#endif /* WITH_GHOST_WAYLAND_DBUS */ static bool get_cursor_settings(std::string &theme, int &size) { +#ifdef WITH_GHOST_WAYLAND_DBUS static const char name[] = "org.gnome.desktop.interface"; static const char key_theme[] = "cursor-theme"; static const char key_size[] = "cursor-size"; @@ -113,4 +119,11 @@ static bool get_cursor_settings(std::string &theme, int &size) dbus_message_unref(reply); return true; +#else + /* NOTE: eventually we could have alternative ways to access the theme, + * this uses the "default" theme which is functional (instead of a user-defined theme). */ + (void)theme; + (void)size; + return false; +#endif /* !WITH_GHOST_WAYLAND_DBUS */ } |