]> git.saurik.com Git - wxWidgets.git/commitdiff
solving osx problems (default inlines-hidden) by explicitely exporting the involved...
authorStefan Csomor <csomor@advancedconcepts.ch>
Thu, 11 Sep 2008 06:46:23 +0000 (06:46 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Thu, 11 Sep 2008 06:46:23 +0000 (06:46 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55540 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/string.h
include/wx/thread.h
src/common/string.cpp
src/unix/threadpsx.cpp

index 393a190bbd4070e32841ef579b44fd419b21f043..99970070b0796a32f9bc337c17d5a023b38f1a3f 100644 (file)
@@ -607,13 +607,13 @@ private:
   // enough) -- luckily we don't need it then neither as static __thread
   // variables are initialized by 0 anyhow then and so we can use the variable
   // directly
-  static Cache& GetCache()
+  WXEXPORT static Cache& GetCache()
   {
       static wxTLS_TYPE(Cache) s_cache;
 
       return wxTLS_VALUE(s_cache);
   }
-
+  
   // this helper struct is used to ensure that GetCache() is called during
   // static initialization time, i.e. before any threads creation, as otherwise
   // the static s_cache construction inside GetCache() wouldn't be MT-safe
@@ -671,11 +671,15 @@ private:
       // profiling seems to show a small but consistent gain if we use this
       // simple loop instead of starting from the last used element (there are
       // a lot of misses in this function...)
-      // during destruction tls calls may return NULL, thus return NULL 
-      // immediately
-      if ( GetCacheBegin() == NULL )
+      Cache::Element * const cacheBegin = GetCacheBegin();
+ #if !wxHAS_COMPILER_TLS
+      // during destruction tls calls may return NULL, in this case return NULL 
+      // immediately without accessing anything else
+      if ( cacheBegin == NULL )
         return NULL;
-      for ( Cache::Element *c = GetCacheBegin(); c != GetCacheEnd(); c++ )
+#endif
+      Cache::Element * const cacheEnd = GetCacheEnd();
+      for ( Cache::Element *c = cacheBegin; c != cacheEnd; c++ )
       {
           if ( c->str == this )
               return c;
index 82ac361270c35bd169e15d14c50cebeef42b04fd..a8346d20e096842ca2d420e9504d3b317e9fb688 100644 (file)
@@ -207,11 +207,7 @@ private:
 #if !defined(__WXMSW__)
     #define wxCRITSECT_IS_MUTEX 1
 
-#ifdef __WXMAC__
-    #define wxCRITSECT_INLINE
-#else
-    #define wxCRITSECT_INLINE inline
-#endif
+    #define wxCRITSECT_INLINE WXEXPORT inline
 #else // MSW
     #define wxCRITSECT_IS_MUTEX 0
 
@@ -273,7 +269,7 @@ private:
     DECLARE_NO_COPY_CLASS(wxCriticalSection)
 };
 
-#if wxCRITSECT_IS_MUTEX && !defined(__WXMAC__)
+#if wxCRITSECT_IS_MUTEX
     // implement wxCriticalSection using mutexes
     inline wxCriticalSection::wxCriticalSection( wxCriticalSectionType critSecType ) 
        : m_mutex( critSecType == wxCRITSEC_DEFAULT ? wxMUTEX_RECURSIVE : wxMUTEX_DEFAULT )  { }
index 13804f221148e1e46d46945077e0b1ff5aa38d8e..bb5029fcf486eeb498a84a7a4567b682630bc27d 100644 (file)
@@ -76,6 +76,15 @@ struct wxStrCacheInitializer
     }
 };
 
+/*
+wxString::Cache& wxString::GetCache()
+{
+    static wxTLS_TYPE(Cache) s_cache;
+
+    return wxTLS_VALUE(s_cache);
+}
+*/
+
 static wxStrCacheInitializer gs_stringCacheInit;
 
 #endif // wxHAS_COMPILER_TLS/!wxHAS_COMPILER_TLS
index 99f497e9f8243a0b7fb38e5167423da4b68c531f..692be7d169bc96e1179749c0fc86f7b9268fd0fe 100644 (file)
     #define THR_ID(thr) ((long)(thr)->GetId())
 #endif
 
-#ifdef __WXMAC__
-
-    // implement wxCriticalSection using mutexes
-wxCriticalSection::wxCriticalSection( wxCriticalSectionType critSecType )
-       : m_mutex( critSecType == wxCRITSEC_DEFAULT ? wxMUTEX_RECURSIVE : wxMUTEX_DEFAULT )  { }
-wxCriticalSection::~wxCriticalSection() { }
-
-void wxCriticalSection::Enter() { (void)m_mutex.Lock(); }
-void wxCriticalSection::Leave() { (void)m_mutex.Unlock(); }
-
-#endif
 // ----------------------------------------------------------------------------
 // constants
 // ----------------------------------------------------------------------------