I am actually in Porto (Portugal) for the Tokamak version 2.0. Tokamak is a developer meeting for the Plasma KDE project. I arrived Friday and the first day was talks, people explaining on what they are working on for KDE 4.3. There will have some awesome features that make Plasma the best desktop ever. From my side i gave a talk about Qt Kinetic to introduce them the project. The first feedback i had was that this project is warmly welcome, and miss to plasma developers (and i guess to others). I introduced the Qt State machine framework, the Qt Animation API and talked about improvements in QGraphicsView. I had nice feedback from people and they were pretty happy about the API. I wrote all their remarks on a paper to work on them with other trolls. I have already implemented some of them inside my local copy of Qt Kinetic :D. The team is now waiting a Qt Solution in order to “kineticize” Plasma.
I have cooked a small demo showing Plasma running Qt Kinetic :
You can see an animation on the opacity during switching pictures and an another to display one day meta data behind the picture.
Here is the code for the opacity animation :
QPropertyAnimation *opacityAnimation = new QPropertyAnimation(this,"opacity");
opacityAnimation->setEndValue(0.);
opacityAnimation->setDuration(1000);
opacityAnimation->start();
By the way Qt 4.5 RC is now in qt-copy and KDE trunk use it. After talking with all people here the switch is apparently nice. I have asked to all people to give a mark from 1 to 10 (ten is best) based to their user/developer experience. The average is 8 which is nice. According to Aaron Seigo the switch in Plasma was “pretty smooth” and Leo Franchi from Amarok said “it seems faster with raster graphic system”. Marco Martin added “QGraphicsLayouts start to work”. There are still some small problems with SVGs rendering in Plasma but i will sit down with Marco to fix them. It is encouraging for the final release and we will have now KDE folks reporting bugs they still have with 4.5 to make this release the best as we can.
8 Responses to “Qt Kinetic hits Plasma”
I was surprised to see this. I’ve been trying to compile Kinetic on mingw32 for some time. I never seem to be able to compile it. I do git pulls all the time. What should I be pulling to test this?
Recently, I’ve been able to get farther along, but it still fails to compile.
I checked out via git last night, still no compile!
I am happy to see animation coming to KDE and Qt, but is “pretty smooth” for any desktop animation good enough? As Qt Kinetic and its integration into plasma is new, do you think we can see “really smooth” on average hardware.
Thanks for the demo, it looks very promising.
David, pretty smooth and really smooth refer to updates. Unfortunately, Qt has a default animation speed of 40ms (25 fps). For ultra-smooth you need decent CPU scheduling and a interval-independent timing loop. The good news is Qt supports that as well. You need to draw on timer with a zero delay, but only if something has changed. You also want to enforce a frame-rate cap. 30, 60, or if the new HDTVs are to believed 120FPS. This will prevent excessive redrawing. You also need to combine that with an anti-aliased painter.
All of which Qt supports.
(Except for the CPU scheduling, that’s up to your kernel - also be awayre dual-coredness will help as well, hyperthreading at a minimum ) You should get very decent results. If you have a decent 3d hardware you can use a GL back-end which seems to be faster (but I fin quality varies between implementations - ATI vs NVIDIA, vs intel)
Why not try it yourself. The biggest thing is upping the framerate. Also 4.5 has several drawing tweaks, and 4.6 will have even more.
@Scorp1us: To be more concrete: Qt handles the timers in three different ways, on Windows:
1) A normal timer (meaning when the user starts a time > 10ms) has ~16ms resolution, as we use SetTimer()
2) When a user sets a timeout less <= 10ms, we use multimedia timers, with uResolution=1ms.
3) A zero-timer simply posts a new timeout in the queue when it’s done, so “resolution” depends on your own code really.
@Scorp1us : MinGw32 is not yet tested as a platform especially because it is an old gcc. When the release will come be sure that it will be tested too.
The design of Kinetic should be ready to support vertical blanking synced animations instead of using timers, in the light that a future Gallium based X11 supports them.
Are you going to relicense QT Kinetic under LGPL when QT4.5 comes out?