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

Unified Diff: content/renderer/render_widget.cc

Issue 10227004: RenderWidget's scheduleComposite should return a bool. (true iff a prompt composite will come). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 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
« no previous file with comments | « content/renderer/render_widget.h ('k') | ui/gfx/compositor/compositor.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_widget.cc
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index ed8eb0cb5dfa3f118e642f12e997f1776fff7be9..5a165050350a07c25e0a75c59b476c9c196db901 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -825,28 +825,39 @@ void RenderWidget::DoDeferredUpdateAndSendInputAck() {
Send(pending_input_event_ack_.release());
}
-void RenderWidget::DoDeferredUpdate() {
- TRACE_EVENT0("renderer", "RenderWidget::DoDeferredUpdate");
-
- if (!webwidget_)
- return;
-
+bool RenderWidget::CanDoDeferredUpdate() const {
+ if (!webwidget_) {
+ TRACE_EVENT0("renderer", "EarlyOut_NoWebWidget");
+ return false;
+ }
if (!host_window_set_) {
TRACE_EVENT0("renderer", "EarlyOut_NoHostWindow");
- return;
+ return false;
}
if (update_reply_pending_) {
TRACE_EVENT0("renderer", "EarlyOut_UpdateReplyPending");
- return;
+ return false;
}
if (is_accelerated_compositing_active_ &&
num_swapbuffers_complete_pending_ >= kMaxSwapBuffersPending) {
TRACE_EVENT0("renderer", "EarlyOut_MaxSwapBuffersPending");
- return;
+ return false;
}
+ return true;
+}
+
+bool RenderWidget::ShouldSuppressDeferredUpdates() const {
+ return is_hidden_ || size_.IsEmpty();
+}
+
+void RenderWidget::DoDeferredUpdate() {
+ TRACE_EVENT0("renderer", "RenderWidget::DoDeferredUpdate");
+
+ if (!CanDoDeferredUpdate())
+ return;
// Suppress updating when we are hidden.
- if (is_hidden_ || size_.IsEmpty()) {
+ if (ShouldSuppressDeferredUpdates()) {
paint_aggregator_.ClearPendingUpdate();
needs_repainting_on_restore_ = true;
TRACE_EVENT0("renderer", "EarlyOut_NotVisible");
@@ -1184,9 +1195,18 @@ void RenderWidget::didCompleteSwapBuffers() {
next_paint_flags_ = 0;
}
-void RenderWidget::scheduleComposite() {
+#if defined(WEBWIDGETCLIENT_SCHEDULECOMPOSITE_RETURNS_BOOL)
+#define SC_RETURN_TYPE bool
+#else
+#define SC_RETURN_TYPE void
+#endif
+
+SC_RETURN_TYPE RenderWidget::scheduleComposite() {
if (WebWidgetHandlesCompositorScheduling()) {
webwidget_->composite(false);
+#if defined(WEBWIDGETCLIENT_SCHEDULECOMPOSITE_RETURNS_BOOL)
+ return true;
+#endif
} else {
// TODO(nduca): replace with something a little less hacky. The reason this
// hack is still used is because the Invalidate-DoDeferredUpdate loop
@@ -1195,6 +1215,9 @@ void RenderWidget::scheduleComposite() {
// duplicating all that code is less desirable than "faking out" the
// invalidation path using a magical damage rect.
didInvalidateRect(WebRect(0, 0, 1, 1));
+#if defined(WEBWIDGETCLIENT_SCHEDULECOMPOSITE_RETURNS_BOOL)
+ return CanDoDeferredUpdate() && !ShouldSuppressDeferredUpdates();
jamesr 2012/05/08 23:42:40 what happens if ShouldSuppress...() is false, but
+#endif
}
}
« no previous file with comments | « content/renderer/render_widget.h ('k') | ui/gfx/compositor/compositor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698