]> git.saurik.com Git - wxWidgets.git/commitdiff
adding QDSwapPort for performance reasons
authorStefan Csomor <csomor@advancedconcepts.ch>
Fri, 2 Apr 2004 08:37:46 +0000 (08:37 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Fri, 2 Apr 2004 08:37:46 +0000 (08:37 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26578 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mac/carbon/dc.cpp
src/mac/carbon/tooltip.cpp
src/mac/carbon/window.cpp

index 49de162c0a83ef77537d4c9c2a98adc98faf880b..c0f44cf484935e73192e489b19d77a93c0c59292 100644 (file)
@@ -79,8 +79,7 @@ public :
     wxMacFastPortSetter( const wxDC *dc ) 
     {
            wxASSERT( dc->Ok() ) ;
-           GetPort( &m_oldPort ) ;
-           SetPort( (GrafPtr) dc->m_macPort ) ;
+           m_swapped = QDSwapPort( (GrafPtr) dc->m_macPort , &m_oldPort ) ;
            m_clipRgn = NewRgn() ;
            GetClip( m_clipRgn ) ;
            m_dc = dc ;
@@ -88,13 +87,15 @@ public :
     }
     ~wxMacFastPortSetter()
     {
-        SetPort( (GrafPtr) m_dc->m_macPort ) ;
+        // SetPort( (GrafPtr) m_dc->m_macPort ) ;
         SetClip( m_clipRgn ) ;
-           SetPort( m_oldPort ) ;
+        if ( m_swapped )
+               SetPort( m_oldPort ) ;
            m_dc->MacCleanupPort( NULL ) ;
            DisposeRgn( m_clipRgn ) ;
     }
 private :
+    bool m_swapped ;
     RgnHandle m_clipRgn ;
     GrafPtr m_oldPort ;
     const wxDC*   m_dc ;
index 934ef3e624f679aae62e014d1444ffa188327447..f2793110dda85fc98fc1ad92b9f480e2e2c9c4e6 100644 (file)
@@ -228,11 +228,11 @@ void wxMacToolTip::Draw()
         tag.version = kMacHelpVersion;
         SetRect( &tag.absHotRect , m_position.x - 2 , m_position.y - 2 , m_position.x + 2 , m_position.y + 2 ) ;
         GrafPtr port ;
-        GetPort( &port ) ;
-        SetPortWindowPort(m_window) ;
+        bool swapped = QDSwapPort( GetWindowPort( m_window ) , &port ) ;
         LocalToGlobal( (Point *) &tag.absHotRect.top );
         LocalToGlobal( (Point *) &tag.absHotRect.bottom );
-        SetPort( port );
+        if ( swapped )
+            SetPort( port );
         m_helpTextRef.Assign( m_label  , wxFONTENCODING_DEFAULT ) ;
         tag.content[kHMMinimumContentIndex].contentType = kHMCFStringContent ;
         tag.content[kHMMinimumContentIndex].u.tagCFString = m_helpTextRef ;
index f80f5edf71900b1cdffbd61f93e4ff9a4a0ee403..b42ab7d15ce96c8146664801c991b70a83ea75a2 100644 (file)
@@ -909,10 +909,10 @@ void wxWindowMac::MacGetPositionAndSizeFromControl(int& x, int& y,
     {
         Point tlworigin =  { 0 , 0  } ;
         GrafPtr port ;
-        ::GetPort( &port ) ;
-        ::SetPort( UMAGetWindowPort( (WindowRef) tlw->MacGetWindowRef() ) ) ;
+        bool swapped = QDSwapPort( UMAGetWindowPort( (WindowRef) tlw->MacGetWindowRef() ) , &port ) ;
         ::LocalToGlobal( &tlworigin ) ;
-        ::SetPort( port ) ;
+        if ( swapped )
+            ::SetPort( port ) ;
         x = tlworigin.h ;
         y = tlworigin.v ;    
     }