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 #8880228 - Attachment description: patch Add calling DidComposite() in CompositorBridgeParent::RecvAdoptChild() → patch - Add calling DidComposite() in CompositorBridgeParent::RecvAdoptChild()
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
https://hg.mozilla.org/mozilla-central/rev/5e83b520f1a0
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: