Chromium Code Reviews| Index: content/browser/compositor/browser_compositor_view_mac.mm |
| diff --git a/content/browser/compositor/browser_compositor_view_mac.mm b/content/browser/compositor/browser_compositor_view_mac.mm |
| index 2151c638e3e70785a538d37b32bf11a9bae4068f..0dd797d04c37fab03d79501ce1d7ecb7a2ec61df 100644 |
| --- a/content/browser/compositor/browser_compositor_view_mac.mm |
| +++ b/content/browser/compositor/browser_compositor_view_mac.mm |
| @@ -40,12 +40,12 @@ namespace { |
| // The number of placeholder objects allocated. If this reaches zero, then |
| // the BrowserCompositorViewCocoa being held on to for recycling, |
| -// |g_recyclable_cocoa_view|, will be freed. |
| +// |g_recyclable_internal_view|, will be freed. |
| uint32 g_placeholder_count = 0; |
| // A spare BrowserCompositorViewCocoa kept around for recycling. |
| -base::LazyInstance<base::scoped_nsobject<BrowserCompositorViewCocoa>> |
| - g_recyclable_cocoa_view; |
| +base::LazyInstance<scoped_ptr<BrowserCompositorViewMacInternal>> |
| + g_recyclable_internal_view; |
| } // namespace |
| @@ -56,29 +56,26 @@ BrowserCompositorViewMac::BrowserCompositorViewMac( |
| // TODO(ccameron): If there exists a frame in flight (swap has been called |
| // by the compositor, but the frame has not arrived from the GPU process |
| // yet), then that frame may inappropriately flash in the new view. |
| - swap(g_recyclable_cocoa_view.Get(), cocoa_view_); |
| - if (!cocoa_view_) |
| - cocoa_view_.reset([[BrowserCompositorViewCocoa alloc] init]); |
| - [cocoa_view_ setClient:client_]; |
| + internal_view_.reset(g_recyclable_internal_view.Get().release()); |
|
miu
2014/07/16 22:31:55
nit: internal_view_ = g_recyclable_internal_view.G
ccameron
2014/07/17 02:30:02
Done.
|
| + if (!internal_view_) |
| + internal_view_.reset(new BrowserCompositorViewMacInternal); |
| + internal_view_->SetClient(client_); |
| } |
| BrowserCompositorViewMac::~BrowserCompositorViewMac() { |
| // Make this BrowserCompositorViewCocoa recyclable for future instances. |
| - [cocoa_view_ setClient:NULL]; |
| - [g_recyclable_cocoa_view.Get() destroyCompositor]; |
| - swap(g_recyclable_cocoa_view.Get(), cocoa_view_); |
| + internal_view_->ResetClient(); |
| + g_recyclable_internal_view.Get().reset(internal_view_.release()); |
|
miu
2014/07/16 22:31:55
ditto: g_recyclable_internal_view.Get() = internal
ccameron
2014/07/17 02:30:01
Done.
|
| // If there are no placeholders allocated, destroy the recyclable |
| // BrowserCompositorViewCocoa that we just populated. |
| - if (!g_placeholder_count) { |
| - [g_recyclable_cocoa_view.Get() destroyCompositor]; |
| - g_recyclable_cocoa_view.Get().reset(); |
| - } |
| + if (!g_placeholder_count) |
| + g_recyclable_internal_view.Get().reset(); |
| } |
| ui::Compositor* BrowserCompositorViewMac::GetCompositor() const { |
| - DCHECK(cocoa_view_); |
| - return [cocoa_view_ compositor]; |
| + DCHECK(internal_view_); |
| + return internal_view_->compositor(); |
| } |
| //////////////////////////////////////////////////////////////////////////////// |
| @@ -94,10 +91,8 @@ BrowserCompositorViewPlaceholderMac::~BrowserCompositorViewPlaceholderMac() { |
| // If there are no placeholders allocated, destroy the recyclable |
| // BrowserCompositorViewCocoa. |
| - if (!g_placeholder_count) { |
| - [g_recyclable_cocoa_view.Get() destroyCompositor]; |
| - g_recyclable_cocoa_view.Get().reset(); |
| - } |
| + if (!g_placeholder_count) |
| + g_recyclable_internal_view.Get().reset(); |
| } |
| } // namespace content |