From b7bf9c7acdc010eb30bc246372efb0d1b394166a Mon Sep 17 00:00:00 2001 From: mickeyl Date: Sat, 19 Feb 2005 16:07:58 +0000 Subject: hello qte2.3.10 patches bye bye old patches --- (limited to 'qt/qt-2.3.9.patch') 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 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 pointSizes( const QString &family, - const QString &style = QString::null, -- const QString &charSet = QString::null ); -+ const QString &charSet = QString::null ) QT_WEAK_SYMBOL; -+private: -+ QValueList 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 -+** 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 - #endif - -+#ifdef QWS_TSLIB -+#include -+#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(one)->x - -+ reinterpret_cast(two)->x; -+} -+ -+int QTSLibHandler::sortByY( const void* one, const void* two) { -+ return reinterpret_cast(one)->y - -+ reinterpret_cast(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 <