wxLog fix as for wxMSW

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1804 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
1999-02-26 20:56:54 +00:00
parent 5a99f84afe
commit 60acb9473f
2 changed files with 138 additions and 124 deletions

View File

@@ -137,12 +137,12 @@ extern void wxFlushResources(void);
// global functions // global functions
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void wxExit(void) void wxExit()
{ {
gtk_main_quit(); gtk_main_quit();
} }
bool wxYield(void) bool wxYield()
{ {
while (gtk_events_pending() > 0) gtk_main_iteration(); while (gtk_events_pending() > 0) gtk_main_iteration();
return TRUE; return TRUE;
@@ -183,7 +183,7 @@ wxApp::wxApp()
m_colorCube = (unsigned char*) NULL; m_colorCube = (unsigned char*) NULL;
} }
wxApp::~wxApp(void) wxApp::~wxApp()
{ {
gtk_idle_remove( m_idleTag ); gtk_idle_remove( m_idleTag );
@@ -259,7 +259,7 @@ bool wxApp::OnInitGui()
return TRUE; return TRUE;
} }
bool wxApp::ProcessIdle(void) bool wxApp::ProcessIdle()
{ {
wxIdleEvent event; wxIdleEvent event;
event.SetEventObject( this ); event.SetEventObject( this );
@@ -295,7 +295,7 @@ void wxApp::OnIdle( wxIdleEvent &event )
inOnIdle = FALSE; inOnIdle = FALSE;
} }
bool wxApp::SendIdleEvents(void) bool wxApp::SendIdleEvents()
{ {
bool needMore = FALSE; bool needMore = FALSE;
@@ -336,32 +336,32 @@ bool wxApp::SendIdleEvents( wxWindow* win )
return needMore ; return needMore ;
} }
int wxApp::MainLoop(void) int wxApp::MainLoop()
{ {
gtk_main(); gtk_main();
return 0; return 0;
} }
void wxApp::ExitMainLoop(void) void wxApp::ExitMainLoop()
{ {
gtk_main_quit(); gtk_main_quit();
} }
bool wxApp::Initialized(void) bool wxApp::Initialized()
{ {
return m_initialized; return m_initialized;
} }
bool wxApp::Pending(void) bool wxApp::Pending()
{ {
return FALSE; return FALSE;
} }
void wxApp::Dispatch(void) void wxApp::Dispatch()
{ {
} }
void wxApp::DeletePendingObjects(void) void wxApp::DeletePendingObjects()
{ {
wxNode *node = wxPendingDelete.First(); wxNode *node = wxPendingDelete.First();
while (node) while (node)
@@ -377,7 +377,7 @@ void wxApp::DeletePendingObjects(void)
} }
} }
wxWindow *wxApp::GetTopWindow(void) wxWindow *wxApp::GetTopWindow()
{ {
if (m_topWindow) return m_topWindow; if (m_topWindow) return m_topWindow;
wxNode *node = wxTopLevelWindows.First(); wxNode *node = wxTopLevelWindows.First();
@@ -390,7 +390,7 @@ void wxApp::SetTopWindow( wxWindow *win )
m_topWindow = win; m_topWindow = win;
} }
bool wxApp::Initialize(void) bool wxApp::Initialize()
{ {
wxBuffer = new char[BUFSIZ + 512]; wxBuffer = new char[BUFSIZ + 512];
@@ -426,20 +426,22 @@ bool wxApp::Initialize(void)
return TRUE; return TRUE;
} }
void wxApp::CleanUp(void) void wxApp::CleanUp()
{ {
wxModule::CleanUpModules(); wxModule::CleanUpModules();
#if wxUSE_WX_RESOURCES #if wxUSE_WX_RESOURCES
wxFlushResources(); wxFlushResources();
if (wxTheResourceCache) delete wxTheResourceCache; if (wxTheResourceCache)
delete wxTheResourceCache;
wxTheResourceCache = (wxResourceCache*) NULL; wxTheResourceCache = (wxResourceCache*) NULL;
wxCleanUpResourceSystem(); wxCleanUpResourceSystem();
#endif #endif
if (wxTheColourDatabase) delete wxTheColourDatabase; if (wxTheColourDatabase)
delete wxTheColourDatabase;
wxTheColourDatabase = (wxColourDatabase*) NULL; wxTheColourDatabase = (wxColourDatabase*) NULL;
/* /*
@@ -462,7 +464,7 @@ void wxApp::CleanUp(void)
wxClassInfo::CleanUpClasses(); wxClassInfo::CleanUpClasses();
/* check for memory leaks */ // check for memory leaks
#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT #if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT
if (wxDebugContext::CountObjectsLeft() > 0) if (wxDebugContext::CountObjectsLeft() > 0)
{ {
@@ -472,11 +474,12 @@ void wxApp::CleanUp(void)
} }
#endif #endif
/* do this as the very last thing because everything else can log messages */ // do this as the very last thing because everything else can log messages
wxLog::DontCreateOnDemand(); wxLog::DontCreateOnDemand();
wxLog *oldLog = wxLog::SetActiveTarget( (wxLog*) NULL ); wxLog *oldLog = wxLog::SetActiveTarget( (wxLog*) NULL );
if (oldLog) delete oldLog; if (oldLog)
delete oldLog;
} }
wxLog *wxApp::CreateLogTarget() wxLog *wxApp::CreateLogTarget()
@@ -494,15 +497,13 @@ int wxEntry( int argc, char *argv[] )
gtk_init( &argc, &argv ); gtk_init( &argc, &argv );
if (!wxApp::Initialize()) return 0; if (!wxApp::Initialize())
return -1;
if (!wxTheApp) if (!wxTheApp)
{ {
if (!wxApp::GetInitializerFunction()) wxCHECK_MSG( wxApp::GetInitializerFunction(), -1,
{ "wxWindows error: No initializer - use IMPLEMENT_APP macro.\n" );
printf( "wxWindows error: No initializer - use IMPLEMENT_APP macro.\n" );
return 0;
}
wxAppInitializerFunction app_ini = wxApp::GetInitializerFunction(); wxAppInitializerFunction app_ini = wxApp::GetInitializerFunction();
@@ -511,11 +512,7 @@ int wxEntry( int argc, char *argv[] )
wxTheApp = (wxApp*) test_app; wxTheApp = (wxApp*) test_app;
} }
if (!wxTheApp) wxCHECK_MSG( wxTheApp, -1, "wxWindows error: no application object" );
{
printf( "wxWindows error: wxTheApp == NULL\n" );
return 0;
}
wxTheApp->argc = argc; wxTheApp->argc = argc;
wxTheApp->argv = argv; wxTheApp->argv = argv;
@@ -526,24 +523,27 @@ int wxEntry( int argc, char *argv[] )
wxStripExtension( name ); wxStripExtension( name );
wxTheApp->SetAppName( name ); wxTheApp->SetAppName( name );
if (!wxTheApp->OnInitGui()) return 0; if (!wxTheApp->OnInitGui())
return 0;
/* Here frames insert themselves automatically /* Here frames insert themselves automatically
* into wxTopLevelWindows by getting created * into wxTopLevelWindows by getting created
* in OnInit(). */ * in OnInit(). */
if (!wxTheApp->OnInit()) return 0; if (!wxTheApp->OnInit())
return 0;
wxTheApp->m_initialized = (wxTopLevelWindows.Number() > 0); wxTheApp->m_initialized = (wxTopLevelWindows.Number() > 0);
int retValue = 0; int retValue = 0;
if (wxTheApp->Initialized()) retValue = wxTheApp->OnRun(); if (wxTheApp->Initialized())
retValue = wxTheApp->OnRun();
wxWindow *topWindow = wxTheApp->GetTopWindow(); wxWindow *topWindow = wxTheApp->GetTopWindow();
if (topWindow) if (topWindow)
{ {
/* Forcibly delete the window. */ // Forcibly delete the window.
if (topWindow->IsKindOf(CLASSINFO(wxFrame)) || if (topWindow->IsKindOf(CLASSINFO(wxFrame)) ||
topWindow->IsKindOf(CLASSINFO(wxDialog)) ) topWindow->IsKindOf(CLASSINFO(wxDialog)) )
{ {
@@ -559,11 +559,18 @@ int wxEntry( int argc, char *argv[] )
wxTheApp->OnExit(); wxTheApp->OnExit();
/* flush the logged messages if any */ // flush the logged messages if any
wxLog *log = wxLog::GetActiveTarget(); wxLog *log = wxLog::GetActiveTarget();
if (log != NULL && log->HasPendingMessages()) if (log != NULL && log->HasPendingMessages())
log->Flush(); log->Flush();
// continuing to use user defined log target is unsafe from now on because
// some resources may be already unavailable, so replace it by something
// more safe
wxLog *oldlog = wxLog::SetActiveTarget(new wxLogStderr);
if ( oldlog )
delete oldlog;
wxApp::CleanUp(); wxApp::CleanUp();
return retValue; return retValue;

View File

@@ -137,12 +137,12 @@ extern void wxFlushResources(void);
// global functions // global functions
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void wxExit(void) void wxExit()
{ {
gtk_main_quit(); gtk_main_quit();
} }
bool wxYield(void) bool wxYield()
{ {
while (gtk_events_pending() > 0) gtk_main_iteration(); while (gtk_events_pending() > 0) gtk_main_iteration();
return TRUE; return TRUE;
@@ -183,7 +183,7 @@ wxApp::wxApp()
m_colorCube = (unsigned char*) NULL; m_colorCube = (unsigned char*) NULL;
} }
wxApp::~wxApp(void) wxApp::~wxApp()
{ {
gtk_idle_remove( m_idleTag ); gtk_idle_remove( m_idleTag );
@@ -259,7 +259,7 @@ bool wxApp::OnInitGui()
return TRUE; return TRUE;
} }
bool wxApp::ProcessIdle(void) bool wxApp::ProcessIdle()
{ {
wxIdleEvent event; wxIdleEvent event;
event.SetEventObject( this ); event.SetEventObject( this );
@@ -295,7 +295,7 @@ void wxApp::OnIdle( wxIdleEvent &event )
inOnIdle = FALSE; inOnIdle = FALSE;
} }
bool wxApp::SendIdleEvents(void) bool wxApp::SendIdleEvents()
{ {
bool needMore = FALSE; bool needMore = FALSE;
@@ -336,32 +336,32 @@ bool wxApp::SendIdleEvents( wxWindow* win )
return needMore ; return needMore ;
} }
int wxApp::MainLoop(void) int wxApp::MainLoop()
{ {
gtk_main(); gtk_main();
return 0; return 0;
} }
void wxApp::ExitMainLoop(void) void wxApp::ExitMainLoop()
{ {
gtk_main_quit(); gtk_main_quit();
} }
bool wxApp::Initialized(void) bool wxApp::Initialized()
{ {
return m_initialized; return m_initialized;
} }
bool wxApp::Pending(void) bool wxApp::Pending()
{ {
return FALSE; return FALSE;
} }
void wxApp::Dispatch(void) void wxApp::Dispatch()
{ {
} }
void wxApp::DeletePendingObjects(void) void wxApp::DeletePendingObjects()
{ {
wxNode *node = wxPendingDelete.First(); wxNode *node = wxPendingDelete.First();
while (node) while (node)
@@ -377,7 +377,7 @@ void wxApp::DeletePendingObjects(void)
} }
} }
wxWindow *wxApp::GetTopWindow(void) wxWindow *wxApp::GetTopWindow()
{ {
if (m_topWindow) return m_topWindow; if (m_topWindow) return m_topWindow;
wxNode *node = wxTopLevelWindows.First(); wxNode *node = wxTopLevelWindows.First();
@@ -390,7 +390,7 @@ void wxApp::SetTopWindow( wxWindow *win )
m_topWindow = win; m_topWindow = win;
} }
bool wxApp::Initialize(void) bool wxApp::Initialize()
{ {
wxBuffer = new char[BUFSIZ + 512]; wxBuffer = new char[BUFSIZ + 512];
@@ -426,20 +426,22 @@ bool wxApp::Initialize(void)
return TRUE; return TRUE;
} }
void wxApp::CleanUp(void) void wxApp::CleanUp()
{ {
wxModule::CleanUpModules(); wxModule::CleanUpModules();
#if wxUSE_WX_RESOURCES #if wxUSE_WX_RESOURCES
wxFlushResources(); wxFlushResources();
if (wxTheResourceCache) delete wxTheResourceCache; if (wxTheResourceCache)
delete wxTheResourceCache;
wxTheResourceCache = (wxResourceCache*) NULL; wxTheResourceCache = (wxResourceCache*) NULL;
wxCleanUpResourceSystem(); wxCleanUpResourceSystem();
#endif #endif
if (wxTheColourDatabase) delete wxTheColourDatabase; if (wxTheColourDatabase)
delete wxTheColourDatabase;
wxTheColourDatabase = (wxColourDatabase*) NULL; wxTheColourDatabase = (wxColourDatabase*) NULL;
/* /*
@@ -462,7 +464,7 @@ void wxApp::CleanUp(void)
wxClassInfo::CleanUpClasses(); wxClassInfo::CleanUpClasses();
/* check for memory leaks */ // check for memory leaks
#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT #if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT
if (wxDebugContext::CountObjectsLeft() > 0) if (wxDebugContext::CountObjectsLeft() > 0)
{ {
@@ -472,11 +474,12 @@ void wxApp::CleanUp(void)
} }
#endif #endif
/* do this as the very last thing because everything else can log messages */ // do this as the very last thing because everything else can log messages
wxLog::DontCreateOnDemand(); wxLog::DontCreateOnDemand();
wxLog *oldLog = wxLog::SetActiveTarget( (wxLog*) NULL ); wxLog *oldLog = wxLog::SetActiveTarget( (wxLog*) NULL );
if (oldLog) delete oldLog; if (oldLog)
delete oldLog;
} }
wxLog *wxApp::CreateLogTarget() wxLog *wxApp::CreateLogTarget()
@@ -494,15 +497,13 @@ int wxEntry( int argc, char *argv[] )
gtk_init( &argc, &argv ); gtk_init( &argc, &argv );
if (!wxApp::Initialize()) return 0; if (!wxApp::Initialize())
return -1;
if (!wxTheApp) if (!wxTheApp)
{ {
if (!wxApp::GetInitializerFunction()) wxCHECK_MSG( wxApp::GetInitializerFunction(), -1,
{ "wxWindows error: No initializer - use IMPLEMENT_APP macro.\n" );
printf( "wxWindows error: No initializer - use IMPLEMENT_APP macro.\n" );
return 0;
}
wxAppInitializerFunction app_ini = wxApp::GetInitializerFunction(); wxAppInitializerFunction app_ini = wxApp::GetInitializerFunction();
@@ -511,11 +512,7 @@ int wxEntry( int argc, char *argv[] )
wxTheApp = (wxApp*) test_app; wxTheApp = (wxApp*) test_app;
} }
if (!wxTheApp) wxCHECK_MSG( wxTheApp, -1, "wxWindows error: no application object" );
{
printf( "wxWindows error: wxTheApp == NULL\n" );
return 0;
}
wxTheApp->argc = argc; wxTheApp->argc = argc;
wxTheApp->argv = argv; wxTheApp->argv = argv;
@@ -526,24 +523,27 @@ int wxEntry( int argc, char *argv[] )
wxStripExtension( name ); wxStripExtension( name );
wxTheApp->SetAppName( name ); wxTheApp->SetAppName( name );
if (!wxTheApp->OnInitGui()) return 0; if (!wxTheApp->OnInitGui())
return 0;
/* Here frames insert themselves automatically /* Here frames insert themselves automatically
* into wxTopLevelWindows by getting created * into wxTopLevelWindows by getting created
* in OnInit(). */ * in OnInit(). */
if (!wxTheApp->OnInit()) return 0; if (!wxTheApp->OnInit())
return 0;
wxTheApp->m_initialized = (wxTopLevelWindows.Number() > 0); wxTheApp->m_initialized = (wxTopLevelWindows.Number() > 0);
int retValue = 0; int retValue = 0;
if (wxTheApp->Initialized()) retValue = wxTheApp->OnRun(); if (wxTheApp->Initialized())
retValue = wxTheApp->OnRun();
wxWindow *topWindow = wxTheApp->GetTopWindow(); wxWindow *topWindow = wxTheApp->GetTopWindow();
if (topWindow) if (topWindow)
{ {
/* Forcibly delete the window. */ // Forcibly delete the window.
if (topWindow->IsKindOf(CLASSINFO(wxFrame)) || if (topWindow->IsKindOf(CLASSINFO(wxFrame)) ||
topWindow->IsKindOf(CLASSINFO(wxDialog)) ) topWindow->IsKindOf(CLASSINFO(wxDialog)) )
{ {
@@ -559,11 +559,18 @@ int wxEntry( int argc, char *argv[] )
wxTheApp->OnExit(); wxTheApp->OnExit();
/* flush the logged messages if any */ // flush the logged messages if any
wxLog *log = wxLog::GetActiveTarget(); wxLog *log = wxLog::GetActiveTarget();
if (log != NULL && log->HasPendingMessages()) if (log != NULL && log->HasPendingMessages())
log->Flush(); log->Flush();
// continuing to use user defined log target is unsafe from now on because
// some resources may be already unavailable, so replace it by something
// more safe
wxLog *oldlog = wxLog::SetActiveTarget(new wxLogStderr);
if ( oldlog )
delete oldlog;
wxApp::CleanUp(); wxApp::CleanUp();
return retValue; return retValue;