diff --git a/modules/desktop_capture/desktop_and_cursor_composer.cc b/modules/desktop_capture/desktop_and_cursor_composer.cc index 638372d854..1061ec5157 100644 --- a/modules/desktop_capture/desktop_and_cursor_composer.cc +++ b/modules/desktop_capture/desktop_and_cursor_composer.cc @@ -144,6 +144,13 @@ DesktopAndCursorComposer::DesktopAndCursorComposer( DesktopAndCursorComposer::~DesktopAndCursorComposer() = default; +std::unique_ptr +DesktopAndCursorComposer::CreateWithoutMouseCursorMonitor( + std::unique_ptr desktop_capturer) { + return std::unique_ptr( + new DesktopAndCursorComposer(desktop_capturer.release(), nullptr)); +} + void DesktopAndCursorComposer::Start(DesktopCapturer::Callback* callback) { callback_ = callback; if (mouse_monitor_) diff --git a/modules/desktop_capture/desktop_and_cursor_composer.h b/modules/desktop_capture/desktop_and_cursor_composer.h index d4e5f8a4d4..8958d0ea7f 100644 --- a/modules/desktop_capture/desktop_and_cursor_composer.h +++ b/modules/desktop_capture/desktop_and_cursor_composer.h @@ -33,7 +33,7 @@ class RTC_EXPORT DesktopAndCursorComposer public DesktopCapturer::Callback, public MouseCursorMonitor::Callback { public: - // Creates a new blender that captures mouse cursor using + // Creates a new composer that captures mouse cursor using // MouseCursorMonitor::Create(options) and renders it into the frames // generated by |desktop_capturer|. DesktopAndCursorComposer(std::unique_ptr desktop_capturer, @@ -41,6 +41,12 @@ class RTC_EXPORT DesktopAndCursorComposer ~DesktopAndCursorComposer() override; + // Creates a new composer that relies on an external source for cursor shape + // and position information via the MouseCursorMonitor::Callback interface. + static std::unique_ptr + CreateWithoutMouseCursorMonitor( + std::unique_ptr desktop_capturer); + // DesktopCapturer interface. void Start(DesktopCapturer::Callback* callback) override; void SetSharedMemoryFactory( @@ -48,6 +54,10 @@ class RTC_EXPORT DesktopAndCursorComposer void CaptureFrame() override; void SetExcludedWindow(WindowId window) override; + // MouseCursorMonitor::Callback interface. + void OnMouseCursor(MouseCursor* cursor) override; + void OnMouseCursorPosition(const DesktopVector& position) override; + private: // Allows test cases to use a fake MouseCursorMonitor implementation. friend class DesktopAndCursorComposerTest; @@ -61,10 +71,6 @@ class RTC_EXPORT DesktopAndCursorComposer void OnCaptureResult(DesktopCapturer::Result result, std::unique_ptr frame) override; - // MouseCursorMonitor::Callback interface. - void OnMouseCursor(MouseCursor* cursor) override; - void OnMouseCursorPosition(const DesktopVector& position) override; - const std::unique_ptr desktop_capturer_; const std::unique_ptr mouse_monitor_;