Index: chrome/browser/renderer_host/accelerated_surface_container_mac.cc |
=================================================================== |
--- chrome/browser/renderer_host/accelerated_surface_container_mac.cc (revision 42374) |
+++ chrome/browser/renderer_host/accelerated_surface_container_mac.cc (working copy) |
@@ -9,8 +9,10 @@ |
#include "webkit/glue/webplugin.h" |
#include "chrome/browser/renderer_host/accelerated_surface_container_manager_mac.h" |
-AcceleratedSurfaceContainerMac::AcceleratedSurfaceContainerMac() |
- : x_(0), |
+AcceleratedSurfaceContainerMac::AcceleratedSurfaceContainerMac( |
+ AcceleratedSurfaceContainerManagerMac* manager) |
+ : manager_(manager), |
+ x_(0), |
y_(0), |
surface_(NULL), |
width_(0), |
@@ -20,6 +22,7 @@ |
} |
AcceleratedSurfaceContainerMac::~AcceleratedSurfaceContainerMac() { |
+ EnqueueTextureForDeletion(); |
ReleaseIOSurface(); |
} |
@@ -33,14 +36,13 @@ |
void AcceleratedSurfaceContainerMac::SetSizeAndIOSurface( |
int32 width, |
int32 height, |
- uint64 io_surface_identifier, |
- AcceleratedSurfaceContainerManagerMac* manager) { |
+ uint64 io_surface_identifier) { |
ReleaseIOSurface(); |
IOSurfaceSupport* io_surface_support = IOSurfaceSupport::Initialize(); |
if (io_surface_support) { |
surface_ = io_surface_support->IOSurfaceLookup( |
static_cast<uint32>(io_surface_identifier)); |
- EnqueueTextureForDeletion(manager); |
+ EnqueueTextureForDeletion(); |
width_ = width; |
height_ = height; |
} |
@@ -49,11 +51,10 @@ |
void AcceleratedSurfaceContainerMac::SetSizeAndTransportDIB( |
int32 width, |
int32 height, |
- TransportDIB::Handle transport_dib, |
- AcceleratedSurfaceContainerManagerMac* manager) { |
+ TransportDIB::Handle transport_dib) { |
if (TransportDIB::is_valid(transport_dib)) { |
transport_dib_.reset(TransportDIB::Map(transport_dib)); |
- EnqueueTextureForDeletion(manager); |
+ EnqueueTextureForDeletion(); |
width_ = width; |
height_ = height; |
} |
@@ -154,9 +155,10 @@ |
} |
} |
-void AcceleratedSurfaceContainerMac::EnqueueTextureForDeletion( |
- AcceleratedSurfaceContainerManagerMac* manager) { |
- manager->EnqueueTextureForDeletion(texture_); |
- texture_ = 0; |
+void AcceleratedSurfaceContainerMac::EnqueueTextureForDeletion() { |
+ if (texture_) { |
+ manager_->EnqueueTextureForDeletion(texture_); |
+ texture_ = 0; |
+ } |
} |