[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [wacomtablet] src/common: Use QVector<uint8_t> for X11InputDevice button mapping functions
From:       Valeriy Malov <null () kde ! org>
Date:       2018-03-31 21:30:50
Message-ID: E1f2O5K-0007wG-LV () code ! kde ! org
[Download RAW message or body]

Git commit 3ae025a208d4cfcb036c7d9565c48089a88af1ff by Valeriy Malov.
Committed on 31/03/2018 at 21:30.
Pushed by valeriymalov into branch 'master'.

Use QVector<uint8_t> for X11InputDevice button mapping functions

Since X11 calls take & return uint8_t array, use it instead of
QList<int> 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& property, \
QList< long int >&  }
 
 
-const QList< int > X11InputDevice::getDeviceButtonMapping() const
+const QVector<uint8_t> X11InputDevice::getDeviceButtonMapping() const
 {
     Q_D(const X11InputDevice);
 
-    QList<int> buttonMap;
+    QVector<uint8_t> buttonMap;
 
     if (!isOpen()) {
         return buttonMap;
     }
 
-    int              buttonCount = 0;
+    int buttonCount = 0;
 
     xcb_input_get_device_button_mapping_cookie_t cookie = \
                xcb_input_get_device_button_mapping(QX11Info::connection(), \
                d->deviceid);
-    xcb_input_get_device_button_mapping_reply_t* reply = \
xcb_input_get_device_button_mapping_reply(QX11Info::connection(), cookie, NULL); +    \
xcb_input_get_device_button_mapping_reply_t* reply = \
xcb_input_get_device_button_mapping_reply(QX11Info::connection(), cookie, nullptr);  
     if (!reply) {
         return buttonMap; // the device has no buttons
@@ -135,7 +135,7 @@ const QList< int > X11InputDevice::getDeviceButtonMapping() const
     buttonCount = xcb_input_get_device_button_mapping_map_length(reply);
 
     for (int i = 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<uint8_t> &buttonMap) const
 {
     Q_D(const X11InputDevice);
 
@@ -321,15 +321,9 @@ bool X11InputDevice::setDeviceButtonMapping(const QList< int >& \
buttonMap) const  return false;
     }
 
-    const int      nmap = buttonMap.count();
-    unsigned char* map  = new unsigned char[nmap];
-
-    for (int i = 0 ; i < nmap ; ++i) {
-        map[i] = (unsigned char)buttonMap.at(i);
-    }
-
-    xcb_input_set_device_button_mapping_cookie_t cookie = \
                xcb_input_set_device_button_mapping(QX11Info::connection(), \
                d->deviceid, nmap, map);
-    xcb_input_set_device_button_mapping_reply_t* reply = \
xcb_input_set_device_button_mapping_reply(QX11Info::connection(), cookie, NULL); +    \
xcb_input_set_device_button_mapping_cookie_t cookie = +            \
xcb_input_set_device_button_mapping(QX11Info::connection(), d->deviceid, \
static_cast<uint8_t>(buttonMap.size()), buttonMap.data()); +    \
xcb_input_set_device_button_mapping_reply_t* reply = \
xcb_input_set_device_button_mapping_reply(QX11Info::connection(), cookie, nullptr);  
     uint8_t result = 1;
 
@@ -338,8 +332,6 @@ bool X11InputDevice::setDeviceButtonMapping(const QList< int >& \
buttonMap) const  free(reply);
     }
 
-    delete map;
-
     return (result == 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& property, \
QList< long int >&  }
 
 
-const QList< int > X11InputDevice::getDeviceButtonMapping() const
+const QVector<uint8_t> X11InputDevice::getDeviceButtonMapping() const
 {
     Q_D(const X11InputDevice);
 
-    QList<int> buttonMap;
+    QVector<uint8_t> buttonMap;
 
     if (!isOpen()) {
         return buttonMap;
@@ -128,7 +128,7 @@ const QList< int > X11InputDevice::getDeviceButtonMapping() const
     int buttonCount = XGetDeviceButtonMapping(d->display, d->device, map_return, \
128);  
     for (int i = 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<uint8_t> &buttonMap) const
 {
     Q_D(const X11InputDevice);
 
@@ -313,16 +313,7 @@ bool X11InputDevice::setDeviceButtonMapping(const QList< int >& \
buttonMap) const  return false;
     }
 
-    const int       nmap = buttonMap.count();
-    unsigned char * map  = new unsigned char[nmap];
-
-    for (int i = 0 ; i < nmap ; ++i) {
-        map[i] = (unsigned char)buttonMap.at(i);
-    }
-
-    int result = XSetDeviceButtonMapping(d->display, d->device, map, nmap);
-
-    delete map;
+    int result = 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<int> getDeviceButtonMapping() const;
+    const QVector<uint8_t> 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<int>& buttonMap) const;
+    bool setDeviceButtonMapping(const QVector<uint8_t> &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& deviceName)
         return false;
     }
 
-    QList<int> buttonMap = device.getDeviceButtonMapping();
+    const auto buttonMap = device.getDeviceButtonMapping();
 
     if (buttonMap.count() == 0 || buttonMap.count() < 5) {
         return false;
@@ -140,7 +140,7 @@ bool X11Wacom::setScrollDirection(const QString& deviceName, bool \
inverted)  return false;
     }
 
-    QList<int> buttonMap = device.getDeviceButtonMapping();
+    auto buttonMap = device.getDeviceButtonMapping();
 
     if (buttonMap.count() == 0 || buttonMap.count() < 5) {
         return false;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic