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:
@@ -146,6 +146,7 @@ wxDC::wxDC(void)
|
|||||||
|
|
||||||
wxDC::~wxDC(void)
|
wxDC::~wxDC(void)
|
||||||
{
|
{
|
||||||
|
[m_cocoaWxToBoundsTransform release];
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxDC::CocoaLockFocus()
|
bool wxDC::CocoaLockFocus()
|
||||||
|
@@ -70,7 +70,10 @@ bool wxWindowDC::CocoaUnlockFocusOnNSView()
|
|||||||
bool wxWindowDC::CocoaLockFocus()
|
bool wxWindowDC::CocoaLockFocus()
|
||||||
{
|
{
|
||||||
wxLogTrace(wxTRACE_COCOA,wxT("Locking focus on wxWindowDC=%p, NSView=%p"),this, m_window->GetNonClientNSView());
|
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());
|
return CocoaLockFocusOnNSView(m_window->GetNonClientNSView());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -113,7 +116,10 @@ wxClientDC::~wxClientDC(void)
|
|||||||
bool wxClientDC::CocoaLockFocus()
|
bool wxClientDC::CocoaLockFocus()
|
||||||
{
|
{
|
||||||
wxLogTrace(wxTRACE_COCOA,wxT("Locking focus on wxClientDC=%p, NSView=%p"),this, m_window->GetNSView());
|
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());
|
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"));
|
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);
|
sm_cocoaDCStack.Insert(this);
|
||||||
m_lockedNSView = window->GetNSView();
|
m_lockedNSView = window->GetNSView();
|
||||||
m_cocoaWxToBoundsTransform = window->CocoaGetWxToBoundsTransform();
|
NSAffineTransform *newTransform = window->CocoaGetWxToBoundsTransform();
|
||||||
|
[newTransform retain];
|
||||||
|
[m_cocoaWxToBoundsTransform release];
|
||||||
|
m_cocoaWxToBoundsTransform = newTransform;
|
||||||
CocoaApplyTransformations();
|
CocoaApplyTransformations();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -53,7 +53,10 @@ bool wxMemoryDC::CocoaLockFocus()
|
|||||||
{
|
{
|
||||||
[m_cocoaNSImage lockFocus];
|
[m_cocoaNSImage lockFocus];
|
||||||
sm_cocoaDCStack.Insert(this);
|
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();
|
CocoaApplyTransformations();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user