| Index: chrome/browser/renderer_host/render_widget_host_view_win.h
|
| diff --git a/chrome/browser/renderer_host/render_widget_host_view_win.h b/chrome/browser/renderer_host/render_widget_host_view_win.h
|
| index d90487c500460a2dc34a0a50de3f7132f5646442..3a24cc121ba15dd8355771976d0d8106bc508c13 100644
|
| --- a/chrome/browser/renderer_host/render_widget_host_view_win.h
|
| +++ b/chrome/browser/renderer_host/render_widget_host_view_win.h
|
| @@ -75,6 +75,14 @@ class RenderWidgetHostViewWin
|
|
|
| void CreateWnd(HWND parent);
|
|
|
| + // This method schedules and waits for compositing unless it was already done
|
| + // during this windows event handling loop.
|
| + // render_widget_host_->ScheduleComposite() blocks waiting for rendering
|
| + // results. ScheduleCompositeIfNeeded can be called in response to a WM_PAINT
|
| + // message to the compositor window or an OnPaint message to the parent
|
| + // window, or both, and we only want to wait once.
|
| + void ScheduleCompositeIfNeeded();
|
| +
|
| DECLARE_WND_CLASS_EX(kRenderWidgetHostHWNDClass, CS_DBLCLKS, 0);
|
|
|
| BEGIN_MSG_MAP(RenderWidgetHostHWND)
|
| @@ -268,6 +276,9 @@ class RenderWidgetHostViewWin
|
| // Clean up the compositor window, if needed.
|
| void CleanupCompositorWindow();
|
|
|
| + // Reset was_compositing_just_scheduled_ to false.
|
| + void ResetWasCompositingJustScheduled();
|
| +
|
| // Whether the window should be activated.
|
| bool IsActivatable() const;
|
|
|
| @@ -277,6 +288,13 @@ class RenderWidgetHostViewWin
|
| // When we are doing accelerated compositing
|
| HWND compositor_host_window_;
|
|
|
| + // This bool is set to true on the first call to ScheduleComposite, and an
|
| + // async task is posted to reset it to false.
|
| + // This is to ensure that the blocking call to
|
| + // render_widget_host_->ScheduleComposite() only happens once for the same
|
| + // set of windows WM_PAINT/OnPaint events.
|
| + bool was_compositing_just_scheduled_;
|
| +
|
| // true if the compositor host window must be hidden after the
|
| // software renderered view is updated.
|
| bool hide_compositor_window_at_next_paint_;
|
| @@ -331,6 +349,9 @@ class RenderWidgetHostViewWin
|
| // Factory used to safely scope delayed calls to ShutdownHost().
|
| ScopedRunnableMethodFactory<RenderWidgetHostViewWin> shutdown_factory_;
|
|
|
| + // Factory used to safely scope calls to RenderWidgetHostViewWin methods.
|
| + ScopedRunnableMethodFactory<RenderWidgetHostViewWin> method_factory_;
|
| +
|
| // Our parent HWND. We keep a reference to it as we SetParent(NULL) when
|
| // hidden to prevent getting messages (Paint, Resize...), and we reattach
|
| // when shown again.
|
|
|