Closed Bug 1375349 Opened 7 years ago Closed 7 years ago

Add calling ScheduleComposition() in CompositorBridgeParent::RecvAdoptChild()

Categories

(Core :: Graphics: Layers, enhancement)

enhancement
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla56
Tracking Status
firefox56 --- fixed

People

(Reporter: sotaro, Assigned: sotaro)

Details

Attachments

(1 file, 3 obsolete files)

RecvAdoptChild() makes a move of LayerTransactionParent from one CompositorBridgeParent to another CompositorBridgeParent. Bug 1335335 is for adding support of WebRenderBridgeParent to RecvAdoptChild(). During working it, there was a case that client side did not repaint because that client did not receive DidComposite. Same problem could happen also for LayerTransactionParent.
Assignee: nobody → sotaro.ikeda.g
Attachment #8880227 - Attachment is obsolete: true
Attachment #8880228 - Attachment description: patch Add calling DidComposite() in CompositorBridgeParent::RecvAdoptChild() → patch - Add calling DidComposite() in CompositorBridgeParent::RecvAdoptChild()
Attachment #8880228 - Attachment is obsolete: true
Attachment #8880239 - Flags: review?(nical.bugzilla)
Attachment #8880239 - Flags: review?(matt.woodrow)
Attachment #8880239 - Flags: review?(nical.bugzilla)
Attachment #8880239 - Flags: review?(matt.woodrow)
Attachment #8880239 - Flags: review?(matt.woodrow)
Comment on attachment 8880239 [details] [diff] [review] patch - Add calling DidComposite() in CompositorBridgeParent::RecvAdoptChild() Review of attachment 8880239 [details] [diff] [review]: ----------------------------------------------------------------- I'm a bit confused about this. DidComposite is supposed to notify the client side that we actually composited. If the client side is blocking and waiting for a DidComposite message, where did the real one go? Is there a race condition where we're sending the DidComposite back to the wrong ClientLayerManager?
Attachment #8880239 - Flags: review?(matt.woodrow)
Sorry, I confused with webrender case. In the case, it could not be composited with new webrender, since webrender keys are not valid in a new webrender instance. In normal composition case, the composition could happen with a new compositor. Then a composition should be scheduled with a new compositor.
(In reply to Matt Woodrow (:mattwoodrow) from comment #5) > Review of attachment 8880239 [details] [diff] [review]: > ----------------------------------------------------------------- > > I'm a bit confused about this. > > DidComposite is supposed to notify the client side that we actually > composited. > > If the client side is blocking and waiting for a DidComposite message, where > did the real one go? The real composition should happen with a new compositor. attachment 8880239 [details] [diff] [review] is not correct fix. > Is there a race condition where we're sending the DidComposite back to the > wrong ClientLayerManager? There could be a race condition. Same ClientLayerManager is used to receive composition. But there is a possibility that parent side do not send DidComposite. LayerTransactionParent could be moved to a new composition before the transaction is composited on an old compositor.
Attachment #8881342 - Flags: review?(matt.woodrow)
Attachment #8881342 - Flags: review?(matt.woodrow) → review+
Summary: Call DidComposite() in CompositorBridgeParent::RecvAdoptChild() → Add calling ScheduleComposition() in CompositorBridgeParent::RecvAdoptChild()
Pushed by sikeda@mozilla.com: https://hg.mozilla.org/integration/mozilla-inbound/rev/5e83b520f1a0 Add calling ScheduleComposition() in CompositorBridgeParent::RecvAdoptChild() r=mattwoodrow
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla56
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: