From 2bb29f018a57cd4a962fa5066b13faf702c29b21 Mon Sep 17 00:00:00 2001 From: Gary Kacmarcik Date: Fri, 11 Jan 2019 09:29:19 -0800 Subject: [PATCH] Set callback_ member at start of desktop capturer Start() Some callback wrappers set the callback_ member at the start, but most set it after calling any owned implementation of Start(). Setting it after the call means that the callback_ is not set up for any callbacks that happen during the call. This cl fixes that by setting the callback_ member before any calls are made in Start(). Bug: chromium:916961 Change-Id: Id26f8cc98377ef217f928095834162f5526c1fdf Reviewed-on: https://webrtc-review.googlesource.com/c/117040 Reviewed-by: Brave Yao Commit-Queue: Gary Kacmarcik Cr-Commit-Position: refs/heads/master@{#26231} --- .../desktop_capture/blank_detector_desktop_capturer_wrapper.cc | 2 +- .../desktop_capture/capture_result_desktop_capturer_wrapper.cc | 1 + modules/desktop_capture/fallback_desktop_capturer_wrapper.cc | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/desktop_capture/blank_detector_desktop_capturer_wrapper.cc b/modules/desktop_capture/blank_detector_desktop_capturer_wrapper.cc index 061aab07a8..cf2d03de03 100644 --- a/modules/desktop_capture/blank_detector_desktop_capturer_wrapper.cc +++ b/modules/desktop_capture/blank_detector_desktop_capturer_wrapper.cc @@ -32,8 +32,8 @@ BlankDetectorDesktopCapturerWrapper::~BlankDetectorDesktopCapturerWrapper() = void BlankDetectorDesktopCapturerWrapper::Start( DesktopCapturer::Callback* callback) { - capturer_->Start(this); callback_ = callback; + capturer_->Start(this); } void BlankDetectorDesktopCapturerWrapper::SetSharedMemoryFactory( diff --git a/modules/desktop_capture/capture_result_desktop_capturer_wrapper.cc b/modules/desktop_capture/capture_result_desktop_capturer_wrapper.cc index 5e0d264cc2..e1d4b993e0 100644 --- a/modules/desktop_capture/capture_result_desktop_capturer_wrapper.cc +++ b/modules/desktop_capture/capture_result_desktop_capturer_wrapper.cc @@ -30,6 +30,7 @@ CaptureResultDesktopCapturerWrapper::~CaptureResultDesktopCapturerWrapper() = void CaptureResultDesktopCapturerWrapper::Start(Callback* callback) { if ((callback_ == nullptr) != (callback == nullptr)) { if (callback) { + callback_ = callback; base_capturer_->Start(this); } else { base_capturer_->Start(nullptr); diff --git a/modules/desktop_capture/fallback_desktop_capturer_wrapper.cc b/modules/desktop_capture/fallback_desktop_capturer_wrapper.cc index 5f60f1e3ea..48ee6e2fda 100644 --- a/modules/desktop_capture/fallback_desktop_capturer_wrapper.cc +++ b/modules/desktop_capture/fallback_desktop_capturer_wrapper.cc @@ -80,6 +80,7 @@ FallbackDesktopCapturerWrapper::~FallbackDesktopCapturerWrapper() = default; void FallbackDesktopCapturerWrapper::Start( DesktopCapturer::Callback* callback) { + callback_ = callback; // FallbackDesktopCapturerWrapper catchs the callback of the main capturer, // and checks its return value to decide whether the secondary capturer should // be involved. @@ -88,7 +89,6 @@ void FallbackDesktopCapturerWrapper::Start( // FallbackDesktopCapturerWrapper won't check its return value any more. It // will directly return to the input |callback|. secondary_capturer_->Start(callback); - callback_ = callback; } void FallbackDesktopCapturerWrapper::SetSharedMemoryFactory(