Bug 1316632 - Ensure an ordering between cross-process compositor association and PLayerTransaction construction. (bug 1316632, r=mattwoodrow) a=gchang
authorDavid Anderson <danderson@mozilla.com>
Mon, 28 Nov 2016 14:32:20 -0800
changeset 352762 11ba6a74739c43423305379870e3459b93db8de2
parent 352761 6d11354d458081ba3c0519b3afb7b2de0f133c9e
child 352763 ca2fbaea9d97f8a5c6f2eab8e12b5038ce1122fc
push id6795
push userjlund@mozilla.com
push dateMon, 23 Jan 2017 14:19:46 +0000
treeherdermozilla-esr52@76101b503191 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmattwoodrow, gchang
bugs1316632
milestone52.0a2
Bug 1316632 - Ensure an ordering between cross-process compositor association and PLayerTransaction construction. (bug 1316632, r=mattwoodrow) a=gchang
gfx/layers/ipc/PCompositorBridge.ipdl
--- a/gfx/layers/ipc/PCompositorBridge.ipdl
+++ b/gfx/layers/ipc/PCompositorBridge.ipdl
@@ -150,17 +150,20 @@ parent:
   // The child is about to be destroyed, so perform any necessary cleanup.
   sync WillClose();
 
   // Pause/resume the compositor. These are intended to be used on mobile, when
   // the compositor needs to pause/resume in lockstep with the application.
   sync Pause();
   sync Resume();
 
-  async NotifyChildCreated(uint64_t id);
+  // See bug 1316632 comment #33 for why this has to be sync. Otherwise,
+  // there are ordering issues with SendPLayerTransactionConstructor.
+  sync NotifyChildCreated(uint64_t id);
+
   async AdoptChild(uint64_t id);
 
   // Same as NotifyChildCreated, but used when child processes need to
   // reassociate layers. This must be synchronous to ensure that the
   // association happens before PLayerTransactions are sent over the
   // cross-process bridge.
   sync NotifyChildRecreated(uint64_t id);