public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] gentoo-x86 commit in x11-libs/qt-gui/files: 0263-fix-fontconfig-handling.diff 0262-fix-treeview-animation-crash.diff 0265-fix-formlayoutcrash.diff 0248-fix-qwidget-scroll-slowness.diff 0256-fix-recursive-backingstore-sync-crash.diff
@ 2009-01-30 22:15 Ben de Groot (yngwin)
  0 siblings, 0 replies; only message in thread
From: Ben de Groot (yngwin) @ 2009-01-30 22:15 UTC (permalink / raw
  To: gentoo-commits

yngwin      09/01/30 22:15:32

  Added:                0263-fix-fontconfig-handling.diff
                        0262-fix-treeview-animation-crash.diff
                        0265-fix-formlayoutcrash.diff
                        0248-fix-qwidget-scroll-slowness.diff
                        0256-fix-recursive-backingstore-sync-crash.diff
  Log:
  Add bugfix patches from qt-copy
  (Portage version: 2.2_rc23/cvs/Linux i686)

Revision  Changes    Path
1.1                  x11-libs/qt-gui/files/0263-fix-fontconfig-handling.diff

file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/qt-gui/files/0263-fix-fontconfig-handling.diff?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/qt-gui/files/0263-fix-fontconfig-handling.diff?rev=1.1&content-type=text/plain

Index: 0263-fix-fontconfig-handling.diff
===================================================================
Trolltech task ID : none
bugs.kde.org number : none
applied: no
author: from Trolltech (fixed in Qt 4.5)

Legacy font-name mappings are also applied when fontconfig is used,
which breaks fontconfig configuration in subtle ways (sans serif
is mapped to helvetica for example). Avoid this legacy substitution
when font config is used.

--- src/gui/text/qfont.cpp
+++ src/gui/text/qfont.cpp
@@ -59,6 +59,7 @@
 
 #ifdef Q_WS_X11
 #include "qx11info_x11.h"
+#include <private/qt_x11_p.h>
 #endif
 #ifdef Q_WS_QWS
 #include "qscreen_qws.h"
@@ -1781,6 +1782,11 @@ static void initFontSubst()
     if (!fontSubst->isEmpty())
         return;
 
+#if defined(Q_WS_X11) && !defined(QT_NO_FONTCONFIG)
+    if (X11->has_fontconfig)
+        return;
+#endif
+
     for (int i=0; initTbl[i] != 0; i += 2) {
         QStringList &list = (*fontSubst)[QString::fromLatin1(initTbl[i])];
         list.append(QString::fromLatin1(initTbl[i+1]));



1.1                  x11-libs/qt-gui/files/0262-fix-treeview-animation-crash.diff

file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/qt-gui/files/0262-fix-treeview-animation-crash.diff?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/qt-gui/files/0262-fix-treeview-animation-crash.diff?rev=1.1&content-type=text/plain

Index: 0262-fix-treeview-animation-crash.diff
===================================================================
Trolltech task ID : 236454
bugs.kde.org number : 176045
applied: no
author: Olivier Goffart

This patch makes sure no deleted items are being accessed during an animation of the treeview
It will also be contained in the upcoming Qt snapshots
Index: src/gui/itemviews/qtreeview.cpp
===================================================================
--- src/gui/itemviews/qtreeview.cpp	(revision 889029)
+++ src/gui/itemviews/qtreeview.cpp	(working copy)
@@ -2802,10 +2802,9 @@
     q->setState(oldState);
 
     if (emitSignal) {
+        emit q->expanded(index);
         if (animationsEnabled)
             beginAnimatedOperation();
-        else
-            emit q->expanded(index);
     }
     if (model->canFetchMore(index))
         model->fetchMore(index);
@@ -2843,10 +2842,9 @@
     q->setState(oldState);
 
     if (emitSignal) {
+        emit q->collapsed(modelIndex);
         if (animationsEnabled)
             beginAnimatedOperation();
-        else
-            emit q->collapsed(modelIndex);
     }
 }
 
@@ -2901,10 +2899,6 @@
     animatedOperation.before = QPixmap();
     animatedOperation.after = QPixmap();
     q->setState(QAbstractItemView::NoState);
-    if (animatedOperation.type == AnimatedOperation::Expand)
-        emit q->expanded(viewItems.at(animatedOperation.item).index);
-    else // operation == AnimatedOperation::Collapse
-        emit q->collapsed(viewItems.at(animatedOperation.item).index);
     q->updateGeometries();
     viewport->update();
 }



1.1                  x11-libs/qt-gui/files/0265-fix-formlayoutcrash.diff

file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/qt-gui/files/0265-fix-formlayoutcrash.diff?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/qt-gui/files/0265-fix-formlayoutcrash.diff?rev=1.1&content-type=text/plain

Index: 0265-fix-formlayoutcrash.diff
===================================================================
qt-bugs@ issue : 177767
Trolltech task ID : 240759
applied: no
author: Alexis Menard <alexis.menard@trolltech.com>

Fix a crash in QFormLayout when a layout is alone in a row
Included in 4.4.4

