diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp index 059602819e..86e6a9baf3 100644 --- a/indra/llwindow/llwindowcallbacks.cpp +++ b/indra/llwindow/llwindowcallbacks.cpp @@ -184,7 +184,7 @@ bool LLWindowCallbacks::handleTimerEvent(LLWindow *window) return false; } -bool LLWindowCallbacks::handleDeviceChange(LLWindow *window, bool deviceRemoved) +bool LLWindowCallbacks::handleDeviceChange(LLWindow *window, bool deviceRemoved) // [FIRE-10419] Added deviceRemoved bool to prevent reinitialize on disconnect. { return false; } diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h index 950ccff034..dee4577d93 100644 --- a/indra/llwindow/llwindowcallbacks.h +++ b/indra/llwindow/llwindowcallbacks.h @@ -67,7 +67,7 @@ public: virtual void handleWindowUnblock(LLWindow *window); // window coming back after taking over CPU for a while virtual void handleDataCopy(LLWindow *window, S32 data_type, void *data); virtual bool handleTimerEvent(LLWindow *window); - virtual bool handleDeviceChange(LLWindow *window, bool deviceRemoved); + virtual bool handleDeviceChange(LLWindow *window, bool deviceRemoved); // [FIRE-10419] Added deviceRemoved bool to prevent reinitialize on disconnect. virtual bool handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 window_width, S32 window_height); virtual bool handleWindowDidChangeScreen(LLWindow *window); diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 6b134f489d..e707b06abf 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -579,8 +579,7 @@ LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks, // Make an instance of our window then define the window class mhInstance = GetModuleHandle(NULL); - - // Get a notification filter setup for HID devices + // [FIRE-10419] Add notification filters for device notifcations for HID device handling DEV_BROADCAST_DEVICEINTERFACE notificationFilter; ZeroMemory(¬ificationFilter, sizeof(notificationFilter)); @@ -588,7 +587,7 @@ LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks, notificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE; HDEVNOTIFY deviceNotification = RegisterDeviceNotification(mWindowHandle, ¬ificationFilter, DEVICE_NOTIFY_WINDOW_HANDLE | DEVICE_NOTIFY_ALL_INTERFACE_CLASSES); - + // // Init Direct Input - needed for joystick / Spacemouse LPDIRECTINPUT8 di8_interface; @@ -2384,6 +2383,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ // return 1; // } + // Only bother initalizing when needed. if (deviceCLSIDWhitelist.empty()) { @@ -2410,6 +2410,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ } } break; + // } case WM_PAINT: diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 4cca37f63f..b0792712c2 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1839,7 +1839,19 @@ bool LLViewerWindow::handleTimerEvent(LLWindow *window) return false; } -bool LLViewerWindow::handleDeviceChange(LLWindow *window, bool deviceRemoved) +// [FIRE-10419] Added deviceRemoved bool to prevent reinitialize on disconnect. +// bool LLViewerWindow::handleDeviceChange(LLWindow* window) +// { +// if (!LLViewerJoystick::getInstance()->isJoystickInitialized()) +// { +// LLViewerJoystick::getInstance()->init(true); +// return true; +// } +// return false; +// } +// + +bool LLViewerWindow::handleDeviceChange(LLWindow *window, bool deviceRemoved) { // give a chance to use a joystick after startup (hot-plugging) if (!deviceRemoved && !LLViewerJoystick::getInstance()->isJoystickInitialized()) diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index 3e751f5b16..1ddd41e547 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -225,7 +225,7 @@ public: /*virtual*/ void handleWindowUnblock(LLWindow *window); /*virtual*/ void handleDataCopy(LLWindow *window, S32 data_type, void *data); /*virtual*/ bool handleTimerEvent(LLWindow *window); - /*virtual*/ bool handleDeviceChange(LLWindow *window, bool deviceRemoved); + /*virtual*/ bool handleDeviceChange(LLWindow *window, bool deviceRemoved); // [FIRE-10419] Added deviceRemoved bool to prevent reinitialize on disconnect. /*virtual*/ bool handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 window_width, S32 window_height); /*virtual*/ bool handleWindowDidChangeScreen(LLWindow *window);