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

Unified Diff: content/renderer/render_widget.cc

Issue 9225050: Defer render_widget draw until host window is available (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: aura sets host_window_ to NULL, so check for set-ness instead of null-ness Created 8 years, 10 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') | no next file » | 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 3cb0fa5b61c5ff17508f50275e43abe3aa958727..fc58534fff9bf1edd296adfeabd408643e1982b0 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -74,6 +74,7 @@ RenderWidget::RenderWidget(WebKit::WebPopupType popup_type)
webwidget_(NULL),
opener_id_(MSG_ROUTING_NONE),
host_window_(0),
+ host_window_set_(false),
current_paint_buf_(NULL),
next_paint_flags_(0),
filtered_time_per_frame_(0.0f),
@@ -174,6 +175,9 @@ void RenderWidget::CompleteInit(gfx::NativeViewId parent_hwnd) {
DCHECK(routing_id_ != MSG_ROUTING_NONE);
host_window_ = parent_hwnd;
+ host_window_set_ = true;
+
+ DoDeferredUpdate();
Send(new ViewHostMsg_RenderViewReady(routing_id_));
}
@@ -740,6 +744,11 @@ void RenderWidget::DoDeferredUpdate() {
if (!webwidget_)
return;
+
+ if (!host_window_set_) {
+ TRACE_EVENT0("renderer", "EarlyOut_NoHostWindow");
+ return;
+ }
if (update_reply_pending_) {
TRACE_EVENT0("renderer", "EarlyOut_UpdateReplyPending");
return;
@@ -758,6 +767,9 @@ void RenderWidget::DoDeferredUpdate() {
return;
}
+ if (is_accelerated_compositing_active_)
+ using_asynchronous_swapbuffers_ = SupportsAsynchronousSwapBuffers();
+
// Tracking of frame rate jitter
base::TimeTicks frame_begin_ticks = base::TimeTicks::Now();
AnimateIfNeeded();
@@ -1017,10 +1029,6 @@ void RenderWidget::didActivateCompositor(int compositor_identifier) {
is_accelerated_compositing_active_ = true;
Send(new ViewHostMsg_DidActivateAcceleratedCompositing(
routing_id_, is_accelerated_compositing_active_));
-
- // Note: asynchronous swapbuffer support currently only matters if
- // compositing scheduling happens on the RenderWidget.
- using_asynchronous_swapbuffers_ = SupportsAsynchronousSwapBuffers();
}
void RenderWidget::didDeactivateCompositor() {
@@ -1511,7 +1519,7 @@ bool RenderWidget::CanComposeInline() {
WebScreenInfo RenderWidget::screenInfo() {
WebScreenInfo results;
- if (host_window_)
+ if (host_window_set_)
Send(new ViewHostMsg_GetScreenInfo(routing_id_, host_window_, &results));
else {
DLOG(WARNING) << "Unable to retrieve screen information, no host window";
« no previous file with comments | « content/renderer/render_widget.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698