Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(156)

Unified Diff: content/renderer/render_widget.cc

Issue 240163005: Deliver IPC messages together with SwapCompositorFrame (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: use IPC? Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
« content/renderer/gpu/render_widget_compositor.cc ('K') | « content/renderer/render_widget.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698