Created attachment 74211 [details]
Qt targets using OpenVG or other lazy graphics backend don't receive updates on canvas thus no animation based on setInterval or setTimeout works.
Simple testcase demonstrates this issue with drawing 2 lines. Second line drawn after 2 seconds never appears on N8 unless backingstore is destroyed (screensaver,app swap).
This is regression introduced by http://trac.webkit.org/changeset/63606
I set severity to critical as all released Symbian^3 devices use OpenVG.
Created attachment 74213 [details]
patch for QtWebkit2.1 branch
Adding my fix suggestion to QtWebkit2.1 branch. Trunk will need a the patch to be modified and I'm hoping that someone would come up with better solution.
Whole issue is that VGImage of canvas in Graphics memory won't get updated when pixmap is drawn to. Issue comes from QPainter context that we use here doesn't get end() and state is not flushed. VGImage to be created a flag recreate needs to be set. Simplest way (and cheapest) is to call paintEngine() i.e. what the patch does.
Originating bug is QT-4002.
Andreas, what do you think ?
(In reply to comment #3)
> Andreas, what do you think ?
I'm fine with putting this hack on the 2.1 branch. The OpenVG paint engine should ultimately be fixed in Qt though.
The initial patch/hack was pushed to QtWebKit-2.1: http://gitorious.org/webkit/qtwebkit/commit/fcda7935a66d4fec886503fa666cb37379247cb5
Ademar, bug is in open state, even though fix cherry picked to Qtwebkit 2.1, can you resolve the issue?
(In reply to comment #6)
> Ademar, bug is in open state, even though fix cherry picked to Qtwebkit 2.1, can you resolve the issue?
Yes. It was agreed that a hack/workaround would be pushed to 2.1, but the real fix on trunk is pending, see comment #4 and comment #5.
It should be blocking bug 32653 (patches pending trunk inclusion) though, fixed.
Created attachment 88838 [details]
Proposal for trunk, use ImageBuffer's drawsUsingCopy() mechanism for OpenVG-backed pixmaps.
Comment on attachment 88838 [details]
Ugly, but no choice :)
Sorry for the delay, but we have a fix for this in Qt's OpenVG graphics system now using something similar to the OpenGL fix Andreas made:
Submitted to Qt 4.7.4. It will forcefully upload the canvas to a VGImage as long as there is still a painter open on it.
Closing as this is fixed in Qt 4.7.4 per Jason's comment.