Closed Bug 1276020 Opened 9 years ago Closed 9 years ago

[e10s] Flash content does not appear

Categories

(Core Graveyard :: Plug-ins, defect)

49 Branch
x86_64
Windows 7
defect
Not set
normal

Tracking

(e10s-, firefox50 fixed)

RESOLVED FIXED
mozilla50
Tracking Status
e10s - ---
firefox50 --- fixed

People

(Reporter: over68, Assigned: sotaro)

References

Details

(Keywords: regression, Whiteboard: STR in comment 0)

Attachments

(1 file, 2 obsolete files)

Steps to reproduce: Open this flash in the same tab or by copy and past the link into the address bar https://dl.dropboxusercontent.com/u/95157096/85f61cf7/3hl97q6u59.swf. I am using the latest Flash Player beta 22.0.0.168. Actual results: It displays a blank page instead of Flash content. See https://dl.dropboxusercontent.com/u/95157096/85f61cf7/uxqgr9mb9e.mp4
Flags: needinfo?(dvander)
Blocks: 1217665
attachment 8757248 [details] [diff] [review] addressed the problem for me.
To reproduce the problem, I used latest "Flash Player beta 22.0.0.168" as in Bug 1275680 Comment 8.
(In reply to Sotaro Ikeda [:sotaro] from comment #4) > To reproduce the problem, I used latest "Flash Player beta 22.0.0.168" as in > Bug 1275680 Comment 8. And also direct plugin drawing needs to be enabled.
Attachment #8757248 - Flags: review?(dvander)
See Also: → 1275680
Comment on attachment 8757248 [details] [diff] [review] patch - InvalidateRect in PluginInstanceParent::SetCurrentImage() Review of attachment 8757248 [details] [diff] [review]: ----------------------------------------------------------------- Sotaro, could you explain why this change works? This was designed to not need to invalidate anything in layout: SetCurrentImage bumps the frame ID which should tell the compositor it needs to composite the layer again, and SetCurrentImages should perform an async transaction.
Flags: needinfo?(dvander) → needinfo?(sotaro.ikeda.g)
When ImageContainer is in ImageContainer::ASYNCHRONOUS, ImageClientSingle is created on ImageBridge. ImageHost is also created on ImageBridge. At this point, ImageHost is not connected to ImageLayerComposite. Even when ImageHost receives an image to render, ScheduleComposition() is not called in ReceiveCompositableUpdate() https://dxr.mozilla.org/mozilla-central/source/gfx/layers/ipc/CompositableTransactionParent.cpp#196 To connect ImageHost to ImageLayerComposite, ImageClientBridge::UpdateImage() needs to be called. ImageClientBridge is on CompositorBridge. To call the UpdateImage(), LayerTransaction needs to be triggered. To trigger the layer transaction, the patch called Invalidate. https://github.com/sotaroikeda/firefox-diagrams/blob/master/gfx/gfx_ImageBridge_FirefoxOS_2_1.pdf
Flags: needinfo?(sotaro.ikeda.g)
This patch also worked.
Comment on attachment 8758090 [details] [diff] [review] patch - Call invalidate to trigger ImageClientBridge::UpdateImage() :dvander, which patch is better? Or should be address the problem another way?
Attachment #8758090 - Flags: review?(dvander)
(In reply to Sotaro Ikeda [:sotaro] from comment #9) > Comment on attachment 8758090 [details] [diff] [review] > patch - Call invalidate to trigger ImageClientBridge::UpdateImage() It might be fragile in a case that layer is recreated compared to attachment 8757248 [details] [diff] [review].
(In reply to Sotaro Ikeda [:sotaro] from comment #10) > (In reply to Sotaro Ikeda [:sotaro] from comment #9) > > Comment on attachment 8758090 [details] [diff] [review] > > patch - Call invalidate to trigger ImageClientBridge::UpdateImage() > > It might be fragile in a case that layer is recreated compared to attachment > 8757248 [details] [diff] [review]. How does video handle this scenario? Does it delete the ImageContainer? (I'm fine with taking the first patch if we think the new approach is fragile, but I want to understand what's happening first)
Flags: needinfo?(sotaro.ikeda.g)
During video rendering there is a case that ImageLayer does not exist. VideoFrameContainer::InvalidateWithFlags() handles it. frame->InvalidateFrame() or frame->InvalidateLayer() is called for each video rendering. From it, I just thought the first patch is safer. https://dxr.mozilla.org/mozilla-central/source/dom/media/VideoFrameContainer.cpp#169
Flags: needinfo?(sotaro.ikeda.g)
(In reply to Sotaro Ikeda [:sotaro] from comment #12) > During video rendering there is a case that ImageLayer does not exist. > VideoFrameContainer::InvalidateWithFlags() handles it. > frame->InvalidateFrame() or frame->InvalidateLayer() is called for each > video rendering. From it, I just thought the first patch is safer. > > https://dxr.mozilla.org/mozilla-central/source/dom/media/VideoFrameContainer. > cpp#169 Okay, thanks for the explanation. The first patch seems reasonable then.
Attachment #8757248 - Flags: review?(dvander) → review+
Assignee: nobody → sotaro.ikeda.g
Attachment #8758090 - Attachment is obsolete: true
Attachment #8758090 - Flags: review?(dvander)
Fixed warining.
Attachment #8757248 - Attachment is obsolete: true
Attachment #8759526 - Flags: review+
Pushed by sikeda@mozilla.com: https://hg.mozilla.org/integration/mozilla-inbound/rev/189923b75373 InvalidateRect in PluginInstanceParent::SetCurrentImage() r=dvander
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla50
Blocks: 1275680
See Also: 1275680
Whiteboard: STR in comment 0
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: