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

List:       kde-commits
Subject:    KDE/kdegraphics/ksnapshot
From:       Pau Garcia i Quiles <pgquiles () elpauer ! org>
Date:       2010-10-26 12:57:03
Message-ID: 20101026125703.4CB21AC897 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1189942 by pgquiles:

Save memory: make the temporary QPixmap the size of the selection's rect instead of \
the size of the desktop

 M  +9 -4      freeregiongrabber.cpp  


--- trunk/KDE/kdegraphics/ksnapshot/freeregiongrabber.cpp #1189941:1189942
@@ -26,6 +26,7 @@
 #include <QToolTip>
 #include <klocale.h>
 #include <KWindowSystem>
+#include <QRgb>
 
 FreeRegionGrabber::FreeRegionGrabber( ) :
     QWidget( 0, Qt::X11BypassWindowManagerHint | Qt::WindowStaysOnTopHint | \
Qt::FramelessWindowHint | Qt::Tool ), @@ -283,17 +284,21 @@
     {
 	grabbing = true;
 
-        QPixmap pixmap2(pixmap.size());
+        int xOffset = pixmap.rect().x() - pol.boundingRect().x();
+        int yOffset = pixmap.rect().y() - pol.boundingRect().y();
+        QPolygon translatedPol = pol.translated(xOffset, yOffset);
+
+        QPixmap pixmap2(pol.boundingRect().size());
         pixmap2.fill(Qt::transparent);
 
         QPainter pt;
         pt.begin(&pixmap2);
         pt.setCompositionMode(QPainter::CompositionMode_Source);
-        pt.setClipRegion(QRegion(pol));
-        pt.drawPixmap(pixmap.rect(), pixmap);
+        pt.setClipRegion(QRegion(translatedPol));
+        pt.drawPixmap(pixmap2.rect(), pixmap, pol.boundingRect());
         pt.end();
 
-        emit freeRegionGrabbed(pixmap2.copy(pol.boundingRect()));
+        emit freeRegionGrabbed(pixmap2);
     }
 }
 


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

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