We already cherry-picked this when we vendored f30c044cf9. Upstream commit: https://webrtc.googlesource.com/src/+/995688c8e85b520d50961486abbe0cc03eae9558 Revert "more p2p cleanups" This reverts commit f30c044cf9bd06f91017c171d98690094ce6d88b. Reason for revert: breaks roll to chromium: https://ci.chromium.org/ui/p/chromium/builders/try/mac_chromium_compile_dbg_ng/2290104/overview Original change's description: > more p2p cleanups > > Move test code from p2p/base and rtc_base/ into p2p/test/ > This p2p/base much less crowded and > clarifies that the rtc_base/nat* is in fact only test code. > > BUG=webrtc:0 > > Change-Id: I4d14fae24cb0eff6783962f4b4483b560367ca5d > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/378900 > Commit-Queue: Jonas Oreland <jonaso@webrtc.org> > Reviewed-by: Harald Alvestrand <hta@webrtc.org> > Auto-Submit: Jonas Oreland <jonaso@webrtc.org> > Cr-Commit-Position: refs/heads/main@{#43995} Bug: webrtc:0 Change-Id: I6c79fa85f53fdb9a1dacbe38911771f9a4289c76 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/379040 Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com> Owners-Override: Ilya Nikolaevskiy <ilnik@webrtc.org> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org> Cr-Commit-Position: refs/heads/main@{#43999} Differential Revision: https://phabricator.services.mozilla.com/D244009
95 lines
3.5 KiB
Diff
95 lines
3.5 KiB
Diff
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 460ef3b7b9..a7eca19bbf 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
|