26b3569a0b
This introduces an own QPA plugin for KWin. QtWayland's plugin is not a good solution for KWin as QtWayland is meant for Wayland clients and not for a Wayland server. Given that it makes more sense to have a very minimal QPA plugin which supports the use cases we actually have. With our own QPA plugin we should be able to improve the following areas: * no need to create Wayland server before QApplication * Qt::BypassWindowManagerHint can be supported * no workaround for creating OpenGL context in main thread * sharing OpenGL context with Qt * OpenGL context for Qt on libhybris backend The plugin supports so far the following features: * creating a QPlatformWindow using KWayland::Client (ShellSurface) * creating a QPlatformBackingStore using a ShmPool * creating a QPlatformOpenGLContext with Wayland::EGL * or creating a QPlatformOpenGLContext which shares with KWin's scene * creating a QPlatformScreen for each KWayland::Client::Output * QPlatformNativeInterface compatible to QtWayland
32 lines
703 B
CMake
32 lines
703 B
CMake
include_directories(${Qt5Core_PRIVATE_INCLUDE_DIRS})
|
|
include_directories(${Qt5Gui_PRIVATE_INCLUDE_DIRS})
|
|
add_definitions(-DQ_FONTCONFIGDATABASE)
|
|
|
|
set(QPA_SOURCES
|
|
abstractplatformcontext.cpp
|
|
backingstore.cpp
|
|
integration.cpp
|
|
main.cpp
|
|
nativeinterface.cpp
|
|
platformcontextwayland.cpp
|
|
screen.cpp
|
|
sharingplatformcontext.cpp
|
|
window.cpp
|
|
)
|
|
|
|
add_library(KWinQpaPlugin MODULE ${QPA_SOURCES})
|
|
target_link_libraries(KWinQpaPlugin
|
|
kwin
|
|
KF5::WaylandClient
|
|
Wayland::Egl
|
|
Qt5PlatformSupport::Qt5PlatformSupport
|
|
${FONTCONFIG_LIBRARIES}
|
|
${FREETYPE_LIBRARIES}
|
|
)
|
|
|
|
install(
|
|
TARGETS
|
|
KWinQpaPlugin
|
|
DESTINATION
|
|
${PLUGIN_INSTALL_DIR}/platforms/
|
|
)
|