- removed GDI lists from wxMGL

- friendlier wxApp::SetDisplayMode
- redirects stdout and stderr to files if __WXDEBUG__
- wxLog initialization and flushing fixes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12546 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2001-11-21 00:00:12 +00:00
parent 8b81a824c4
commit d76048f514
6 changed files with 33 additions and 92 deletions

View File

@@ -37,12 +37,6 @@
#include "wx/univ/colschem.h"
#include "wx/mgl/private.h"
#define MGL_DEBUG
#if defined(MGL_DEBUG) && !defined(__WXDEBUG__)
#undef MGL_DEBUG
#endif
//-----------------------------------------------------------------------------
// Global data
//-----------------------------------------------------------------------------
@@ -166,14 +160,14 @@ static bool wxCreateMGL_WM(const wxDisplayModeInfo& displayMode)
refresh = wxSystemOptions::GetOptionInt(wxT("mgl.screen-refresh"));
#endif
mode = MGL_findMode(displayMode.GetScreenSize().x,
displayMode.GetScreenSize().y,
mode = MGL_findMode(displayMode.GetWidth(),
displayMode.GetHeight(),
displayMode.GetDepth());
if ( mode == -1 )
{
wxLogError(_("Mode %ix%i-%i not available."),
displayMode.GetScreenSize().x,
displayMode.GetScreenSize().y,
displayMode.GetWidth(),
displayMode.GetHeight(),
displayMode.GetDepth());
return FALSE;
}
@@ -253,12 +247,16 @@ bool wxApp::OnInitGui()
if ( !wxAppBase::OnInitGui() )
return FALSE;
#ifdef MGL_DEBUG
// That damn MGL redirects stdin and stdout to physical console
FILE *file = fopen("stderr", "wt");
wxLog::SetActiveTarget(new wxLogStderr(file));
#ifdef __WXDEBUG__
// MGL redirects stdout and stderr to physical console, so lets redirect
// it to file. Do it only when WXDEBUG environment variable is set
if ( wxGetEnv(wxT("WXDEBUG"), NULL) )
freopen("output.err", "wt", stderr);
#endif
wxLog *oldLog = wxLog::SetActiveTarget(new wxLogGui);
if ( oldLog ) delete oldLog;
return TRUE;
}
@@ -288,6 +286,11 @@ void wxApp::OnIdle(wxIdleEvent &event)
// 'Garbage' collection of windows deleted with Close().
DeletePendingObjects();
#if wxUSE_LOG
// flush the logged messages if any
wxLog::FlushActive();
#endif // wxUSE_LOG
// Send OnIdle events to all windows
if ( SendIdleEvents() )
event.RequestMore(TRUE);
@@ -432,14 +435,7 @@ wxIcon wxApp::GetStdIcon(int which) const
void wxApp::CleanUp()
{
delete gs_rootWindow;
#if wxUSE_LOG
// flush the logged messages if any
wxLog *log = wxLog::GetActiveTarget();
if (log != NULL && log->HasPendingMessages())
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
@@ -448,6 +444,8 @@ void wxApp::CleanUp()
delete oldlog;
#endif // wxUSE_LOG
delete gs_rootWindow;
wxModule::CleanUpModules();
#if wxUSE_WX_RESOURCES
@@ -611,6 +609,12 @@ int wxEntry(int argc, char *argv[])
}
}
#if wxUSE_LOG
// flush the logged messages if any
wxLog *log = wxLog::GetActiveTarget();
if (log != NULL && log->HasPendingMessages())
log->Flush();
#endif // wxUSE_LOG
retValue = wxTheApp->OnExit();
}
}