diff options
Diffstat (limited to 'src/evdev.c')
-rw-r--r-- | src/evdev.c | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/src/evdev.c b/src/evdev.c index 000eccc..df85c9f 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -122,6 +122,8 @@ static int EvdevOpenDevice(InputInfoPtr pInfo); static void EvdevCloseDevice(InputInfoPtr pInfo); static void EvdevInitAxesLabels(EvdevPtr pEvdev, int mode, int natoms, Atom *atoms); +static void EvdevInitOneAxisLabel(EvdevPtr pEvdev, int axis, + const char **labels, int label_idx, Atom *atoms); static void EvdevInitButtonLabels(EvdevPtr pEvdev, int natoms, Atom *atoms); static void EvdevInitProperty(DeviceIntPtr dev); static int EvdevSetProperty(DeviceIntPtr dev, Atom atom, @@ -2719,9 +2721,23 @@ static const char *btn_labels[][16] = { } }; -static void EvdevInitAxesLabels(EvdevPtr pEvdev, int mode, int natoms, Atom *atoms) +static void EvdevInitOneAxisLabel(EvdevPtr pEvdev, int axis, + const char **labels, int label_idx, Atom *atoms) { Atom atom; + + if (pEvdev->axis_map[axis] == -1) + return; + + atom = XIGetKnownProperty(labels[label_idx]); + if (!atom) /* Should not happen */ + return; + + atoms[pEvdev->axis_map[axis]] = atom; +} + +static void EvdevInitAxesLabels(EvdevPtr pEvdev, int mode, int natoms, Atom *atoms) +{ int axis; const char **labels; int labels_len = 0; @@ -2741,16 +2757,7 @@ static void EvdevInitAxesLabels(EvdevPtr pEvdev, int mode, int natoms, Atom *ato /* Now fill the ones we know */ for (axis = 0; axis < labels_len; axis++) - { - if (pEvdev->axis_map[axis] == -1) - continue; - - atom = XIGetKnownProperty(labels[axis]); - if (!atom) /* Should not happen */ - continue; - - atoms[pEvdev->axis_map[axis]] = atom; - } + EvdevInitOneAxisLabel(pEvdev, axis, labels, axis, atoms); } static void EvdevInitButtonLabels(EvdevPtr pEvdev, int natoms, Atom *atoms) |