summaryrefslogtreecommitdiff
path: root/qt/qt-2.3.9.patch
authormickeyl <mickeyl>2005-02-19 16:07:58 (UTC)
committer mickeyl <mickeyl>2005-02-19 16:07:58 (UTC)
commitb7bf9c7acdc010eb30bc246372efb0d1b394166a (patch) (side-by-side diff)
tree8dde116603cd8ddf439a881fc4a1d8f413af617b /qt/qt-2.3.9.patch
parent298d0d244ca724405ca0651775ed61a22ce7a5ae (diff)
downloadopie-b7bf9c7acdc010eb30bc246372efb0d1b394166a.zip
opie-b7bf9c7acdc010eb30bc246372efb0d1b394166a.tar.gz
opie-b7bf9c7acdc010eb30bc246372efb0d1b394166a.tar.bz2
hello qte2.3.10 patches
bye bye old patches
Diffstat (limited to 'qt/qt-2.3.9.patch') (more/less context) (show whitespace changes)
-rw-r--r--qt/qt-2.3.9.patch/qte239-all.patch510
-rw-r--r--qt/qt-2.3.9.patch/qte239-qwsmouse.patch301
2 files changed, 0 insertions, 811 deletions
diff --git a/qt/qt-2.3.9.patch/qte239-all.patch b/qt/qt-2.3.9.patch/qte239-all.patch
deleted file mode 100644
index 533652d..0000000
--- a/qt/qt-2.3.9.patch/qte239-all.patch
+++ b/dev/null
@@ -1,510 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- qt-2.3.9-snapshot-20041102/src/iconview/qiconview.cpp~qte239-all
-+++ qt-2.3.9-snapshot-20041102/src/iconview/qiconview.cpp
-@@ -225,6 +225,7 @@
- QIconView::SelectionMode selectionMode;
- QIconViewItem *currentItem, *tmpCurrentItem, *highlightedItem, *startDragItem, *pressedItem, *selectAnchor;
- QRect *rubber;
-+ QPixmap *backBuffer;
- QTimer *scrollTimer, *adjustTimer, *updateTimer, *inputTimer,
- *fullRedrawTimer;
- int rastX, rastY, spacing;
-@@ -2268,6 +2269,7 @@
- d->currentItem = 0;
- d->highlightedItem = 0;
- d->rubber = 0;
-+ d->backBuffer = 0;
- d->scrollTimer = 0;
- d->startDragItem = 0;
- d->tmpCurrentItem = 0;
-@@ -2416,6 +2418,8 @@
- delete item;
- item = tmp;
- }
-+ delete d->backBuffer;
-+ d->backBuffer = 0;
- delete d->fm;
- d->fm = 0;
- #ifndef QT_NO_TOOLTIP
-@@ -2882,6 +2886,48 @@
- }
-
- /*!
-+ This function grabs all paintevents that otherwise would have been
-+ processed by the QScrollView::viewportPaintEvent(). Here we use a
-+ doublebuffer to reduce 'on-paint' flickering on QIconView
-+ (and of course its childs).
-+
-+ \sa QScrollView::viewportPaintEvent(), QIconView::drawContents()
-+*/
-+
-+void QIconView::bufferedPaintEvent( QPaintEvent* pe )
-+{
-+ QWidget* vp = viewport();
-+ QRect r = pe->rect() & vp->rect();
-+ int ex = r.x() + contentsX();
-+ int ey = r.y() + contentsY();
-+ int ew = r.width();
-+ int eh = r.height();
-+
-+ if ( !d->backBuffer )
-+ d->backBuffer = new QPixmap(vp->size());
-+ if ( d->backBuffer->size() != vp->size() ) {
-+ //Resize function (with hysteesis). Uses a good compromise between memory
-+ //consumption and speed (number) of resizes.
-+ float newWidth = (float)vp->width();
-+ float newHeight = (float)vp->height();
-+ if ( newWidth > d->backBuffer->width() || newHeight > d->backBuffer->height() )
-+ {
-+ newWidth *= 1.1892;
-+ newHeight *= 1.1892;
-+ d->backBuffer->resize( (int)newWidth, (int)newHeight );
-+ } else if ( 1.5*newWidth < d->backBuffer->width() || 1.5*newHeight < d->backBuffer->height() )
-+ d->backBuffer->resize( (int)newWidth, (int)newHeight );
-+ }
-+
-+ QPainter p;
-+ p.begin(d->backBuffer, vp);
-+ drawContentsOffset(&p, contentsX(), contentsY(), ex, ey, ew, eh);
-+ p.end();
-+ bitBlt(vp, r.x(), r.y(), d->backBuffer, r.x(), r.y(), ew, eh);
-+}
-+
-+/*!
-+
- \reimp
- */
-
-@@ -4939,7 +4985,7 @@
- if ( !d->rubber )
- drawDragShapes( d->oldDragPos );
- }
-- viewportPaintEvent( (QPaintEvent*)e );
-+ bufferedPaintEvent ((QPaintEvent*)e );
- if ( d->dragging ) {
- if ( !d->rubber )
- drawDragShapes( d->oldDragPos );
-@@ -5377,11 +5423,19 @@
- return;
-
- if ( item->d->container1 && d->firstContainer ) {
-- item->d->container1->items.removeRef( item );
-+ //Special-case checking of the last item, since this may be
-+ //called a few times for the same item.
-+ if (item->d->container1->items.last() == item)
-+ item->d->container1->items.removeLast();
-+ else
-+ item->d->container1->items.removeRef( item );
- }
- item->d->container1 = 0;
- if ( item->d->container2 && d->firstContainer ) {
-- item->d->container2->items.removeRef( item );
-+ if (item->d->container2->items.last() == item)
-+ item->d->container2->items.removeLast();
-+ else
-+ item->d->container2->items.removeRef( item );
- }
- item->d->container2 = 0;
-
---- qt-2.3.9-snapshot-20041102/src/iconview/qiconview.h~qte239-all
-+++ qt-2.3.9-snapshot-20041102/src/iconview/qiconview.h
-@@ -444,6 +444,7 @@
- virtual void contentsDropEvent( QDropEvent *e );
- #endif
-
-+ void bufferedPaintEvent( QPaintEvent* );
- virtual void resizeEvent( QResizeEvent* e );
- virtual void keyPressEvent( QKeyEvent *e );
- virtual void focusInEvent( QFocusEvent *e );
---- qt-2.3.9-snapshot-20041102/src/kernel/qapplication.cpp~qte239-all
-+++ qt-2.3.9-snapshot-20041102/src/kernel/qapplication.cpp
-@@ -35,6 +35,8 @@
- **
- **********************************************************************/
-
-+#define QT_WEAK_SYMBOL __attribute__(( weak ))
-+
- #include "qobjectlist.h"
- #include "qobjectdict.h"
- #include "qapplication.h"
-@@ -937,11 +939,16 @@
- #ifndef QT_NO_STYLE
- void QApplication::setStyle( QStyle *style )
- {
-+ setStyle_NonWeak ( style );
-+}
-+
-+void QApplication::setStyle_NonWeak( QStyle *style )
-+{
- QStyle* old = app_style;
-- app_style = style;
-
- if ( startingUp() ) {
- delete old;
-+ app_style = style;
- return;
- }
-
-@@ -962,6 +969,8 @@
- old->unPolish( qApp );
- }
-
-+ app_style = style;
-+
- // take care of possible palette requirements of certain gui
- // styles. Do it before polishing the application since the style
- // might call QApplication::setStyle() itself
-@@ -1188,13 +1197,30 @@
- \sa QWidget::setPalette(), palette(), QStyle::polish()
- */
-
--void QApplication::setPalette( const QPalette &palette, bool informWidgets,
-+void QApplication::setPalette ( const QPalette &palette, bool informWidgets,
-+ const char* className )
-+{
-+ setPalette_NonWeak ( palette, informWidgets, className );
-+}
-+
-+void QApplication::setPalette_NonWeak ( const QPalette &palette, bool informWidgets,
- const char* className )
- {
- QPalette pal = palette;
- #ifndef QT_NO_STYLE
-- if ( !startingUp() )
-+ if ( !startingUp() ) {
- qApp->style().polish( pal ); // NB: non-const reference
-+ if ( className ) {
-+ // if we just polished a class specific palette (this normally
-+ // only called by qt_fix_tooltips - see below), we better re-
-+ // polish the global palette. Some styles like liquid can get
-+ // confused, because they can not detect if the polished palette
-+ // is the global one or only a class specific one.
-+ // (liquid uses this palette to calculate blending pixmaps)
-+ QPalette p = qApp-> palette ( );
-+ qApp->style().polish ( p );
-+ }
-+ }
- #endif
- bool all = FALSE;
- if ( !className ) {
-@@ -1279,6 +1305,12 @@
- void QApplication::setFont( const QFont &font, bool informWidgets,
- const char* className )
- {
-+ setFont_NonWeak ( font, informWidgets, className );
-+}
-+
-+void QApplication::setFont_NonWeak( const QFont &font, bool informWidgets,
-+ const char* className )
-+{
- bool all = FALSE;
- if ( !className ) {
- if ( !app_font ) {
---- qt-2.3.9-snapshot-20041102/src/kernel/qapplication.h~qte239-all
-+++ qt-2.3.9-snapshot-20041102/src/kernel/qapplication.h
-@@ -61,6 +61,10 @@
- class QSemaphore;
- #endif
-
-+#if !defined( QT_WEAK_SYMBOL )
-+#define QT_WEAK_SYMBOL
-+#endif
-+
- // REMOVE IN 3.0 (just here for moc source compatibility)
- #define QNonBaseApplication QApplication
-
-@@ -85,7 +89,10 @@
-
- #ifndef QT_NO_STYLE
- static QStyle &style();
-- static void setStyle( QStyle* );
-+ static void setStyle( QStyle* ) QT_WEAK_SYMBOL;
-+private:
-+ static void setStyle_NonWeak( QStyle* );
-+public:
- #endif
- #if 1 /* OBSOLETE */
- enum ColorMode { NormalColors, CustomColors };
-@@ -106,11 +113,19 @@
- #ifndef QT_NO_PALETTE
- static QPalette palette( const QWidget* = 0 );
- static void setPalette( const QPalette &, bool informWidgets=FALSE,
-+ const char* className = 0 ) QT_WEAK_SYMBOL;
-+private:
-+ static void setPalette_NonWeak( const QPalette &, bool informWidgets=FALSE,
- const char* className = 0 );
-+public:
- #endif
- static QFont font( const QWidget* = 0 );
- static void setFont( const QFont &, bool informWidgets=FALSE,
-+ const char* className = 0 ) QT_WEAK_SYMBOL;
-+private:
-+ static void setFont_NonWeak( const QFont &, bool informWidgets=FALSE,
- const char* className = 0 );
-+public:
- static QFontMetrics fontMetrics();
-
- QWidget *mainWidget() const;
-@@ -207,7 +222,10 @@
- void qwsSetCustomColors( QRgb *colortable, int start, int numColors );
- #ifndef QT_NO_QWS_MANAGER
- static QWSDecoration &qwsDecoration();
-- static void qwsSetDecoration( QWSDecoration *);
-+ static void qwsSetDecoration( QWSDecoration *) QT_WEAK_SYMBOL;
-+private:
-+ static void qwsSetDecoration_NonWeak( QWSDecoration *);
-+public:
- #endif
- #endif
-
---- qt-2.3.9-snapshot-20041102/src/kernel/qapplication_qws.cpp~qte239-all
-+++ qt-2.3.9-snapshot-20041102/src/kernel/qapplication_qws.cpp
-@@ -2905,6 +2905,11 @@
- */
- void QApplication::qwsSetDecoration( QWSDecoration *d )
- {
-+ qwsSetDecoration_NonWeak ( d );
-+}
-+
-+void QApplication::qwsSetDecoration_NonWeak( QWSDecoration *d )
-+{
- if ( d ) {
- delete qws_decoration;
- qws_decoration = d;
---- qt-2.3.9-snapshot-20041102/src/kernel/qfontdatabase.cpp~qte239-all
-+++ qt-2.3.9-snapshot-20041102/src/kernel/qfontdatabase.cpp
-@@ -35,6 +35,8 @@
- **
- **********************************************************************/
-
-+#define QT_WEAK_SYMBOL __attribute__(( weak ))
-+
- #include "qfontdatabase.h"
-
- #ifndef QT_NO_FONTDATABASE
-@@ -2424,6 +2426,13 @@
- const QString &style,
- const QString &charSet )
- {
-+ return pointSizes_NonWeak ( family, style, charSet );
-+}
-+
-+QValueList<int> QFontDatabase::pointSizes_NonWeak ( const QString &family,
-+ const QString &style,
-+ const QString &charSet )
-+{
- QString cs( charSet );
- if ( charSet.isEmpty() ) {
- QStringList lst = charSets( family );
---- qt-2.3.9-snapshot-20041102/src/kernel/qfontdatabase.h~qte239-all
-+++ qt-2.3.9-snapshot-20041102/src/kernel/qfontdatabase.h
-@@ -59,6 +59,10 @@
- class QDiskFont;
- #endif
-
-+#if !defined( QT_WEAK_SYMBOL )
-+#define QT_WEAK_SYMBOL
-+#endif
-+
- class QFontDatabasePrivate;
-
- class Q_EXPORT QFontDatabase
-@@ -67,9 +71,16 @@
- QFontDatabase();
-
- QStringList families( bool onlyForLocale = TRUE ) const;
-+
-+
- QValueList<int> pointSizes( const QString &family,
- const QString &style = QString::null,
-- const QString &charSet = QString::null );
-+ const QString &charSet = QString::null ) QT_WEAK_SYMBOL;
-+private:
-+ QValueList<int> pointSizes_NonWeak( const QString &family,
-+ const QString &style,
-+ const QString &charSet );
-+public:
- QStringList styles( const QString &family,
- const QString &charSet = QString::null ) const;
- QStringList charSets( const QString &familyName,
---- qt-2.3.9-snapshot-20041102/src/kernel/qgfxraster_qws.cpp~qte239-all
-+++ qt-2.3.9-snapshot-20041102/src/kernel/qgfxraster_qws.cpp
-@@ -4408,7 +4408,7 @@
- setAlphaType(IgnoreAlpha);
- if ( w <= 0 || h <= 0 || !ncliprect ) return;
- GFX_START(QRect(rx+xoffs, ry+yoffs, w+1, h+1))
--#ifdef QWS_EXPERIMENTAL_FASTPATH
-+#if 0 // def QWS_EXPERIMENTAL_FASTPATH !! this is crashing HancomWord on OZ !!
- // ### fix for 8bpp
- // This seems to be reliable now, at least for 16bpp
-
---- qt-2.3.9-snapshot-20041102/src/kernel/qkeyboard_qws.cpp~qte239-all
-+++ qt-2.3.9-snapshot-20041102/src/kernel/qkeyboard_qws.cpp
-@@ -314,7 +314,7 @@
- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 63
- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 64
- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 65
-- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 66
-+ { Qt::Key_F14, 0xffff , 0xffff , 0xffff }, // 66
- { Qt::Key_Meta, 0xffff , 0xffff , 0xffff }, // 67
- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 68
- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 69
---- qt-2.3.9-snapshot-20041102/src/kernel/qwindowsystem_qws.cpp~qte239-all
-+++ qt-2.3.9-snapshot-20041102/src/kernel/qwindowsystem_qws.cpp
-@@ -913,6 +913,18 @@
- {
- }
-
-+static void catchSegvSignal( int )
-+{
-+#ifndef QT_NO_QWS_KEYBOARD
-+ if ( qwsServer )
-+ qwsServer->closeKeyboard();
-+#endif
-+ QWSServer::closedown();
-+ fprintf(stderr, "Segmentation fault.\n");
-+ exit(1);
-+}
-+
-+
- /*!
- \class QWSServer qwindowsystem_qws.h
- \brief Server-specific functionality in Qt/Embedded
-@@ -1038,6 +1050,7 @@
- }
-
- signal(SIGPIPE, ignoreSignal); //we get it when we read
-+ signal(SIGSEGV, catchSegvSignal); //recover the keyboard on crash
- #endif
- focusw = 0;
- mouseGrabber = 0;
---- qt-2.3.9-snapshot-20041102/src/tools/qcstring.h~qte239-all
-+++ qt-2.3.9-snapshot-20041102/src/tools/qcstring.h
-@@ -119,7 +119,7 @@
- // We want to keep source compatibility for 2.x
- // ### TODO for 4.0: completely remove these and the cstr* functions
-
--#if !defined(QT_GENUINE_STR)
-+#if 0
-
- #undef strlen
- #define strlen qstrlen
---- qt-2.3.9-snapshot-20041102/src/tools/qglobal.h~qte239-all
-+++ qt-2.3.9-snapshot-20041102/src/tools/qglobal.h
-@@ -207,8 +207,16 @@
- #if __GNUC__ == 2 && __GNUC_MINOR__ == 96
- #define Q_FP_CCAST_BROKEN
- #endif
-+/* ARM gcc pads structs to 32 bits, even when they contain a single
-+ char, or short. We tell gcc to pack QChars to 16 bits, to avoid
-+ QString bloat. However, gcc 3.4 doesn't allow us to create references to
-+ members of a packed struct. (Pointers are OK, because then you
-+ supposedly know what you are doing.) */
- #if (defined(__arm__) || defined(__ARMEL__)) && !defined(QT_MOC_CPP)
- #define Q_PACKED __attribute__ ((packed))
-+# if __GNUC__ == 3 && __GNUC_MINOR__ >= 4
-+# define Q_NO_PACKED_REFERENCE
-+# endif
- #endif
- #elif defined(__xlC__)
- #define _CC_XLC_
---- qt-2.3.9-snapshot-20041102/src/tools/qstring.cpp~qte239-all
-+++ qt-2.3.9-snapshot-20041102/src/tools/qstring.cpp
-@@ -14469,7 +14469,11 @@
- return qt_winQString2MB( *this );
- #endif
- #ifdef _WS_QWS_
-- return utf8(); // ##### if there is ANY 8 bit format supported?
-+ QTextCodec* codec = QTextCodec::codecForLocale();
-+ return codec
-+ ? codec->fromUnicode(*this)
-+ : utf8();
-+ //return latin1(); // ##### if there is ANY 8 bit format supported?
- #endif
- #endif
- }
-@@ -14515,7 +14519,12 @@
- return qt_winMB2QString( local8Bit );
- #endif
- #ifdef _WS_QWS_
-- return fromUtf8(local8Bit,len);
-+ QTextCodec* codec = QTextCodec::codecForLocale();
-+ if( len < 0) len = qstrlen(local8Bit);
-+ return codec
-+ ? codec->toUnicode(local8Bit, len)
-+ : QString::fromUtf8(local8Bit,len);
-+// return fromLatin1(local8Bit,len);
- #endif
- #endif // QT_NO_TEXTCODEC
- }
---- qt-2.3.9-snapshot-20041102/src/widgets/qcommonstyle.cpp~qte239-all
-+++ qt-2.3.9-snapshot-20041102/src/widgets/qcommonstyle.cpp
-@@ -572,7 +572,7 @@
- bool enabled, bool active )
- {
- #ifndef QT_NO_MENUBAR
--#ifndef QT_NO_STYLE_SGI
-+#if 1 // #ifndef QT_NO_STYLE_SGI
- if (draw_menu_bar_impl != 0) {
- QDrawMenuBarItemImpl impl = draw_menu_bar_impl;
- (this->*impl)(p, x, y, w, h, mi, g, enabled, active);
---- qt-2.3.9-snapshot-20041102/src/widgets/qlistview.cpp~qte239-all
-+++ qt-2.3.9-snapshot-20041102/src/widgets/qlistview.cpp
-@@ -5051,9 +5051,9 @@
- l = l->childItem ? l->childItem : l->siblingItem;
-
- if ( l && l->height() )
-- s.setHeight( s.height() + 10 * l->height() );
-- else
-- s.setHeight( s.height() + 140 );
-+ s.setHeight( s.height() + 4 /*10*/ * l->height() );
-+ else // ^v much too big for handhelds
-+ s.setHeight( s.height() + 30 /*140*/ );
-
- if ( s.width() > s.height() * 3 )
- s.setHeight( s.width() / 3 );
---- qt-2.3.9-snapshot-20041102/src/widgets/qscrollview.cpp~qte239-all
-+++ qt-2.3.9-snapshot-20041102/src/widgets/qscrollview.cpp
-@@ -1285,6 +1285,9 @@
- case QEvent::LayoutHint:
- d->autoResizeHint(this);
- break;
-+ case QEvent::WindowActivate:
-+ case QEvent::WindowDeactivate:
-+ return TRUE;
- default:
- break;
- }
---- qt-2.3.9-snapshot-20041102/src/widgets/qtoolbutton.cpp~qte239-all
-+++ qt-2.3.9-snapshot-20041102/src/widgets/qtoolbutton.cpp
-@@ -238,7 +238,7 @@
- else
- QToolTip::add( this, textLabel );
- }
--#endif
-+#endif
- }
-
-
-@@ -332,12 +332,12 @@
- QPixmap pm = iconSet(TRUE).pixmap(QIconSet::Large, QIconSet::Normal);
- w = pm.width();
- h = pm.height();
-- if ( w < 32 )
-- w = 32;
-- if ( h < 32 )
-- h = 32;
-+ if ( w < 24 )
-+ w = 24;
-+ if ( h < 24 )
-+ h = 24;
- } else {
-- w = h = 16;
-+ w = h = 14;
- QPixmap pm = iconSet(TRUE).pixmap(QIconSet::Small, QIconSet::Normal);
- w = pm.width();
- h = pm.height();
diff --git a/qt/qt-2.3.9.patch/qte239-qwsmouse.patch b/qt/qt-2.3.9.patch/qte239-qwsmouse.patch
deleted file mode 100644
index 865516e..0000000
--- a/qt/qt-2.3.9.patch/qte239-qwsmouse.patch
+++ b/dev/null
@@ -1,301 +0,0 @@
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- qt-2.3.9-snapshot-20041211/src/kernel/qwsmouse_qws.cpp~tslib.patch
-+++ qt-2.3.9-snapshot-20041211/src/kernel/qwsmouse_qws.cpp
-@@ -7,6 +7,14 @@
- **
- ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
- **
-+** Portions Copyright (C) 2003 Texas Instruments, Inc.
-+** Rights to said portions for use under the GPL and QPL licenses
-+** are hereby granted to Trolltech AS.
-+**
-+** Portions Copyright (C) 2004 Holger Hans Peter Freyther <freyther@handhelds.org>
-+** Rights to said portions for use under the GPL and QPL licenses
-+** are hereby granted to Trolltech AS.
-+**
- ** This file is part of the kernel module of the Qt GUI Toolkit.
- **
- ** This file may be distributed and/or modified under the terms of the
-@@ -60,6 +68,10 @@
- #include <linux/tpanel.h>
- #endif
-
-+#ifdef QWS_TSLIB
-+#include <tslib.h>
-+#endif
-+
- //#define QT_QWS_K2
-
- #if defined(QT_QWS_IPAQ) || defined(QT_QWS_K2)
-@@ -1124,6 +1136,221 @@
- return sent;
- }
-
-+
-+class QTSLibHandler : public QCalibratedMouseHandler
-+{
-+ Q_OBJECT
-+public:
-+ QTSLibHandler();
-+ ~QTSLibHandler();
-+
-+ virtual void clearCalibration();
-+ virtual void calibrate( QWSPointerCalibrationData * );
-+
-+ static int sortByX( const void*, const void* );
-+ static int sortByY( const void*, const void* );
-+private:
-+ void openTs();
-+ void closeTs();
-+ void interpolateSample();
-+
-+private:
-+ bool raw : 1;
-+#ifdef QWS_TSLIB
-+ struct tsdev *ts;
-+#endif
-+ QSocketNotifier *m_notify;
-+
-+private slots:
-+ void readMouseData();
-+};
-+
-+QTSLibHandler::QTSLibHandler()
-+ : raw(false), m_notify(0l)
-+{
-+ openTs();
-+}
-+
-+QTSLibHandler::~QTSLibHandler()
-+{
-+ closeTs();
-+}
-+
-+void QTSLibHandler::openTs()
-+{
-+#ifdef QWS_TSLIB
-+ char *tsdevice;
-+
-+ if( ( tsdevice = getenv( "TSLIB_TSDEVICE" ) ) != NULL ) {
-+ ts = ts_open( tsdevice, 1 );
-+ } else {
-+ ts = ts_open( "/dev/ts", 1 );
-+ }
-+
-+ if (!ts) {
-+ qWarning( "Cannot open touchscreen (%s)", strerror( errno ) );
-+ return;
-+ }
-+
-+ if (ts_config( ts )) {
-+ qWarning( "Cannot configure touchscreen (%s)", strerror( errno ) );
-+ return;
-+ }
-+
-+
-+ m_notify = new QSocketNotifier( ts_fd(ts), QSocketNotifier::Read, this );
-+ connect( m_notify, SIGNAL(activated(int)), this, SLOT(readMouseData()));
-+#endif
-+}
-+
-+void QTSLibHandler::closeTs()
-+{
-+#ifdef QWS_TSLIB
-+ if (ts)
-+ ts_close(ts);
-+
-+ delete m_notify;
-+ m_notify = 0; ts = 0;
-+ raw = false;
-+#endif
-+
-+}
-+
-+void QTSLibHandler::clearCalibration()
-+{
-+ raw = true;
-+}
-+
-+
-+void QTSLibHandler::calibrate( QWSPointerCalibrationData *cd )
-+{
-+ QPoint dev_tl = cd->devPoints[ QWSPointerCalibrationData::TopLeft ];
-+ QPoint dev_br = cd->devPoints[ QWSPointerCalibrationData::BottomRight ];
-+ QPoint screen_tl = cd->screenPoints[ QWSPointerCalibrationData::TopLeft ];
-+ QPoint screen_br = cd->screenPoints[ QWSPointerCalibrationData::BottomRight ];
-+ int a, b, c, d, e, f, s;
-+
-+ s = 1 << 16;
-+
-+ a = s * (screen_tl.x() - screen_br.x() ) / (dev_tl.x() - dev_br.x());
-+ b = 0;
-+ c = s * screen_tl.x() - a * dev_tl.x();
-+
-+ d = 0;
-+ e = s * (screen_tl.y() - screen_br.y() ) / (dev_tl.y() - dev_br.y());
-+ f = s * screen_tl.y() - e * dev_tl.y();
-+
-+ QString calFile = "/etc/pointercal";
-+#ifndef QT_NO_TEXTSTREAM
-+ QFile file( calFile );
-+ if ( file.open( IO_WriteOnly ) ) {
-+ QTextStream t( &file );
-+ t << a << " " << b << " " << c << " ";
-+ t << d << " " << e << " " << f << " " << s;
-+ file.flush(); closeTs();
-+ openTs();
-+ } else
-+#endif
-+ {
-+ qDebug( "Could not save calibration: %s", calFile.latin1() );
-+ }
-+}
-+
-+void QTSLibHandler::readMouseData()
-+{
-+#ifdef QWS_TSLIB
-+ if(!qt_screen)
-+ return;
-+
-+ /*
-+ * After clear Calibration
-+ * we're in raw mode and do some easy median
-+ * search.
-+ */
-+ if (raw )
-+ return interpolateSample();
-+
-+ static struct ts_sample sample;
-+ static int ret;
-+
-+ /*
-+ * Ok. We need to see if we can read more than one event
-+ * We do this not to lose an update.
-+ */
-+ while ( true ) {
-+ if ((ret = ts_read(ts, &sample, 1)) != 1 )
-+ return;
-+
-+
-+ QPoint pos( sample.x, sample.y );
-+ emit mouseChanged( pos, sample.pressure != 0 ? 1 : 0 );
-+ }
-+#endif
-+}
-+
-+
-+/*
-+ * Lets take all down events and then sort them
-+ * and take the event in the middle.
-+ *
-+ * inspired by testutils.c
-+ */
-+void QTSLibHandler::interpolateSample() {
-+ static struct ts_sample samples[25];
-+ int index = 0;
-+ int ret;
-+
-+ do {
-+ /* fill only the last sample again */
-+ if ( index >= 25 )
-+ index = 24;
-+
-+ /* we're opened non-blocking */
-+ if((ret= ts_read_raw(ts, &samples[index], 1 ) ) != 1 ) {
-+ /* no event yet, so try again */
-+ if (ret==-1 ) {
-+ index--;
-+ continue;
-+ }
-+ }
-+ }while (samples[index++].pressure != 0);
-+
-+ /*
-+ * index is maximal 25 and we at least one sample
-+ */
-+ if( index >= 25 )
-+ index = 24;
-+ int x, y;
-+
-+ /*
-+ * now let us use the median value
-+ * even index does not have an item in the middle
-+ * so let us take the average of n/2 and (n/2)-1 as the middle
-+ */
-+ int m = index/2;
-+ ::qsort(samples, index, sizeof(ts_sample), QTSLibHandler::sortByX);
-+ x = (index % 2 ) ? samples[m].x :
-+ ( samples[m-1].x + samples[m].x )/2;
-+
-+ ::qsort(samples, index, sizeof(ts_sample), QTSLibHandler::sortByY);
-+ y = (index % 2 ) ? samples[m].y :
-+ ( samples[m-1].y + samples[m].y )/2;
-+
-+ emit mouseChanged( QPoint(x, y), 1 );
-+ emit mouseChanged( QPoint(0, 0), 0 );
-+}
-+
-+int QTSLibHandler::sortByX( const void* one, const void* two) {
-+ return reinterpret_cast<const struct ts_sample*>(one)->x -
-+ reinterpret_cast<const struct ts_sample*>(two)->x;
-+}
-+
-+int QTSLibHandler::sortByY( const void* one, const void* two) {
-+ return reinterpret_cast<const struct ts_sample*>(one)->y -
-+ reinterpret_cast<const struct ts_sample*>(two)->y;
-+}
-+
-+
- /*
- * Handler for /dev/tpanel Linux kernel driver
- */
-@@ -1731,7 +1958,9 @@
-
- case TPanel:
- #if defined(QWS_CUSTOMTOUCHPANEL)
-- handler = new QCustomTPanelHandlerPrivate(mouseProtocol,mouseDev);
-+ handler = new QCustomTPanelHandlerPrivate(mouseProtocol,mouseDev);
-+#elif defined(QWS_TSLIB)
-+ handler = new QTSLibHandler();
- #elif defined(QT_QWS_YOPY)
- handler = new QYopyTPanelHandlerPrivate(mouseProtocol,mouseDev);
- #elif defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_K2)
---- qt-2.3.9-snapshot-20041211/configure~tslib.patch
-+++ qt-2.3.9-snapshot-20041211/configure
-@@ -406,6 +406,9 @@
- -kde)
- KDE=yes
- ;;
-+ -tslib)
-+ TSLIB=YES
-+ ;;
- -no-g++-exceptions)
- GPLUSPLUS_EXCEPTIONS=no
- ;;
-@@ -1290,6 +1293,9 @@
- set to point to a KDE 2 installation.
- See http://www.kde.org
-
-+ -tslib ............. Use the TSLib (touchscreen access library) mouse handler
-+ by default, instead of the normal device default.
-+
- -no-g++-exceptions . Disable exceptions on platforms using the GNU C++
- compiler by using the -fno-exceptions flag.
-
-@@ -1353,6 +1359,13 @@
- [ "x$SM" = "xno" ] && QT_CXX="${QT_CXX} -DQT_NO_SM_SUPPORT"
- [ "x$XFT" = "xyes" ] && QT_CXX="${QT_CXX} -DQT_XFT"
- [ "x$XFT" = "xno" ] && QT_CXX="${QT_CXX} -DQT_NO_XKB"
-+
-+if [ "x$TSLIB" = "xyes" ]
-+then
-+ QT_CXX="${QT_CXX} -DQWS_TSLIB"
-+ QT_LIBS="${QT_LIBS} -lts"
-+fi
-+
- if [ "x$THREAD" = "xyes" ]
- then
- cat >src-mt.mk <<EOF