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);