aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorAndrea Odetti <mariofutire@gmail.com>2017-10-03 18:04:42 +0100
committerAndrea Odetti <mariofutire@gmail.com>2017-10-06 18:23:20 +0000
commit0cea22b644881aaa3edb68267153e334b34d23f7 (patch)
tree18cd7f59993bf7bff9b987356a4a4beb55cbf4f5 /src/plugins
parente673d453e7431dc9af5be7394c3cc3cd9da3a9f7 (diff)
Propagate the gamepad name from the backend to QGamepad
Added signals and slots to forward the name to QGamepad. Previously the property name and signal nameChanged in QGamepad were never used. Now the plumbing is done and the 2 linux backends (evdev and SDL2) forward the name. Change-Id: I97261769524ddb23a31789e362e6de7bb30694f3 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/gamepads/evdev/qevdevgamepadbackend.cpp7
-rw-r--r--src/plugins/gamepads/sdl2/qsdlgamepadbackend.cpp5
2 files changed, 12 insertions, 0 deletions
diff --git a/src/plugins/gamepads/evdev/qevdevgamepadbackend.cpp b/src/plugins/gamepads/evdev/qevdevgamepadbackend.cpp
index 7fc8466..f0e7fab 100644
--- a/src/plugins/gamepads/evdev/qevdevgamepadbackend.cpp
+++ b/src/plugins/gamepads/evdev/qevdevgamepadbackend.cpp
@@ -331,6 +331,13 @@ bool QEvdevGamepadDevice::openDevice(const QByteArray &dev)
}
emit m_backend->gamepadAdded(m_productId);
+
+ // same as libevdev::libevdev_set_fd() in libevdev.c
+ char buffer[256];
+ memset(buffer, 0, sizeof(buffer));
+ if (ioctl(m_fd, EVIOCGNAME(sizeof(buffer) - 1), buffer) >= 0)
+ emit m_backend->gamepadNamed(m_productId, QString::fromUtf8(buffer));
+
} else {
QT_CLOSE(m_fd);
m_fd = -1;
diff --git a/src/plugins/gamepads/sdl2/qsdlgamepadbackend.cpp b/src/plugins/gamepads/sdl2/qsdlgamepadbackend.cpp
index 1ffba30..b990868 100644
--- a/src/plugins/gamepads/sdl2/qsdlgamepadbackend.cpp
+++ b/src/plugins/gamepads/sdl2/qsdlgamepadbackend.cpp
@@ -193,8 +193,13 @@ void QSdlGamepadBackend::addController(int index)
m_indexForController.insert(index, controller);
int instanceID = SDL_JoystickInstanceID(SDL_GameControllerGetJoystick(controller));
m_instanceIdForIndex.insert(instanceID, index);
+ const char *name = SDL_GameControllerName(controller);
+
//qDebug() << "Controller " << index << " added with instanceId: " << instanceID;
emit gamepadAdded(index);
+
+ if (name)
+ emit gamepadNamed(index, QString::fromUtf8(name));
}
}