X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e9576ca53db96b462ed4c0b4bdf47d64c40203e4..947ea04d016852aa293291069d5c91ce4c6dde60:/src/mac/carbon/dcmemory.cpp

diff --git a/src/mac/carbon/dcmemory.cpp b/src/mac/carbon/dcmemory.cpp
index 7cbd330821..a56c7b5c49 100644
--- a/src/mac/carbon/dcmemory.cpp
+++ b/src/mac/carbon/dcmemory.cpp
@@ -33,13 +33,41 @@ wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) )
 
 wxMemoryDC::~wxMemoryDC(void)
 {
+	if ( m_selected.Ok() )
+	{
+		wxBitmapRefData * bmap = (wxBitmapRefData*) (m_selected.GetRefData()) ;
+		UnlockPixels( GetGWorldPixMap(  (CGrafPtr) bmap->m_hBitmap ) ) ;
+	}
 };
 
 void wxMemoryDC::SelectObject( const wxBitmap& bitmap )
 {
+	if ( m_selected.Ok() )
+	{
+		wxBitmapRefData * bmap = (wxBitmapRefData*) (m_selected.GetRefData()) ;
+		UnlockPixels( GetGWorldPixMap(  (CGrafPtr) bmap->m_hBitmap ) ) ;
+	}
   m_selected = bitmap;
   if (m_selected.Ok())
   {
+		wxBitmapRefData * bmap = (wxBitmapRefData*) (m_selected.GetRefData()) ;
+		if ( bmap->m_hBitmap )
+		{
+			m_macPort = (GrafPtr) bmap->m_hBitmap ;
+			LockPixels( GetGWorldPixMap(  (CGrafPtr)  m_macPort ) ) ;
+			wxMask * mask = bitmap.GetMask() ;
+			if ( mask )
+			{
+				m_macMask = mask->GetMaskBitmap() ;
+			}
+			MacSetupPort() ;
+ 			m_ok = TRUE ;
+			// SetBackground(wxBrush(*wxWHITE, wxSOLID));
+ 		}
+ 		else
+ 		{
+	    m_ok = FALSE;
+ 		}
   }
   else
   {