aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--cocoa/PlatCocoa.mm14
1 files changed, 10 insertions, 4 deletions
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<SurfaceImpl &>(surfacePattern);
@@ -493,8 +500,9 @@ void SurfaceImpl::FillRectangle(PRectangle rc, Surface &surfacePattern)
return;
}
- const CGPatternCallbacks drawImageCallbacks = { 0,
- reinterpret_cast<CGPatternDrawPatternCallback>(drawImageRefCallback), NULL };
+ const CGPatternCallbacks drawImageCallbacks = { 0,
+ reinterpret_cast<CGPatternDrawPatternCallback>(drawImageRefCallback),
+ reinterpret_cast<CGPatternReleaseInfoCallback>(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 */
}