X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b5c702530ee772946d878a15c63ae264299bb6eb..372208c2e650c4f41f7607d024b57718ed61ba59:/src/common/memory.cpp diff --git a/src/common/memory.cpp b/src/common/memory.cpp index bfd1e61d41..29b31bdfeb 100644 --- a/src/common/memory.cpp +++ b/src/common/memory.cpp @@ -5,11 +5,11 @@ // Modified by: // Created: 04/01/98 // RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Copyright: (c) Julian Smart +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "memory.h" #endif @@ -26,13 +26,14 @@ #if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) // #pragma implementation #endif #ifndef WX_PRECOMP #include "wx/utils.h" #include "wx/app.h" +#include "wx/hash.h" #endif #if wxUSE_THREADS @@ -44,15 +45,6 @@ #include "wx/ioswrap.h" -// Obsolete -#if 0 -#if wxUSE_IOSTREAMH - #include -#else - #include -#endif -#endif - #if !defined(__WATCOMC__) && !(defined(__VMS__) && ( __VMS_VER < 70000000 ) )\ && !defined( __MWERKS__ ) && !defined(__SALFORDC__) #include @@ -62,7 +54,7 @@ #include #ifdef __WXMSW__ -#include +#include "wx/msw/wrapwin.h" #ifdef GetClassInfo #undef GetClassInfo @@ -76,6 +68,13 @@ #include "wx/memory.h" +#if wxUSE_THREADS && defined(__WXDEBUG__) && !defined(__WXMAC__) +#define USE_THREADSAFE_MEMORY_ALLOCATION 1 +#else +#define USE_THREADSAFE_MEMORY_ALLOCATION 0 +#endif + + #ifdef new #undef new #endif @@ -351,7 +350,7 @@ void wxMemStruct::PrintNode () } else { - wxString msg(""); + wxString msg(wxT("")); if (m_fileName) msg.Printf(wxT("%s(%d): "), m_fileName, (int)m_lineNum); @@ -389,7 +388,7 @@ void wxMemStruct::Dump () else msg += wxT("unknown object class"); - wxString msg2(""); + wxString msg2(wxT("")); msg2.Printf(wxT(" at $%lX, size %d"), (long)GetActualData(), (int)RequestSize()); msg += msg2; @@ -401,7 +400,7 @@ void wxMemStruct::Dump () if (m_fileName) msg.Printf(wxT("%s(%d): "), m_fileName, (int)m_lineNum); - wxString msg2(""); + wxString msg2(wxT("")); msg2.Printf(wxT("non-object data at $%lX, size %d"), (long)GetActualData(), (int)RequestSize() ); msg += msg2; wxLogMessage(msg); @@ -609,7 +608,7 @@ bool wxDebugContext::Dump(void) #ifdef __WXDEBUG__ { wxChar* appName = (wxChar*) wxT("application"); - wxString appNameStr(""); + wxString appNameStr(wxT("")); if (wxTheApp) { appNameStr = wxTheApp->GetAppName(); @@ -621,7 +620,7 @@ bool wxDebugContext::Dump(void) wxLogMessage( wxT("----- Memory dump -----") ); } } - + TraverseList ((PmSFV)&wxMemStruct::Dump, (checkPoint ? checkPoint->m_next : (wxMemStruct*)NULL)); wxLogMessage( wxT("") ); @@ -769,14 +768,14 @@ bool wxDebugContext::PrintClasses(void) } int n = 0; - wxNode *node; + wxHashTable::compatibility_iterator node; wxClassInfo *info; wxClassInfo::sm_classTable->BeginFind(); node = wxClassInfo::sm_classTable->Next(); while (node) { - info = (wxClassInfo *)node->Data(); + info = (wxClassInfo *)node->GetData(); if (info->GetClassName()) { wxString msg(info->GetClassName()); @@ -859,14 +858,14 @@ int wxDebugContext::CountObjectsLeft(bool sinceCheckpoint) return n ; } -#if wxUSE_THREADS -static bool memSectionOk = false; +#if USE_THREADSAFE_MEMORY_ALLOCATION +static bool memSectionOk = FALSE; class MemoryCriticalSection : public wxCriticalSection { public: MemoryCriticalSection() { - memSectionOk = true; + memSectionOk = TRUE; } }; @@ -876,12 +875,12 @@ public: inline MemoryCriticalSectionLocker(wxCriticalSection& critsect) : m_critsect(critsect), m_locked(memSectionOk) { if(m_locked) m_critsect.Enter(); } inline ~MemoryCriticalSectionLocker() { if(m_locked) m_critsect.Leave(); } - + private: // no assignment operator nor copy ctor MemoryCriticalSectionLocker(const MemoryCriticalSectionLocker&); MemoryCriticalSectionLocker& operator=(const MemoryCriticalSectionLocker&); - + wxCriticalSection& m_critsect; bool m_locked; }; @@ -892,10 +891,10 @@ static MemoryCriticalSection memLocker; // TODO: store whether this is a vector or not. void * wxDebugAlloc(size_t size, wxChar * fileName, int lineNum, bool isObject, bool WXUNUSED(isVect) ) { -#if wxUSE_THREADS +#if USE_THREADSAFE_MEMORY_ALLOCATION MemoryCriticalSectionLocker lock(memLocker); #endif - + // If not in debugging allocation mode, do the normal thing // so we don't leave any trace of ourselves in the node list. @@ -952,10 +951,10 @@ void * wxDebugAlloc(size_t size, wxChar * fileName, int lineNum, bool isObject, // TODO: check whether was allocated as a vector void wxDebugFree(void * buf, bool WXUNUSED(isVect) ) { -#if wxUSE_THREADS +#if USE_THREADSAFE_MEMORY_ALLOCATION MemoryCriticalSectionLocker lock(memLocker); #endif - + if (!buf) return; @@ -1077,6 +1076,8 @@ void wxTraceLevel(int, const wxChar * ...) } #else // wxUSE_MEMORY_TRACING && defined(__WXDEBUG__) +// Already defined in memory.h +#if 0 void wxTrace(const char *WXUNUSED(fmt) ...) { } @@ -1085,4 +1086,5 @@ void wxTraceLevel(int WXUNUSED(level), const char *WXUNUSED(fmt) ...) { } #endif +#endif