From kde-commits Sat Mar 31 21:30:50 2018 From: Valeriy Malov Date: Sat, 31 Mar 2018 21:30:50 +0000 To: kde-commits Subject: [wacomtablet] src/common: Use QVector for X11InputDevice button mapping functions Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=152253187605341 Git commit 3ae025a208d4cfcb036c7d9565c48089a88af1ff by Valeriy Malov. Committed on 31/03/2018 at 21:30. Pushed by valeriymalov into branch 'master'. Use QVector for X11InputDevice button mapping functions Since X11 calls take & return uint8_t array, use it instead of QList and get rid of unescessary conversions M +9 -17 src/common/x11inputdevice-xcb.cpp M +5 -14 src/common/x11inputdevice-xlib.cpp M +2 -2 src/common/x11inputdevice.h M +2 -2 src/common/x11wacom.cpp https://commits.kde.org/wacomtablet/3ae025a208d4cfcb036c7d9565c48089a88af1ff diff --git a/src/common/x11inputdevice-xcb.cpp b/src/common/x11inputdevice-= xcb.cpp index 4d70bc1..a546b18 100644 --- a/src/common/x11inputdevice-xcb.cpp +++ b/src/common/x11inputdevice-xcb.cpp @@ -112,20 +112,20 @@ bool X11InputDevice::getAtomProperty(const QString& p= roperty, QList< long int >& } = = -const QList< int > X11InputDevice::getDeviceButtonMapping() const +const QVector X11InputDevice::getDeviceButtonMapping() const { Q_D(const X11InputDevice); = - QList buttonMap; + QVector buttonMap; = if (!isOpen()) { return buttonMap; } = - int buttonCount =3D 0; + int buttonCount =3D 0; = xcb_input_get_device_button_mapping_cookie_t cookie =3D xcb_input_get_= device_button_mapping(QX11Info::connection(), d->deviceid); - xcb_input_get_device_button_mapping_reply_t* reply =3D xcb_input_get_d= evice_button_mapping_reply(QX11Info::connection(), cookie, NULL); + xcb_input_get_device_button_mapping_reply_t* reply =3D xcb_input_get_d= evice_button_mapping_reply(QX11Info::connection(), cookie, nullptr); = if (!reply) { return buttonMap; // the device has no buttons @@ -135,7 +135,7 @@ const QList< int > X11InputDevice::getDeviceButtonMappi= ng() const buttonCount =3D xcb_input_get_device_button_mapping_map_length(reply); = for (int i =3D 0 ; i < buttonCount ; ++i) { - buttonMap.append((int)map_return[i]); + buttonMap.append(map_return[i]); } = free(reply); @@ -313,7 +313,7 @@ bool X11InputDevice::open(X11InputDevice::XID id, const= QString& name) = = = -bool X11InputDevice::setDeviceButtonMapping(const QList< int >& buttonMap)= const +bool X11InputDevice::setDeviceButtonMapping(const QVector &button= Map) const { Q_D(const X11InputDevice); = @@ -321,15 +321,9 @@ bool X11InputDevice::setDeviceButtonMapping(const QLis= t< int >& buttonMap) const return false; } = - const int nmap =3D buttonMap.count(); - unsigned char* map =3D new unsigned char[nmap]; - - for (int i =3D 0 ; i < nmap ; ++i) { - map[i] =3D (unsigned char)buttonMap.at(i); - } - - xcb_input_set_device_button_mapping_cookie_t cookie =3D xcb_input_set_= device_button_mapping(QX11Info::connection(), d->deviceid, nmap, map); - xcb_input_set_device_button_mapping_reply_t* reply =3D xcb_input_set_d= evice_button_mapping_reply(QX11Info::connection(), cookie, NULL); + xcb_input_set_device_button_mapping_cookie_t cookie =3D + xcb_input_set_device_button_mapping(QX11Info::connection(), d-= >deviceid, static_cast(buttonMap.size()), buttonMap.data()); + xcb_input_set_device_button_mapping_reply_t* reply =3D xcb_input_set_d= evice_button_mapping_reply(QX11Info::connection(), cookie, nullptr); = uint8_t result =3D 1; = @@ -338,8 +332,6 @@ bool X11InputDevice::setDeviceButtonMapping(const QList= < int >& buttonMap) const free(reply); } = - delete map; - return (result =3D=3D 0); } = diff --git a/src/common/x11inputdevice-xlib.cpp b/src/common/x11inputdevice= -xlib.cpp index 0c3b6f4..f6eb469 100644 --- a/src/common/x11inputdevice-xlib.cpp +++ b/src/common/x11inputdevice-xlib.cpp @@ -112,11 +112,11 @@ bool X11InputDevice::getAtomProperty(const QString& p= roperty, QList< long int >& } = = -const QList< int > X11InputDevice::getDeviceButtonMapping() const +const QVector X11InputDevice::getDeviceButtonMapping() const { Q_D(const X11InputDevice); = - QList buttonMap; + QVector buttonMap; = if (!isOpen()) { return buttonMap; @@ -128,7 +128,7 @@ const QList< int > X11InputDevice::getDeviceButtonMappi= ng() const int buttonCount =3D XGetDeviceButtonMapping(d->display, d->device, map= _return, 128); = for (int i =3D 0 ; i < buttonCount ; ++i) { - buttonMap.append((int)map_return[i]); + buttonMap.append(map_return[i]); } = return buttonMap; @@ -305,7 +305,7 @@ bool X11InputDevice::open(XID id, const QString& name) = = = -bool X11InputDevice::setDeviceButtonMapping(const QList< int >& buttonMap)= const +bool X11InputDevice::setDeviceButtonMapping(const QVector &button= Map) const { Q_D(const X11InputDevice); = @@ -313,16 +313,7 @@ bool X11InputDevice::setDeviceButtonMapping(const QLis= t< int >& buttonMap) const return false; } = - const int nmap =3D buttonMap.count(); - unsigned char * map =3D new unsigned char[nmap]; - - for (int i =3D 0 ; i < nmap ; ++i) { - map[i] =3D (unsigned char)buttonMap.at(i); - } - - int result =3D XSetDeviceButtonMapping(d->display, d->device, map, nma= p); - - delete map; + int result =3D XSetDeviceButtonMapping(d->display, d->device, QVector<= uint8_t>(buttonMap).data(), buttonMap.count()); = dbgWacom << "setDeviceButtonMapping returned result" << result; = diff --git a/src/common/x11inputdevice.h b/src/common/x11inputdevice.h index 1629653..08864c3 100644 --- a/src/common/x11inputdevice.h +++ b/src/common/x11inputdevice.h @@ -96,7 +96,7 @@ public: * * @return A list of buttons numbers. */ - const QList getDeviceButtonMapping() const; + const QVector getDeviceButtonMapping() const; = /** * Gets the device id of this device. @@ -196,7 +196,7 @@ public: * * @return True on success, false on error. */ - bool setDeviceButtonMapping(const QList& buttonMap) const; + bool setDeviceButtonMapping(const QVector &buttonMap) const; = /** * Sets a float property. The values have to be separated by a single = whitespace. diff --git a/src/common/x11wacom.cpp b/src/common/x11wacom.cpp index ec6a1bf..13a32a2 100644 --- a/src/common/x11wacom.cpp +++ b/src/common/x11wacom.cpp @@ -94,7 +94,7 @@ bool X11Wacom::isScrollDirectionInverted(const QString& d= eviceName) return false; } = - QList buttonMap =3D device.getDeviceButtonMapping(); + const auto buttonMap =3D device.getDeviceButtonMapping(); = if (buttonMap.count() =3D=3D 0 || buttonMap.count() < 5) { return false; @@ -140,7 +140,7 @@ bool X11Wacom::setScrollDirection(const QString& device= Name, bool inverted) return false; } = - QList buttonMap =3D device.getDeviceButtonMapping(); + auto buttonMap =3D device.getDeviceButtonMapping(); = if (buttonMap.count() =3D=3D 0 || buttonMap.count() < 5) { return false;