PDA

View Full Version : BUG in QTWebkit 4.8 > Flash



janton
31st July 2012, 09:54
Hallo All,

I'm not sure were to report this issue, so i try to report it here first.

It seems there is a terrible bug in the last QT with Webkit.

When i scroll down a page that contains flash content, the flash moves down also..
Well it's difficult to explain so i created some screenshots.

I tried this on two different windows machines and both same result.
The issue is when you scroll down and up..! In this example i used:
www.youtube.com (youtube only has problems with a banner.. if there is banner ofcourse!)
http://www.wechoosethemoon.org/ (the starting loader and well.. then the whole site)

80708071

janton
1st August 2012, 21:44
Am I the only one that has this issue???:confused:

jrtheinert
2nd August 2012, 21:09
No, you are not alone. I am also having rendering issues when Flash objects need to be scrolled. Either the object is not visible, or it is scrunched. If I resize the container widget, the flash object moves slowly down the screen and is almost always 'out of place' from where is should be. If container widget is sized large enough that no scrolling is needed, then the flash object(s) display correctly.

jrtheinert
3rd August 2012, 00:02
FWIW, it appears to me that QtWebkit has an issue rendering Flash objects where wmode=transparent or wmode=opaque. Using this HTML renders just fine in Safari (which uses Webkit) and IE9, but does not render properly in QT browser window that requires scrolling. Removing the wmode parameter defaults to 'window'. It renders properly, but now I have a layering issue and a non-transparent background.

<object type="application/x-shockwave-flash" data="http://smileys.smileycentral.com/cat/F/1/431.swf"
width="66" height="66" id="FlashSmiley11">
<param name="movie" value="http://smileys.smileycentral.com/cat/F/1/431.swf">
<param name="play" value="true">
<param name="loop" value="false">
<param name="quality" value="high">
<param name="wmode" value="transparent">
<param name="allowScriptAccess" value="always">
<param name="menu" value="true">
</object>

FWIW, I removed all the params except wmode. It still had the problem with wmode=transparent.

janton
5th August 2012, 14:39
Ok yes great we know the bug in more details,, but where and how to report this.. or is the QT team already aware of this?

Added after 15 minutes:

Ok i posted the issue here:
https://bugs.webkit.org/show_bug.cgi?id=92905

First i wanted to report it here: https://bugreports.qt-project.org
But this was not OK.. "For bugs and small development tasks please use the upstream bugtracker at http://bugs.webkit.org/ "

But i don't know if this is a webkit issue or QT, because as mentioned above other programs use webkit and don't have this problem...

dczechowicz
8th August 2012, 21:34
I also have this bug qt 4.8.2 unfortunettly on 4.7.4 all works fine, what is going on? ,use win 7 and win xp

dczechowicz
8th September 2012, 20:29
Someone , found a solution for this?

janton
13th September 2012, 11:26
it seems somebody found a solution: https://bugs.webkit.org/show_bug.cgi?id=92905



Index: win/PluginViewWin.cpp
================================================== =================
--- Source/WebCore/plugins/win/PluginViewWin.cpp (revision 63895)
+++ Source/WebCore/plugins/win/PluginViewWin.cpp (working copy)
@@ -618,7 +618,8 @@

ASSERT(parent()->isFrameView());
IntRect rectInWindow = static_cast<FrameView*>(parent())->contentsToWindow(
frameRect());
- LocalWindowsContext windowsContext(context, rectInWindow, m_isTransparent);

+ HDC hdc = context->getWindowsContext(rectInWindow, m_isTransparent);
+

// On Safari/Windows without transparency layers the GraphicsContext return
s the HDC
// of the window and the plugin expects that the passed in DC has window co
ordinates.
@@ -627,14 +628,15 @@
#if !PLATFORM(QT) && !OS(WINCE)
if (!context->inTransparencyLayer()) {
XFORM transform;
- GetWorldTransform(windowsContext.hdc(), &transform);
+ GetWorldTransform(hdc, &transform);
transform.eDx = 0;
transform.eDy = 0;
- SetWorldTransform(windowsContext.hdc(), &transform);
+ SetWorldTransform(hdc, &transform);
}
#endif

- paintIntoTransformedContext(windowsContext.hdc());
+ paintIntoTransformedContext(hdc);
+ context->releaseWindowsContext(hdc, frameRect(), m_isTransparent);
}