Index: src/gui/kernel/qlayoutitem.cpp
===================================================================
--- src/gui/kernel/qlayoutitem.cpp      (revision 910196)
+++ src/gui/kernel/qlayoutitem.cpp      (working copy)
@@ -383,6 +383,8 @@ QSizePolicy::ControlTypes QLayoutItem::controlTypes() const
     if (const QWidget *widget = const_cast<QLayoutItem*>(this)->widget()) {
         return widget->sizePolicy().controlType();
     } else if (const QLayout *layout = const_cast<QLayoutItem*>(this)->layout()) {
+        if (layout->count() == 0)
+            return QSizePolicy::DefaultType;
         QSizePolicy::ControlTypes types;
         for (int i = layout->count() - 1; i >= 0; --i)
             types |= layout->itemAt(i)->controlTypes();



1.1                  x11-libs/qt-gui/files/0248-fix-qwidget-scroll-slowness.diff

file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/qt-gui/files/0248-fix-qwidget-scroll-slowness.diff?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/qt-gui/files/0248-fix-qwidget-scroll-slowness.diff?rev=1.1&content-type=text/plain

Index: 0248-fix-qwidget-scroll-slowness.diff
===================================================================
qt-bugs@ issue : N227210
Trolltech task ID : 228764
bugs.kde.org number : 167739
applied: no
author: Germain Garand <germain@ebooksfrance.org>

QWidgetPrivate::scrollRect doesn't account for it's rect argument
but rather examine the whole widget surface when pondering if
it can apply accelerated blitting, resulting in unnecessarily slow 
and non-blitting QWidget::scroll calls.

A modified version of this patch is in Qt 4.5

Index: src/gui/painting/qbackingstore.cpp
===================================================================
--- src/gui/painting/qbackingstore.cpp	(révision 860438)
+++ src/gui/painting/qbackingstore.cpp	(copie de travail)
@@ -523,7 +523,8 @@
     }
 
     bool overlapped = false;
-    bool accelerateScroll = accelEnv &&  isOpaque() && !(overlapped = isOverlapped(data.crect));
+    QRect cRect = clipRect();
+    bool accelerateScroll = accelEnv &&  isOpaque() && !(overlapped = isOverlapped(rect & cRect));
 
 #if defined(Q_WS_QWS)
     QWSWindowSurface *surface;
@@ -558,13 +559,13 @@
 #ifdef Q_WS_QWS
         QWSWindowSurface *surface = static_cast<QWSWindowSurface*>(wbs->windowSurface);
         const QRegion clip = surface->clipRegion().translated(-toplevelOffset)
-                             & clipRect();
+                             & cRect;
         const QRect scrollRect = rect & clip.boundingRect();
         const QRect destRect = scrollRect.translated(dx, dy)
                                & scrollRect
                                &  clip.boundingRect();
 #else
-        QRect scrollRect = rect & clipRect();
+        QRect scrollRect = rect & cRect;
 
         QRect destRect = scrollRect.isValid() ? scrollRect.translated(dx,dy).intersected(scrollRect) : QRect();
 



1.1                  x11-libs/qt-gui/files/0256-fix-recursive-backingstore-sync-crash.diff

file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/qt-gui/files/0256-fix-recursive-backingstore-sync-crash.diff?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/qt-gui/files/0256-fix-recursive-backingstore-sync-crash.diff?rev=1.1&content-type=text/plain

Index: 0256-fix-recursive-backingstore-sync-crash.diff
===================================================================
qt-bugs@ issue : N227209
Trolltech task ID : none yet
bugs.kde.org number : 174065
applied: yes
author: Szymon Tomasz Stefanek <s.stefanek@gmail.com>

This patch fixes a crash deep inside the qt painting engine.

The toplevel shared painter is instantiated by the topmost window
which "owns" the backingstore buffer. The topmost window then recursively
asks the children to paint themselves with the shared painter.
With certain widget hierarchies it turns out that the topmost window
may be asked to paint itself deep inside the recursive painting stack:
a sort of "hierarchy-looping recursion".
The window will do the job and then happily destroy the shared
painter leaving the outer stack frames with a dangling pointer.

This patch stops the "looping recursion" when it's triggered
with a shared painter already active. The bug doesn't seem to
be present in qt 4.5 snapshots, but in the meantime we need this fix.


Index: src/gui/painting/qbackingstore.cpp
===================================================================
--- src/gui/painting/qbackingstore.cpp	(revision 879741)
+++ src/gui/painting/qbackingstore.cpp	(working copy)
@@ -987,8 +987,12 @@
             return;
         }
 
-        if (tlw->updatesEnabled()) {
+        // With certain widget hierarchies we may end up being called recursively
+        // on the same toplevel. This is likely to explode once the painter is released
+        // in the code below (since there is no reference counting). Avoid it.
+        bool alreadyPainting = tlwExtra->sharedPainter && tlwExtra->sharedPainter->isActive();
 
+        if (tlw->updatesEnabled() && !alreadyPainting) {
             // hw: XXX the toClean region is not correct if !dirtyWidgets.isEmpty()
 
             // Pre render config






^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2009-01-30 22:15 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-01-30 22:15 [gentoo-commits] gentoo-x86 commit in x11-libs/qt-gui/files: 0263-fix-fontconfig-handling.diff 0262-fix-treeview-animation-crash.diff 0265-fix-formlayoutcrash.diff 0248-fix-qwidget-scroll-slowness.diff 0256-fix-recursive-backingstore-sync-crash.diff Ben de Groot (yngwin)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox