Add wxGCSafeRetain/wxGCSafeRelease to the vast majority of wxCocoa code.
Copyright 2008 Software 2000 Ltd. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@51585 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
#include "wx/cocoa/autorelease.h"
|
#include "wx/cocoa/autorelease.h"
|
||||||
#include "wx/cocoa/string.h"
|
#include "wx/cocoa/string.h"
|
||||||
|
#include "wx/cocoa/ObjcRef.h"
|
||||||
|
|
||||||
#import <AppKit/NSBitmapImageRep.h>
|
#import <AppKit/NSBitmapImageRep.h>
|
||||||
#import <AppKit/NSGraphics.h>
|
#import <AppKit/NSGraphics.h>
|
||||||
@@ -74,6 +75,8 @@ wxBitmapRefData::wxBitmapRefData()
|
|||||||
|
|
||||||
wxBitmapRefData::wxBitmapRefData( const wxBitmapRefData& data)
|
wxBitmapRefData::wxBitmapRefData( const wxBitmapRefData& data)
|
||||||
{
|
{
|
||||||
|
wxAutoNSAutoreleasePool pool;
|
||||||
|
|
||||||
m_width = data.m_width;
|
m_width = data.m_width;
|
||||||
m_height = data.m_height;
|
m_height = data.m_height;
|
||||||
m_depth = data.m_depth;
|
m_depth = data.m_depth;
|
||||||
@@ -81,13 +84,13 @@ wxBitmapRefData::wxBitmapRefData( const wxBitmapRefData& data)
|
|||||||
m_numColors = data.m_numColors;
|
m_numColors = data.m_numColors;
|
||||||
m_bitmapPalette = data.m_bitmapPalette;
|
m_bitmapPalette = data.m_bitmapPalette;
|
||||||
m_quality = data.m_quality;
|
m_quality = data.m_quality;
|
||||||
m_cocoaNSBitmapImageRep = [data.m_cocoaNSBitmapImageRep copyWithZone:nil];
|
m_cocoaNSBitmapImageRep = wxGCSafeRetain([[data.m_cocoaNSBitmapImageRep copyWithZone:nil] autorelease]);
|
||||||
m_bitmapMask = data.m_bitmapMask?new wxMask(*data.m_bitmapMask):NULL;
|
m_bitmapMask = data.m_bitmapMask?new wxMask(*data.m_bitmapMask):NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxBitmapRefData::~wxBitmapRefData()
|
wxBitmapRefData::~wxBitmapRefData()
|
||||||
{
|
{
|
||||||
[m_cocoaNSBitmapImageRep release];
|
wxGCSafeRelease(m_cocoaNSBitmapImageRep);
|
||||||
m_cocoaNSBitmapImageRep = NULL;
|
m_cocoaNSBitmapImageRep = NULL;
|
||||||
|
|
||||||
delete m_bitmapMask;
|
delete m_bitmapMask;
|
||||||
@@ -193,8 +196,8 @@ void wxBitmap::SetNSBitmapImageRep(WX_NSBitmapImageRep bitmapImageRep)
|
|||||||
if(!M_BITMAPDATA)
|
if(!M_BITMAPDATA)
|
||||||
return;
|
return;
|
||||||
// NOTE: No checking is done to make sure width/height agree
|
// NOTE: No checking is done to make sure width/height agree
|
||||||
[bitmapImageRep retain];
|
wxGCSafeRetain(bitmapImageRep);
|
||||||
[M_BITMAPDATA->m_cocoaNSBitmapImageRep release];
|
wxGCSafeRelease(M_BITMAPDATA->m_cocoaNSBitmapImageRep);
|
||||||
M_BITMAPDATA->m_cocoaNSBitmapImageRep = bitmapImageRep;
|
M_BITMAPDATA->m_cocoaNSBitmapImageRep = bitmapImageRep;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -296,6 +299,8 @@ int wxBitmap::GetHeight() const
|
|||||||
|
|
||||||
bool wxBitmap::Create(int w, int h, int d)
|
bool wxBitmap::Create(int w, int h, int d)
|
||||||
{
|
{
|
||||||
|
wxAutoNSAutoreleasePool pool;
|
||||||
|
|
||||||
UnRef();
|
UnRef();
|
||||||
|
|
||||||
m_refData = new wxBitmapRefData;
|
m_refData = new wxBitmapRefData;
|
||||||
@@ -305,7 +310,7 @@ bool wxBitmap::Create(int w, int h, int d)
|
|||||||
M_BITMAPDATA->m_depth = d;
|
M_BITMAPDATA->m_depth = d;
|
||||||
|
|
||||||
/* TODO: create new bitmap */
|
/* TODO: create new bitmap */
|
||||||
M_BITMAPDATA->m_cocoaNSBitmapImageRep = [[NSBitmapImageRep alloc]
|
M_BITMAPDATA->m_cocoaNSBitmapImageRep = wxGCSafeRetain([[[NSBitmapImageRep alloc]
|
||||||
initWithBitmapDataPlanes: NULL
|
initWithBitmapDataPlanes: NULL
|
||||||
pixelsWide: w
|
pixelsWide: w
|
||||||
pixelsHigh: h
|
pixelsHigh: h
|
||||||
@@ -316,7 +321,7 @@ bool wxBitmap::Create(int w, int h, int d)
|
|||||||
colorSpaceName: NSCalibratedRGBColorSpace
|
colorSpaceName: NSCalibratedRGBColorSpace
|
||||||
bytesPerRow: 0 // NOTE: Contrary to Apple documentation Mac OS
|
bytesPerRow: 0 // NOTE: Contrary to Apple documentation Mac OS
|
||||||
// 10.4 will add padding bytes when 0 is used here
|
// 10.4 will add padding bytes when 0 is used here
|
||||||
bitsPerPixel: 0];
|
bitsPerPixel: 0] autorelease]);
|
||||||
|
|
||||||
wxLogTrace(wxTRACE_COCOA,wxT("M_BITMAPDATA=%p NSBitmapImageRep bitmapData=%p"), M_BITMAPDATA, [M_BITMAPDATA->m_cocoaNSBitmapImageRep bitmapData]);
|
wxLogTrace(wxTRACE_COCOA,wxT("M_BITMAPDATA=%p NSBitmapImageRep bitmapData=%p"), M_BITMAPDATA, [M_BITMAPDATA->m_cocoaNSBitmapImageRep bitmapData]);
|
||||||
M_BITMAPDATA->m_ok = true;
|
M_BITMAPDATA->m_ok = true;
|
||||||
@@ -345,7 +350,7 @@ bool wxBitmap::LoadFile(const wxString& filename, wxBitmapType type)
|
|||||||
M_BITMAPDATA->m_ok = true;
|
M_BITMAPDATA->m_ok = true;
|
||||||
M_BITMAPDATA->m_numColors = 0;
|
M_BITMAPDATA->m_numColors = 0;
|
||||||
M_BITMAPDATA->m_quality = 0;
|
M_BITMAPDATA->m_quality = 0;
|
||||||
M_BITMAPDATA->m_cocoaNSBitmapImageRep = [imageRep retain];
|
M_BITMAPDATA->m_cocoaNSBitmapImageRep = wxGCSafeRetain(imageRep);
|
||||||
M_BITMAPDATA->m_bitmapMask = NULL;
|
M_BITMAPDATA->m_bitmapMask = NULL;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -377,7 +382,7 @@ bool wxBitmap::Create(NSBitmapImageRep *imageRep)
|
|||||||
M_BITMAPDATA->m_ok = true;
|
M_BITMAPDATA->m_ok = true;
|
||||||
M_BITMAPDATA->m_numColors = 0;
|
M_BITMAPDATA->m_numColors = 0;
|
||||||
M_BITMAPDATA->m_quality = 0;
|
M_BITMAPDATA->m_quality = 0;
|
||||||
M_BITMAPDATA->m_cocoaNSBitmapImageRep = [imageRep retain];
|
M_BITMAPDATA->m_cocoaNSBitmapImageRep = wxGCSafeRetain(imageRep);
|
||||||
M_BITMAPDATA->m_bitmapMask = NULL;
|
M_BITMAPDATA->m_bitmapMask = NULL;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -410,12 +415,12 @@ bool wxBitmap::CopyFromIcon(const wxIcon& icon)
|
|||||||
NSRect imageRect;
|
NSRect imageRect;
|
||||||
imageRect.origin.x = imageRect.origin.y = 0.0;
|
imageRect.origin.x = imageRect.origin.y = 0.0;
|
||||||
imageRect.size = [icon.GetNSImage() size];
|
imageRect.size = [icon.GetNSImage() size];
|
||||||
NSBitmapImageRep *newBitmapRep = [[NSBitmapImageRep alloc] initWithFocusedViewRect:imageRect];
|
NSBitmapImageRep *newBitmapRep = [[[NSBitmapImageRep alloc] initWithFocusedViewRect:imageRect] autorelease];
|
||||||
[icon.GetNSImage() unlockFocus];
|
[icon.GetNSImage() unlockFocus];
|
||||||
if(!newBitmapRep)
|
if(!newBitmapRep)
|
||||||
return false;
|
return false;
|
||||||
m_refData = new wxBitmapRefData;
|
m_refData = new wxBitmapRefData;
|
||||||
M_BITMAPDATA->m_cocoaNSBitmapImageRep = newBitmapRep;
|
M_BITMAPDATA->m_cocoaNSBitmapImageRep = wxGCSafeRetain(newBitmapRep);
|
||||||
M_BITMAPDATA->m_width = [newBitmapRep pixelsWide];
|
M_BITMAPDATA->m_width = [newBitmapRep pixelsWide];
|
||||||
M_BITMAPDATA->m_height = [newBitmapRep pixelsHigh];
|
M_BITMAPDATA->m_height = [newBitmapRep pixelsHigh];
|
||||||
M_BITMAPDATA->m_depth = [newBitmapRep bitsPerSample]*[newBitmapRep samplesPerPixel];
|
M_BITMAPDATA->m_depth = [newBitmapRep bitsPerSample]*[newBitmapRep samplesPerPixel];
|
||||||
@@ -474,6 +479,7 @@ wxImage wxBitmap::ConvertToImage() const
|
|||||||
|
|
||||||
bool wxBitmap::CreateFromImage(const wxImage& image, int depth)
|
bool wxBitmap::CreateFromImage(const wxImage& image, int depth)
|
||||||
{
|
{
|
||||||
|
wxAutoNSAutoreleasePool pool;
|
||||||
UnRef();
|
UnRef();
|
||||||
|
|
||||||
wxCHECK_MSG(image.Ok(), false, wxT("invalid image"));
|
wxCHECK_MSG(image.Ok(), false, wxT("invalid image"));
|
||||||
@@ -483,7 +489,7 @@ bool wxBitmap::CreateFromImage(const wxImage& image, int depth)
|
|||||||
|
|
||||||
M_BITMAPDATA->m_width = image.GetWidth();
|
M_BITMAPDATA->m_width = image.GetWidth();
|
||||||
M_BITMAPDATA->m_height = image.GetHeight();
|
M_BITMAPDATA->m_height = image.GetHeight();
|
||||||
NSBitmapImageRep *bitmapImage = [[NSBitmapImageRep alloc]
|
NSBitmapImageRep *bitmapImage = [[[NSBitmapImageRep alloc]
|
||||||
initWithBitmapDataPlanes: NULL
|
initWithBitmapDataPlanes: NULL
|
||||||
pixelsWide: image.GetWidth()
|
pixelsWide: image.GetWidth()
|
||||||
pixelsHigh: image.GetHeight()
|
pixelsHigh: image.GetHeight()
|
||||||
@@ -493,7 +499,7 @@ bool wxBitmap::CreateFromImage(const wxImage& image, int depth)
|
|||||||
isPlanar: NO
|
isPlanar: NO
|
||||||
colorSpaceName: NSCalibratedRGBColorSpace
|
colorSpaceName: NSCalibratedRGBColorSpace
|
||||||
bytesPerRow: image.GetWidth()*3
|
bytesPerRow: image.GetWidth()*3
|
||||||
bitsPerPixel: 0];
|
bitsPerPixel: 0] autorelease];
|
||||||
|
|
||||||
// TODO: Specify bytesPerRow:0 and then use [bitmapImage bytesPerRow]
|
// TODO: Specify bytesPerRow:0 and then use [bitmapImage bytesPerRow]
|
||||||
// so that the rows are aligned suitably for altivec by the OS (Tiger)
|
// so that the rows are aligned suitably for altivec by the OS (Tiger)
|
||||||
@@ -504,7 +510,7 @@ bool wxBitmap::CreateFromImage(const wxImage& image, int depth)
|
|||||||
M_BITMAPDATA->m_ok = true;
|
M_BITMAPDATA->m_ok = true;
|
||||||
M_BITMAPDATA->m_numColors = 0;
|
M_BITMAPDATA->m_numColors = 0;
|
||||||
M_BITMAPDATA->m_quality = 0;
|
M_BITMAPDATA->m_quality = 0;
|
||||||
M_BITMAPDATA->m_cocoaNSBitmapImageRep = bitmapImage;
|
M_BITMAPDATA->m_cocoaNSBitmapImageRep = wxGCSafeRetain(bitmapImage);
|
||||||
M_BITMAPDATA->m_bitmapMask = new wxMask(*this,wxColour(image.GetMaskRed(),image.GetMaskGreen(),image.GetMaskBlue()));
|
M_BITMAPDATA->m_bitmapMask = new wxMask(*this,wxColour(image.GetMaskRed(),image.GetMaskGreen(),image.GetMaskBlue()));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -583,13 +589,13 @@ wxMask::wxMask(const wxBitmap& bitmap)
|
|||||||
// Copy constructor
|
// Copy constructor
|
||||||
wxMask::wxMask(const wxMask& src)
|
wxMask::wxMask(const wxMask& src)
|
||||||
: wxObject(src)
|
: wxObject(src)
|
||||||
, m_cocoaNSBitmapImageRep([src.m_cocoaNSBitmapImageRep retain])
|
, m_cocoaNSBitmapImageRep(wxGCSafeRetain(src.m_cocoaNSBitmapImageRep))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
wxMask::~wxMask()
|
wxMask::~wxMask()
|
||||||
{
|
{
|
||||||
[m_cocoaNSBitmapImageRep release];
|
wxGCSafeRelease(m_cocoaNSBitmapImageRep);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a mask from a mono bitmap (copies the bitmap).
|
// Create a mask from a mono bitmap (copies the bitmap).
|
||||||
@@ -724,6 +730,6 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
|
|||||||
{ wxCHECK_MSG(false,false,wxT("Unimplemented pixel format")); }
|
{ wxCHECK_MSG(false,false,wxT("Unimplemented pixel format")); }
|
||||||
|
|
||||||
// maskRep was autoreleased in case we had to exit quickly
|
// maskRep was autoreleased in case we had to exit quickly
|
||||||
m_cocoaNSBitmapImageRep = [maskRep retain];
|
m_cocoaNSBitmapImageRep = wxGCSafeRetain(maskRep);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
#endif //WX_PRECOMP
|
#endif //WX_PRECOMP
|
||||||
|
|
||||||
#include "wx/cocoa/autorelease.h"
|
#include "wx/cocoa/autorelease.h"
|
||||||
|
#include "wx/cocoa/ObjcRef.h"
|
||||||
|
|
||||||
#import <AppKit/NSColor.h>
|
#import <AppKit/NSColor.h>
|
||||||
|
|
||||||
@@ -38,7 +39,7 @@ wxColour::wxColour (const wxColour& col)
|
|||||||
, m_blue(col.m_blue)
|
, m_blue(col.m_blue)
|
||||||
, m_alpha(col.m_alpha)
|
, m_alpha(col.m_alpha)
|
||||||
{
|
{
|
||||||
[m_cocoaNSColor retain];
|
wxGCSafeRetain(m_cocoaNSColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
wxColour::wxColour( WX_NSColor aColor )
|
wxColour::wxColour( WX_NSColor aColor )
|
||||||
@@ -49,18 +50,17 @@ wxColour::wxColour( WX_NSColor aColor )
|
|||||||
|
|
||||||
wxColour& wxColour::operator =(const wxColour& col)
|
wxColour& wxColour::operator =(const wxColour& col)
|
||||||
{
|
{
|
||||||
m_cocoaNSColor = col.m_cocoaNSColor;
|
m_cocoaNSColor = wxGCSafeRetain(col.m_cocoaNSColor);
|
||||||
m_red = col.m_red;
|
m_red = col.m_red;
|
||||||
m_green = col.m_green;
|
m_green = col.m_green;
|
||||||
m_blue = col.m_blue;
|
m_blue = col.m_blue;
|
||||||
m_alpha = col.m_alpha;
|
m_alpha = col.m_alpha;
|
||||||
[m_cocoaNSColor retain];
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxColour::~wxColour ()
|
wxColour::~wxColour ()
|
||||||
{
|
{
|
||||||
[m_cocoaNSColor release];
|
wxGCSafeRelease(m_cocoaNSColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxColour::InitRGBA(unsigned char r,
|
void wxColour::InitRGBA(unsigned char r,
|
||||||
@@ -69,8 +69,8 @@ void wxColour::InitRGBA(unsigned char r,
|
|||||||
unsigned char a)
|
unsigned char a)
|
||||||
{
|
{
|
||||||
wxAutoNSAutoreleasePool pool;
|
wxAutoNSAutoreleasePool pool;
|
||||||
[m_cocoaNSColor release];
|
wxGCSafeRelease(m_cocoaNSColor);
|
||||||
m_cocoaNSColor = [[NSColor colorWithCalibratedRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a/255.0] retain];
|
m_cocoaNSColor = wxGCSafeRetain([NSColor colorWithCalibratedRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a/255.0]);
|
||||||
m_red = r;
|
m_red = r;
|
||||||
m_green = g;
|
m_green = g;
|
||||||
m_blue = b;
|
m_blue = b;
|
||||||
@@ -79,8 +79,8 @@ void wxColour::InitRGBA(unsigned char r,
|
|||||||
|
|
||||||
void wxColour::Set( WX_NSColor aColor )
|
void wxColour::Set( WX_NSColor aColor )
|
||||||
{
|
{
|
||||||
[aColor retain];
|
wxGCSafeRetain(aColor);
|
||||||
[m_cocoaNSColor release];
|
wxGCSafeRelease(m_cocoaNSColor);
|
||||||
m_cocoaNSColor = aColor;
|
m_cocoaNSColor = aColor;
|
||||||
|
|
||||||
/* Make a temporary color in RGB format and get the values. Note that
|
/* Make a temporary color in RGB format and get the values. Note that
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "wx/cocoa/autorelease.h"
|
#include "wx/cocoa/autorelease.h"
|
||||||
#include "wx/cocoa/string.h"
|
#include "wx/cocoa/string.h"
|
||||||
|
#include "wx/cocoa/ObjcRef.h"
|
||||||
|
|
||||||
#import <AppKit/NSBezierPath.h>
|
#import <AppKit/NSBezierPath.h>
|
||||||
#import <AppKit/NSTextStorage.h>
|
#import <AppKit/NSTextStorage.h>
|
||||||
@@ -74,11 +75,16 @@ inline void CocoaSetPenForNSBezierPath(wxPen &pen, NSBezierPath *bezpath)
|
|||||||
|
|
||||||
void wxDC::CocoaInitializeTextSystem()
|
void wxDC::CocoaInitializeTextSystem()
|
||||||
{
|
{
|
||||||
|
wxAutoNSAutoreleasePool pool;
|
||||||
|
|
||||||
wxASSERT_MSG(!sm_cocoaNSTextStorage && !sm_cocoaNSLayoutManager && !sm_cocoaNSTextContainer,wxT("Text system already initalized! BAD PROGRAMMER!"));
|
wxASSERT_MSG(!sm_cocoaNSTextStorage && !sm_cocoaNSLayoutManager && !sm_cocoaNSTextContainer,wxT("Text system already initalized! BAD PROGRAMMER!"));
|
||||||
|
|
||||||
sm_cocoaNSTextStorage = [[NSTextStorage alloc] init];
|
// FIXME: Never released
|
||||||
|
sm_cocoaNSTextStorage = wxGCSafeRetain([[[NSTextStorage alloc] init] autorelease]);
|
||||||
|
|
||||||
|
// FIXME: Never released
|
||||||
|
sm_cocoaNSLayoutManager = wxGCSafeRetain([[[NSLayoutManager alloc] init] autorelease]);
|
||||||
|
|
||||||
sm_cocoaNSLayoutManager = [[NSLayoutManager alloc] init];
|
|
||||||
[sm_cocoaNSTextStorage addLayoutManager:sm_cocoaNSLayoutManager];
|
[sm_cocoaNSTextStorage addLayoutManager:sm_cocoaNSLayoutManager];
|
||||||
// NSTextStorage retains NSLayoutManager, but so do we
|
// NSTextStorage retains NSLayoutManager, but so do we
|
||||||
// [sm_cocoaNSLayoutManager release]; [sm_cocoaNSLayoutManager retain];
|
// [sm_cocoaNSLayoutManager release]; [sm_cocoaNSLayoutManager retain];
|
||||||
@@ -86,7 +92,8 @@ void wxDC::CocoaInitializeTextSystem()
|
|||||||
// NOTE: initWithContainerSize is the designated initializer, but the
|
// NOTE: initWithContainerSize is the designated initializer, but the
|
||||||
// Apple CircleView sample gets away with just calling init, which
|
// Apple CircleView sample gets away with just calling init, which
|
||||||
// is all we really need for our purposes.
|
// is all we really need for our purposes.
|
||||||
sm_cocoaNSTextContainer = [[NSTextContainer alloc] init];
|
// FIXME: Never released
|
||||||
|
sm_cocoaNSTextContainer = wxGCSafeRetain([[[NSTextContainer alloc] init] autorelease]);
|
||||||
[sm_cocoaNSLayoutManager addTextContainer:sm_cocoaNSTextContainer];
|
[sm_cocoaNSLayoutManager addTextContainer:sm_cocoaNSTextContainer];
|
||||||
// NSLayoutManager retains NSTextContainer, but so do we
|
// NSLayoutManager retains NSTextContainer, but so do we
|
||||||
// [sm_cocoaNSTextContainer release]; [sm_cocoaNSTextContainer retain];
|
// [sm_cocoaNSTextContainer release]; [sm_cocoaNSTextContainer retain];
|
||||||
|
@@ -17,6 +17,8 @@
|
|||||||
#include "wx/colour.h"
|
#include "wx/colour.h"
|
||||||
#endif //WX_PRECOMP
|
#endif //WX_PRECOMP
|
||||||
|
|
||||||
|
#include "wx/cocoa/ObjcRef.h"
|
||||||
|
|
||||||
#import <AppKit/NSColor.h>
|
#import <AppKit/NSColor.h>
|
||||||
|
|
||||||
// ========================================================================
|
// ========================================================================
|
||||||
@@ -131,13 +133,13 @@ inline wxPenRefData::wxPenRefData(const wxPenRefData& data)
|
|||||||
m_nbDash = data.m_nbDash;
|
m_nbDash = data.m_nbDash;
|
||||||
m_dash = data.m_dash;
|
m_dash = data.m_dash;
|
||||||
m_stipple = data.m_stipple;
|
m_stipple = data.m_stipple;
|
||||||
m_cocoaNSColor = [data.m_cocoaNSColor retain];
|
m_cocoaNSColor = wxGCSafeRetain(data.m_cocoaNSColor);
|
||||||
m_cocoaDash = NULL;
|
m_cocoaDash = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void wxPenRefData::FreeCocoaNSColor()
|
inline void wxPenRefData::FreeCocoaNSColor()
|
||||||
{
|
{
|
||||||
[m_cocoaNSColor release];
|
wxGCSafeRelease(m_cocoaNSColor);
|
||||||
m_cocoaNSColor = nil;
|
m_cocoaNSColor = nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,7 +156,7 @@ inline WX_NSColor wxPenRefData::GetNSColor()
|
|||||||
switch( m_style )
|
switch( m_style )
|
||||||
{
|
{
|
||||||
case wxTRANSPARENT:
|
case wxTRANSPARENT:
|
||||||
m_cocoaNSColor = [[NSColor clearColor] retain];
|
m_cocoaNSColor = wxGCSafeRetain([NSColor clearColor]);
|
||||||
break;
|
break;
|
||||||
case wxSTIPPLE:
|
case wxSTIPPLE:
|
||||||
// wxBitmap isn't implemented yet
|
// wxBitmap isn't implemented yet
|
||||||
@@ -179,6 +181,7 @@ inline WX_NSColor wxPenRefData::GetNSColor()
|
|||||||
if(!colour_NSColor)
|
if(!colour_NSColor)
|
||||||
colour_NSColor = [NSColor clearColor];
|
colour_NSColor = [NSColor clearColor];
|
||||||
m_cocoaNSColor = [colour_NSColor copyWithZone:nil];
|
m_cocoaNSColor = [colour_NSColor copyWithZone:nil];
|
||||||
|
[wxGCSafeRetain(m_cocoaNSColor) release]; // retain in GC. no change in RR.
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -32,6 +32,7 @@
|
|||||||
|
|
||||||
#include "wx/cocoa/autorelease.h"
|
#include "wx/cocoa/autorelease.h"
|
||||||
#include "wx/cocoa/string.h"
|
#include "wx/cocoa/string.h"
|
||||||
|
#include "wx/cocoa/ObjcRef.h"
|
||||||
|
|
||||||
#include "wx/cocoa/objc/NSView.h"
|
#include "wx/cocoa/objc/NSView.h"
|
||||||
#include "wx/cocoa/objc/NSWindow.h"
|
#include "wx/cocoa/objc/NSWindow.h"
|
||||||
@@ -190,8 +191,8 @@ void wxTopLevelWindowCocoa::SetNSWindow(WX_NSWindow cocoaNSWindow)
|
|||||||
bool need_debug = cocoaNSWindow || m_cocoaNSWindow;
|
bool need_debug = cocoaNSWindow || m_cocoaNSWindow;
|
||||||
if(need_debug) wxLogTrace(wxTRACE_COCOA_RetainRelease,wxT("wxTopLevelWindowCocoa=%p::SetNSWindow [m_cocoaNSWindow=%p retainCount]=%d"),this,m_cocoaNSWindow,[m_cocoaNSWindow retainCount]);
|
if(need_debug) wxLogTrace(wxTRACE_COCOA_RetainRelease,wxT("wxTopLevelWindowCocoa=%p::SetNSWindow [m_cocoaNSWindow=%p retainCount]=%d"),this,m_cocoaNSWindow,[m_cocoaNSWindow retainCount]);
|
||||||
DisassociateNSWindow(m_cocoaNSWindow);
|
DisassociateNSWindow(m_cocoaNSWindow);
|
||||||
[cocoaNSWindow retain];
|
wxGCSafeRetain(cocoaNSWindow);
|
||||||
[m_cocoaNSWindow release];
|
wxGCSafeRelease(m_cocoaNSWindow);
|
||||||
m_cocoaNSWindow = cocoaNSWindow;
|
m_cocoaNSWindow = cocoaNSWindow;
|
||||||
// NOTE: We are no longer using posing so we won't get events on the
|
// NOTE: We are no longer using posing so we won't get events on the
|
||||||
// window's view unless it was explicitly created as the wx view class.
|
// window's view unless it was explicitly created as the wx view class.
|
||||||
|
@@ -24,6 +24,7 @@
|
|||||||
#include "wx/cocoa/string.h"
|
#include "wx/cocoa/string.h"
|
||||||
#include "wx/cocoa/trackingrectmanager.h"
|
#include "wx/cocoa/trackingrectmanager.h"
|
||||||
#include "wx/mac/corefoundation/cfref.h"
|
#include "wx/mac/corefoundation/cfref.h"
|
||||||
|
#include "wx/cocoa/ObjcRef.h"
|
||||||
|
|
||||||
#import <Foundation/NSArray.h>
|
#import <Foundation/NSArray.h>
|
||||||
#import <Foundation/NSRunLoop.h>
|
#import <Foundation/NSRunLoop.h>
|
||||||
@@ -1116,8 +1117,8 @@ void wxWindowCocoa::SetNSView(WX_NSView cocoaNSView)
|
|||||||
bool need_debug = cocoaNSView || m_cocoaNSView;
|
bool need_debug = cocoaNSView || m_cocoaNSView;
|
||||||
if(need_debug) wxLogTrace(wxTRACE_COCOA_RetainRelease,wxT("wxWindowCocoa=%p::SetNSView [m_cocoaNSView=%p retainCount]=%d"),this,m_cocoaNSView,[m_cocoaNSView retainCount]);
|
if(need_debug) wxLogTrace(wxTRACE_COCOA_RetainRelease,wxT("wxWindowCocoa=%p::SetNSView [m_cocoaNSView=%p retainCount]=%d"),this,m_cocoaNSView,[m_cocoaNSView retainCount]);
|
||||||
DisassociateNSView(m_cocoaNSView);
|
DisassociateNSView(m_cocoaNSView);
|
||||||
[cocoaNSView retain];
|
wxGCSafeRetain(cocoaNSView);
|
||||||
[m_cocoaNSView release];
|
wxGCSafeRelease(m_cocoaNSView);
|
||||||
m_cocoaNSView = cocoaNSView;
|
m_cocoaNSView = cocoaNSView;
|
||||||
AssociateNSView(m_cocoaNSView);
|
AssociateNSView(m_cocoaNSView);
|
||||||
if(need_debug) wxLogTrace(wxTRACE_COCOA_RetainRelease,wxT("wxWindowCocoa=%p::SetNSView [cocoaNSView=%p retainCount]=%d"),this,cocoaNSView,[cocoaNSView retainCount]);
|
if(need_debug) wxLogTrace(wxTRACE_COCOA_RetainRelease,wxT("wxWindowCocoa=%p::SetNSView [cocoaNSView=%p retainCount]=%d"),this,cocoaNSView,[cocoaNSView retainCount]);
|
||||||
|
Reference in New Issue
Block a user