From bbe2a2f2d3b5260544a488234c1866e12453d7c2 Mon Sep 17 00:00:00 2001 From: Marshall Greenblatt Date: Thu, 15 Dec 2011 16:06:02 +0000 Subject: [PATCH] Improve CPU usage by ignoring ScheduleAnimation() and ScheduleComposite() calls when not using accelerated compositing (issue #456). git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@420 5089003a-bbd8-11dd-ad1f-f1f9622dbc98 --- libcef/webwidget_host.cc | 3 +++ libcef/webwidget_host_gtk.cc | 3 +++ libcef/webwidget_host_mac.mm | 3 +++ libcef/webwidget_host_win.cc | 3 ++- 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/libcef/webwidget_host.cc b/libcef/webwidget_host.cc index 490c4b3c2..34628d390 100644 --- a/libcef/webwidget_host.cc +++ b/libcef/webwidget_host.cc @@ -15,6 +15,9 @@ using WebKit::WebSize; void WebWidgetHost::ScheduleAnimation() { + if (!webwidget_ || !webwidget_->isAcceleratedCompositingActive()) + return; + MessageLoop::current()->PostDelayedTask(FROM_HERE, base::Bind(&WebWidgetHost::ScheduleComposite, weak_factory_.GetWeakPtr()), 10); diff --git a/libcef/webwidget_host_gtk.cc b/libcef/webwidget_host_gtk.cc index 97a2d845f..b6bde4bc9 100644 --- a/libcef/webwidget_host_gtk.cc +++ b/libcef/webwidget_host_gtk.cc @@ -303,6 +303,9 @@ void WebWidgetHost::DidScrollRect(int dx, int dy, const gfx::Rect& clip_rect) { } void WebWidgetHost::ScheduleComposite() { + if (!webwidget_ || !webwidget_->isAcceleratedCompositingActive()) + return; + int width = logical_size_.width(); int height = logical_size_.height(); GdkRectangle grect = { diff --git a/libcef/webwidget_host_mac.mm b/libcef/webwidget_host_mac.mm index 64133d93f..3b51ad9e5 100644 --- a/libcef/webwidget_host_mac.mm +++ b/libcef/webwidget_host_mac.mm @@ -228,6 +228,9 @@ void WebWidgetHost::Paint(SkRegion& update_rgn) { } void WebWidgetHost::ScheduleComposite() { + if (!webwidget_ || !webwidget_->isAcceleratedCompositingActive()) + return; + [view_ setNeedsDisplay:YES]; } diff --git a/libcef/webwidget_host_win.cc b/libcef/webwidget_host_win.cc index 6a841e3aa..2e764ee13 100644 --- a/libcef/webwidget_host_win.cc +++ b/libcef/webwidget_host_win.cc @@ -309,8 +309,9 @@ void WebWidgetHost::DidScrollRect(int dx, int dy, const gfx::Rect& clip_rect) { } void WebWidgetHost::ScheduleComposite() { - if (!webwidget_) + if (!webwidget_ || !webwidget_->isAcceleratedCompositingActive()) return; + WebSize size = webwidget_->size(); InvalidateRect(gfx::Rect(0, 0, size.width, size.height)); }