142aab2e24
Summary: A new method to tell the effects system whether the compositor scene is able to drive animations. E.g. on software emulation (llvmpipe) it's better to not do any animations at all. This information can be used by effects to adjust their behavior, e.g. PresentWindows could skip transitions or effects can use it in their supported check to completely disable themselves. As a first step all scripted effects are considered to be unsupported if animations are not supported. They inherit AnimationEffect and are all about driving animations. The information whether animations are supported comes from the Scene. It's implemented in the following way: * XRender: animations are always supported * QPainter: animations are never supported * OpenGL: animations are supported, except for software emulation In addition - for easier testing - there is a new env variable KWIN_EFFECTS_FORCE_ANIMATIONS to overwrite the selection. Reviewers: #kwin, #plasma Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D2386
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 9
|
|
)
|
|
|
|
### 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)
|