bool LayerTransactionParent::RecvChildAsyncMessages(const InfallibleTArray<AsyncChildMessageData>& aMessages) { for (AsyncChildMessageArray::index_type i = 0; i < aMessages.Length(); ++i) { const AsyncChildMessageData& message = aMessages[i]; switch (message.type()) { case AsyncChildMessageData::TOpDeliverFenceFromChild: { const OpDeliverFenceFromChild& op = message.get_OpDeliverFenceFromChild(); #if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17 FenceHandle fence = FenceHandle(op.fence()); PTextureParent* parent = op.textureParent(); TextureHostOGL* hostOGL = nullptr; RefPtr<TextureHost> texture = TextureHost::AsTextureHost(parent); if (texture) { hostOGL = texture->AsHostOGL(); } if (hostOGL) { hostOGL->SetAcquireFence(fence.mFence); } #endif // Send back a response. InfallibleTArray<AsyncParentMessageData> replies; replies.AppendElement(OpReplyDeliverFence(op.transactionId())); mozilla::unused << SendParentAsyncMessages(replies); break; } case AsyncChildMessageData::TOpReplyDeliverFence: { const OpReplyDeliverFence& op = message.get_OpReplyDeliverFence(); TransactionCompleteted(op.transactionId()); break; } default: NS_ERROR("unknown AsyncChildMessageData type"); return false; } } return true; }