Don't depend on m_cocoaWxToBoundsTransform not being released until after

we're done with it; retain/release it appropriately.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31442 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Elliott
2005-01-18 03:47:33 +00:00
parent f48ab29b5c
commit 1a1e9ff1c3
3 changed files with 17 additions and 4 deletions

View File

@@ -146,6 +146,7 @@ wxDC::wxDC(void)
wxDC::~wxDC(void)
{
[m_cocoaWxToBoundsTransform release];
}
bool wxDC::CocoaLockFocus()

View File

@@ -70,7 +70,10 @@ bool wxWindowDC::CocoaUnlockFocusOnNSView()
bool wxWindowDC::CocoaLockFocus()
{
wxLogTrace(wxTRACE_COCOA,wxT("Locking focus on wxWindowDC=%p, NSView=%p"),this, m_window->GetNonClientNSView());
m_cocoaWxToBoundsTransform = CocoaGetWxToBoundsTransform([m_window->GetNonClientNSView() isFlipped], [m_window->GetNonClientNSView() bounds].size.height);
NSAffineTransform *newTransform = CocoaGetWxToBoundsTransform([m_window->GetNonClientNSView() isFlipped], [m_window->GetNonClientNSView() bounds].size.height);
[newTransform retain];
[m_cocoaWxToBoundsTransform release];
m_cocoaWxToBoundsTransform = newTransform;
return CocoaLockFocusOnNSView(m_window->GetNonClientNSView());
}
@@ -113,7 +116,10 @@ wxClientDC::~wxClientDC(void)
bool wxClientDC::CocoaLockFocus()
{
wxLogTrace(wxTRACE_COCOA,wxT("Locking focus on wxClientDC=%p, NSView=%p"),this, m_window->GetNSView());
m_cocoaWxToBoundsTransform = m_window->CocoaGetWxToBoundsTransform();
NSAffineTransform *newTransform = m_window->CocoaGetWxToBoundsTransform();
[newTransform retain];
[m_cocoaWxToBoundsTransform release];
m_cocoaWxToBoundsTransform = newTransform;
return CocoaLockFocusOnNSView(m_window->GetNSView());
}
@@ -138,7 +144,10 @@ wxPaintDC::wxPaintDC( wxWindow *window )
wxASSERT_MSG([NSView focusView]==window->GetNSView(), wxT("PaintDC's NSView does not have focus. Please use wxPaintDC only as the first DC created in a paint handler"));
sm_cocoaDCStack.Insert(this);
m_lockedNSView = window->GetNSView();
m_cocoaWxToBoundsTransform = window->CocoaGetWxToBoundsTransform();
NSAffineTransform *newTransform = window->CocoaGetWxToBoundsTransform();
[newTransform retain];
[m_cocoaWxToBoundsTransform release];
m_cocoaWxToBoundsTransform = newTransform;
CocoaApplyTransformations();
};

View File

@@ -53,7 +53,10 @@ bool wxMemoryDC::CocoaLockFocus()
{
[m_cocoaNSImage lockFocus];
sm_cocoaDCStack.Insert(this);
m_cocoaWxToBoundsTransform = CocoaGetWxToBoundsTransform([m_cocoaNSImage isFlipped], [m_cocoaNSImage size].height);
NSAffineTransform *newTransform = CocoaGetWxToBoundsTransform([m_cocoaNSImage isFlipped], [m_cocoaNSImage size].height);
[newTransform retain];
[m_cocoaWxToBoundsTransform release];
m_cocoaWxToBoundsTransform = newTransform;
CocoaApplyTransformations();
return true;
}