ea52ef9e57
Summary: There are several effects (screenshot, zoom) which need access to the cursor image and cursor hotspot. So far these effects used X11 unconditionally to get the cursor which obviously does not work on Wayland. This change adds a new class PlatformCursorImage to kwinglobals which wraps what a cursor is (image and hotspot) and adds a new virtual method to Platform to provide such a PlatformCursorImage. By default it's the cursor image the Platform tracks. On X11/standalone platform this new virtual method is overriden and provides a PlatformCursorImage from X11 using the code previously used in screenshot effect. Screenshot effect and zoom are adjusted to use the new API instead of X11. Test Plan: Zoom effect tested on Wayland, now gets the proper cursor icon. X11 functionality not yet tested. Reviewers: #kwin, #plasma_on_wayland Subscribers: plasma-devel, kwin Tags: #plasma_on_wayland, #kwin Differential Revision: https://phabricator.kde.org/D3093
127 lines
3.7 KiB
CMake
127 lines
3.7 KiB
CMake
########### next target ###############
|
|
include(ECMSetupVersion)
|
|
|
|
ecm_setup_version(${PROJECT_VERSION}
|
|
VARIABLE_PREFIX KWINEFFECTS
|
|
VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kwineffects_version.h"
|
|
PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KWinEffectsConfigVersion.cmake"
|
|
SOVERSION 10
|
|
)
|
|
|
|
### xrenderutils lib ###
|
|
set(kwin_XRENDERUTILS_SRCS
|
|
kwinxrenderutils.cpp
|
|
logging.cpp
|
|
)
|
|
|
|
add_library(kwinxrenderutils SHARED ${kwin_XRENDERUTILS_SRCS})
|
|
generate_export_header(kwinxrenderutils EXPORT_FILE_NAME kwinxrenderutils_export.h)
|
|
target_link_libraries(kwinxrenderutils
|
|
PUBLIC
|
|
Qt5::Core
|
|
Qt5::Gui
|
|
XCB::XCB
|
|
XCB::XFIXES
|
|
XCB::RENDER
|
|
KF5::WaylandServer
|
|
)
|
|
|
|
set_target_properties(kwinxrenderutils PROPERTIES
|
|
VERSION ${KWINEFFECTS_VERSION_STRING}
|
|
SOVERSION ${KWINEFFECTS_SOVERSION}
|
|
)
|
|
set_target_properties(kwinxrenderutils PROPERTIES OUTPUT_NAME ${KWIN_NAME}xrenderutils)
|
|
|
|
install(TARGETS kwinxrenderutils EXPORT kdeworkspaceLibraryTargets ${INSTALL_TARGETS_DEFAULT_ARGS})
|
|
|
|
### effects lib ###
|
|
set(kwin_EFFECTSLIB_SRCS
|
|
kwineffects.cpp
|
|
anidata.cpp
|
|
kwinanimationeffect.cpp
|
|
logging.cpp
|
|
)
|
|
|
|
set(kwineffects_QT_LIBS
|
|
Qt5::DBus
|
|
Qt5::Widgets
|
|
Qt5::X11Extras
|
|
)
|
|
|
|
set(kwineffects_KDE_LIBS
|
|
KF5::ConfigCore
|
|
KF5::CoreAddons
|
|
KF5::WindowSystem
|
|
)
|
|
|
|
set(kwineffects_XCB_LIBS
|
|
XCB::XCB
|
|
)
|
|
|
|
add_library(kwineffects SHARED ${kwin_EFFECTSLIB_SRCS})
|
|
generate_export_header(kwineffects EXPORT_FILE_NAME kwineffects_export.h)
|
|
target_link_libraries(kwineffects
|
|
PUBLIC
|
|
${kwineffects_QT_LIBS}
|
|
${kwineffects_KDE_LIBS}
|
|
${kwineffects_XCB_LIBS}
|
|
)
|
|
if( KWIN_HAVE_XRENDER_COMPOSITING )
|
|
target_link_libraries(kwineffects PRIVATE kwinxrenderutils XCB::XFIXES)
|
|
endif()
|
|
set_target_properties(kwineffects PROPERTIES
|
|
VERSION ${KWINEFFECTS_VERSION_STRING}
|
|
SOVERSION ${KWINEFFECTS_SOVERSION}
|
|
)
|
|
set_target_properties(kwineffects PROPERTIES OUTPUT_NAME ${KWIN_NAME}effects)
|
|
|
|
install(TARGETS kwineffects EXPORT kdeworkspaceLibraryTargets ${INSTALL_TARGETS_DEFAULT_ARGS})
|
|
|
|
# kwingl(es)utils library
|
|
set(kwin_GLUTILSLIB_SRCS
|
|
kwinglutils.cpp
|
|
kwingltexture.cpp
|
|
kwinglutils_funcs.cpp
|
|
kwinglplatform.cpp
|
|
kwinglcolorcorrection.cpp
|
|
logging.cpp
|
|
)
|
|
|
|
macro( KWIN4_ADD_GLUTILS_BACKEND name glinclude )
|
|
include_directories(${glinclude})
|
|
add_library(${name} SHARED ${kwin_GLUTILSLIB_SRCS})
|
|
generate_export_header(${name} BASE_NAME kwinglutils EXPORT_FILE_NAME kwinglutils_export.h)
|
|
target_link_libraries(${name} PUBLIC Qt5::DBus Qt5::X11Extras XCB::XCB KF5::CoreAddons KF5::WindowSystem)
|
|
set_target_properties(${name} PROPERTIES
|
|
VERSION ${KWINEFFECTS_VERSION_STRING}
|
|
SOVERSION ${KWINEFFECTS_SOVERSION}
|
|
)
|
|
target_link_libraries(${name} PUBLIC ${ARGN})
|
|
|
|
install(TARGETS ${name} EXPORT kdeworkspaceLibraryTargets ${INSTALL_TARGETS_DEFAULT_ARGS})
|
|
endmacro()
|
|
|
|
kwin4_add_glutils_backend(kwinglutils ${epoxy_INCLUDE_DIR} ${epoxy_LIBRARY})
|
|
set_target_properties(kwinglutils PROPERTIES OUTPUT_NAME ${KWIN_NAME}glutils)
|
|
|
|
target_link_libraries(kwinglutils PUBLIC ${epoxy_LIBRARY})
|
|
# -ldl used by OpenGL code
|
|
find_library(DL_LIBRARY dl)
|
|
if (DL_LIBRARY)
|
|
target_link_libraries(kwinglutils PRIVATE ${DL_LIBRARY})
|
|
endif()
|
|
|
|
install( FILES
|
|
kwinglobals.h
|
|
kwineffects.h
|
|
kwinanimationeffect.h
|
|
kwinglplatform.h
|
|
kwinglutils.h
|
|
kwinglutils_funcs.h
|
|
kwingltexture.h
|
|
kwinxrenderutils.h
|
|
${CMAKE_CURRENT_BINARY_DIR}/kwinconfig.h
|
|
${CMAKE_CURRENT_BINARY_DIR}/kwineffects_export.h
|
|
${CMAKE_CURRENT_BINARY_DIR}/kwinglutils_export.h
|
|
${CMAKE_CURRENT_BINARY_DIR}/kwinxrenderutils_export.h
|
|
DESTINATION ${INCLUDE_INSTALL_DIR} COMPONENT Devel)
|