xorg-server: Changes to 'ubuntu'
debian/changelog | 7 +++++++
debian/patches/series | 1 +
debian/patches/xi2-resize-touch.patch | 34 ++++++++++++++++++++++++++++++++++
3 files changed, 42 insertions(+)
New commits:
commit 2e84778c7527f10ed10392053cdee9886d193573
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date: Wed May 7 14:00:39 2014 +0200
Resize touch event history if the array is filled up.
xi2-resize-touch.patch
diff --git a/debian/changelog b/debian/changelog
index 508e9bd..06eb8a8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+xorg-server (2:1.15.1-0ubuntu4) utopic; urgency=low
+
+ * Resize touch event history if the array is filled up.
+ - xi2-resize-touch.patch
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com> Wed, 07 May 2014 13:52:59 +0200
+
xorg-server (2:1.15.1-0ubuntu3) utopic; urgency=medium
* Revive the old drm_device_keep_trying.patch.
diff --git a/debian/patches/series b/debian/patches/series
index 0351dc2..93c7b5a 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -52,3 +52,4 @@ pixman-validate.patch
fix-ftbfs-ppc64el.patch
xmir.patch
drm_device_keep_trying.patch
+xi2-resize-touch.patch
diff --git a/debian/patches/xi2-resize-touch.patch b/debian/patches/xi2-resize-touch.patch
new file mode 100644
index 0000000..021dd59
--- /dev/null
+++ b/debian/patches/xi2-resize-touch.patch
@@ -0,0 +1,34 @@
+diff --git a/dix/touch.c b/dix/touch.c
+index a7ea213..1478e38 100644
+--- a/dix/touch.c
++++ b/dix/touch.c
+@@ -460,12 +460,26 @@ TouchEventHistoryPush(TouchPointInfoPtr ti, const DeviceEvent *ev)
+ if (ev->flags & (TOUCH_CLIENT_ID | TOUCH_REPLAYING))
+ return;
+
++ if (ti->history_elements == ti->history_size - 1) {
++ DeviceEvent *hist = NULL;
++ size_t sz = ti->history_size * 2;
++
++ if (sz < 10000) {
++ hist = realloc(ti->history, sz * sizeof(*hist));
++
++ if (hist) {
++ ti->history = hist;
++ ti->history_size = sz;
++ memset(&hist[sz/2], 0, sizeof(*hist)*sz/2);
++ }
++ }
++ }
++
+ ti->history[ti->history_elements++] = *ev;
+- /* FIXME: proper overflow fixes */
+ if (ti->history_elements > ti->history_size - 1) {
+ ti->history_elements = ti->history_size - 1;
+- DebugF("source device %d: history size %d overflowing for touch %u\n",
+- ti->sourceid, ti->history_size, ti->client_id);
++ ErrorF("source device %d: history size %d overflowing for touch %u\n",
++ ti->sourceid, ti->history_size, ti->client_id);
+ }
+ }
+
Reply to: