aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornyamatongwe <nyamatongwe@gmail.com>2011-12-01 14:42:51 +1100
committernyamatongwe <nyamatongwe@gmail.com>2011-12-01 14:42:51 +1100
commitb18d0604c5bfc2f6441347bfe9a0583fd5c52c59 (patch)
treeef777e189a614b4e88023e43d712faf52d2c0a92
parentadf1a27336070807b9828b145c69182110afa1f5 (diff)
downloadscintilla-mirror-b18d0604c5bfc2f6441347bfe9a0583fd5c52c59.tar.gz
Change memory management so will work with deferred drawing such as printing.
-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 */
}