e4ac215fcb
Summary: When a plasma session quits, the order of plasmashell and clients quitting is undetermined. This looks bad as our desktop background disappears quite early. Rather than changing the real order, we can have kwin reference the last pixmap of any desktop and hold on to it. Lasting till the compositor quits means it stays on the X frontbuffer till X quits and the experience is seamless. Test Plan: Logged out (with relevant other ksmserver patches) Reviewers: #kwin, zzag Reviewed By: #kwin, zzag Subscribers: zzag, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D24864
207 lines
5.9 KiB
CMake
207 lines
5.9 KiB
CMake
# KI18N Translation Domain for this library
|
|
add_definitions(-DTRANSLATION_DOMAIN=\"kwin_effects\" -DEFFECT_BUILTINS)
|
|
|
|
include_directories(${KWIN_SOURCE_DIR}) # for xcbutils.h
|
|
|
|
set(kwin_effect_OWN_LIBS
|
|
kwineffects
|
|
)
|
|
|
|
if (KWIN_HAVE_XRENDER_COMPOSITING)
|
|
set(kwin_effect_OWN_LIBS ${kwin_effect_OWN_LIBS} kwinxrenderutils)
|
|
endif()
|
|
|
|
set(kwin_effect_KDE_LIBS
|
|
KF5::ConfigGui
|
|
KF5::ConfigWidgets
|
|
KF5::GlobalAccel
|
|
KF5::I18n
|
|
KF5::IconThemes
|
|
KF5::Notifications # screenshot effect
|
|
KF5::Plasma # screenedge effect
|
|
KF5::Service
|
|
KF5::WindowSystem
|
|
)
|
|
|
|
set(kwin_effect_QT_LIBS
|
|
Qt5::Concurrent
|
|
Qt5::DBus
|
|
Qt5::Quick
|
|
Qt5::X11Extras
|
|
)
|
|
|
|
set(kwin_effect_XLIB_LIBS
|
|
${X11_X11_LIB}
|
|
)
|
|
|
|
set(kwin_effect_XCB_LIBS
|
|
XCB::IMAGE
|
|
XCB::XCB
|
|
XCB::XFIXES
|
|
)
|
|
|
|
if (KWIN_HAVE_XRENDER_COMPOSITING)
|
|
set(kwin_effect_XCB_LIBS ${kwin_effect_XCB_LIBS} XCB::RENDER)
|
|
endif()
|
|
|
|
set(kwin_effect_OWN_LIBS ${kwin_effect_OWN_LIBS} kwinglutils)
|
|
|
|
macro(KWIN4_ADD_EFFECT_BACKEND name)
|
|
add_library(${name} SHARED ${ARGN})
|
|
target_link_libraries(${name} PRIVATE
|
|
${kwin_effect_KDE_LIBS}
|
|
${kwin_effect_OWN_LIBS}
|
|
${kwin_effect_QT_LIBS}
|
|
${kwin_effect_XCB_LIBS}
|
|
${kwin_effect_XLIB_LIBS}
|
|
)
|
|
endmacro()
|
|
|
|
# Adds effect plugin with given name. Sources are given after the name
|
|
macro(KWIN4_ADD_EFFECT name)
|
|
kwin4_add_effect_backend(kwin4_effect_${name} ${ARGN})
|
|
|
|
set_target_properties(kwin4_effect_${name} PROPERTIES VERSION 1.0.0 SOVERSION 1)
|
|
set_target_properties(kwin4_effect_${name} PROPERTIES OUTPUT_NAME ${KWIN_NAME}4_effect_${name})
|
|
install(TARGETS kwin4_effect_${name} ${INSTALL_TARGETS_DEFAULT_ARGS})
|
|
endmacro()
|
|
|
|
# Install the KWin/Effect service type
|
|
install(FILES kwineffect.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR})
|
|
|
|
# Create initial variables
|
|
set(kwin4_effect_include_directories)
|
|
|
|
set(kwin4_effect_builtins_sources
|
|
blur/blur.cpp
|
|
blur/blurshader.cpp
|
|
colorpicker/colorpicker.cpp
|
|
coverswitch/coverswitch.cpp
|
|
cube/cube.cpp
|
|
cube/cube_proxy.cpp
|
|
cubeslide/cubeslide.cpp
|
|
desktopgrid/desktopgrid.cpp
|
|
diminactive/diminactive.cpp
|
|
effect_builtins.cpp
|
|
flipswitch/flipswitch.cpp
|
|
glide/glide.cpp
|
|
invert/invert.cpp
|
|
logging.cpp
|
|
lookingglass/lookingglass.cpp
|
|
magiclamp/magiclamp.cpp
|
|
magnifier/magnifier.cpp
|
|
mouseclick/mouseclick.cpp
|
|
mousemark/mousemark.cpp
|
|
presentwindows/presentwindows.cpp
|
|
presentwindows/presentwindows_proxy.cpp
|
|
resize/resize.cpp
|
|
showfps/showfps.cpp
|
|
showpaint/showpaint.cpp
|
|
slide/slide.cpp
|
|
thumbnailaside/thumbnailaside.cpp
|
|
touchpoints/touchpoints.cpp
|
|
trackmouse/trackmouse.cpp
|
|
windowgeometry/windowgeometry.cpp
|
|
wobblywindows/wobblywindows.cpp
|
|
zoom/zoom.cpp
|
|
)
|
|
|
|
qt5_add_resources(kwin4_effect_builtins_sources shaders.qrc)
|
|
|
|
kconfig_add_kcfg_files(kwin4_effect_builtins_sources
|
|
blur/blurconfig.kcfgc
|
|
coverswitch/coverswitchconfig.kcfgc
|
|
cube/cubeconfig.kcfgc
|
|
cubeslide/cubeslideconfig.kcfgc
|
|
desktopgrid/desktopgridconfig.kcfgc
|
|
diminactive/diminactiveconfig.kcfgc
|
|
fallapart/fallapartconfig.kcfgc
|
|
flipswitch/flipswitchconfig.kcfgc
|
|
glide/glideconfig.kcfgc
|
|
lookingglass/lookingglassconfig.kcfgc
|
|
magiclamp/magiclampconfig.kcfgc
|
|
magnifier/magnifierconfig.kcfgc
|
|
mouseclick/mouseclickconfig.kcfgc
|
|
mousemark/mousemarkconfig.kcfgc
|
|
presentwindows/presentwindowsconfig.kcfgc
|
|
resize/resizeconfig.kcfgc
|
|
showfps/showfpsconfig.kcfgc
|
|
slide/slideconfig.kcfgc
|
|
slidingpopups/slidingpopupsconfig.kcfgc
|
|
thumbnailaside/thumbnailasideconfig.kcfgc
|
|
trackmouse/trackmouseconfig.kcfgc
|
|
windowgeometry/windowgeometryconfig.kcfgc
|
|
wobblywindows/wobblywindowsconfig.kcfgc
|
|
zoom/zoomconfig.kcfgc
|
|
)
|
|
|
|
# scripted effects
|
|
function(install_scripted_effect name)
|
|
kpackage_install_package(${name}/package kwin4_effect_${name} effects kwin)
|
|
|
|
# necessary so tests are found without installing
|
|
file(COPY ${name}/package/contents ${name}/package/metadata.desktop DESTINATION ${CMAKE_BINARY_DIR}/bin/kwin/effects/kwin4_effect_${name})
|
|
endfunction()
|
|
install_scripted_effect(dialogparent)
|
|
install_scripted_effect(dimscreen)
|
|
install_scripted_effect(eyeonscreen)
|
|
install_scripted_effect(fade)
|
|
install_scripted_effect(fadedesktop)
|
|
install_scripted_effect(fadingpopups)
|
|
install_scripted_effect(frozenapp)
|
|
install_scripted_effect(login)
|
|
install_scripted_effect(logout)
|
|
install_scripted_effect(maximize)
|
|
install_scripted_effect(morphingpopups)
|
|
install_scripted_effect(scale)
|
|
install_scripted_effect(squash)
|
|
install_scripted_effect(translucency)
|
|
install_scripted_effect(windowaperture)
|
|
install_scripted_effect(sessionquit)
|
|
|
|
###############################################################################
|
|
# Built-in effects go here
|
|
|
|
# Common effects
|
|
add_subdirectory(desktopgrid)
|
|
add_subdirectory(diminactive)
|
|
include(fallapart/CMakeLists.txt)
|
|
include(highlightwindow/CMakeLists.txt)
|
|
include(kscreen/CMakeLists.txt)
|
|
add_subdirectory(magiclamp)
|
|
add_subdirectory(presentwindows)
|
|
add_subdirectory(resize)
|
|
include(screenedge/CMakeLists.txt)
|
|
add_subdirectory(showfps)
|
|
add_subdirectory(showpaint)
|
|
add_subdirectory(slide)
|
|
include(slideback/CMakeLists.txt)
|
|
include(slidingpopups/CMakeLists.txt)
|
|
add_subdirectory(thumbnailaside)
|
|
add_subdirectory(windowgeometry)
|
|
add_subdirectory(zoom)
|
|
|
|
# OpenGL-specific effects
|
|
add_subdirectory(blur)
|
|
include(backgroundcontrast/CMakeLists.txt)
|
|
add_subdirectory(coverswitch)
|
|
add_subdirectory(cube)
|
|
add_subdirectory(cubeslide)
|
|
add_subdirectory(flipswitch)
|
|
add_subdirectory(glide)
|
|
add_subdirectory(invert)
|
|
add_subdirectory(lookingglass)
|
|
add_subdirectory(magnifier)
|
|
add_subdirectory(mouseclick)
|
|
add_subdirectory(mousemark)
|
|
include(screenshot/CMakeLists.txt)
|
|
include(sheet/CMakeLists.txt)
|
|
include(snaphelper/CMakeLists.txt)
|
|
include(startupfeedback/CMakeLists.txt)
|
|
add_subdirectory(trackmouse)
|
|
add_subdirectory(wobblywindows)
|
|
|
|
###############################################################################
|
|
|
|
# Add the builtins plugin
|
|
kwin4_add_effect(builtins ${kwin4_effect_builtins_sources})
|