--- Begin Message ---
- To: submit@bugs.debian.org
- Subject: palmax touchscreen logic bug prevents use in low loads
- From: Yann Vernier <yann@donkey.dyndns.org>
- Date: Thu, 12 Oct 2006 02:00:53 +0200
- Message-id: <20061012000052.GA8610@donkey.dyndns.org>
Package: xserver-xorg-input-palmax
Version: 1.0.0.5-2
The palmax touchscreen driver contains a bug related to
the parsing of data from the serial port. The problem
occurs when less than five bytes have been read after the
current package to be processed, a very frequent case
except when the system is under high load. The result is
that touchscreen data is discarded instead of parsed,
rendering the touchscreen unresponsive.
I have found the faulty logic and am attaching a patch
which seems to solve the problem correctly for me, though
it could probably use a second set of eyes to check for
other thinkos.
I am using a Palmax PD-1100, and with this patch applied
my touchscreen seems to work fine.
*** xserver-xorg-input-palmax-1.0.0.5/src/xf86Palmax.c Mon Feb 13 04:47:12 2006
--- xserver-xorg-input-palmax-1.0.0.5.fixed/src/xf86Palmax.c Thu Oct 12 01:18:17 2006
***************
*** 15,20 ****
--- 15,23 ----
#include "xf86Module.h"
#endif
+ #include <stdlib.h>
+ #include <string.h>
+
/*
***************************************************************************
*
***************
*** 28,34 ****
#define DEFAULT_MAX_Y 61592
#define DEFAULT_MIN_Y 7608
! #define XI_STYLUS "TOUCHSCREEH" /* X device name for the stylus device */
/*
--- 31,37 ----
#define DEFAULT_MAX_Y 61592
#define DEFAULT_MIN_Y 7608
! #define XI_STYLUS "TOUCHSCREEN" /* X device name for the stylus device */
/*
***************
*** 301,307 ****
bytes_in_packet = 0;
start_ptr = ptr;
! while (num_bytes >= report_size)
{
/*
* Skip bytes until we hit a header (FE/FF)
--- 304,310 ----
bytes_in_packet = 0;
start_ptr = ptr;
! while (num_bytes >= report_size-bytes_in_packet)
{
/*
* Skip bytes until we hit a header (FE/FF)
--- End Message ---