[Kde-games-devel] Review Request 109365: Support for QtQuick in libkdegames

Viranch Mehta viranch.mehta at gmail.com
Thu Mar 28 11:03:07 UTC 2013


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

(Updated March 28, 2013, 11:03 a.m.)


Review request for KDE Games.


Changes
-------

* increment KDEGAMES_VERSION to 6.1.0
* fix the problem I encountered with loading sprites from cache

the cache problem: when one cycles through all game themes, and starts going back in reverse after reaching the last theme, the sprites start getting loaded from the cache. at this point, the status property of Image element does not change (from Loading to Ready), and long story short, the sprites picked up from cache were not being shown on the view. fixed this by adding the callback onSourceChanged and showing the sprite from cache there.


Description
-------

This is a copy of review request #7017 in SVN review board because I needed to update the patch (it won't accept git diffs). Updated description:

This patch contains support for QtQuick in libkdegames for future porting QML. Post this patch, libkdeclarative becomes a dependency for libkdegames.

We have some new classes:

1. KgImageProvider:
This is a QDeclarativeImageProvider, and a sort-of replacement for KGameRenderer for QML ports. This class is supplied with a KgThemeProvider which it uses to discover SVG locations, reads them using QSvgRenderer and returns the requested sprite pixmap. QDeclarativeImageProvider has inbuilt ability of caching and asynchronous loading of pixmaps, which is why can replace usages of KGameRenderer in QML ports.

2. KgDeclarativeView:
This is a QDeclarativeView with KDE-specific import paths for QML components configured and javascript functions bindings added (like i18n() methods) using the KDeclarative library. Game's KgThemeProviders are supplied to this class which in turn registers them with the underlying QML engine, and adds KgImageProviders corresponding to each KgThemeProvider.

3. KgItem QML component:
This is simple QML Image element wrapper for showing sprites on QML views using the KgImageProviders. We specify which one of the KgImageProviders we want to use and which sprite key we want to show, and it will be painted on the view.

The patch may not stay up-to-date, relevant code is in "viranch/qtquick" branch in libkdegames's git repo.


Diffs (updated)
-----

  CMakeLists.txt de5eff3 
  declarativeimports/CMakeLists.txt PRE-CREATION 
  declarativeimports/corebindingsplugin.h PRE-CREATION 
  declarativeimports/corebindingsplugin.cpp PRE-CREATION 
  declarativeimports/qml/KgItem.qml PRE-CREATION 
  declarativeimports/qml/qmldir PRE-CREATION 
  includes/CMakeLists.txt 8756a50 
  includes/KgDeclarativeView PRE-CREATION 
  kgdeclarativeview.h PRE-CREATION 
  kgdeclarativeview.cpp PRE-CREATION 
  kgimageprovider.cpp PRE-CREATION 
  kgimageprovider_p.h PRE-CREATION 
  kgthemeprovider.h 6ca9b63 
  kgthemeprovider.cpp e186106 

Diff: http://git.reviewboard.kde.org/r/109365/diff/


Testing
-------

I'm using KBreakout to test all of this. The relevant port can be found in "qtquick/imageprovider" branch in KBreakout's git repo.


Thanks,

Viranch Mehta

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


More information about the kde-games-devel mailing list