author | mickeyl <mickeyl> | 2004-06-08 21:01:33 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2004-06-08 21:01:33 (UTC) |
commit | f2a655f7f906d65f96bc523b02a2b23e9831a6d0 (patch) (side-by-side diff) | |
tree | 1d96e91b5d97e136e1bdc98205acb278eb196654 | |
parent | 622d6f82264fc18f7dc1ff438232d12ea9da9d2b (diff) | |
download | opie-f2a655f7f906d65f96bc523b02a2b23e9831a6d0.zip opie-f2a655f7f906d65f96bc523b02a2b23e9831a6d0.tar.gz opie-f2a655f7f906d65f96bc523b02a2b23e9831a6d0.tar.bz2 |
add the fixed gcc3.4 patch courtesy zecke
-rw-r--r-- | qt/qt-2.3.7.patch/qte237-gcc34.patch | 461 |
1 files changed, 461 insertions, 0 deletions
diff --git a/qt/qt-2.3.7.patch/qte237-gcc34.patch b/qt/qt-2.3.7.patch/qte237-gcc34.patch new file mode 100644 index 0000000..5abdd7f --- a/dev/null +++ b/qt/qt-2.3.7.patch/qte237-gcc34.patch @@ -0,0 +1,461 @@ +diff -ur qt-2.3.7_clean/include/qcstring.h qt-2.3.7/include/qcstring.h +--- qt-2.3.7_clean/include/qcstring.h 2004-06-04 02:17:53.000000000 +0200 ++++ qt-2.3.7/include/qcstring.h 2004-06-04 02:24:25.000000000 +0200 +@@ -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 +diff -ur qt-2.3.7_clean/include/qglobal.h qt-2.3.7/include/qglobal.h +--- qt-2.3.7_clean/include/qglobal.h 2004-06-04 02:17:53.000000000 +0200 ++++ qt-2.3.7/include/qglobal.h 2004-06-04 02:29:41.000000000 +0200 +@@ -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_ +diff -ur qt-2.3.7_clean/include/qsortedlist.h qt-2.3.7/include/qsortedlist.h +--- qt-2.3.7_clean/include/qsortedlist.h 2004-06-04 02:17:53.000000000 +0200 ++++ qt-2.3.7/include/qsortedlist.h 2004-06-04 02:24:25.000000000 +0200 +@@ -48,7 +48,7 @@ + public: + QSortedList() {} + QSortedList( const QSortedList<type> &l ) : QList<type>(l) {} +- ~QSortedList() { clear(); } ++ ~QSortedList() { this->clear(); } + QSortedList<type> &operator=(const QSortedList<type> &l) + { return (QSortedList<type>&)QList<type>::operator=(l); } + +diff -ur qt-2.3.7_clean/include/qstring.h qt-2.3.7/include/qstring.h +--- qt-2.3.7_clean/include/qstring.h 2004-06-04 02:17:53.000000000 +0200 ++++ qt-2.3.7/include/qstring.h 2004-06-04 02:54:16.000000000 +0200 +@@ -163,8 +163,16 @@ + bool isLetterOrNumber() const; + bool isDigit() const; + ++ ++#ifdef Q_NO_PACKED_REFERENCE ++ uchar& cell() { return *(&cl); } ++ uchar& row() { return *(&rw); } ++#else + uchar& cell() { return cl; } +- uchar& row() { return rw; } ++ uchar& row() { return rw; } ++#endif ++ ++ + uchar cell() const { return cl; } + uchar row() const { return rw; } + +diff -ur qt-2.3.7_clean/src/kernel/qgfxtransformed_qws.cpp qt-2.3.7/src/kernel/qgfxtransformed_qws.cpp +--- qt-2.3.7_clean/src/kernel/qgfxtransformed_qws.cpp 2004-06-04 02:17:53.000000000 +0200 ++++ qt-2.3.7/src/kernel/qgfxtransformed_qws.cpp 2004-06-04 02:24:25.000000000 +0200 +@@ -671,11 +671,11 @@ + inline int tx( int x, int y ) { + switch ( qt_trans_screen->transformation() ) { + case QTransformedScreen::Rot90: +- return y - xoffs + yoffs; ++ return y - this->xoffs + this->yoffs; + case QTransformedScreen::Rot180: +- return (width - x - 1) - xoffs - xoffs; ++ return (this->width - x - 1) - this->xoffs - this->xoffs; + case QTransformedScreen::Rot270: +- return (height - y - 1) - xoffs - yoffs; ++ return (this->height - y - 1) - this->xoffs - this->yoffs; + default: + return x; + } +@@ -683,11 +683,11 @@ + inline int ty( int x, int y ) { + switch ( qt_trans_screen->transformation() ) { + case QTransformedScreen::Rot90: +- return (width - x - 1) - yoffs - xoffs; ++ return (this->width - x - 1) - this->yoffs - this->xoffs; + case QTransformedScreen::Rot180: +- return (height - y - 1) - yoffs - yoffs; ++ return (this->height - y - 1) - this->yoffs - this->yoffs; + case QTransformedScreen::Rot270: +- return x - yoffs + xoffs; ++ return x - this->yoffs + this->xoffs; + default: + return y; + } +@@ -715,23 +715,23 @@ + template <const int depth, const int type> + void QGfxTransformedRaster<depth,type>::setSourceWidgetOffset(int x, int y) + { +- if ( srcbits == buffer ) { ++ if ( this->srcbits == this->buffer ) { + switch ( qt_trans_screen->transformation() ) { + case QTransformedScreen::Rot90: +- srcwidgetoffs = QPoint( y, width - x - srcwidth ); ++ this->srcwidgetoffs = QPoint( y, this->width - x - this->srcwidth ); + break; + case QTransformedScreen::Rot180: +- srcwidgetoffs = QPoint( width - x - srcwidth, height - y - srcheight ); ++ this->srcwidgetoffs = QPoint( this->width - x - this->srcwidth, this->height - y - this->srcheight ); + break; + case QTransformedScreen::Rot270: +- srcwidgetoffs = QPoint( height - y - srcheight, x ); ++ this->srcwidgetoffs = QPoint( this->height - y - this->srcheight, x ); + break; + default: +- srcwidgetoffs = QPoint( x, y ); ++ this->srcwidgetoffs = QPoint( x, y ); + break; + } + } else +- srcwidgetoffs = QPoint( x, y ); ++ this->srcwidgetoffs = QPoint( x, y ); + } + + template <const int depth, const int type> +@@ -739,8 +739,8 @@ + { + QT_TRANS_GFX_BASE<depth,type>::setSource(i); + QSize s = qt_screen->mapToDevice( QSize(i->width(), i->height()) ); +- srcwidth = s.width(); +- srcheight = s.height(); ++ this->srcwidth = s.width(); ++ this->srcheight = s.height(); + } + + template <const int depth, const int type> +@@ -782,7 +782,7 @@ + if ( w == 0 || h == 0 ) + return; + QRect r( x, y, w, h ); +- if ( cbrush.style() == SolidPattern ) { ++ if ( this->cbrush.style() == Qt::SolidPattern ) { + r.setCoords( tx(x,y), ty(x,y), tx(x+w-1,y+h-1), ty(x+w-1,y+h-1) ); + r = r.normalize(); + } +@@ -797,7 +797,7 @@ + // solution. The brush offset logic is complicated enough, so we don't + // fastpath patternedbrush. + +- if ( inDraw || cpen.style()==NoPen || patternedbrush ) { ++ if ( inDraw || this->cpen.style()==Qt::NoPen || this->patternedbrush ) { + //slowpath + QT_TRANS_GFX_BASE<depth,type>::drawPolygon( a, w, idx, num ); + } else { +@@ -819,29 +819,29 @@ + template <const int depth, const int type> + void QGfxTransformedRaster<depth,type>::processSpans( int n, QPoint* point, int* width ) + { +- if ( inDraw || patternedbrush && srcwidth != 0 && srcheight != 0 ) { ++ if ( inDraw || this->patternedbrush && this->srcwidth != 0 && this->srcheight != 0 ) { + //in the patternedbrush case, we let blt do the transformation + // so we leave inDraw false. +- QT_TRANS_GFX_BASE<depth,type>::processSpans( n, point, width ); ++ QT_TRANS_GFX_BASE<depth,type>::processSpans( n, point, width ); + } else { + inDraw = TRUE; + while (n--) { + if ( *width > 0 ) { +- int x=tx(point->x(),point->y())+xoffs; +- int y=ty(point->x(),point->y())+yoffs; ++ int x=tx(point->x(),point->y())+this->xoffs; ++ int y=ty(point->x(),point->y())+this->yoffs; + + switch( qt_trans_screen->transformation() ) { + case QTransformedScreen::Rot90: +- vline( x, y-(*width-1), y ); ++ this->vline( x, y-(*width-1), y ); + break; + case QTransformedScreen::Rot180: +- hline( x - (*width-1), x, y ); ++ this->hline( x - (*width-1), x, y ); + break; + case QTransformedScreen::Rot270: +- vline( x, y, y+*width-1 ); ++ this->vline( x, y, y+*width-1 ); + break; + default: +- hline( x, x+*width-1, y ); ++ this->hline( x, x+*width-1, y ); + break; + } + } +@@ -896,14 +896,14 @@ + switch ( qt_trans_screen->transformation() ) { + case QTransformedScreen::Rot90: + rsx = sy; +- rsy = srcwidth - sx - w; ++ rsy = this->srcwidth - sx - w; + break; + case QTransformedScreen::Rot180: +- rsx = srcwidth - sx - w; +- rsy = srcheight - sy - h; ++ rsx = this->srcwidth - sx - w; ++ rsy = this->srcheight - sy - h; + break; + case QTransformedScreen::Rot270: +- rsx = srcheight - sy - h; ++ rsx = this->srcheight - sy - h; + rsy = sx; + break; + default: +@@ -941,39 +941,39 @@ + r.setCoords( tx(rx,ry), ty(rx,ry), tx(rx+w-1,ry+h-1), ty(rx+w-1,ry+h-1) ); + r = r.normalize(); + +- QPoint oldBrushOffs = brushoffs; ++ QPoint oldBrushOffs = this->brushoffs; + int brx, bry; + switch ( qt_trans_screen->transformation() ) { + case QTransformedScreen::Rot90: +- brx = brushoffs.y(); +- bry = srcwidth - brushoffs.x() - w; ++ brx = this->brushoffs.y(); ++ bry = this->srcwidth - this->brushoffs.x() - w; + break; + case QTransformedScreen::Rot180: +- brx = srcwidth - brushoffs.x() - w; +- bry = srcheight - brushoffs.y() - h; ++ brx = this->srcwidth - this->brushoffs.x() - w; ++ bry = this->srcheight - this->brushoffs.y() - h; + break; + case QTransformedScreen::Rot270: +- brx = srcheight - brushoffs.y() - h; +- bry = brushoffs.x(); ++ brx = this->srcheight - this->brushoffs.y() - h; ++ bry = this->brushoffs.x(); + break; + default: +- brx = brushoffs.x(); +- bry = brushoffs.y(); ++ brx = this->brushoffs.x(); ++ bry = this->brushoffs.y(); + break; + } +- brushoffs = QPoint( brx, bry ); ++ this->brushoffs = QPoint( brx, bry ); + +- int oldsw = srcwidth; +- int oldsh = srcheight; +- QSize s = qt_screen->mapToDevice( QSize(srcwidth,srcheight) ); +- srcwidth = s.width(); +- srcheight = s.height(); ++ int oldsw = this->srcwidth; ++ int oldsh = this->srcheight; ++ QSize s = qt_screen->mapToDevice( QSize(this->srcwidth,this->srcheight) ); ++ this->srcwidth = s.width(); ++ this->srcheight = s.height(); + + QT_TRANS_GFX_BASE<depth,type>::tiledBlt( r.x(), r.y(), r.width(), r.height() ); + +- srcwidth = oldsw; +- srcheight = oldsh; +- brushoffs = oldBrushOffs; ++ this->srcwidth = oldsw; ++ this->srcheight = oldsh; ++ this->brushoffs = oldBrushOffs; + inDraw = FALSE; + } + +diff -ur qt-2.3.7_clean/src/kernel/qgfxvfb_qws.cpp qt-2.3.7/src/kernel/qgfxvfb_qws.cpp +--- qt-2.3.7_clean/src/kernel/qgfxvfb_qws.cpp 2004-06-04 02:17:53.000000000 +0200 ++++ qt-2.3.7/src/kernel/qgfxvfb_qws.cpp 2004-06-04 02:24:25.000000000 +0200 +@@ -31,7 +31,6 @@ + **********************************************************************/ + + #include "qgfxraster_qws.h" +- + #ifndef QT_NO_QWS_VFB + + #include <sys/ipc.h> +@@ -140,8 +139,8 @@ + void QGfxVFb<depth,type>::drawPoint( int x, int y ) + { + QWSDisplay::grab( TRUE ); +- if ( is_screen_gfx ) +- qvfb_screen->setDirty( QRect( x+xoffs, y+yoffs, 1, 1 ) ); ++ if ( this->is_screen_gfx ) ++ qvfb_screen->setDirty( QRect( x+this->xoffs, y+this->yoffs, 1, 1 ) ); + QGfxRaster<depth,type>::drawPoint( x, y ); + QWSDisplay::ungrab(); + } +@@ -150,8 +149,8 @@ + void QGfxVFb<depth,type>::drawPoints( const QPointArray &pa,int x,int y ) + { + QWSDisplay::grab( TRUE ); +- if ( is_screen_gfx ) +- qvfb_screen->setDirty( clipbounds ); ++ if ( this->is_screen_gfx ) ++ qvfb_screen->setDirty( this->clipbounds ); + QGfxRaster<depth,type>::drawPoints( pa, x, y ); + QWSDisplay::ungrab(); + } +@@ -160,9 +159,9 @@ + void QGfxVFb<depth,type>::drawLine( int x1,int y1,int x2,int y2 ) + { + QWSDisplay::grab( TRUE ); +- if ( is_screen_gfx ) { ++ if ( this->is_screen_gfx ) { + QRect r; +- r.setCoords( x1+xoffs, y1+yoffs, x2+xoffs, y2+yoffs ); ++ r.setCoords( x1+this->xoffs, y1+this->yoffs, x2+this->xoffs, y2+this->yoffs ); + qvfb_screen->setDirty( r.normalize() ); + } + QGfxRaster<depth,type>::drawLine( x1, y1, x2, y2 ); +@@ -173,8 +172,8 @@ + void QGfxVFb<depth,type>::fillRect( int x,int y,int w,int h ) + { + QWSDisplay::grab( TRUE ); +- if ( is_screen_gfx ) +- qvfb_screen->setDirty( QRect( x+xoffs, y+yoffs, w, h ) ); ++ if ( this->is_screen_gfx ) ++ qvfb_screen->setDirty( QRect( x+this->xoffs, y+this->yoffs, w, h ) ); + QGfxRaster<depth,type>::fillRect( x, y, w, h ); + QWSDisplay::ungrab(); + } +@@ -183,8 +182,8 @@ + void QGfxVFb<depth,type>::drawPolyline( const QPointArray &pa,int x,int y ) + { + QWSDisplay::grab( TRUE ); +- if ( is_screen_gfx ) +- qvfb_screen->setDirty( clipbounds ); ++ if ( this->is_screen_gfx ) ++ qvfb_screen->setDirty( this->clipbounds ); + QGfxRaster<depth,type>::drawPolyline( pa, x, y ); + QWSDisplay::ungrab(); + } +@@ -193,8 +192,8 @@ + void QGfxVFb<depth,type>::drawPolygon( const QPointArray &pa,bool w,int x,int y ) + { + QWSDisplay::grab( TRUE ); +- if ( is_screen_gfx ) +- qvfb_screen->setDirty( clipbounds ); ++ if ( this->is_screen_gfx ) ++ qvfb_screen->setDirty( this->clipbounds ); + QGfxRaster<depth,type>::drawPolygon( pa, w, x, y ); + QWSDisplay::ungrab(); + } +@@ -203,8 +202,8 @@ + void QGfxVFb<depth,type>::blt( int x,int y,int w,int h, int sx, int sy ) + { + QWSDisplay::grab( TRUE ); +- if ( is_screen_gfx ) +- qvfb_screen->setDirty( QRect( x+xoffs, y+yoffs, w, h ) ); ++ if ( this->is_screen_gfx ) ++ qvfb_screen->setDirty( QRect( x+this->xoffs, y+this->yoffs, w, h ) ); + QGfxRaster<depth,type>::blt( x, y, w, h, sx, sy ); + QWSDisplay::ungrab(); + } +@@ -215,8 +214,8 @@ + QWSDisplay::grab( TRUE ); + int dy = sy - y; + int dx = sx - x; +- if ( is_screen_gfx ) +- qvfb_screen->setDirty( QRect(QMIN(x,sx) + xoffs, QMIN(y,sy) + yoffs, ++ if ( this->is_screen_gfx ) ++ qvfb_screen->setDirty( QRect(QMIN(x,sx) + this->xoffs, QMIN(y,sy) + this->yoffs, + w+abs(dx), h+abs(dy)) ); + QGfxRaster<depth,type>::scroll( x, y, w, h, sx, sy ); + QWSDisplay::ungrab(); +@@ -227,8 +226,8 @@ + void QGfxVFb<depth,type>::stretchBlt( int x,int y,int w,int h,int sx,int sy ) + { + QWSDisplay::grab( TRUE ); +- if ( is_screen_gfx ) +- qvfb_screen->setDirty( QRect( x + xoffs, y + yoffs, w, h) ); ++ if ( this->is_screen_gfx ) ++ qvfb_screen->setDirty( QRect( x + this->xoffs, y + this->yoffs, w, h) ); + QGfxRaster<depth,type>::stretchBlt( x, y, w, h, sx, sy ); + QWSDisplay::ungrab(); + } +@@ -238,8 +237,8 @@ + void QGfxVFb<depth,type>::tiledBlt( int x,int y,int w,int h ) + { + QWSDisplay::grab( TRUE ); +- if ( is_screen_gfx ) +- qvfb_screen->setDirty( QRect(x + xoffs, y + yoffs, w, h) ); ++ if ( this->is_screen_gfx ) ++ qvfb_screen->setDirty( QRect(x + this->xoffs, y + this->yoffs, w, h) ); + QGfxRaster<depth,type>::tiledBlt( x, y, w, h ); + QWSDisplay::ungrab(); + } +diff -ur qt-2.3.7_clean/src/tools/qcstring.h qt-2.3.7/src/tools/qcstring.h +--- qt-2.3.7_clean/src/tools/qcstring.h 2004-06-04 02:17:53.000000000 +0200 ++++ qt-2.3.7/src/tools/qcstring.h 2004-06-04 02:24:25.000000000 +0200 +@@ -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 +diff -ur qt-2.3.7_clean/src/tools/qglobal.h qt-2.3.7/src/tools/qglobal.h +--- qt-2.3.7_clean/src/tools/qglobal.h 2004-06-04 02:17:53.000000000 +0200 ++++ qt-2.3.7/src/tools/qglobal.h 2004-06-04 02:29:41.000000000 +0200 +@@ -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_ +Nur in qt-2.3.7/src/tools: qglobal.h~. +diff -ur qt-2.3.7_clean/src/tools/qsortedlist.h qt-2.3.7/src/tools/qsortedlist.h +--- qt-2.3.7_clean/src/tools/qsortedlist.h 2004-06-04 02:17:53.000000000 +0200 ++++ qt-2.3.7/src/tools/qsortedlist.h 2004-06-04 02:24:25.000000000 +0200 +@@ -48,7 +48,7 @@ + public: + QSortedList() {} + QSortedList( const QSortedList<type> &l ) : QList<type>(l) {} +- ~QSortedList() { clear(); } ++ ~QSortedList() { this->clear(); } + QSortedList<type> &operator=(const QSortedList<type> &l) + { return (QSortedList<type>&)QList<type>::operator=(l); } + +diff -ur qt-2.3.7_clean/src/tools/qstring.h qt-2.3.7/src/tools/qstring.h +--- qt-2.3.7_clean/src/tools/qstring.h 2004-06-04 02:17:53.000000000 +0200 ++++ qt-2.3.7/src/tools/qstring.h 2004-06-04 02:54:16.000000000 +0200 +@@ -163,8 +163,16 @@ + bool isLetterOrNumber() const; + bool isDigit() const; + ++ ++#ifdef Q_NO_PACKED_REFERENCE ++ uchar& cell() { return *(&cl); } ++ uchar& row() { return *(&rw); } ++#else + uchar& cell() { return cl; } +- uchar& row() { return rw; } ++ uchar& row() { return rw; } ++#endif ++ ++ + uchar cell() const { return cl; } + uchar row() const { return rw; } + +Nur in qt-2.3.7/src/tools: qstring.h~. |