| Index: ui/gl/io_surface_support_mac.cc
|
| diff --git a/ui/gl/io_surface_support_mac.cc b/ui/gl/io_surface_support_mac.cc
|
| index a7aeae85f8e5ca828aed8e15520041787dd09ff3..34b922d3840f1d3bbd4688cac14ffb73d5386894 100644
|
| --- a/ui/gl/io_surface_support_mac.cc
|
| +++ b/ui/gl/io_surface_support_mac.cc
|
| @@ -22,6 +22,9 @@ typedef IOReturn (*IOSurfaceLockPtr)(CFTypeRef io_surface,
|
| typedef IOReturn (*IOSurfaceUnlockPtr)(CFTypeRef io_surface,
|
| uint32 options,
|
| uint32* seed);
|
| +typedef void (*IOSurfaceDecrementUseCountPtr)(CFTypeRef io_surface);
|
| +typedef void (*IOSurfaceIncrementUseCountPtr)(CFTypeRef io_surface);
|
| +typedef Boolean (*IOSurfaceIsInUsePtr)(CFTypeRef io_surface);
|
|
|
| typedef CGLError (*CGLTexImageIOSurface2DProcPtr)(CGLContextObj ctx,
|
| GLenum target,
|
| @@ -67,6 +70,10 @@ class IOSurfaceSupportImpl : public IOSurfaceSupport {
|
| uint32 options,
|
| uint32* seed) OVERRIDE;
|
|
|
| + virtual void IOSurfaceDecrementUseCount(CFTypeRef io_surface) OVERRIDE;
|
| + virtual void IOSurfaceIncrementUseCount(CFTypeRef io_surface) OVERRIDE;
|
| + virtual Boolean IOSurfaceIsInUse(CFTypeRef io_surface) OVERRIDE;
|
| +
|
| virtual CGLError CGLTexImageIOSurface2D(CGLContextObj ctx,
|
| GLenum target,
|
| GLenum internal_format,
|
| @@ -105,6 +112,10 @@ class IOSurfaceSupportImpl : public IOSurfaceSupport {
|
| IOSurfaceGetBaseAddressPtr io_surface_get_base_address_;
|
| IOSurfaceLockPtr io_surface_lock_;
|
| IOSurfaceUnlockPtr io_surface_unlock_;
|
| + IOSurfaceDecrementUseCountPtr io_surface_decrement_use_count_;
|
| + IOSurfaceIncrementUseCountPtr io_surface_increment_use_count_;
|
| + IOSurfaceIsInUsePtr io_surface_is_in_use_;
|
| +
|
| CGLTexImageIOSurface2DProcPtr cgl_tex_image_io_surface_2d_;
|
| CVPixelBufferGetIOSurfaceProcPtr cv_pixel_buffer_get_io_surface_;
|
| bool initialized_successfully_;
|
| @@ -190,6 +201,19 @@ IOReturn IOSurfaceSupportImpl::IOSurfaceUnlock(CFTypeRef io_surface,
|
| return io_surface_unlock_(io_surface, options, seed);
|
| }
|
|
|
| +void IOSurfaceSupportImpl::IOSurfaceDecrementUseCount(CFTypeRef io_surface) {
|
| + io_surface_decrement_use_count_(io_surface);
|
| +}
|
| +
|
| +void IOSurfaceSupportImpl::IOSurfaceIncrementUseCount(CFTypeRef io_surface) {
|
| + io_surface_increment_use_count_(io_surface);
|
| +}
|
| +
|
| +Boolean IOSurfaceSupportImpl::IOSurfaceIsInUse(CFTypeRef io_surface) {
|
| + return io_surface_is_in_use_(io_surface);
|
| +}
|
| +
|
| +
|
| CGLError IOSurfaceSupportImpl::CGLTexImageIOSurface2D(CGLContextObj ctx,
|
| GLenum target,
|
| GLenum internal_format,
|
| @@ -235,6 +259,9 @@ IOSurfaceSupportImpl::IOSurfaceSupportImpl()
|
| io_surface_get_base_address_(NULL),
|
| io_surface_lock_(NULL),
|
| io_surface_unlock_(NULL),
|
| + io_surface_decrement_use_count_(NULL),
|
| + io_surface_increment_use_count_(NULL),
|
| + io_surface_is_in_use_(NULL),
|
| cgl_tex_image_io_surface_2d_(NULL),
|
| cv_pixel_buffer_get_io_surface_(NULL),
|
| initialized_successfully_(false) {
|
| @@ -279,6 +306,13 @@ IOSurfaceSupportImpl::IOSurfaceSupportImpl()
|
| dlsym(iosurface_handle_, "IOSurfaceGetBaseAddress");
|
| void* io_surface_lock_ptr = dlsym(iosurface_handle_, "IOSurfaceLock");
|
| void* io_surface_unlock_ptr = dlsym(iosurface_handle_, "IOSurfaceUnlock");
|
| + void* io_surface_decrement_use_count_ptr =
|
| + dlsym(iosurface_handle_, "IOSurfaceDecrementUseCount");
|
| + void* io_surface_increment_use_count_ptr =
|
| + dlsym(iosurface_handle_, "IOSurfaceIncrementUseCount");
|
| + void* io_surface_is_in_use_ptr =
|
| + dlsym(iosurface_handle_, "IOSurfaceIsInUse");
|
| +
|
| void* tex_image_io_surface_2d_ptr =
|
| dlsym(opengl_handle_, "CGLTexImageIOSurface2D");
|
| void* cv_pixel_buffer_get_io_surface =
|
| @@ -299,6 +333,9 @@ IOSurfaceSupportImpl::IOSurfaceSupportImpl()
|
| !io_surface_get_base_address_ptr ||
|
| !io_surface_lock_ptr ||
|
| !io_surface_unlock_ptr ||
|
| + !io_surface_decrement_use_count_ptr ||
|
| + !io_surface_increment_use_count_ptr ||
|
| + !io_surface_is_in_use_ptr ||
|
| !tex_image_io_surface_2d_ptr ||
|
| !cv_pixel_buffer_get_io_surface) {
|
| CloseLibraryHandles();
|
| @@ -339,6 +376,14 @@ IOSurfaceSupportImpl::IOSurfaceSupportImpl()
|
| io_surface_lock_ = reinterpret_cast<IOSurfaceLockPtr>(io_surface_lock_ptr);
|
| io_surface_unlock_ = reinterpret_cast<IOSurfaceUnlockPtr>(
|
| io_surface_unlock_ptr);
|
| + io_surface_decrement_use_count_ =
|
| + reinterpret_cast<IOSurfaceDecrementUseCountPtr>(
|
| + io_surface_decrement_use_count_ptr);
|
| + io_surface_increment_use_count_ =
|
| + reinterpret_cast<IOSurfaceIncrementUseCountPtr>(
|
| + io_surface_increment_use_count_ptr);
|
| + io_surface_is_in_use_ =
|
| + reinterpret_cast<IOSurfaceIsInUsePtr>(io_surface_is_in_use_ptr);
|
| cgl_tex_image_io_surface_2d_ =
|
| reinterpret_cast<CGLTexImageIOSurface2DProcPtr>(
|
| tex_image_io_surface_2d_ptr);
|
|
|