From 9fa29412df438983d827dbb2f202344f294ccc7f Mon Sep 17 00:00:00 2001 From: nyamatongwe Date: Thu, 1 Dec 2011 14:42:51 +1100 Subject: Change memory management so will work with deferred drawing such as printing. --- cocoa/PlatCocoa.mm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'cocoa') diff --git a/cocoa/PlatCocoa.mm b/cocoa/PlatCocoa.mm index 027fd6416..300af3775 100644 --- a/cocoa/PlatCocoa.mm +++ b/cocoa/PlatCocoa.mm @@ -481,6 +481,13 @@ void drawImageRefCallback(CGImageRef pattern, CGContextRef gc) //-------------------------------------------------------------------------------------------------- +void releaseImageRefCallback(CGImageRef pattern) +{ + CGImageRelease(pattern); +} + +//-------------------------------------------------------------------------------------------------- + void SurfaceImpl::FillRectangle(PRectangle rc, Surface &surfacePattern) { SurfaceImpl& patternSurface = static_cast(surfacePattern); @@ -493,8 +500,9 @@ void SurfaceImpl::FillRectangle(PRectangle rc, Surface &surfacePattern) return; } - const CGPatternCallbacks drawImageCallbacks = { 0, - reinterpret_cast(drawImageRefCallback), NULL }; + const CGPatternCallbacks drawImageCallbacks = { 0, + reinterpret_cast(drawImageRefCallback), + reinterpret_cast(releaseImageRefCallback) }; CGPatternRef pattern = CGPatternCreate(image, CGRectMake(0, 0, patternSurface.bitmapWidth, patternSurface.bitmapHeight), @@ -526,8 +534,6 @@ void SurfaceImpl::FillRectangle(PRectangle rc, Surface &surfacePattern) colorSpace = NULL; CGPatternRelease( pattern ); pattern = NULL; - CGImageRelease( image ); - image = NULL; } /* pattern != NULL */ } -- cgit v1.2.3