[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/khtml/misc
From:       Fredrik Höglund <fredrik () kde ! org>
Date:       2009-03-01 18:00:22
Message-ID: 1235930422.070480.9848.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 933834 by fredrik:

Fix an image corruption issue with the raster graphics system,
and a possible performance issue.


 M  +9 -7      loader.cpp  


--- trunk/KDE/kdelibs/khtml/misc/loader.cpp #933833:933834
@@ -55,6 +55,8 @@
 
 //#include <qasyncio.h>
 //#include <qasyncimageio.h>
+#include <QtGui/QApplication>
+#include <QtGui/QDesktopWidget>
 #include <QtGui/QPainter>
 #include <QtGui/QBitmap>
 #include <QtGui/QMovie>
@@ -615,20 +617,20 @@
     int w = i->size().width();
     int h = i->size().height();
 
-    QPixmap pm(w, h);
-    if (i->hasAlpha() && !pm.paintEngine()->hasFeature(QPaintEngine::PorterDuff)) {
+    if (i->hasAlpha() && \
!QApplication::desktop()->paintEngine()->hasFeature(QPaintEngine::PorterDuff)) {  \
                QImage im(w, h, QImage::Format_ARGB32_Premultiplied);
-
         QPainter paint(&im);
+        paint.setCompositionMode(QPainter::CompositionMode_Source);
         ImagePainter pi(i);
         pi.paint(0, 0, &paint);
         paint.end();
-        return QPixmap::fromImage( im );
+        return QPixmap::fromImage( im, Qt::NoOpaqueDetection );
     } else {
-        pm.fill(Qt::transparent);
+        QPixmap pm(w, h);
+        if (i->hasAlpha())
+            pm.fill(Qt::transparent);
         QPainter paint(&pm);
-        if (i->hasAlpha())
-             paint.setCompositionMode(QPainter::CompositionMode_Source);
+        paint.setCompositionMode(QPainter::CompositionMode_Source);
         ImagePainter pi(i);
         pi.paint(0, 0, &paint);
         paint.end();


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic