From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: deepak1556 Date: Thu, 18 Oct 2018 17:07:01 -0700 Subject: desktop_media_list.patch * Use our grit resources instead of the chrome ones. * Disabled WindowCaptureMacV2 feature for https://github.com/electron/electron/pull/30507 * Ensure "OnRefreshComplete()" even if there are no items in the list diff --git a/chrome/browser/media/webrtc/desktop_media_list.h b/chrome/browser/media/webrtc/desktop_media_list.h index 03af516b6c85523c51a70dac281dbd732c10ea7e..b6f91fbd15181dff4d8ddc4be2b66c2a5012f495 100644 --- a/chrome/browser/media/webrtc/desktop_media_list.h +++ b/chrome/browser/media/webrtc/desktop_media_list.h @@ -96,7 +96,8 @@ class DesktopMediaList { // once per DesktopMediaList instance. It should not be called after // StartUpdating(), and StartUpdating() should not be called until |callback| // has been called. - virtual void Update(UpdateCallback callback) = 0; + virtual void Update(UpdateCallback callback, + bool refresh_thumbnails = false) = 0; virtual int GetSourceCount() const = 0; virtual const Source& GetSource(int index) const = 0; diff --git a/chrome/browser/media/webrtc/desktop_media_list_base.cc b/chrome/browser/media/webrtc/desktop_media_list_base.cc index ac1e7854dc9ae629a499fac7626ec456e18c7867..087da9bbfb9081b94ca8ea8d245871dc3601b1a7 100644 --- a/chrome/browser/media/webrtc/desktop_media_list_base.cc +++ b/chrome/browser/media/webrtc/desktop_media_list_base.cc @@ -65,12 +65,12 @@ void DesktopMediaListBase::StartUpdating(DesktopMediaListObserver* observer) { Refresh(true); } -void DesktopMediaListBase::Update(UpdateCallback callback) { +void DesktopMediaListBase::Update(UpdateCallback callback, bool refresh_thumbnails) { DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK(sources_.empty()); DCHECK(!refresh_callback_); refresh_callback_ = std::move(callback); - Refresh(false); + Refresh(refresh_thumbnails); } int DesktopMediaListBase::GetSourceCount() const { diff --git a/chrome/browser/media/webrtc/desktop_media_list_base.h b/chrome/browser/media/webrtc/desktop_media_list_base.h index 9c77a2d5872cc340b7a237b896afea1dd3be2503..d06869ff78ec0d48e97c3aeb7ac86d4aa9d9b1ba 100644 --- a/chrome/browser/media/webrtc/desktop_media_list_base.h +++ b/chrome/browser/media/webrtc/desktop_media_list_base.h @@ -38,7 +38,7 @@ class DesktopMediaListBase : public DesktopMediaList { void SetThumbnailSize(const gfx::Size& thumbnail_size) override; void SetViewDialogWindowId(content::DesktopMediaID dialog_id) override; void StartUpdating(DesktopMediaListObserver* observer) override; - void Update(UpdateCallback callback) override; + void Update(UpdateCallback callback, bool refresh_thumbnails) override; int GetSourceCount() const override; const Source& GetSource(int index) const override; DesktopMediaList::Type GetMediaListType() const override; diff --git a/chrome/browser/media/webrtc/fake_desktop_media_list.cc b/chrome/browser/media/webrtc/fake_desktop_media_list.cc index 2bf801156b93305705914d3dcb7dcbbebd03c096..6ea87e4471ab64c838b705c64be6bc10d74b213e 100644 --- a/chrome/browser/media/webrtc/fake_desktop_media_list.cc +++ b/chrome/browser/media/webrtc/fake_desktop_media_list.cc @@ -77,7 +77,8 @@ void FakeDesktopMediaList::StartUpdating(DesktopMediaListObserver* observer) { thumbnail_ = gfx::ImageSkia::CreateFrom1xBitmap(bitmap); } -void FakeDesktopMediaList::Update(UpdateCallback callback) { +void FakeDesktopMediaList::Update(UpdateCallback callback, + bool refresh_thumbnails) { std::move(callback).Run(); } diff --git a/chrome/browser/media/webrtc/fake_desktop_media_list.h b/chrome/browser/media/webrtc/fake_desktop_media_list.h index 1e4a652634fbde2ca9a256baca840bbc5a0e001f..546f5bc3a2f79035f0eec196d9e704b849992a6f 100644 --- a/chrome/browser/media/webrtc/fake_desktop_media_list.h +++ b/chrome/browser/media/webrtc/fake_desktop_media_list.h @@ -32,7 +32,8 @@ class FakeDesktopMediaList : public DesktopMediaList { void SetThumbnailSize(const gfx::Size& thumbnail_size) override; void SetViewDialogWindowId(content::DesktopMediaID dialog_id) override; void StartUpdating(DesktopMediaListObserver* observer) override; - void Update(UpdateCallback callback) override; + void Update(UpdateCallback callback, + bool refresh_thumbnails = false) override; int GetSourceCount() const override; const Source& GetSource(int index) const override; DesktopMediaList::Type GetMediaListType() const override; diff --git a/chrome/browser/media/webrtc/native_desktop_media_list.cc b/chrome/browser/media/webrtc/native_desktop_media_list.cc index 6d8c9d940bb4488ffedc1eb8c543c065bb3953c9..2026b926eee56f6b235963b23ab86b2743eaed90 100644 --- a/chrome/browser/media/webrtc/native_desktop_media_list.cc +++ b/chrome/browser/media/webrtc/native_desktop_media_list.cc @@ -18,7 +18,7 @@ #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "chrome/browser/media/webrtc/desktop_media_list.h" -#include "chrome/grit/generated_resources.h" +#include "electron/grit/electron_resources.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "content/public/common/content_features.h" @@ -127,8 +127,9 @@ BOOL CALLBACK AllHwndCollector(HWND hwnd, LPARAM param) { #endif // BUILDFLAG(IS_WIN) #if BUILDFLAG(IS_MAC) +// Refs https://github.com/electron/electron/pull/30507 const base::Feature kWindowCaptureMacV2{"WindowCaptureMacV2", - base::FEATURE_ENABLED_BY_DEFAULT}; + base::FEATURE_DISABLED_BY_DEFAULT}; #endif } // namespace @@ -415,6 +416,9 @@ void NativeDesktopMediaList::Worker::RefreshNextThumbnail() { FROM_HERE, base::BindOnce(&NativeDesktopMediaList::UpdateNativeThumbnailsFinished, media_list_)); + + // This call is necessary to release underlying OS screen capture mechanisms. + capturer_.reset(); } void NativeDesktopMediaList::Worker::OnCaptureResult( @@ -628,6 +632,11 @@ void NativeDesktopMediaList::RefreshForVizFrameSinkWindows( FROM_HERE, base::BindOnce(&Worker::RefreshThumbnails, base::Unretained(worker_.get()), std::move(native_ids), thumbnail_size_)); + } else { +#if defined(USE_AURA) + pending_native_thumbnail_capture_ = true; +#endif + UpdateNativeThumbnailsFinished(); } }