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
commit9fa29412df438983d827dbb2f202344f294ccc7f (patch)
treec025f601d0b86bf8de7d0dea76d3384442ce793e
parent73181ebca1de07add055ad80ba0d1612fc1637bb (diff)
downloadscintilla-mirror-9fa29412df438983d827dbb2f202344f294ccc7f.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 */
}