cocoa: commit accSone patch which moves default gdi object creation/destruction to widgetset constructor/destructor. This makes them live inside autorelease pool. (issue #0025321)

git-svn-id: trunk@43457 -
This commit is contained in:
paul 2013-11-18 12:01:51 +00:00
parent 222560f8b8
commit e700e2df51
2 changed files with 18 additions and 13 deletions

View File

@ -1132,6 +1132,7 @@ begin
begin
FBitmap := AValue;
ctx := NSGraphicsContext.graphicsContextWithBitmapImageRep(Bitmap.ImageRep);
ctx.retain; // extend live beyond NSAutoreleasePool
InitDraw(Bitmap.Width, Bitmap.Height);
end;
end;
@ -2624,22 +2625,9 @@ begin
end;
initialization
DefaultBrush := TCocoaBrush.CreateDefault;
DefaultPen := TCocoaPen.CreateDefault;
DefaultFont := TCocoaFont.CreateDefault;
DefaultBitmap := TCocoaBitmap.CreateDefault;
DefaultContext := TCocoaBitmapContext.Create;
DefaultContext.Bitmap := DefaultBitmap;
ScreenContext := TCocoaContext.Create(DefaultContext.ctx);
finalization
ScreenContext.Free;
DefaultContext.Free;
DefaultBrush.Free;
DefaultPen.Free;
DefaultFont.Free;
DefaultBitmap.Free;
end.

View File

@ -96,6 +96,15 @@ begin
NSMessageLParam := NSStringUTF8('LPARAM');
NSMessageResult := NSStringUTF8('RESULT');
DefaultBrush := TCocoaBrush.CreateDefault;
DefaultPen := TCocoaPen.CreateDefault;
DefaultFont := TCocoaFont.CreateDefault;
DefaultBitmap := TCocoaBitmap.CreateDefault;
DefaultContext := TCocoaBitmapContext.Create;
DefaultContext.Bitmap := DefaultBitmap;
ScreenContext := TCocoaContext.Create(DefaultContext.ctx);
InitStockItems;
end;
@ -108,6 +117,14 @@ destructor TCocoaWidgetSet.Destroy;
begin
inherited Destroy;
ScreenContext.Free;
DefaultContext.Free;
DefaultBrush.Free;
DefaultPen.Free;
DefaultFont.Free;
DefaultBitmap.Free;
FreeSysColorBrushes;
FreeStockItems;