| Index: content/common/gpu/image_transport_surface_fbo_mac.mm | 
| diff --git a/content/common/gpu/image_transport_surface_fbo_mac.cc b/content/common/gpu/image_transport_surface_fbo_mac.mm | 
| similarity index 93% | 
| rename from content/common/gpu/image_transport_surface_fbo_mac.cc | 
| rename to content/common/gpu/image_transport_surface_fbo_mac.mm | 
| index 3e86a484fe9d0ce87b4168c1fbdc9356c2e3c681..c85a492e21abaa630dbf50cd573604d3fe326722 100644 | 
| --- a/content/common/gpu/image_transport_surface_fbo_mac.cc | 
| +++ b/content/common/gpu/image_transport_surface_fbo_mac.mm | 
| @@ -5,6 +5,7 @@ | 
| #include "content/common/gpu/image_transport_surface_fbo_mac.h" | 
|  | 
| #include "content/common/gpu/gpu_messages.h" | 
| +#include "content/common/gpu/image_transport_surface_calayer_mac.h" | 
| #include "content/common/gpu/image_transport_surface_iosurface_mac.h" | 
| #include "ui/gfx/native_widget_types.h" | 
| #include "ui/gl/gl_context.h" | 
| @@ -14,12 +15,10 @@ | 
| namespace content { | 
|  | 
| ImageTransportSurfaceFBO::ImageTransportSurfaceFBO( | 
| -    StorageProvider* storage_provider, | 
| GpuChannelManager* manager, | 
| GpuCommandBufferStub* stub, | 
| gfx::PluginWindowHandle handle) | 
| -    : storage_provider_(storage_provider), | 
| -      backbuffer_suggested_allocation_(true), | 
| +    : backbuffer_suggested_allocation_(true), | 
| frontbuffer_suggested_allocation_(true), | 
| fbo_id_(0), | 
| texture_id_(0), | 
| @@ -30,6 +29,9 @@ ImageTransportSurfaceFBO::ImageTransportSurfaceFBO( | 
| made_current_(false), | 
| is_swap_buffers_pending_(false), | 
| did_unschedule_(false) { | 
| +  // TODO(ccameron): If the remote layer API is supported on this system, | 
| +  // use a CALayerStorageProvider instead of an IOSurfaceStorageProvider. | 
| +  storage_provider_.reset(new IOSurfaceStorageProvider(this)); | 
| helper_.reset(new ImageTransportHelper(this, manager, stub, handle)); | 
| } | 
|  | 
| @@ -142,27 +144,9 @@ bool ImageTransportSurfaceFBO::SwapBuffers() { | 
|  | 
| bool ImageTransportSurfaceFBO::PostSubBuffer( | 
| int x, int y, int width, int height) { | 
| -  DCHECK(backbuffer_suggested_allocation_); | 
| -  if (!frontbuffer_suggested_allocation_) | 
| -    return true; | 
| -  glFlush(); | 
| - | 
| -  GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params params; | 
| -  params.surface_handle = storage_provider_->GetSurfaceHandle(); | 
| -  params.x = x; | 
| -  params.y = y; | 
| -  params.width = width; | 
| -  params.height = height; | 
| -  params.surface_size = GetSize(); | 
| -  params.surface_scale_factor = scale_factor_; | 
| -  params.latency_info.swap(latency_info_); | 
| -  helper_->SendAcceleratedSurfacePostSubBuffer(params); | 
| - | 
| -  DCHECK(!is_swap_buffers_pending_); | 
| -  is_swap_buffers_pending_ = true; | 
| - | 
| -  storage_provider_->WillSwapBuffers(); | 
| -  return true; | 
| +  // Mac does not support sub-buffer swaps. | 
| +  NOTREACHED(); | 
| +  return false; | 
| } | 
|  | 
| bool ImageTransportSurfaceFBO::SupportsPostSubBuffer() { | 
| @@ -183,9 +167,12 @@ void* ImageTransportSurfaceFBO::GetDisplay() { | 
|  | 
| void ImageTransportSurfaceFBO::OnBufferPresented( | 
| const AcceleratedSurfaceMsg_BufferPresented_Params& params) { | 
| -  DCHECK(is_swap_buffers_pending_); | 
| - | 
| context_->share_group()->SetRendererID(params.renderer_id); | 
| +  storage_provider_->CanFreeSwappedBuffer(); | 
| +} | 
| + | 
| +void ImageTransportSurfaceFBO::UnblockContextAfterPendingSwap() { | 
| +  DCHECK(is_swap_buffers_pending_); | 
| is_swap_buffers_pending_ = false; | 
| if (did_unschedule_) { | 
| did_unschedule_ = false; | 
|  |