2018-10-24 18:24:11 +00:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
From: deepak1556 <hop2deep@gmail.com>
|
|
|
|
Date: Thu, 18 Oct 2018 17:07:01 -0700
|
|
|
|
Subject: desktop_media_list.patch
|
|
|
|
|
2021-09-03 23:37:36 +00:00
|
|
|
* Use our grit resources instead of the chrome ones.
|
2021-08-24 00:52:17 +00:00
|
|
|
* Disabled WindowCaptureMacV2 feature for https://github.com/electron/electron/pull/30507
|
2021-11-30 23:12:39 +00:00
|
|
|
* Ensure "OnRefreshComplete()" even if there are no items in the list
|
2021-05-18 22:44:46 +00:00
|
|
|
|
2018-10-03 12:26:42 +00:00
|
|
|
diff --git a/chrome/browser/media/webrtc/desktop_media_list.h b/chrome/browser/media/webrtc/desktop_media_list.h
|
2024-01-25 17:46:30 +00:00
|
|
|
index 02aff44a81ffdf70ee85686867778f2ef0e9eda2..0c6fccf16a11bbaff10115308e4b489490e5d3e6 100644
|
2018-10-03 12:26:42 +00:00
|
|
|
--- a/chrome/browser/media/webrtc/desktop_media_list.h
|
|
|
|
+++ b/chrome/browser/media/webrtc/desktop_media_list.h
|
2022-09-07 07:46:37 +00:00
|
|
|
@@ -107,7 +107,8 @@ class DesktopMediaList {
|
2021-09-03 23:37:36 +00:00
|
|
|
// 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;
|
2022-01-12 07:39:49 +00:00
|
|
|
+ virtual void Update(UpdateCallback callback,
|
|
|
|
+ bool refresh_thumbnails = false) = 0;
|
2018-10-03 12:26:42 +00:00
|
|
|
|
|
|
|
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
|
2023-12-11 20:58:26 +00:00
|
|
|
index 0389599ac786b6abd61ca921347fe12ddd5d0ee7..780927301744ea7312f230cec76a24a33d71f767 100644
|
2018-10-03 12:26:42 +00:00
|
|
|
--- a/chrome/browser/media/webrtc/desktop_media_list_base.cc
|
|
|
|
+++ b/chrome/browser/media/webrtc/desktop_media_list_base.cc
|
2022-09-08 23:23:08 +00:00
|
|
|
@@ -69,12 +69,12 @@ void DesktopMediaListBase::StartUpdating(DesktopMediaListObserver* observer) {
|
2021-09-03 23:37:36 +00:00
|
|
|
Refresh(true);
|
|
|
|
}
|
2019-10-28 22:12:35 +00:00
|
|
|
|
2021-09-03 23:37:36 +00:00
|
|
|
-void DesktopMediaListBase::Update(UpdateCallback callback) {
|
|
|
|
+void DesktopMediaListBase::Update(UpdateCallback callback, bool refresh_thumbnails) {
|
2021-10-21 18:51:36 +00:00
|
|
|
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
2019-10-18 19:57:34 +00:00
|
|
|
DCHECK(sources_.empty());
|
|
|
|
DCHECK(!refresh_callback_);
|
|
|
|
refresh_callback_ = std::move(callback);
|
|
|
|
- Refresh(false);
|
2021-09-03 23:37:36 +00:00
|
|
|
+ Refresh(refresh_thumbnails);
|
2018-10-03 12:26:42 +00:00
|
|
|
}
|
|
|
|
|
2019-10-18 19:57:34 +00:00
|
|
|
int DesktopMediaListBase::GetSourceCount() const {
|
2018-10-03 12:26:42 +00:00
|
|
|
diff --git a/chrome/browser/media/webrtc/desktop_media_list_base.h b/chrome/browser/media/webrtc/desktop_media_list_base.h
|
2024-01-25 17:46:30 +00:00
|
|
|
index cb9be1e80b11c4b5839a0c281d49a0b8d4918a57..7aa54e5cb77b53c247c577dec1637da1ac290c2c 100644
|
2018-10-03 12:26:42 +00:00
|
|
|
--- a/chrome/browser/media/webrtc/desktop_media_list_base.h
|
|
|
|
+++ b/chrome/browser/media/webrtc/desktop_media_list_base.h
|
2022-04-12 11:19:14 +00:00
|
|
|
@@ -39,7 +39,7 @@ class DesktopMediaListBase : public DesktopMediaList {
|
2019-10-28 22:12:35 +00:00
|
|
|
void SetThumbnailSize(const gfx::Size& thumbnail_size) override;
|
|
|
|
void SetViewDialogWindowId(content::DesktopMediaID dialog_id) override;
|
2021-09-03 23:37:36 +00:00
|
|
|
void StartUpdating(DesktopMediaListObserver* observer) override;
|
|
|
|
- void Update(UpdateCallback callback) override;
|
|
|
|
+ void Update(UpdateCallback callback, bool refresh_thumbnails) override;
|
2018-10-03 12:26:42 +00:00
|
|
|
int GetSourceCount() const override;
|
|
|
|
const Source& GetSource(int index) const override;
|
2021-03-04 23:46:13 +00:00
|
|
|
DesktopMediaList::Type GetMediaListType() const override;
|
2022-01-12 07:39:49 +00:00
|
|
|
diff --git a/chrome/browser/media/webrtc/fake_desktop_media_list.cc b/chrome/browser/media/webrtc/fake_desktop_media_list.cc
|
2024-01-25 17:46:30 +00:00
|
|
|
index 16c21bb299683e7b45245701618527dd4c6769a0..43bbc94f68c455d33ab3fa1995d5e33d9eb87c9b 100644
|
2022-01-12 07:39:49 +00:00
|
|
|
--- a/chrome/browser/media/webrtc/fake_desktop_media_list.cc
|
|
|
|
+++ b/chrome/browser/media/webrtc/fake_desktop_media_list.cc
|
2022-10-03 20:21:00 +00:00
|
|
|
@@ -79,7 +79,8 @@ void FakeDesktopMediaList::StartUpdating(DesktopMediaListObserver* observer) {
|
2022-01-12 07:39:49 +00:00
|
|
|
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
|
2024-01-25 17:46:30 +00:00
|
|
|
index afc2cf89299315cca68b50196c2377a7d474883d..52bfd487d501ef895915800b9ee83a5b6c945473 100644
|
2022-01-12 07:39:49 +00:00
|
|
|
--- a/chrome/browser/media/webrtc/fake_desktop_media_list.h
|
|
|
|
+++ b/chrome/browser/media/webrtc/fake_desktop_media_list.h
|
2022-10-03 20:21:00 +00:00
|
|
|
@@ -40,7 +40,8 @@ class FakeDesktopMediaList : public DesktopMediaList {
|
2022-01-12 07:39:49 +00:00
|
|
|
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;
|
2018-10-03 12:26:42 +00:00
|
|
|
diff --git a/chrome/browser/media/webrtc/native_desktop_media_list.cc b/chrome/browser/media/webrtc/native_desktop_media_list.cc
|
2024-04-15 22:10:32 +00:00
|
|
|
index 335792a98ee6db5dd742b532fbf29efb142da26e..764535ed5855296de2139ca2405a43e146300104 100644
|
2018-10-03 12:26:42 +00:00
|
|
|
--- a/chrome/browser/media/webrtc/native_desktop_media_list.cc
|
|
|
|
+++ b/chrome/browser/media/webrtc/native_desktop_media_list.cc
|
2024-04-15 22:10:32 +00:00
|
|
|
@@ -170,7 +170,7 @@ BOOL CALLBACK AllHwndCollector(HWND hwnd, LPARAM param) {
|
2022-02-10 02:58:52 +00:00
|
|
|
#if BUILDFLAG(IS_MAC)
|
2022-10-03 20:21:00 +00:00
|
|
|
BASE_FEATURE(kWindowCaptureMacV2,
|
|
|
|
"WindowCaptureMacV2",
|
|
|
|
- base::FEATURE_ENABLED_BY_DEFAULT);
|
|
|
|
+ base::FEATURE_DISABLED_BY_DEFAULT);
|
2021-08-24 00:52:17 +00:00
|
|
|
#endif
|
2021-11-24 08:45:59 +00:00
|
|
|
|
2023-11-28 21:40:12 +00:00
|
|
|
content::DesktopMediaID::Type ConvertToDesktopMediaIDType(
|
2024-04-15 22:10:32 +00:00
|
|
|
@@ -355,7 +355,7 @@ class NativeDesktopMediaList::Worker
|
2023-09-06 01:17:56 +00:00
|
|
|
base::WeakPtr<NativeDesktopMediaList> media_list_;
|
|
|
|
|
2023-11-28 21:40:12 +00:00
|
|
|
DesktopMediaID::Type source_type_;
|
2023-09-06 01:17:56 +00:00
|
|
|
- const std::unique_ptr<ThumbnailCapturer> capturer_;
|
|
|
|
+ std::unique_ptr<ThumbnailCapturer> capturer_;
|
|
|
|
const ThumbnailCapturer::FrameDeliveryMethod frame_delivery_method_;
|
|
|
|
const bool add_current_process_windows_;
|
|
|
|
|
2024-04-15 22:10:32 +00:00
|
|
|
@@ -643,6 +643,12 @@ void NativeDesktopMediaList::Worker::RefreshNextThumbnail() {
|
2022-01-13 15:21:28 +00:00
|
|
|
FROM_HERE,
|
|
|
|
base::BindOnce(&NativeDesktopMediaList::UpdateNativeThumbnailsFinished,
|
|
|
|
media_list_));
|
|
|
|
+
|
|
|
|
+ // This call is necessary to release underlying OS screen capture mechanisms.
|
2023-07-11 08:21:11 +00:00
|
|
|
+ // Skip if the source list is delegated, as the source list window will be active.
|
|
|
|
+ if (!capturer_->GetDelegatedSourceListController()) {
|
|
|
|
+ capturer_.reset();
|
|
|
|
+ }
|
2022-01-13 15:21:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void NativeDesktopMediaList::Worker::OnCaptureResult(
|
2024-04-15 22:10:32 +00:00
|
|
|
@@ -1027,6 +1033,11 @@ void NativeDesktopMediaList::RefreshForVizFrameSinkWindows(
|
2021-09-03 23:37:36 +00:00
|
|
|
FROM_HERE, base::BindOnce(&Worker::RefreshThumbnails,
|
|
|
|
base::Unretained(worker_.get()),
|
|
|
|
std::move(native_ids), thumbnail_size_));
|
|
|
|
+ } else {
|
2021-11-30 23:12:39 +00:00
|
|
|
+#if defined(USE_AURA)
|
|
|
|
+ pending_native_thumbnail_capture_ = true;
|
|
|
|
+#endif
|
|
|
|
+ UpdateNativeThumbnailsFinished();
|
2021-09-03 23:37:36 +00:00
|
|
|
}
|
2019-09-18 20:20:41 +00:00
|
|
|
}
|
|
|
|
|