diff --git a/graphics/plasma6-spectacle/files/extra-patch-pipewire-off b/graphics/plasma6-spectacle/files/extra-patch-pipewire-off index ee69ca424239..367d2e39f8bb 100644 --- a/graphics/plasma6-spectacle/files/extra-patch-pipewire-off +++ b/graphics/plasma6-spectacle/files/extra-patch-pipewire-off @@ -1,111 +1,111 @@ ---- CMakeLists.txt.orig 2025-02-19 09:24:17 UTC +--- CMakeLists.txt.orig 2025-06-12 09:06:01 UTC +++ CMakeLists.txt -@@ -83,12 +83,16 @@ find_package(LayerShellQt REQUIRED) +@@ -87,12 +87,16 @@ find_package(LayerShellQt REQUIRED) find_package(Wayland REQUIRED COMPONENTS Client) find_package(PlasmaWaylandProtocols REQUIRED) find_package(LayerShellQt REQUIRED) -find_package(KPipeWire) +option(DISABLE_PIPEWIRE "Disable PipeWire support." ON) +if(NOT DISABLE_PIPEWIRE) + find_package(KPipeWire REQUIRED) + set(PIPEWIRE_FOUND 1) +endif() find_package(OpenCV REQUIRED core imgproc) set_package_properties(KPipeWire PROPERTIES DESCRIPTION "Used to record pipewire streams into a file" - TYPE REQUIRED + TYPE OPTIONAL ) # optional components ---- src/CMakeLists.txt.orig 2025-02-19 09:24:17 UTC +--- src/CMakeLists.txt.orig 2025-06-12 09:06:01 UTC +++ src/CMakeLists.txt @@ -19,6 +19,10 @@ qt_add_qml_module(spectacle URI ${SPECTACLE_QML_URI} D add_executable(spectacle) qt_add_qml_module(spectacle URI ${SPECTACLE_QML_URI} DEPENDENCIES QtCore QtQuick) +if(PIPEWIRE_FOUND) + list(APPEND SPECTACLE_SRCS Platforms/VideoPlatformWayland.cpp) +endif() + target_sources(spectacle PRIVATE ${SPECTACLE_SRCS} - Main.cpp -@@ -61,7 +65,6 @@ target_sources(spectacle PRIVATE + CaptureModeModel.cpp +@@ -60,7 +64,6 @@ target_sources(spectacle PRIVATE Platforms/PlatformNull.cpp - Platforms/ImagePlatformKWin.cpp + Platforms/screencasting.cpp Platforms/VideoPlatform.cpp - Platforms/VideoPlatformWayland.cpp - Platforms/screencasting.cpp - ) - -@@ -102,6 +105,10 @@ target_include_directories(spectacle PUBLIC ${OpenCV_I + RecordingModeModel.cpp + ScreenShotEffect.cpp + ShortcutActions.cpp +@@ -106,6 +109,10 @@ target_include_directories(spectacle PUBLIC ${OpenCV_I target_include_directories(spectacle PUBLIC ${OpenCV_INCLUDE_DIRS}) +if(PIPEWIRE_FOUND) + target_link_libraries(spectacle PRIVATE K::KPipeWireRecord) +endif() + target_link_libraries(spectacle PRIVATE Qt::Concurrent Qt::DBus -@@ -127,7 +134,6 @@ target_link_libraries(spectacle PRIVATE +@@ -131,7 +138,6 @@ target_link_libraries(spectacle PRIVATE KF6::StatusNotifierItem KF6::PrisonScanner KF6::Crash - K::KPipeWireRecord Wayland::Client LayerShellQt::Interface ${OpenCV_LIBRARIES} ---- src/Config.h.in.orig 2025-02-19 09:24:17 UTC +--- src/Config.h.in.orig 2025-06-12 09:06:01 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 2025-02-19 09:24:17 UTC +--- src/Platforms/PlatformLoader.cpp.orig 2025-06-12 09:06:01 UTC +++ src/Platforms/PlatformLoader.cpp @@ -11,7 +11,9 @@ #include "ImagePlatformKWin.h" #include "PlatformNull.h" +#ifdef PIPEWIRE_FOUND #include "VideoPlatformWayland.h" +#endif #ifdef XCB_FOUND #include "ImagePlatformXcb.h" @@ -74,9 +76,12 @@ VideoPlatformPtr getForcedVideoPlatform() return nullptr; } +#ifdef PIPEWIRE_FOUND if (platformName == VideoPlatformWayland::staticMetaObject.className()) { return std::make_unique(); - } else if (platformName == VideoPlatformNull::staticMetaObject.className()) { + } else +#endif + if (platformName == VideoPlatformNull::staticMetaObject.className()) { return std::make_unique(); } else if (!platformName.isEmpty()) { qWarning() << "SPECTACLE_VIDEO_PLATFORM:" << platformName << "is invalid"; @@ -90,9 +95,11 @@ VideoPlatformPtr loadVideoPlatform() if (auto platform = getForcedVideoPlatform()) { return platform; } +#ifdef PIPEWIRE_FOUND if (KWindowSystem::isPlatformWayland()) { return std::make_unique(); } +#endif if (KWindowSystem::isPlatformX11()) { return std::make_unique(i18nc("@info", "Screen recording is not available on X11.")); }