desktop_media_list.patch 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
  2. From: deepak1556 <[email protected]>
  3. Date: Thu, 18 Oct 2018 17:07:01 -0700
  4. Subject: desktop_media_list.patch
  5. * Use our grit resources instead of the chrome ones.
  6. * Disabled WindowCaptureMacV2 feature for https://github.com/electron/electron/pull/30507
  7. * Ensure "OnRefreshComplete()" even if there are no items in the list
  8. diff --git a/chrome/browser/media/webrtc/desktop_media_list.h b/chrome/browser/media/webrtc/desktop_media_list.h
  9. index 03af516b6c85523c51a70dac281dbd732c10ea7e..b6f91fbd15181dff4d8ddc4be2b66c2a5012f495 100644
  10. --- a/chrome/browser/media/webrtc/desktop_media_list.h
  11. +++ b/chrome/browser/media/webrtc/desktop_media_list.h
  12. @@ -96,7 +96,8 @@ class DesktopMediaList {
  13. // once per DesktopMediaList instance. It should not be called after
  14. // StartUpdating(), and StartUpdating() should not be called until |callback|
  15. // has been called.
  16. - virtual void Update(UpdateCallback callback) = 0;
  17. + virtual void Update(UpdateCallback callback,
  18. + bool refresh_thumbnails = false) = 0;
  19. virtual int GetSourceCount() const = 0;
  20. virtual const Source& GetSource(int index) const = 0;
  21. diff --git a/chrome/browser/media/webrtc/desktop_media_list_base.cc b/chrome/browser/media/webrtc/desktop_media_list_base.cc
  22. index ac1e7854dc9ae629a499fac7626ec456e18c7867..087da9bbfb9081b94ca8ea8d245871dc3601b1a7 100644
  23. --- a/chrome/browser/media/webrtc/desktop_media_list_base.cc
  24. +++ b/chrome/browser/media/webrtc/desktop_media_list_base.cc
  25. @@ -65,12 +65,12 @@ void DesktopMediaListBase::StartUpdating(DesktopMediaListObserver* observer) {
  26. Refresh(true);
  27. }
  28. -void DesktopMediaListBase::Update(UpdateCallback callback) {
  29. +void DesktopMediaListBase::Update(UpdateCallback callback, bool refresh_thumbnails) {
  30. DCHECK_CURRENTLY_ON(BrowserThread::UI);
  31. DCHECK(sources_.empty());
  32. DCHECK(!refresh_callback_);
  33. refresh_callback_ = std::move(callback);
  34. - Refresh(false);
  35. + Refresh(refresh_thumbnails);
  36. }
  37. int DesktopMediaListBase::GetSourceCount() const {
  38. diff --git a/chrome/browser/media/webrtc/desktop_media_list_base.h b/chrome/browser/media/webrtc/desktop_media_list_base.h
  39. index 9c77a2d5872cc340b7a237b896afea1dd3be2503..d06869ff78ec0d48e97c3aeb7ac86d4aa9d9b1ba 100644
  40. --- a/chrome/browser/media/webrtc/desktop_media_list_base.h
  41. +++ b/chrome/browser/media/webrtc/desktop_media_list_base.h
  42. @@ -38,7 +38,7 @@ class DesktopMediaListBase : public DesktopMediaList {
  43. void SetThumbnailSize(const gfx::Size& thumbnail_size) override;
  44. void SetViewDialogWindowId(content::DesktopMediaID dialog_id) override;
  45. void StartUpdating(DesktopMediaListObserver* observer) override;
  46. - void Update(UpdateCallback callback) override;
  47. + void Update(UpdateCallback callback, bool refresh_thumbnails) override;
  48. int GetSourceCount() const override;
  49. const Source& GetSource(int index) const override;
  50. DesktopMediaList::Type GetMediaListType() const override;
  51. diff --git a/chrome/browser/media/webrtc/fake_desktop_media_list.cc b/chrome/browser/media/webrtc/fake_desktop_media_list.cc
  52. index 2bf801156b93305705914d3dcb7dcbbebd03c096..6ea87e4471ab64c838b705c64be6bc10d74b213e 100644
  53. --- a/chrome/browser/media/webrtc/fake_desktop_media_list.cc
  54. +++ b/chrome/browser/media/webrtc/fake_desktop_media_list.cc
  55. @@ -77,7 +77,8 @@ void FakeDesktopMediaList::StartUpdating(DesktopMediaListObserver* observer) {
  56. thumbnail_ = gfx::ImageSkia::CreateFrom1xBitmap(bitmap);
  57. }
  58. -void FakeDesktopMediaList::Update(UpdateCallback callback) {
  59. +void FakeDesktopMediaList::Update(UpdateCallback callback,
  60. + bool refresh_thumbnails) {
  61. std::move(callback).Run();
  62. }
  63. diff --git a/chrome/browser/media/webrtc/fake_desktop_media_list.h b/chrome/browser/media/webrtc/fake_desktop_media_list.h
  64. index 1e4a652634fbde2ca9a256baca840bbc5a0e001f..546f5bc3a2f79035f0eec196d9e704b849992a6f 100644
  65. --- a/chrome/browser/media/webrtc/fake_desktop_media_list.h
  66. +++ b/chrome/browser/media/webrtc/fake_desktop_media_list.h
  67. @@ -32,7 +32,8 @@ class FakeDesktopMediaList : public DesktopMediaList {
  68. void SetThumbnailSize(const gfx::Size& thumbnail_size) override;
  69. void SetViewDialogWindowId(content::DesktopMediaID dialog_id) override;
  70. void StartUpdating(DesktopMediaListObserver* observer) override;
  71. - void Update(UpdateCallback callback) override;
  72. + void Update(UpdateCallback callback,
  73. + bool refresh_thumbnails = false) override;
  74. int GetSourceCount() const override;
  75. const Source& GetSource(int index) const override;
  76. DesktopMediaList::Type GetMediaListType() const override;
  77. diff --git a/chrome/browser/media/webrtc/native_desktop_media_list.cc b/chrome/browser/media/webrtc/native_desktop_media_list.cc
  78. index 6d8c9d940bb4488ffedc1eb8c543c065bb3953c9..2026b926eee56f6b235963b23ab86b2743eaed90 100644
  79. --- a/chrome/browser/media/webrtc/native_desktop_media_list.cc
  80. +++ b/chrome/browser/media/webrtc/native_desktop_media_list.cc
  81. @@ -18,7 +18,7 @@
  82. #include "build/build_config.h"
  83. #include "build/chromeos_buildflags.h"
  84. #include "chrome/browser/media/webrtc/desktop_media_list.h"
  85. -#include "chrome/grit/generated_resources.h"
  86. +#include "electron/grit/electron_resources.h"
  87. #include "content/public/browser/browser_task_traits.h"
  88. #include "content/public/browser/browser_thread.h"
  89. #include "content/public/common/content_features.h"
  90. @@ -127,8 +127,9 @@ BOOL CALLBACK AllHwndCollector(HWND hwnd, LPARAM param) {
  91. #endif // BUILDFLAG(IS_WIN)
  92. #if BUILDFLAG(IS_MAC)
  93. +// Refs https://github.com/electron/electron/pull/30507
  94. const base::Feature kWindowCaptureMacV2{"WindowCaptureMacV2",
  95. - base::FEATURE_ENABLED_BY_DEFAULT};
  96. + base::FEATURE_DISABLED_BY_DEFAULT};
  97. #endif
  98. } // namespace
  99. @@ -415,6 +416,9 @@ void NativeDesktopMediaList::Worker::RefreshNextThumbnail() {
  100. FROM_HERE,
  101. base::BindOnce(&NativeDesktopMediaList::UpdateNativeThumbnailsFinished,
  102. media_list_));
  103. +
  104. + // This call is necessary to release underlying OS screen capture mechanisms.
  105. + capturer_.reset();
  106. }
  107. void NativeDesktopMediaList::Worker::OnCaptureResult(
  108. @@ -628,6 +632,11 @@ void NativeDesktopMediaList::RefreshForVizFrameSinkWindows(
  109. FROM_HERE, base::BindOnce(&Worker::RefreshThumbnails,
  110. base::Unretained(worker_.get()),
  111. std::move(native_ids), thumbnail_size_));
  112. + } else {
  113. +#if defined(USE_AURA)
  114. + pending_native_thumbnail_capture_ = true;
  115. +#endif
  116. + UpdateNativeThumbnailsFinished();
  117. }
  118. }