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:
@@ -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");
|
||||
|
@@ -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();
|
||||
}
|
||||
|
@@ -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();
|
||||
|
||||
|
Reference in New Issue
Block a user