зеркало из https://github.com/electron/electron.git
fix: skip the first two invalid updates when SCK is enabled (#41340)
This commit is contained in:
Родитель
0dad99561b
Коммит
7d6a754d47
|
@ -128,4 +128,4 @@ feat_allow_code_cache_in_custom_schemes.patch
|
||||||
build_run_reclient_cfg_generator_after_chrome.patch
|
build_run_reclient_cfg_generator_after_chrome.patch
|
||||||
fix_suppress_clang_-wimplicit-const-int-float-conversion_in.patch
|
fix_suppress_clang_-wimplicit-const-int-float-conversion_in.patch
|
||||||
fix_getcursorscreenpoint_wrongly_returns_0_0.patch
|
fix_getcursorscreenpoint_wrongly_returns_0_0.patch
|
||||||
fix_add_support_for_skipping_first_no-op_refresh_in_thumb_cap.patch
|
fix_add_support_for_skipping_first_2_no-op_refreshes_in_thumb_cap.patch
|
||||||
|
|
|
@ -1,13 +1,20 @@
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
From: Samuel Attard <marshallofsound@electronjs.org>
|
From: Samuel Attard <marshallofsound@electronjs.org>
|
||||||
Date: Tue, 13 Feb 2024 17:40:15 -0800
|
Date: Tue, 13 Feb 2024 17:40:15 -0800
|
||||||
Subject: fix: add support for skipping first no-op refresh in thumb cap
|
Subject: fix: add support for skipping first 2 no-op refreshes in thumb cap
|
||||||
|
|
||||||
Fixes a bug in the SCK thumbnail capturer, will be reported upstream for a hopefully
|
Fixes a bug in the SCK thumbnail capturer, will be reported upstream for a hopefully
|
||||||
less hacky fix.
|
less hacky fix.
|
||||||
|
|
||||||
|
The first refresh is "no windows yet, no thumbnails".
|
||||||
|
The second refresh is "we have windows, we queued the thumbnail requests"
|
||||||
|
The third refresh (the one we want) is "we have windows, and have thumbnail requests"
|
||||||
|
|
||||||
|
This really isn't ideal at all, we need to refactor desktopCapturer (read completely re-implement it)
|
||||||
|
to use StartUpdating and handle the events instead of using the "get the list once" method.
|
||||||
|
|
||||||
diff --git a/chrome/browser/media/webrtc/desktop_media_list.h b/chrome/browser/media/webrtc/desktop_media_list.h
|
diff --git a/chrome/browser/media/webrtc/desktop_media_list.h b/chrome/browser/media/webrtc/desktop_media_list.h
|
||||||
index 0c6fccf16a11bbaff10115308e4b489490e5d3e6..3b541e6830ca902cf45483a3193376c0e559185e 100644
|
index 0c6fccf16a11bbaff10115308e4b489490e5d3e6..e5ec31054a43989e630115605de435399d36559b 100644
|
||||||
--- a/chrome/browser/media/webrtc/desktop_media_list.h
|
--- a/chrome/browser/media/webrtc/desktop_media_list.h
|
||||||
+++ b/chrome/browser/media/webrtc/desktop_media_list.h
|
+++ b/chrome/browser/media/webrtc/desktop_media_list.h
|
||||||
@@ -143,6 +143,8 @@ class DesktopMediaList {
|
@@ -143,6 +143,8 @@ class DesktopMediaList {
|
||||||
|
@ -15,12 +22,12 @@ index 0c6fccf16a11bbaff10115308e4b489490e5d3e6..3b541e6830ca902cf45483a3193376c0
|
||||||
// delegated source list when it should be hidden.
|
// delegated source list when it should be hidden.
|
||||||
virtual void HideList() = 0;
|
virtual void HideList() = 0;
|
||||||
+
|
+
|
||||||
+ bool skip_next_refresh_ = false;
|
+ int skip_next_refresh_ = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CHROME_BROWSER_MEDIA_WEBRTC_DESKTOP_MEDIA_LIST_H_
|
#endif // CHROME_BROWSER_MEDIA_WEBRTC_DESKTOP_MEDIA_LIST_H_
|
||||||
diff --git a/chrome/browser/media/webrtc/desktop_media_list_base.cc b/chrome/browser/media/webrtc/desktop_media_list_base.cc
|
diff --git a/chrome/browser/media/webrtc/desktop_media_list_base.cc b/chrome/browser/media/webrtc/desktop_media_list_base.cc
|
||||||
index 780927301744ea7312f230cec76a24a33d71f767..321d3ff46cbb67e880d5414d83a199fb16457038 100644
|
index 780927301744ea7312f230cec76a24a33d71f767..d19b1cc9dedf839f12f4113db64293e5c8150f51 100644
|
||||||
--- a/chrome/browser/media/webrtc/desktop_media_list_base.cc
|
--- a/chrome/browser/media/webrtc/desktop_media_list_base.cc
|
||||||
+++ b/chrome/browser/media/webrtc/desktop_media_list_base.cc
|
+++ b/chrome/browser/media/webrtc/desktop_media_list_base.cc
|
||||||
@@ -230,7 +230,11 @@ uint32_t DesktopMediaListBase::GetImageHash(const gfx::Image& image) {
|
@@ -230,7 +230,11 @@ uint32_t DesktopMediaListBase::GetImageHash(const gfx::Image& image) {
|
||||||
|
@ -28,8 +35,8 @@ index 780927301744ea7312f230cec76a24a33d71f767..321d3ff46cbb67e880d5414d83a199fb
|
||||||
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||||
DCHECK(refresh_callback_);
|
DCHECK(refresh_callback_);
|
||||||
- std::move(refresh_callback_).Run();
|
- std::move(refresh_callback_).Run();
|
||||||
+ if (skip_next_refresh_) {
|
+ if (skip_next_refresh_ > 0) {
|
||||||
+ skip_next_refresh_ = false;
|
+ skip_next_refresh_--;
|
||||||
+ } else {
|
+ } else {
|
||||||
+ std::move(refresh_callback_).Run();
|
+ std::move(refresh_callback_).Run();
|
||||||
+ }
|
+ }
|
|
@ -305,7 +305,8 @@ void DesktopCapturer::StartHandling(bool capture_window,
|
||||||
window_capturer_->SetThumbnailSize(thumbnail_size);
|
window_capturer_->SetThumbnailSize(thumbnail_size);
|
||||||
#if BUILDFLAG(IS_MAC)
|
#if BUILDFLAG(IS_MAC)
|
||||||
window_capturer_->skip_next_refresh_ =
|
window_capturer_->skip_next_refresh_ =
|
||||||
ShouldUseThumbnailCapturerMac(DesktopMediaList::Type::kWindow);
|
ShouldUseThumbnailCapturerMac(DesktopMediaList::Type::kWindow) ? 2
|
||||||
|
: 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
OnceCallback update_callback = base::BindOnce(
|
OnceCallback update_callback = base::BindOnce(
|
||||||
|
@ -334,7 +335,8 @@ void DesktopCapturer::StartHandling(bool capture_window,
|
||||||
screen_capturer_->SetThumbnailSize(thumbnail_size);
|
screen_capturer_->SetThumbnailSize(thumbnail_size);
|
||||||
#if BUILDFLAG(IS_MAC)
|
#if BUILDFLAG(IS_MAC)
|
||||||
screen_capturer_->skip_next_refresh_ =
|
screen_capturer_->skip_next_refresh_ =
|
||||||
ShouldUseThumbnailCapturerMac(DesktopMediaList::Type::kScreen);
|
ShouldUseThumbnailCapturerMac(DesktopMediaList::Type::kScreen) ? 2
|
||||||
|
: 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
OnceCallback update_callback = base::BindOnce(
|
OnceCallback update_callback = base::BindOnce(
|
||||||
|
|
Загрузка…
Ссылка в новой задаче