#include "modules/desktop_capture/linux/x11/screen_capturer_x11.h"
#include <X11/Xlib.h>
#include <X11/extensions/Xdamage.h>
#include <X11/extensions/Xfixes.h>
#include <X11/extensions/damagewire.h>
#include <dlfcn.h>
#include <stdint.h>
#include <string.h>
#include <memory>
#include <utility>
#include "modules/desktop_capture/desktop_capture_options.h"
#include "modules/desktop_capture/desktop_capturer.h"
#include "modules/desktop_capture/desktop_frame.h"
#include "modules/desktop_capture/desktop_geometry.h"
#include "modules/desktop_capture/linux/x11/x_server_pixel_buffer.h"
#include "modules/desktop_capture/screen_capture_frame_queue.h"
#include "modules/desktop_capture/screen_capturer_helper.h"
#include "modules/desktop_capture/shared_desktop_frame.h"
#include "rtc_base/checks.h"
#include "rtc_base/logging.h"
#include "rtc_base/sanitizer.h"
#include "rtc_base/time_utils.h"
#include "rtc_base/trace_event.h"
namespace webrtc {
ScreenCapturerX11::ScreenCapturerX11() { … }
ScreenCapturerX11::~ScreenCapturerX11() { … }
bool ScreenCapturerX11::Init(const DesktopCaptureOptions& options) { … }
void ScreenCapturerX11::InitXDamage() { … }
RTC_NO_SANITIZE("cfi-icall")
void ScreenCapturerX11::InitXrandr() { … }
RTC_NO_SANITIZE("cfi-icall")
void ScreenCapturerX11::UpdateMonitors() { … }
void ScreenCapturerX11::Start(Callback* callback) { … }
void ScreenCapturerX11::CaptureFrame() { … }
bool ScreenCapturerX11::GetSourceList(SourceList* sources) { … }
bool ScreenCapturerX11::SelectSource(SourceId id) { … }
bool ScreenCapturerX11::HandleXEvent(const XEvent& event) { … }
std::unique_ptr<DesktopFrame> ScreenCapturerX11::CaptureScreen() { … }
void ScreenCapturerX11::ScreenConfigurationChanged() { … }
void ScreenCapturerX11::SynchronizeFrame() { … }
RTC_NO_SANITIZE("cfi-icall")
void ScreenCapturerX11::DeinitXlib() { … }
std::unique_ptr<DesktopCapturer> ScreenCapturerX11::CreateRawScreenCapturer(
const DesktopCaptureOptions& options) { … }
}