summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/moz-patch-stack/0021.patch
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
commit6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch)
treea68f146d7fa01f0134297619fbe7e33db084e0aa /third_party/libwebrtc/moz-patch-stack/0021.patch
parentInitial commit. (diff)
downloadthunderbird-upstream.tar.xz
thunderbird-upstream.zip
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/libwebrtc/moz-patch-stack/0021.patch')
-rw-r--r--third_party/libwebrtc/moz-patch-stack/0021.patch97
1 files changed, 97 insertions, 0 deletions
diff --git a/third_party/libwebrtc/moz-patch-stack/0021.patch b/third_party/libwebrtc/moz-patch-stack/0021.patch
new file mode 100644
index 0000000000..d9fdd2cb9d
--- /dev/null
+++ b/third_party/libwebrtc/moz-patch-stack/0021.patch
@@ -0,0 +1,97 @@
+From: Alex Chronopoulos <achronop@gmail.com>
+Date: Tue, 17 Sep 2019 14:31:00 +0000
+Subject: Bug 1581806 - Trigger devicechange event for audio and video input
+ devices only. r=dminor
+
+After Bug 1581193 devicechange notifications were triggered with any device change, not just video and audio devices. This patch limits down the notifications to only video and audio input devices change.
+
+Differential Revision: https://phabricator.services.mozilla.com/D46147
+Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/1feec83ee6f92a35de0d4b27ebea04e68a0d7ef0
+---
+ .../video_capture/windows/device_info_ds.cc | 29 +++++++++++++++++--
+ .../video_capture/windows/device_info_ds.h | 1 +
+ 2 files changed, 28 insertions(+), 2 deletions(-)
+
+diff --git a/modules/video_capture/windows/device_info_ds.cc b/modules/video_capture/windows/device_info_ds.cc
+index 8543dce746..96db60c968 100644
+--- a/modules/video_capture/windows/device_info_ds.cc
++++ b/modules/video_capture/windows/device_info_ds.cc
+@@ -20,6 +20,18 @@
+ namespace webrtc {
+ namespace videocapturemodule {
+
++BOOL isCaptureDevice(DEV_BROADCAST_HDR *pHdr)
++{
++ if (pHdr == NULL) {
++ return FALSE;
++ }
++ if (pHdr->dbch_devicetype != DBT_DEVTYP_DEVICEINTERFACE) {
++ return FALSE;
++ }
++ DEV_BROADCAST_DEVICEINTERFACE* pDi = (DEV_BROADCAST_DEVICEINTERFACE*)pHdr;
++ return pDi->dbcc_classguid == KSCATEGORY_CAPTURE;
++}
++
+ LRESULT CALLBACK WndProc(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam)
+ {
+ DeviceInfoDS* pParent;
+@@ -35,7 +47,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam)
+ else if (uiMsg == WM_DEVICECHANGE)
+ {
+ pParent = (DeviceInfoDS*)GetWindowLongPtr(hWnd, GWLP_USERDATA);
+- if (pParent)
++ if (pParent && isCaptureDevice((PDEV_BROADCAST_HDR)lParam))
+ {
+ pParent->DeviceChange();
+ }
+@@ -56,7 +68,8 @@ DeviceInfoDS* DeviceInfoDS::Create() {
+ DeviceInfoDS::DeviceInfoDS()
+ : _dsDevEnum(NULL),
+ _dsMonikerDevEnum(NULL),
+- _CoUninitializeIsRequired(true) {
++ _CoUninitializeIsRequired(true),
++ _hdevnotify(NULL) {
+ // 1) Initialize the COM library (make Windows load the DLLs).
+ //
+ // CoInitializeEx must be called at least once, and is usually called only
+@@ -111,6 +124,14 @@ DeviceInfoDS::DeviceInfoDS()
+ _hwnd = CreateWindow(_wndClass.lpszClassName, NULL, 0, CW_USEDEFAULT,
+ CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL,
+ NULL, _hInstance, this);
++
++ DEV_BROADCAST_DEVICEINTERFACE di = { 0 };
++ di.dbcc_size = sizeof(di);
++ di.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
++ di.dbcc_classguid = KSCATEGORY_CAPTURE;
++
++ _hdevnotify = RegisterDeviceNotification(_hwnd, &di,
++ DEVICE_NOTIFY_WINDOW_HANDLE);
+ }
+ }
+
+@@ -120,6 +141,10 @@ DeviceInfoDS::~DeviceInfoDS() {
+ if (_CoUninitializeIsRequired) {
+ CoUninitialize();
+ }
++ if (_hdevnotify)
++ {
++ UnregisterDeviceNotification(_hdevnotify);
++ }
+ if (_hwnd != NULL) {
+ DestroyWindow(_hwnd);
+ }
+diff --git a/modules/video_capture/windows/device_info_ds.h b/modules/video_capture/windows/device_info_ds.h
+index dc7b9b1a24..ed2a726d6f 100644
+--- a/modules/video_capture/windows/device_info_ds.h
++++ b/modules/video_capture/windows/device_info_ds.h
+@@ -96,6 +96,7 @@ class DeviceInfoDS : public DeviceInfoImpl {
+ HWND _hwnd;
+ WNDCLASS _wndClass;
+ HINSTANCE _hInstance;
++ HDEVNOTIFY _hdevnotify;
+ };
+ } // namespace videocapturemodule
+ } // namespace webrtc
+--
+2.34.1
+