]> git.saurik.com Git - wxWidgets.git/blobdiff - src/unix/displayx11.cpp
Fix for incomplete setup (wxPalmOS case).
[wxWidgets.git] / src / unix / displayx11.cpp
index f45bccac1badc1211563d04067ddaddae9307472..4736e995234fc3abec862cb18eca1e4889394e50 100644 (file)
@@ -5,7 +5,7 @@
 // Modified by:
 // Created:     12/05/02
 // RCS-ID:      $Id$
-// Copyright:   (c) wxWindows team
+// Copyright:   (c) wxWidgets team
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
@@ -119,7 +119,7 @@ wxDisplay::wxDisplay(size_t index) : wxDisplayBase ( index ), m_priv( new wxDisp
     XineramaScreenInfo *screenarr;
     int numscreens;
     screenarr = XineramaQueryScreens(disp, &numscreens);
-    wxASSERT(index < numscreens);
+
     m_priv->m_rect = wxRect(screenarr[index].x_org, screenarr[index].y_org,
                             screenarr[index].width, screenarr[index].height);
     m_priv->m_depth = DefaultDepth(disp, DefaultScreen(disp));
@@ -164,7 +164,7 @@ wxString wxDisplay::GetName() const
 //free private data common to x (usually s3) servers
 #define wxClearXVM(vm)  if(vm.privsize) XFree(vm.c_private)
 
-//Correct res rate from GLFW, which probably has the perfect license :)
+// Correct res rate from GLFW
 #define wxCRR2(v,dc) (int) (((1000.0f * (float) dc) /*PIXELS PER SECOND */) / ((float) v.htotal * v.vtotal /*PIXELS PER FRAME*/) + 0.5f)
 #define wxCRR(v) wxCRR2(v,v.dotclock)
 #define wxCVM2(v, dc) wxVideoMode(v.hdisplay, v.vdisplay, DefaultDepth((Display*)wxGetDisplay(), DefaultScreen((Display*)wxGetDisplay())), wxCRR2(v,dc))
@@ -216,53 +216,48 @@ wxVideoMode wxDisplay::GetCurrentMode() const
 
 bool wxDisplay::ChangeMode(const wxVideoMode& mode)
 {
-    //This gets kind of tricky AND complicated :) :\ :( :)
+    XF86VidModeModeInfo** ppXModes; //Enumerated Modes (Don't forget XFree() :))
+    int nNumModes; //Number of modes enumerated....
+
+    if( !XF86VidModeGetAllModeLines((Display*)wxGetDisplay(), DefaultScreen((Display*)wxGetDisplay()), &nNumModes, &ppXModes) )
+    {
+        wxLogSysError(_("Failed to change video mode"));
+        return false;
+    }
+
+    bool bRet = false;
+    if (mode == wxDefaultVideoMode)
     {
-        bool bRet = false;
-        //Some variables..
-        XF86VidModeModeInfo** ppXModes; //Enumerated Modes (Don't forget XFree() :))
-        int nNumModes; //Number of modes enumerated....
+        bRet = XF86VidModeSwitchToMode((Display*)wxGetDisplay(), DefaultScreen((Display*)wxGetDisplay()),
+                     ppXModes[0]) == TRUE;
 
-        if(XF86VidModeGetAllModeLines((Display*)wxGetDisplay(), DefaultScreen((Display*)wxGetDisplay()), &nNumModes, &ppXModes) == TRUE)
+        for (int i = 0; i < nNumModes; ++i)
+        {
+            wxClearXVM((*ppXModes[i]));
+        //  XFree(ppXModes[i]); //supposed to free?
+        }
+    }
+    else
+    {
+        for (int i = 0; i < nNumModes; ++i)
         {
-            if (mode == wxDefaultVideoMode)
+            if (!bRet &&
+                ppXModes[i]->hdisplay == mode.w &&
+                ppXModes[i]->vdisplay == mode.h &&
+                wxCRR((*ppXModes[i])) == mode.refresh)
             {
+                //switch!
                 bRet = XF86VidModeSwitchToMode((Display*)wxGetDisplay(), DefaultScreen((Display*)wxGetDisplay()),
-                             ppXModes[0]) == TRUE;
-
-                for (int i = 0; i < nNumModes; ++i)
-                {
-                    wxClearXVM((*ppXModes[i]));
-                //  XFree(ppXModes[i]); //supposed to free?
-                }
-                XFree(ppXModes);
-
-                return bRet;
+                         ppXModes[i]) == TRUE;
             }
-            for (int i = 0; i < nNumModes; ++i)
-            {
-                if (!bRet &&
-                    ppXModes[i]->hdisplay == mode.w &&
-                    ppXModes[i]->vdisplay == mode.h &&
-                    wxCRR((*ppXModes[i])) == mode.refresh)
-                {
-                    //switch!
-                    bRet = XF86VidModeSwitchToMode((Display*)wxGetDisplay(), DefaultScreen((Display*)wxGetDisplay()),
-                             ppXModes[i]) == TRUE;
-                }
-                wxClearXVM((*ppXModes[i]));
-            //  XFree(ppXModes[i]); //supposed to free?
-            }
-            XFree(ppXModes);
-
-            return bRet;
-        }
-        else //OOPS!
-        {
-            wxLogSysError(_("Failed to change video mode"));
-            return false;
+            wxClearXVM((*ppXModes[i]));
+        //  XFree(ppXModes[i]); //supposed to free?
         }
     }
+
+    XFree(ppXModes);
+
+    return bRet;
 }