Chromium Code Reviews| Index: content/renderer/render_widget.cc |
| diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc |
| index 5b4a19dd07b6edded6032d615ca38bdcd42fd2ab..c2998ae3c5d3c981933cbbe9ea2ce9810b8c89f5 100644 |
| --- a/content/renderer/render_widget.cc |
| +++ b/content/renderer/render_widget.cc |
| @@ -1343,6 +1343,38 @@ void RenderWidget::DidCommitCompositorFrame() { |
| DidCommitCompositorFrame()); |
| } |
| +namespace { |
| + |
| +class RWSwapPromise: public cc::SwapPromise { |
| + public: |
| + RWSwapPromise(IPC::Sender* sender, int routing_id, IPC::Message msg): |
| + fallback_sender_(sender), |
| + fallback_routing_id_(routing_id), |
| + msg_(msg) {} |
| + virtual void DidSwap(cc::CompositorFrameMetadata* metadata) OVERRIDE { |
| + metadata->payload.push_back(msg); |
| + } |
| + virtual void DidNotSwap(DidNotSwapReason reason) OVERRIDE { |
| + fallback_sender_->Send( |
| + new ViewHostMsg_DeliverPayload(fallback_routing_id_, msg)); |
|
piman
2014/05/07 01:21:46
How about fallback_sender_->Send(msg)? Is there a
piman
2014/05/07 01:21:46
Also, beware, DidNotSwap can be called on either t
mkosiba (inactive)
2014/05/07 18:27:20
thanks for pointing that out!
|
| + } |
| + private: |
| + IPC::Sender* fallback_sender_; |
| + int fallback_routing_id_; |
| + IPC::Message msg_; |
| +}; |
| + |
| +} // namespace |
| + |
| +void RenderWidget::QueueMessage(const IPC::Message& msg) { |
|
mkosiba (inactive)
2014/05/06 22:30:33
so this would be the entry point
|
| + if (!compositor_->commitRequested()) { |
|
piman
2014/05/07 01:21:46
I'm not sure if that isn't racy.
I think the cont
mkosiba (inactive)
2014/05/07 18:27:20
oh.. I assumed that this tracks whether the Blink
|
| + Send(ViewHostMsg_DeliverPayload(routing_id_, msg); |
| + } else { |
| + scoped_ptr<cc::SwapPromise> promise(new RWSwapPromise()); |
| + compositor_->QueueSwapPromise(promise.Pass()); |
| + } |
| +} |
| + |
| void RenderWidget::didCommitAndDrawCompositorFrame() { |
| TRACE_EVENT0("gpu", "RenderWidget::didCommitAndDrawCompositorFrame"); |
| // Accelerated FPS tick for performance tests. See |