[Kde-games-devel] Review Request 117785: fix performance issues

Thomas Lübking thomas.luebking at gmail.com
Mon Apr 28 19:35:49 UTC 2014


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/117785/
-----------------------------------------------------------

(Updated April 28, 2014, 7:35 p.m.)


Review request for KDE Games, Ian Wadham and Roney Gomes.


Changes
-------

* cache wall sprites
* draw wall sprites as tiled pixmaps
* invalidate caches on theme change
* fixed pointed out issues (gcc would bwt. usually optimize away the singleton bool usage, evtl. one would better use "const bool" to support that)


Repository: kbounce


Description
-------

Roney, I hope your the correct addressee - Ian referecend some "Roney" in a private mail.
The patch looks bigger than it is, i had to partially fix coding style in order to read through it, sorry.

The MAJOR issue with the code is that it causes recursions on the eventloop by altering graphicsitems from the paint() call ("setPixmap()"), so i scrathced that.
It seems a cause was that a full repaint was forced by setting some invisible fullsize pixmap item, while the only requirement for this was actually when finishing a wall - so i replaced that with an explicit full update call on occasion.

Also all non-raster graphicssystems HATE QPixmap::fill(Qt::transparent) causing a 24bit -> 32bit change and it's esp. bad on the nvidia driver.
So i reduced that (and allocation) by re-using the old (ARGB) pixmap on a 64x64 alignment.
Ian, you might esp. check that impact on OSX.

Last I cached the sprites, seemed reducing cpu on permanent paint (but i didn't really measure)

I'll also mark & comment the actual changes in the diff.


Diffs (updated)
-----

  board.h 75f66d4 
  board.cpp 46b923b 
  gameobject.h 9fb5788 
  gamewidget.cpp 23cb6ba 
  wall.h c56efa1 
  wall.cpp df487a0 

Diff: https://git.reviewboard.kde.org/r/117785/diff/


Testing
-------

100% cpu -> 1-2% cpu and more fluid =)
No visible regression spotted.


Thanks,

Thomas Lübking

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-games-devel/attachments/20140428/7f4d3b49/attachment.html>


More information about the kde-games-devel mailing list