reworked display mode stuff once again

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12320 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2001-11-04 23:32:52 +00:00
parent 240889a18c
commit 1f43b5c985
3 changed files with 19 additions and 17 deletions

View File

@@ -170,11 +170,11 @@ static bool wxCreateMGL_WM(const wxDisplayModeInfo& displayMode)
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() )
@@ -218,7 +218,6 @@ END_EVENT_TABLE()
wxApp::wxApp() : m_mainLoop(NULL)
{
m_displayMode = wxDisplayModeInfo(wxSize(640, 480), 16);
}
wxApp::~wxApp()
@@ -234,27 +233,25 @@ bool wxApp::SetDisplayMode(const wxDisplayModeInfo& mode)
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
FILE *file = fopen("stderr", "wt");

View File

@@ -42,14 +42,14 @@ void wxBell()
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 )
@@ -67,14 +67,14 @@ void wxClientDisplayRect(int *x, int *y, int *width, int *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();
}

View File

@@ -466,6 +466,11 @@ END_EVENT_TABLE()
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();