GHOST/Wayland: Add a build time option for DBUS, disable by default
Add WITH_GHOST_WAYLAND_DBUS option, so Blender can be built without DBUS support. Currently it's only used to access the cursor theme. Without this the "default" cursors are used instead. Disabling this since it adds an additional dependency for a minor gain in functionality, with the benefit of removing a library requirement. There is also a problem where Blender hangs on startup for ~5 seconds when DBUS isn't running. Eventually it would be good to be able to avoid this problem without a build option.
This commit is contained in:
parent
2b6c633b63
commit
3a8fa77c1f
@ -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()
|
||||
|
||||
|
@ -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}
|
||||
|
@ -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}
|
||||
|
@ -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 */
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user