| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | 
							- /*
 
- Copyright (C) 2014 by Leonhard Oelke <[email protected]>
 
- This program is free software: you can redistribute it and/or modify
 
- it under the terms of the GNU General Public License as published by
 
- the Free Software Foundation, either version 2 of the License, or
 
- (at your option) any later version.
 
- This program is distributed in the hope that it will be useful,
 
- but WITHOUT ANY WARRANTY; without even the implied warranty of
 
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
- GNU General Public License for more details.
 
- You should have received a copy of the GNU General Public License
 
- along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
- */
 
- #include <obs-module.h>
 
- #include <obs-nix-platform.h>
 
- #ifdef ENABLE_PIPEWIRE
 
- #include "pipewire-capture.h"
 
- #endif
 
- OBS_DECLARE_MODULE()
 
- OBS_MODULE_USE_DEFAULT_LOCALE("linux-xshm", "en-US")
 
- MODULE_EXPORT const char *obs_module_description(void)
 
- {
 
- #ifdef ENABLE_PIPEWIRE
 
- 	if (obs_get_nix_platform() != OBS_NIX_PLATFORM_X11_GLX)
 
- 		return "PipeWire based window/screen capture for X11 and Wayland";
 
- 	else
 
- #endif
 
- 		return "xcomposite/xshm based window/screen capture for X11";
 
- }
 
- 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();
 
- 	switch (platform) {
 
- 	case OBS_NIX_PLATFORM_X11_GLX:
 
- 		obs_register_source(&xshm_input);
 
- 		xcomposite_load();
 
- 		break;
 
- 	case OBS_NIX_PLATFORM_X11_EGL:
 
- 		obs_register_source(&xshm_input);
 
- #ifdef ENABLE_PIPEWIRE
 
- 		pipewire_capture_load();
 
- #endif
 
- 		break;
 
- #ifdef ENABLE_WAYLAND
 
- 	case OBS_NIX_PLATFORM_WAYLAND:
 
- #ifdef ENABLE_PIPEWIRE
 
- 		pipewire_capture_load();
 
- #endif
 
- 		break;
 
- #endif
 
- 	}
 
- 	return true;
 
- }
 
- void obs_module_unload(void)
 
- {
 
- 	if (obs_get_nix_platform() == OBS_NIX_PLATFORM_X11_GLX)
 
- 		xcomposite_unload();
 
- #ifdef ENABLE_PIPEWIRE
 
- 	else
 
- 		pipewire_capture_unload();
 
- #endif
 
- }
 
 
  |