]> git.saurik.com Git - wxWidgets.git/blobdiff - src/unix/displayx11.cpp
Added wxDataViewSortedListModel, which doesn't work
[wxWidgets.git] / src / unix / displayx11.cpp
index f45bccac1badc1211563d04067ddaddae9307472..341ce07819de8e0326e0f2e0bee31e6c1962b7fb 100644 (file)
@@ -5,14 +5,10 @@
 // Modified by:
 // Created:     12/05/02
 // RCS-ID:      $Id$
-// Copyright:   (c) wxWindows team
+// Copyright:   (c) wxWidgets team
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-    #pragma implementation "display.h"
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
  * Xlibint.h conflicts with a function declaration in wx/list.h.  */
 extern "C" {
   #include <X11/Xlib.h>
+#ifndef __VMS
   #include <X11/Xlibint.h>
-  #include <X11/extensions/Xinerama.h>
+include <X11/extensions/Xinerama.h>
 #ifdef HAVE_X11_EXTENSIONS_XF86VMODE_H
   #include <X11/extensions/xf86vmode.h>
 #endif
+#endif
 }
 
 class wxDisplayUnixPriv
@@ -55,7 +53,8 @@ size_t wxDisplayBase::GetCount()
 {
   Display *disp = (Display*)wxGetDisplay();
 
-  if ( XineramaIsActive(disp) )
+#ifndef __VMS
+   if ( XineramaIsActive(disp) )
   {
     XineramaScreenInfo *screenarr;
     int numscreens;
@@ -64,6 +63,7 @@ size_t wxDisplayBase::GetCount()
     return numscreens;
   }
   else
+#endif   
   {
     return 1;
   }
@@ -73,7 +73,8 @@ int wxDisplayBase::GetFromPoint(const wxPoint &p)
 {
   Display *disp = (Display*)wxGetDisplay();
 
-  if ( XineramaIsActive(disp) )
+#ifndef __VMS
+   if ( XineramaIsActive(disp) )
   {
     int which_screen = -1;
     XineramaScreenInfo *screenarr;
@@ -96,7 +97,8 @@ int wxDisplayBase::GetFromPoint(const wxPoint &p)
     return which_screen;
   }
   else
-  {
+#endif
+     {
     wxSize size = wxGetDisplaySize();
     if (p.x >= 0 &&
         p.x < size.GetWidth() &&
@@ -114,19 +116,21 @@ wxDisplay::wxDisplay(size_t index) : wxDisplayBase ( index ), m_priv( new wxDisp
 {
   Display *disp = (Display*)wxGetDisplay();
 
-  if ( XineramaIsActive(disp) )
+#ifndef __VMS
+   if ( XineramaIsActive(disp) )
   {
     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));
     XFree(screenarr);
   }
   else
-  {
+#endif
+     {
     wxSize size = wxGetDisplaySize();
     m_priv->m_rect = wxRect(0, 0, size.GetWidth(), size.GetHeight());
     m_priv->m_depth = wxDisplayDepth();
@@ -164,7 +168,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 +220,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)
         {
-            if (mode == wxDefaultVideoMode)
+            wxClearXVM((*ppXModes[i]));
+        //  XFree(ppXModes[i]); //supposed to free?
+        }
+    }
+    else
+    {
+        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[0]) == TRUE;
-
-                for (int i = 0; i < nNumModes; ++i)
-                {
-                    wxClearXVM((*ppXModes[i]));
-                //  XFree(ppXModes[i]); //supposed to free?
-                }
-                XFree(ppXModes);
-
-                return bRet;
-            }
-            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?
+                         ppXModes[i]) == TRUE;
             }
-            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;
 }