summaryrefslogtreecommitdiffstats
path: root/content/browser
diff options
context:
space:
mode:
authoravi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-30 21:59:18 +0000
committeravi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-30 21:59:18 +0000
commit4699f1faf715bc2714e0d6b0ca8b939b6cefcef7 (patch)
tree3af19f9757aa4bacc4fe877e5a4d3245d2ef7818 /content/browser
parent7510d108021bc6b0efeb42ea18f29c266bf9e780 (diff)
downloadchromium_src-4699f1faf715bc2714e0d6b0ca8b939b6cefcef7.zip
chromium_src-4699f1faf715bc2714e0d6b0ca8b939b6cefcef7.tar.gz
chromium_src-4699f1faf715bc2714e0d6b0ca8b939b6cefcef7.tar.bz2
Mac content shell: fix GPU acceleration
BUG=120772 TEST=site in bug works in content shell on Mac. Review URL: https://chromiumcodereview.appspot.com/9969010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@129961 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser')
-rw-r--r--content/browser/renderer_host/accelerated_plugin_view_mac.h9
-rw-r--r--content/browser/renderer_host/accelerated_plugin_view_mac.mm20
-rw-r--r--content/browser/renderer_host/accelerated_plugin_view_mac_unittest.mm5
3 files changed, 16 insertions, 18 deletions
diff --git a/content/browser/renderer_host/accelerated_plugin_view_mac.h b/content/browser/renderer_host/accelerated_plugin_view_mac.h
index 4f8c0ba..0d3de79 100644
--- a/content/browser/renderer_host/accelerated_plugin_view_mac.h
+++ b/content/browser/renderer_host/accelerated_plugin_view_mac.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -13,13 +13,6 @@
class RenderWidgetHostViewMac;
-// Informal protocol implemented by windows that need to be informed explicitly
-// about underlay surfaces.
-@interface NSObject (UnderlayableSurface)
-- (void)underlaySurfaceAdded;
-- (void)underlaySurfaceRemoved;
-@end
-
// This subclass of NSView hosts the output of accelerated plugins on
// the page.
@interface AcceleratedPluginView : NSView {
diff --git a/content/browser/renderer_host/accelerated_plugin_view_mac.mm b/content/browser/renderer_host/accelerated_plugin_view_mac.mm
index c499046..3571ae0 100644
--- a/content/browser/renderer_host/accelerated_plugin_view_mac.mm
+++ b/content/browser/renderer_host/accelerated_plugin_view_mac.mm
@@ -9,6 +9,7 @@
#include "base/command_line.h"
#include "base/debug/trace_event.h"
#include "content/browser/renderer_host/render_widget_host_view_mac.h"
+#import "content/public/browser/accelerated_window_interface.h"
#include "content/public/browser/browser_thread.h"
#include "ui/gfx/gl/gl_context.h"
#include "ui/gfx/gl/gl_switches.h"
@@ -185,10 +186,12 @@ using content::BrowserThread;
// Inform the window hosting this accelerated view that it needs to be
// transparent.
if (![self isHiddenOrHasHiddenAncestor]) {
- if ([[self window] respondsToSelector:@selector(underlaySurfaceRemoved)])
- [static_cast<id>([self window]) underlaySurfaceRemoved];
- if ([newWindow respondsToSelector:@selector(underlaySurfaceAdded)])
- [static_cast<id>(newWindow) underlaySurfaceAdded];
+ if ([[self window] conformsToProtocol:@protocol(UnderlayableSurface)]) {
+ [static_cast<id<UnderlayableSurface> >([self window])
+ underlaySurfaceRemoved];
+ }
+ if ([newWindow conformsToProtocol:@protocol(UnderlayableSurface)])
+ [static_cast<id<UnderlayableSurface> >(newWindow) underlaySurfaceAdded];
}
}
@@ -196,8 +199,9 @@ using content::BrowserThread;
TRACE_EVENT0("browser", "AcceleratedPluginView::viewDidHide");
[super viewDidHide];
- if ([[self window] respondsToSelector:@selector(underlaySurfaceRemoved)]) {
- [static_cast<id>([self window]) underlaySurfaceRemoved];
+ if ([[self window] conformsToProtocol:@protocol(UnderlayableSurface)]) {
+ [static_cast<id<UnderlayableSurface> >([self window])
+ underlaySurfaceRemoved];
}
}
@@ -210,8 +214,8 @@ using content::BrowserThread;
[self initOpenGLContext];
}
- if ([[self window] respondsToSelector:@selector(underlaySurfaceRemoved)]) {
- [static_cast<id>([self window]) underlaySurfaceAdded];
+ if ([[self window] conformsToProtocol:@protocol(UnderlayableSurface)]) {
+ [static_cast<id<UnderlayableSurface> >([self window]) underlaySurfaceAdded];
}
}
diff --git a/content/browser/renderer_host/accelerated_plugin_view_mac_unittest.mm b/content/browser/renderer_host/accelerated_plugin_view_mac_unittest.mm
index 4d902d2..8ad3334 100644
--- a/content/browser/renderer_host/accelerated_plugin_view_mac_unittest.mm
+++ b/content/browser/renderer_host/accelerated_plugin_view_mac_unittest.mm
@@ -1,14 +1,15 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/browser/renderer_host/accelerated_plugin_view_mac.h"
#include "base/logging.h"
+#import "content/public/browser/accelerated_window_interface.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/platform_test.h"
-@interface UnderlayCountingWindow : NSWindow {
+@interface UnderlayCountingWindow : NSWindow<UnderlayableSurface> {
@private
int underlayCount_;
}