diff --git a/CI/linux/01_install_dependencies.sh b/CI/linux/01_install_dependencies.sh
index dc8a9594c..dbf8784a1 100755
--- a/CI/linux/01_install_dependencies.sh
+++ b/CI/linux/01_install_dependencies.sh
@@ -78,7 +78,7 @@ install_dependencies() {
"obs-deps libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libswresample-dev \
libswscale-dev libx264-dev libcurl4-openssl-dev libmbedtls-dev libgl1-mesa-dev libjansson-dev \
libluajit-5.1-dev python3-dev libx11-dev libxcb-randr0-dev libxcb-shm0-dev libxcb-xinerama0-dev \
- libxcomposite-dev libxinerama-dev libxcb1-dev libx11-xcb-dev libxcb-xfixes0-dev swig libcmocka-dev \
+ libxcb-composite0-dev libxinerama-dev libxcb1-dev libx11-xcb-dev libxcb-xfixes0-dev swig libcmocka-dev \
libpci-dev libxss-dev libglvnd-dev libgles2-mesa libgles2-mesa-dev libwayland-dev libxkbcommon-dev"
"qt-deps qtbase5-dev qtbase5-private-dev libqt5svg5-dev qtwayland5"
"cef ${LINUX_CEF_BUILD_VERSION:-${CI_LINUX_CEF_VERSION}}"
diff --git a/plugins/linux-capture/CMakeLists.txt b/plugins/linux-capture/CMakeLists.txt
index 757fea3a0..feb8077e8 100644
--- a/plugins/linux-capture/CMakeLists.txt
+++ b/plugins/linux-capture/CMakeLists.txt
@@ -1,10 +1,10 @@
project(linux-capture)
find_package(X11 REQUIRED)
-if(NOT TARGET X11::Xcomposite)
- obs_status(FATAL_ERROR "linux-capture - Xcomposite library not found.")
+find_package(XCB COMPONENTS XCB XFIXES RANDR SHM XINERAMA COMPOSITE)
+if(NOT TARGET XCB::COMPOSITE)
+ obs_status(FATAL_ERROR "xcb composite library not found")
endif()
-find_package(XCB COMPONENTS XCB XFIXES RANDR SHM XINERAMA)
add_library(linux-capture MODULE)
add_library(OBS::capture ALIAS linux-capture)
@@ -12,31 +12,25 @@ add_library(OBS::capture ALIAS linux-capture)
target_sources(
linux-capture
PRIVATE linux-capture.c
- xcursor.c
- xcursor.h
xcursor-xcb.c
xcursor-xcb.h
xhelpers.c
xhelpers.h
xshm-input.c
- xcomposite-main.cpp
- xcompcap-main.cpp
- xcompcap-main.hpp
- xcompcap-helper.cpp
- xcompcap-helper.hpp)
+ xcomposite-input.c
+ xcomposite-input.h)
target_link_libraries(
linux-capture
PRIVATE OBS::libobs
OBS::obsglad
X11::X11
- X11::Xfixes
- X11::Xcomposite
XCB::XCB
XCB::XFIXES
XCB::RANDR
XCB::SHM
- XCB::XINERAMA)
+ XCB::XINERAMA
+ XCB::COMPOSITE)
set_target_properties(linux-capture PROPERTIES FOLDER "plugins")
diff --git a/plugins/linux-capture/linux-capture.c b/plugins/linux-capture/linux-capture.c
index 5544442f2..c6bd457da 100644
--- a/plugins/linux-capture/linux-capture.c
+++ b/plugins/linux-capture/linux-capture.c
@@ -16,6 +16,7 @@ along with this program. If not, see .
*/
#include
#include
+#include "xcomposite-input.h"
OBS_DECLARE_MODULE()
OBS_MODULE_USE_DEFAULT_LOCALE("linux-xshm", "en-US")
@@ -26,9 +27,6 @@ MODULE_EXPORT const char *obs_module_description(void)
extern struct obs_source_info xshm_input;
-extern void xcomposite_load(void);
-extern void xcomposite_unload(void);
-
bool obs_module_load(void)
{
enum obs_nix_platform_type platform = obs_get_nix_platform();
diff --git a/plugins/linux-capture/xcompcap-helper.cpp b/plugins/linux-capture/xcompcap-helper.cpp
deleted file mode 100644
index d5df9ff4a..000000000
--- a/plugins/linux-capture/xcompcap-helper.cpp
+++ /dev/null
@@ -1,464 +0,0 @@
-#include
-#include
-#include
-#include
-
-#include
-#include