| Index: content/renderer/render_widget.cc
|
| diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
|
| index 95a403b8d92f4359a32ad94bf61551872dd60c1f..72d73aa1c899b4a0353697e11007e7238fd3d2c4 100644
|
| --- a/content/renderer/render_widget.cc
|
| +++ b/content/renderer/render_widget.cc
|
| @@ -370,6 +370,35 @@ bool RenderWidget::UsingSynchronousRendererCompositor() const {
|
| #endif
|
| }
|
|
|
| +void RenderWidget::ScheduleCompositeWithForcedRedraw() {
|
| + ScheduleCompositeImpl(true);
|
| +}
|
| +
|
| +void RenderWidget::ScheduleCompositeImpl(bool force_redraw) {
|
| + if (compositor_ && force_redraw) {
|
| + // Regardless of whether threaded compositing is enabled, always
|
| + // use this mechanism to force the compositor to redraw. However,
|
| + // the invalidation code path below is still needed for the
|
| + // non-threaded case.
|
| + compositor_->SetNeedsForcedRedraw();
|
| + }
|
| +
|
| + if (RenderThreadImpl::current()->compositor_message_loop_proxy().get() &&
|
| + compositor_) {
|
| + if (!force_redraw) {
|
| + compositor_->setNeedsRedraw();
|
| + }
|
| + } else {
|
| + // TODO(nduca): replace with something a little less hacky. The reason this
|
| + // hack is still used is because the Invalidate-DoDeferredUpdate loop
|
| + // contains a lot of host-renderer synchronization logic that is still
|
| + // important for the accelerated compositing case. The option of simply
|
| + // duplicating all that code is less desirable than "faking out" the
|
| + // invalidation path using a magical damage rect.
|
| + didInvalidateRect(WebRect(0, 0, 1, 1));
|
| + }
|
| +}
|
| +
|
| bool RenderWidget::OnMessageReceived(const IPC::Message& message) {
|
| bool handled = true;
|
| IPC_BEGIN_MESSAGE_MAP(RenderWidget, message)
|
| @@ -1672,18 +1701,7 @@ void RenderWidget::didCompleteSwapBuffers() {
|
| }
|
|
|
| void RenderWidget::scheduleComposite() {
|
| - if (RenderThreadImpl::current()->compositor_message_loop_proxy().get() &&
|
| - compositor_) {
|
| - compositor_->setNeedsRedraw();
|
| - } else {
|
| - // TODO(nduca): replace with something a little less hacky. The reason this
|
| - // hack is still used is because the Invalidate-DoDeferredUpdate loop
|
| - // contains a lot of host-renderer synchronization logic that is still
|
| - // important for the accelerated compositing case. The option of simply
|
| - // duplicating all that code is less desirable than "faking out" the
|
| - // invalidation path using a magical damage rect.
|
| - didInvalidateRect(WebRect(0, 0, 1, 1));
|
| - }
|
| + ScheduleCompositeImpl(false);
|
| }
|
|
|
| void RenderWidget::scheduleAnimation() {
|
|
|