--- CMakeLists.txt.orig 2023-05-09 03:35:10 UTC +++ CMakeLists.txt @@ -74,10 +74,14 @@ find_package(PlasmaWaylandProtocols REQUIRED) if (QT_MAJOR_VERSION EQUAL "5") find_package(QtWaylandScanner REQUIRED) endif() -find_package(KPipeWire) +option(DISABLE_PIPEWIRE "Disable PipeWire support." OFF) +if(NOT DISABLE_PIPEWIRE) + find_package(KPipeWire REQUIRED) + set(PIPEWIRE_FOUND 1) +endif() set_package_properties(KPipeWire PROPERTIES DESCRIPTION "Used to record pipewire streams into a file" - TYPE REQUIRED + TYPE OPTIONAL ) # optional components --- src/CMakeLists.txt.orig 2023-05-09 03:35:10 UTC +++ src/CMakeLists.txt @@ -9,6 +9,10 @@ kconfig_add_kcfg_files(SPECTACLE_SRCS GENERATE_MOC Gui ecm_qt_declare_logging_category(SPECTACLE_SRCS HEADER spectacle_core_debug.h IDENTIFIER SPECTACLE_CORE_LOG CATEGORY_NAME org.kde.spectacle.core DESCRIPTION "spectacle (core)" EXPORT SPECTACLE) ecm_qt_declare_logging_category(SPECTACLE_SRCS HEADER spectacle_gui_debug.h IDENTIFIER SPECTACLE_GUI_LOG CATEGORY_NAME org.kde.spectacle.gui DESCRIPTION "spectacle (gui)" EXPORT SPECTACLE) +if(PIPEWIRE_FOUND) + list(APPEND SPECTACLE_SRCS Platforms/VideoPlatformWayland.cpp) +endif() + add_executable(spectacle ${SPECTACLE_SRCS} Main.cpp @@ -45,7 +49,6 @@ add_executable(spectacle Platforms/PlatformKWinWayland.cpp Platforms/PlatformKWinWayland2.cpp Platforms/VideoPlatform.cpp - Platforms/VideoPlatformWayland.cpp Platforms/screencasting.cpp ../resources.qrc @@ -84,6 +87,10 @@ endif() ki18n_wrap_ui(spectacle Gui/SettingsDialog/GeneralOptions.ui Gui/SettingsDialog/SaveOptions.ui) +if(PIPEWIRE_FOUND) + target_link_libraries(spectacle K::KPipeWireRecord) +endif() + target_link_libraries( spectacle Qt::Concurrent @@ -107,7 +114,6 @@ target_link_libraries( KF${QT_MAJOR_VERSION}::XmlGui KF${QT_MAJOR_VERSION}::GuiAddons KF${QT_MAJOR_VERSION}::Kirigami2 - K::KPipeWireRecord Wayland::Client ) --- src/Config.h.in.orig 2023-05-16 10:09:13 UTC +++ src/Config.h.in @@ -7,6 +7,9 @@ /* Define to 1 if we have Purpose */ #cmakedefine PURPOSE_FOUND 1 +/* Define to 1 if we are building with PIPEWIRE */ +#cmakedefine PIPEWIRE_FOUND 1 + /* Set the Spectacle version from CMake */ #cmakedefine SPECTACLE_VERSION "@SPECTACLE_VERSION@" --- src/Platforms/PlatformLoader.cpp.orig 2023-05-09 03:35:10 UTC +++ src/Platforms/PlatformLoader.cpp @@ -10,7 +10,9 @@ #include "PlatformKWinWayland.h" #include "PlatformKWinWayland2.h" #include "PlatformNull.h" +#ifdef PIPEWIRE_FOUND #include "VideoPlatformWayland.h" +#endif #ifdef XCB_FOUND #include "PlatformXcb.h" @@ -44,8 +46,10 @@ PlatformPtr loadPlatform() VideoPlatformPtr loadVideoPlatform() { +#ifdef PIPEWIRE_FOUND if (KWindowSystem::isPlatformWayland()) { return std::make_unique(); } +#endif return std::make_unique(); }