From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- third_party/libwebrtc/moz-patch-stack/0017.patch | 93 ++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 third_party/libwebrtc/moz-patch-stack/0017.patch (limited to 'third_party/libwebrtc/moz-patch-stack/0017.patch') diff --git a/third_party/libwebrtc/moz-patch-stack/0017.patch b/third_party/libwebrtc/moz-patch-stack/0017.patch new file mode 100644 index 0000000000..034e60ba99 --- /dev/null +++ b/third_party/libwebrtc/moz-patch-stack/0017.patch @@ -0,0 +1,93 @@ +From: Dan Minor +Date: Tue, 17 Sep 2019 06:47:00 +0000 +Subject: Bug 1581193 - Fix devicechange event on Windows; r=achronop + +This restores the code for generating devicechange events that was +accidentally removed as part of updating the Windows video capture code +in Bug 1552755. + +Differential Revision: https://phabricator.services.mozilla.com/D46033 +Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/840c4edafa021eeac6a7e6ae0e828d0adcfea92e +--- + .../video_capture/windows/device_info_ds.cc | 39 +++++++++++++++++++ + .../video_capture/windows/device_info_ds.h | 3 ++ + 2 files changed, 42 insertions(+) + +diff --git a/modules/video_capture/windows/device_info_ds.cc b/modules/video_capture/windows/device_info_ds.cc +index d0d274cb02..460ef3b7b9 100644 +--- a/modules/video_capture/windows/device_info_ds.cc ++++ b/modules/video_capture/windows/device_info_ds.cc +@@ -20,6 +20,29 @@ + namespace webrtc { + namespace videocapturemodule { + ++LRESULT CALLBACK WndProc(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam) ++{ ++ DeviceInfoDS* pParent; ++ if (uiMsg == WM_CREATE) ++ { ++ pParent = (DeviceInfoDS*)((LPCREATESTRUCT)lParam)->lpCreateParams; ++ SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR)pParent); ++ } ++ else if (uiMsg == WM_DESTROY) ++ { ++ SetWindowLongPtr(hWnd, GWLP_USERDATA, NULL); ++ } ++ else if (uiMsg == WM_DEVICECHANGE) ++ { ++ pParent = (DeviceInfoDS*)GetWindowLongPtr(hWnd, GWLP_USERDATA); ++ if (pParent) ++ { ++ pParent->DeviceChange(); ++ } ++ } ++ return DefWindowProc(hWnd, uiMsg, wParam, lParam); ++} ++ + // static + DeviceInfoDS* DeviceInfoDS::Create() { + DeviceInfoDS* dsInfo = new DeviceInfoDS(); +@@ -77,6 +100,18 @@ DeviceInfoDS::DeviceInfoDS() + << rtc::ToHex(hr); + } + } ++ ++ _hInstance = reinterpret_cast(GetModuleHandle(NULL)); ++ _wndClass = {0}; ++ _wndClass.lpfnWndProc = &WndProc; ++ _wndClass.lpszClassName = TEXT("DeviceInfoDS"); ++ _wndClass.hInstance = _hInstance; ++ ++ if (RegisterClass(&_wndClass)) { ++ _hwnd = CreateWindow(_wndClass.lpszClassName, NULL, 0, CW_USEDEFAULT, ++ CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, ++ NULL, _hInstance, this); ++ } + } + + DeviceInfoDS::~DeviceInfoDS() { +@@ -85,6 +120,10 @@ DeviceInfoDS::~DeviceInfoDS() { + if (_CoUninitializeIsRequired) { + CoUninitialize(); + } ++ if (_hwnd != NULL) { ++ DestroyWindow(_hwnd); ++ } ++ UnregisterClass(_wndClass.lpszClassName, _hInstance); + } + + int32_t DeviceInfoDS::Init() { +diff --git a/modules/video_capture/windows/device_info_ds.h b/modules/video_capture/windows/device_info_ds.h +index 1b52645cde..dc7b9b1a24 100644 +--- a/modules/video_capture/windows/device_info_ds.h ++++ b/modules/video_capture/windows/device_info_ds.h +@@ -93,6 +93,9 @@ class DeviceInfoDS : public DeviceInfoImpl { + IEnumMoniker* _dsMonikerDevEnum; + bool _CoUninitializeIsRequired; + std::vector _captureCapabilitiesWindows; ++ HWND _hwnd; ++ WNDCLASS _wndClass; ++ HINSTANCE _hInstance; + }; + } // namespace videocapturemodule + } // namespace webrtc -- cgit v1.2.3