[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [calligra/krita-testing-kazakov] krita/ui/input/wintab: Fix a crash with newer evdev driver
From: Dmitry Kazakov <dimula73 () gmail ! com>
Date: 2014-08-15 13:06:00
Message-ID: E1XIHCi-0007kK-4H () scm ! kde ! org
[Download RAW message or body]
Git commit 86b1ee3185cb44ecbfb9fb2e23c083d06c465613 by Dmitry Kazakov.
Committed on 13/08/2014 at 09:52.
Pushed by dkazakov into branch 'krita-testing-kazakov'.
Fix a crash with newer evdev driver
New evdev driver (Mint 17) has more axes than expected
Axis Labels (269): "Abs X" (370), "Abs Y" (371), "Abs Wheel" (375), "Abs Pressure" \
(372), "Abs Tilt X" (373), "Abs Tilt Y" (374), "Abs Misc" (389), "Rel Vert Wheel" \
(261)
So we should handle that correctly.
M +5 -7 krita/ui/input/wintab/kis_tablet_support.h
M +1 -1 krita/ui/input/wintab/kis_tablet_support_x11.cpp
http://commits.kde.org/calligra/86b1ee3185cb44ecbfb9fb2e23c083d06c465613
diff --git a/krita/ui/input/wintab/kis_tablet_support.h \
b/krita/ui/input/wintab/kis_tablet_support.h index e7b00e5..fcb0548 100644
--- a/krita/ui/input/wintab/kis_tablet_support.h
+++ b/krita/ui/input/wintab/kis_tablet_support.h
@@ -116,18 +116,16 @@ struct QTabletDeviceData
SavedAxesData()
{
for (int i = 0; i < NAxes; i++) {
- m_x11_to_local_axis_mapping[i] = i;
+ m_x11_to_local_axis_mapping.append((AxesIndexes)i);
}
}
void tryFetchAxesMapping(XDevice *dev);
void setAxesMap(const QVector<AxesIndexes> &axesMap) {
- KIS_ASSERT_RECOVER_RETURN(axesMap.size() == NAxes);
+ KIS_ASSERT_RECOVER_RETURN(axesMap.size() >= NAxes);
- for (int i = 0; i < NAxes; i++) {
- m_x11_to_local_axis_mapping[i] = axesMap[i];
- }
+ m_x11_to_local_axis_mapping = axesMap;
}
inline QPointF position(const QTabletDeviceData *tablet, const QRect \
&screenArea) const { @@ -152,7 +150,7 @@ struct QTabletDeviceData
return m_axis_data[Rotation];
}
- bool updateAxesData(int firstAxis, int axesCount, const int axes[NAxes]) {
+ bool updateAxesData(int firstAxis, int axesCount, const int *axes) {
for (int srcIt = 0, dstIt = firstAxis;
srcIt < axesCount;
srcIt++, dstIt++) {
@@ -164,7 +162,7 @@ struct QTabletDeviceData
}
private:
int m_axis_data[NAxes];
- int m_x11_to_local_axis_mapping[NAxes];
+ QVector<AxesIndexes> m_x11_to_local_axis_mapping;
int m_lastSaneAxis;
};
diff --git a/krita/ui/input/wintab/kis_tablet_support_x11.cpp \
b/krita/ui/input/wintab/kis_tablet_support_x11.cpp index 67a2901..4e0a907 100644
--- a/krita/ui/input/wintab/kis_tablet_support_x11.cpp
+++ b/krita/ui/input/wintab/kis_tablet_support_x11.cpp
@@ -187,7 +187,7 @@ void \
QTabletDeviceData::SavedAxesData::tryFetchAxesMapping(XDevice *dev) qDebug() << "# \
Building tablet axes remapping table:"; }
- QVector<AxesIndexes> axesMap(NAxes, Unused);
+ QVector<AxesIndexes> axesMap(nitems, Unused);
for (unsigned int axisIndex = 0; axisIndex < nitems; axisIndex++) {
Atom currentAxisName = ((Atom*)prop)[axisIndex];
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic