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

Unified Diff: content/renderer/render_widget.cc

Issue 11264058: Disable force compositing mode when disabling compositing, re-enter in DoDeferredUpdate (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix threaded mode Created 8 years, 2 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') | webkit/glue/webpreferences.cc » ('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 9c3872e6d138a3b56029870ce0644613ff0ff532..4b981342d8fca2b54d9473f41b137c0a8c8912e2 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -16,6 +16,7 @@
#include "build/build_config.h"
#include "content/common/swapped_out_messages.h"
#include "content/common/view_messages.h"
+#include "content/public/common/compositor_util.h"
#include "content/public/common/content_switches.h"
#include "content/renderer/render_process.h"
#include "content/renderer/render_thread_impl.h"
@@ -206,10 +207,11 @@ void RenderWidget::CompleteInit(gfx::NativeViewId parent_hwnd) {
host_window_ = parent_hwnd;
host_window_set_ = true;
-#if WEBWIDGET_HAS_SETCOMPOSITORSURFACEREADY
- if (webwidget_)
- webwidget_->setCompositorSurfaceReady();
-#endif
+ if (webwidget_) {
+ webwidget_->setCompositorSurfaceReady();
+ if (IsThreadedCompositingEnabled())
+ webwidget_->enterForceCompositingMode(true);
+ }
DoDeferredUpdate();
Send(new ViewHostMsg_RenderViewReady(routing_id_));
@@ -466,6 +468,10 @@ bool RenderWidget::SupportsAsynchronousSwapBuffers() {
return false;
}
+bool RenderWidget::ForceCompositingModeEnabled() {
+ return false;
+}
+
void RenderWidget::OnSwapBuffersAborted() {
TRACE_EVENT0("renderer", "RenderWidget::OnSwapBuffersAborted");
while (!updates_pending_swap_.empty()) {
@@ -903,6 +909,12 @@ void RenderWidget::DoDeferredUpdate() {
return;
}
+ if (!is_accelerated_compositing_active_ &&
+ !IsThreadedCompositingEnabled() &&
+ ForceCompositingModeEnabled()) {
+ webwidget_->enterForceCompositingMode(true);
+ }
+
if (!last_do_deferred_update_time_.is_null()) {
base::TimeDelta delay = frame_begin_ticks - last_do_deferred_update_time_;
if (is_accelerated_compositing_active_) {
@@ -1062,6 +1074,8 @@ void RenderWidget::DoDeferredUpdate() {
// WebWidgetClient
void RenderWidget::didInvalidateRect(const WebRect& rect) {
+ TRACE_EVENT2("renderer", "RenderWidget::didInvalidateRect",
+ "width", rect.width, "height", rect.height);
// The invalidated rect might be outside the bounds of the view.
gfx::Rect view_rect(size_);
gfx::Rect damaged_rect = view_rect;
@@ -1177,6 +1191,13 @@ void RenderWidget::didDeactivateCompositor() {
if (using_asynchronous_swapbuffers_)
using_asynchronous_swapbuffers_ = false;
+
+ // In single-threaded mode, we exit force compositing mode and re-enter in
+ // DoDeferredUpdate() if appropriate. In threaded compositing mode,
+ // DoDeferredUpdate() is bypassed and WebKit is responsible for exiting and
+ // entering force compositing mode at the appropriate times.
+ if (!IsThreadedCompositingEnabled())
+ webwidget_->enterForceCompositingMode(false);
}
void RenderWidget::willBeginCompositorFrame() {
@@ -1237,6 +1258,7 @@ void RenderWidget::didCompleteSwapBuffers() {
}
void RenderWidget::scheduleComposite() {
+ TRACE_EVENT0("gpu", "RenderWidget::scheduleComposite");
if (WebWidgetHandlesCompositorScheduling()) {
webwidget_->composite(false);
} else {
« no previous file with comments | « content/renderer/render_widget.h ('k') | webkit/glue/webpreferences.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698