From 9390b4169cb96134bb0d0f485563e715d1f616d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Paul=20Ku=CC=88hne?= Date: Wed, 16 Jan 2013 02:28:29 +0100 Subject: [PATCH] windowed mac plugin: cache CGColorSpace --- 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); -- GitLab