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

List:       kde-panel-devel
Subject:    Re: Review Request: frame plasmoid: image load and scaling with
From:       Sebastian_Kügler <sebas () kde ! org>
Date:       2010-03-08 11:47:35
Message-ID: 20100308114735.9052.66999 () localhost
[Download RAW message or body]


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviewboard.kde.org/r/3162/#review4410
-----------------------------------------------------------


I'm not sure about this patch:

- The loading of images in a thread is nice
- The "loads huge picture and keeps them in mem" is not changed (in fact, it's worse now since \
QImage forces you to keep them in system memory, whereas QPixmaps can be stored on the graphics \
                card)
- It basically disables hardware acceleration of the image scaling, QImage vs. QPixmap

With QPixmaps, we can blit into a smaller rect which is very fast, with QImage, we have to do \
the scaling in software and then convert it to a QPixmap to draw it. This happens on every \
resize, so it's a hot path and blocks direct user interaction. In my tests on different \
hardware (ATI, Intel, NVidia), the QPixmap based approach "felt" faster (smoother, more frames \
per second while resizing). The performance here depends on the painting backend used (image vs \
raster vs native) though, and thus per driver.

Maybe we can only do the image loading in a thread (since that can potentially take quite long \
for large images), and keep a smaller copy (screen resolution?) stored in a QPixmap which is \
then used to resize. (If a size larger than our screen resolution is required, we can on-demand \
load the full image (40000x30000px if you wish ;)) and scale from that. (Rationale upscaling == \
bad, downscaling == OK, saving mem == good)

The patch as it's now is not good enough IMO.


/trunk/KDE/kdeplasma-addons/applets/frame/frame.cpp
<http://reviewboard.kde.org/r/3162/#comment3905>

    This is a hot path (it gets called whenever the applet resizes, which can be quite often \
during drags). Doing a QImage -> QPixmap conversion here is not a good idea.  
    The QPixmap-based version would just blit the pixmap into a smaller rect which is fast (it \
can be hw-accelerated)



/trunk/KDE/kdeplasma-addons/applets/frame/frame.cpp
<http://reviewboard.kde.org/r/3162/#comment3906>

    Why is this disabled now?


- Sebastian


On 2010-03-08 02:27:47, Davide Bettio wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://reviewboard.kde.org/r/3162/
> -----------------------------------------------------------
> 
> (Updated 2010-03-08 02:27:47)
> 
> 
> Review request for Plasma.
> 
> 
> Summary
> -------
> 
> First of all: **This is a preview of the patch** I'm still working on it but I need some \
> advices. Picture Frame does 2 really bad things (when used with huge images):
> * it loads huge images (in my case 4000x3000 pixels) into X11 pixmaps
> * plasma is blocked while the image is scaled
> As side effect also X11 freezes.
> 
> This patch solves both issues using threads.
> 
> I think that we should remove "smooth scaling" option from our configuration UI. what do you \
> think? 
> 
> Diffs
> -----
> 
> /trunk/KDE/kdeplasma-addons/applets/frame/CMakeLists.txt 1093624 
> /trunk/KDE/kdeplasma-addons/applets/frame/appearanceSettings.ui 1093624 
> /trunk/KDE/kdeplasma-addons/applets/frame/configdialog.h 1093624 
> /trunk/KDE/kdeplasma-addons/applets/frame/configdialog.cpp 1093624 
> /trunk/KDE/kdeplasma-addons/applets/frame/frame.h 1093624 
> /trunk/KDE/kdeplasma-addons/applets/frame/frame.cpp 1093624 
> /trunk/KDE/kdeplasma-addons/applets/frame/imageloader.cpp PRE-CREATION 
> /trunk/KDE/kdeplasma-addons/applets/frame/imagescaler.cpp PRE-CREATION 
> /trunk/KDE/kdeplasma-addons/applets/frame/picture.h 1093624 
> /trunk/KDE/kdeplasma-addons/applets/frame/picture.cpp 1093624 
> /trunk/KDE/kdeplasma-addons/applets/frame/slideshow.h 1093624 
> /trunk/KDE/kdeplasma-addons/applets/frame/slideshow.cpp 1093624 
> 
> Diff: http://reviewboard.kde.org/r/3162/diff
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Davide
> 
> 

_______________________________________________
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel


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

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