displayMode.GetDepth());
if ( mode == -1 )
{
- wxLogWarning(_("Mode %ix%i-%i not available, falling back to default mode."),
+ wxLogError(_("Mode %ix%i-%i not available."),
displayMode.GetScreenSize().x,
displayMode.GetScreenSize().y,
displayMode.GetDepth());
- mode = 0; // always available
+ return FALSE;
}
g_displayDC = new MGLDisplayDC(mode, 1, refresh);
if ( !g_displayDC->isValid() )
g_winMng = MGL_wmCreate(g_displayDC->getDC());
if (!g_winMng)
return FALSE;
-
+
return TRUE;
}
wxApp::wxApp() : m_mainLoop(NULL)
{
- m_displayMode = wxDisplayModeInfo(wxSize(640, 480), 16);
}
wxApp::~wxApp()
if ( g_displayDC != NULL )
{
// FIXME_MGL -- we currently don't allow to switch video mode
- // at runtime. This can hopefully be changed...
+ // more than once. This can hopefully be changed...
wxFAIL_MSG(wxT("Can't change display mode after intialization!"));
return FALSE;
}
+
+ if ( !wxCreateMGL_WM(mode) )
+ return FALSE;
+ gs_rootWindow = new wxRootWindow;
+
m_displayMode = mode;
+
return TRUE;
}
bool wxApp::OnInitGui()
{
- if ( !wxCreateMGL_WM(m_displayMode) )
- return FALSE;
-
- // This has to be done *after* wxCreateMGL_WM() because it initializes
- // wxUniv's themes
if ( !wxAppBase::OnInitGui() )
return FALSE;
-
- // ...and this has to be done after wxUniv themes were initialized
- gs_rootWindow = new wxRootWindow;
#ifdef MGL_DEBUG
// That damn MGL redirects stdin and stdout to physical console
void wxDisplaySize(int *width, int *height)
{
- wxASSERT_MSG( g_displayDC, wxT("MGL display DC not created yet.") );
+ wxASSERT_MSG( g_displayDC, wxT("You must call wxApp::SetDisplayMode before using this function") );
if (width) *width = g_displayDC->sizex()+1;
if (height) *height = g_displayDC->sizey()+1;
}
void wxDisplaySizeMM(int *width, int *height)
{
- wxASSERT_MSG( g_displayDC, wxT("MGL display DC not created yet.") );
+ wxASSERT_MSG( g_displayDC, wxT("You must call wxApp::SetDisplayMode before using this function") );
if ( width )
*width = (g_displayDC->sizex()+1) * 25/72;
if ( height )
bool wxColourDisplay()
{
- wxASSERT_MSG( g_displayDC, wxT("MGL display DC not created yet.") );
+ wxASSERT_MSG( g_displayDC, wxT("You must call wxApp::SetDisplayMode before using this function") );
return (wxDisplayDepth() > 1);
}
int wxDisplayDepth()
{
- wxASSERT_MSG( g_displayDC, wxT("MGL display DC not created yet.") );
+ wxASSERT_MSG( g_displayDC, wxT("You must call wxApp::SetDisplayMode before using this function") );
return g_displayDC->getBitsPerPixel();
}
void wxWindowMGL::Init()
{
+ // First of all, make sure window manager is up and running. If it is
+ // not the case, initialize it in default display mode
+ if ( !g_winMng )
+ wxTheApp->SetDisplayMode(wxDisplayModeInfo(wxSize(640, 480), 16));
+
// generic:
InitBase();