From 77c327ddb532777dde7e3a6f5dc078d4a76dcfab Mon Sep 17 00:00:00 2001 From: "amanda@chromium.org" Date: Fri, 21 Aug 2009 14:37:57 +0000 Subject: Change backing store constructor so that it bases the CGLayer on the parent window's characteristics, and change DidScrollRect to do immediate painting. BUG=14823 TEST=scrolling should appear slightly smoother on some machines Review URL: http://codereview.chromium.org/174223 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23955 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/renderer_host/backing_store_mac.mm | 14 +++++++++++--- .../browser/renderer_host/render_widget_host_view_mac.mm | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'chrome/browser') diff --git a/chrome/browser/renderer_host/backing_store_mac.mm b/chrome/browser/renderer_host/backing_store_mac.mm index e445f7d..8d71b58 100644 --- a/chrome/browser/renderer_host/backing_store_mac.mm +++ b/chrome/browser/renderer_host/backing_store_mac.mm @@ -5,6 +5,8 @@ #import #include "chrome/browser/renderer_host/backing_store.h" +#include "chrome/browser/renderer_host/render_widget_host.h" +#include "chrome/browser/renderer_host/render_widget_host_view.h" #include "base/logging.h" #include "chrome/common/transport_dib.h" @@ -22,9 +24,15 @@ BackingStore::BackingStore(RenderWidgetHost* widget, const gfx::Size& size) : render_widget_host_(widget), size_(size), - cg_layer_(CGLayerCreateWithContext(static_cast( - [[NSGraphicsContext currentContext] graphicsPort]), size.ToCGSize(), - NULL)) { + cg_layer_(NULL) { + // We want our CGLayer to be optimized for drawing into our containing + // window, so extract a CGContext corresponding to that window that we can + // pass to CGLayerCreateWithContext. + NSWindow* containing_window = [widget->view()->GetNativeView() window]; + CHECK(containing_window != NULL); + CGContextRef context = static_cast([[containing_window graphicsContext] graphicsPort]); + CGLayerRef layer = CGLayerCreateWithContext(context, size.ToCGSize(), NULL); + cg_layer_.reset(layer); CHECK(cg_layer_.get() != NULL); } diff --git a/chrome/browser/renderer_host/render_widget_host_view_mac.mm b/chrome/browser/renderer_host/render_widget_host_view_mac.mm index 18674bb..22bffe5 100644 --- a/chrome/browser/renderer_host/render_widget_host_view_mac.mm +++ b/chrome/browser/renderer_host/render_widget_host_view_mac.mm @@ -257,7 +257,7 @@ void RenderWidgetHostViewMac::DidScrollRect( // TODO(rohitrao): Evaluate how slow this full redraw is. If it // turns out to be a problem, consider scrolling only a portion of // the view, based on where the findbar and blocked popups are. - [cocoa_view_ setNeedsDisplay:YES]; + DidPaintRect(rect); } void RenderWidgetHostViewMac::RenderViewGone() { -- cgit v1.1