RESOLVED FIXED 49718
[Qt] Canvas doesn't animate on OpenVG backend
https://bugs.webkit.org/show_bug.cgi?id=49718
Summary [Qt] Canvas doesn't animate on OpenVG backend
Janne Koskinen
Reported 2010-11-18 00:42:32 PST
Created attachment 74211 [details] simple testcase 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.
Attachments
simple testcase (1.73 KB, text/html)
2010-11-18 00:42 PST, Janne Koskinen
no flags
patch for QtWebkit2.1 branch (1.80 KB, patch)
2010-11-18 00:49 PST, Janne Koskinen
no flags
Proposed patch (2.63 KB, patch)
2011-04-08 10:33 PDT, Andreas Kling
hausmann: review+
Janne Koskinen
Comment 1 2010-11-18 00:49:12 PST
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.
Janne Koskinen
Comment 2 2010-11-18 01:00:45 PST
Originating bug is QT-4002.
Laszlo Gombos
Comment 3 2010-11-18 05:13:18 PST
Andreas, what do you think ?
Andreas Kling
Comment 4 2010-11-18 05:24:53 PST
(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.
Ademar Reis
Comment 5 2010-11-18 11:07:13 PST
Suresh Voruganti
Comment 6 2011-01-06 10:56:11 PST
Ademar, bug is in open state, even though fix cherry picked to Qtwebkit 2.1, can you resolve the issue?
Ademar Reis
Comment 7 2011-01-06 11:12:03 PST
(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.
Andreas Kling
Comment 8 2011-04-08 10:33:14 PDT
Created attachment 88838 [details] Proposed patch Proposal for trunk, use ImageBuffer's drawsUsingCopy() mechanism for OpenVG-backed pixmaps.
Simon Hausmann
Comment 9 2011-04-26 16:11:32 PDT
Comment on attachment 88838 [details] Proposed patch Ugly, but no choice :)
Jason Barron
Comment 10 2011-04-27 07:09:43 PDT
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: http://pastebin.com/Lb6T14Sz 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.
Andreas Kling
Comment 11 2011-04-29 15:57:11 PDT
Closing as this is fixed in Qt 4.7.4 per Jason's comment.
Note You need to log in before you can comment on or make changes to this bug.