diff options
author | Andrea Odetti <mariofutire@gmail.com> | 2017-10-03 18:04:42 +0100 |
---|---|---|
committer | Andrea Odetti <mariofutire@gmail.com> | 2017-10-06 18:23:20 +0000 |
commit | 0cea22b644881aaa3edb68267153e334b34d23f7 (patch) | |
tree | 18cd7f59993bf7bff9b987356a4a4beb55cbf4f5 /src/plugins | |
parent | e673d453e7431dc9af5be7394c3cc3cd9da3a9f7 (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.cpp | 7 | ||||
-rw-r--r-- | src/plugins/gamepads/sdl2/qsdlgamepadbackend.cpp | 5 |
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)); } } |