X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ef1717a963dfb76bac26b9f4277ae590b3c0a2e6..8e5ec129614e2473fd240f2a6e94ee56e3a9039b:/src/unix/displayx11.cpp?ds=sidebyside diff --git a/src/unix/displayx11.cpp b/src/unix/displayx11.cpp index fdd1dc18b5..1d71c7f038 100644 --- a/src/unix/displayx11.cpp +++ b/src/unix/displayx11.cpp @@ -21,22 +21,23 @@ #include "wx/wxprec.h" #ifdef __BORLANDC__ - #pragma hdrstop + #pragma hdrstop #endif +#if wxUSE_DISPLAY + #include "wx/display.h" -#include "wx/display_impl.h" -#include "wx/intl.h" -#include "wx/log.h" #ifndef WX_PRECOMP - #include "wx/dynarray.h" - #include "wx/gdicmn.h" - #include "wx/string.h" - #include "wx/utils.h" + #include "wx/dynarray.h" + #include "wx/gdicmn.h" + #include "wx/string.h" + #include "wx/utils.h" + #include "wx/intl.h" + #include "wx/log.h" #endif /* WX_PRECOMP */ -#if wxUSE_DISPLAY +#include "wx/display_impl.h" /* These must be included after the wx files. Otherwise the Data macro in * Xlibint.h conflicts with a function declaration in wx/list.h. */ @@ -84,8 +85,9 @@ private: class WXDLLEXPORT wxDisplayImplX11 : public wxDisplayImpl { public: - wxDisplayImplX11(const XineramaScreenInfo& info) - : m_rect(info.x_org, info.y_org, info.width, info.height) + wxDisplayImplX11(size_t n, const XineramaScreenInfo& info) + : wxDisplayImpl(n), + m_rect(info.x_org, info.y_org, info.width, info.height) { } @@ -106,7 +108,7 @@ private: class wxDisplayFactoryX11 : public wxDisplayFactory { public: - wxDisplayFactoryX11(); + wxDisplayFactoryX11() { } virtual wxDisplayImpl *CreateDisplay(size_t n); virtual size_t GetCount(); @@ -147,7 +149,7 @@ wxDisplayImpl *wxDisplayFactoryX11::CreateDisplay(size_t n) { ScreensInfo screens; - return n < screens.GetCount() ? new wxDisplayImplX11(screens[n]) : NULL; + return n < screens.GetCount() ? new wxDisplayImplX11(n, screens[n]) : NULL; } // ============================================================================ @@ -170,7 +172,7 @@ wxDisplayImpl *wxDisplayFactoryX11::CreateDisplay(size_t n) #define wxCVM2(v, dc) wxVideoMode(v.hdisplay, v.vdisplay, DefaultDepth((Display*)wxGetDisplay(), DefaultScreen((Display*)wxGetDisplay())), wxCRR2(v,dc)) #define wxCVM(v) wxCVM2(v, v.dotclock) -wxArrayVideoModes wxDisplay::GetModes(const wxVideoMode& mode) const +wxArrayVideoModes wxDisplayImplX11::GetModes(const wxVideoMode& mode) const { //Convenience... Display* pDisplay = (Display*) wxGetDisplay(); //default display @@ -204,7 +206,7 @@ wxArrayVideoModes wxDisplay::GetModes(const wxVideoMode& mode) const return Modes; } -wxVideoMode wxDisplay::GetCurrentMode() const +wxVideoMode wxDisplayImplX11::GetCurrentMode() const { XF86VidModeModeLine VM; int nDotClock; @@ -214,7 +216,7 @@ wxVideoMode wxDisplay::GetCurrentMode() const return wxCVM2(VM, nDotClock); } -bool wxDisplay::ChangeMode(const wxVideoMode& mode) +bool wxDisplayImplX11::ChangeMode(const wxVideoMode& mode) { XF86VidModeModeInfo** ppXModes; //Enumerated Modes (Don't forget XFree() :)) int nNumModes; //Number of modes enumerated.... @@ -263,7 +265,7 @@ bool wxDisplay::ChangeMode(const wxVideoMode& mode) #else // !HAVE_X11_EXTENSIONS_XF86VMODE_H -wxArrayVideoModes wxDisplay::GetModes(const wxVideoMode& mode) const +wxArrayVideoModes wxDisplayImplX11::GetModes(const wxVideoMode& mode) const { int count_return; int* depths = XListDepths((Display*)wxGetDisplay(), 0, &count_return); @@ -280,13 +282,13 @@ wxArrayVideoModes wxDisplay::GetModes(const wxVideoMode& mode) const return modes; } -wxVideoMode wxDisplay::GetCurrentMode() const +wxVideoMode wxDisplayImplX11::GetCurrentMode() const { // Not implemented return wxVideoMode(); } -bool wxDisplay::ChangeMode(const wxVideoMode& mode) +bool wxDisplayImplX11::ChangeMode(const wxVideoMode& mode) { // Not implemented return false; @@ -300,10 +302,12 @@ bool wxDisplay::ChangeMode(const wxVideoMode& mode) /* static */ wxDisplayFactory *wxDisplay::CreateFactory() { - Display *disp = (Display*)wxGetDisplay(); + if ( XineramaIsActive((Display*)wxGetDisplay()) ) + { + return new wxDisplayFactoryX11; + } - return XineramaIsActive(disp) ? new wxDisplayFactoryX11 - : new wxDisplayFactorySingle; + return new wxDisplayFactorySingle; } #endif /* wxUSE_DISPLAY */