mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-19 08:15:31 +00:00
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 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
6ca2966cb0
commit
382ae1bcb5
@ -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();
|
||||
@ -76,6 +99,18 @@ DeviceInfoDS::DeviceInfoDS()
|
||||
<< " => RPC_E_CHANGED_MODE, error 0x" << rtc::ToHex(hr);
|
||||
}
|
||||
}
|
||||
|
||||
_hInstance = reinterpret_cast<HINSTANCE>(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() {
|
||||
@ -84,6 +119,10 @@ DeviceInfoDS::~DeviceInfoDS() {
|
||||
if (_CoUninitializeIsRequired) {
|
||||
CoUninitialize();
|
||||
}
|
||||
if (_hwnd != NULL) {
|
||||
DestroyWindow(_hwnd);
|
||||
}
|
||||
UnregisterClass(_wndClass.lpszClassName, _hInstance);
|
||||
}
|
||||
|
||||
int32_t DeviceInfoDS::Init() {
|
||||
|
@ -93,6 +93,9 @@ class DeviceInfoDS : public DeviceInfoImpl {
|
||||
IEnumMoniker* _dsMonikerDevEnum;
|
||||
bool _CoUninitializeIsRequired;
|
||||
std::vector<VideoCaptureCapabilityWindows> _captureCapabilitiesWindows;
|
||||
HWND _hwnd;
|
||||
WNDCLASS _wndClass;
|
||||
HINSTANCE _hInstance;
|
||||
};
|
||||
} // namespace videocapturemodule
|
||||
} // namespace webrtc
|
||||
|
Loading…
Reference in New Issue
Block a user