Skip to content

Commit 7174389

Browse files
committed
joystickstatuswindow: don't update accel/gyro if closed
Avoid updating the accelerometer or gyroscope values if the window is closed. This prevents a segfault when the window is closed for controllers with accelerometers and gyroscopes, such as DualSense controllers. Signed-off-by: Sean Cross <[email protected]>
1 parent ab27f58 commit 7174389

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

src/gui/joystickstatuswindow.cpp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -325,9 +325,11 @@ void JoystickStatusWindow::obliterate() { this->done(QDialogButtonBox::Destructi
325325
*/
326326
void JoystickStatusWindow::updateAccelerometerValues(float valueX, float valueY, float valueZ)
327327
{
328-
m_accel_axes[0]->setValue(valueX * 1000);
329-
m_accel_axes[1]->setValue(valueY * 1000);
330-
m_accel_axes[2]->setValue(valueZ * 1000);
328+
if (isVisible()) {
329+
m_accel_axes[0]->setValue(valueX * 1000);
330+
m_accel_axes[1]->setValue(valueY * 1000);
331+
m_accel_axes[2]->setValue(valueZ * 1000);
332+
}
331333
}
332334

333335
/**
@@ -336,9 +338,11 @@ void JoystickStatusWindow::updateAccelerometerValues(float valueX, float valueY,
336338
*/
337339
void JoystickStatusWindow::updateGyroscopeValues(float valueX, float valueY, float valueZ)
338340
{
339-
m_gyro_axes[0]->setValue(JoySensor::radToDeg(valueX) * 1000);
340-
m_gyro_axes[1]->setValue(JoySensor::radToDeg(valueY) * 1000);
341-
m_gyro_axes[2]->setValue(JoySensor::radToDeg(valueZ) * 1000);
341+
if (isVisible()) {
342+
m_gyro_axes[0]->setValue(JoySensor::radToDeg(valueX) * 1000);
343+
m_gyro_axes[1]->setValue(JoySensor::radToDeg(valueY) * 1000);
344+
m_gyro_axes[2]->setValue(JoySensor::radToDeg(valueZ) * 1000);
345+
}
342346
}
343347

344348
InputDevice *JoystickStatusWindow::getJoystick() const { return joystick; }

0 commit comments

Comments
 (0)