npapi-vlc | branch: master | Felix Paul Kühne <[email protected]> | Wed Jan 16 02:28:29 2013 +0100| [9390b4169cb96134bb0d0f485563e715d1f616d3] | committer: Felix Paul Kühne
windowed mac plugin: cache CGColorSpace > http://git.videolan.org/gitweb.cgi/npapi-vlc.git/?a=commit;h=9390b4169cb96134bb0d0f485563e715d1f616d3 --- npapi/vlcplugin_mac.mm | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/npapi/vlcplugin_mac.mm b/npapi/vlcplugin_mac.mm index 3efc763..910b371 100644 --- a/npapi/vlcplugin_mac.mm +++ b/npapi/vlcplugin_mac.mm @@ -39,6 +39,7 @@ @end @interface VLCPlaybackLayer : CALayer { + CGColorSpaceRef _colorspace; VlcPluginMac *_cppPlugin; } @property (readwrite) VlcPluginMac * cppPlugin; @@ -440,11 +441,19 @@ bool VlcPluginMac::handle_event(void *event) if (self = [super init]) { self.needsDisplayOnBoundsChange = YES; self.autoresizingMask = kCALayerWidthSizable | kCALayerHeightSizable; + + _colorspace = CGColorSpaceCreateDeviceRGB(); } return self; } +- (void)dealloc +{ + CGColorSpaceRelease(_colorspace); + [super dealloc]; +} + - (void)drawInContext:(CGContextRef)cgContext { if (!cgContext) @@ -498,20 +507,19 @@ bool VlcPluginMac::handle_event(void *event) sizeof([self cppPlugin]->m_frame_buf[0]), kCFAllocatorNull); CGDataProviderRef dataProvider = CGDataProviderCreateWithCFData(dataRef); - CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB(); + CGImageRef image = CGImageCreate(media_width, media_height, kBitsPerComponent, kBitsPerComponent * kComponentsPerPixel, kComponentsPerPixel * media_width, - colorspace, + _colorspace, kCGBitmapByteOrder16Big, dataProvider, NULL, true, kCGRenderingIntentPerceptual); if (!image) { - CGColorSpaceRelease(colorspace); CGImageRelease(image); CGDataProviderRelease(dataProvider); CGContextRestoreGState(cgContext); @@ -520,7 +528,6 @@ bool VlcPluginMac::handle_event(void *event) CGRect rect = CGRectMake(left, top, display_width, display_height); CGContextDrawImage(cgContext, rect, image); - CGColorSpaceRelease(colorspace); CGImageRelease(image); CGDataProviderRelease(dataProvider); _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
