+
+#ifdef WITH_X11_XF86VMODE
+ int majorVersion, minorVersion;
+ XF86VidModeModeInfo **vidmodes;
+ Display *dpy = m_system->getXDisplay();
+ int numSettings;
+
+ GHOST_ASSERT(display < 1, "Only single display systems are currently supported.\n");
+
+ if (dpy == NULL)
+ return GHOST_kFailure;
+
+ majorVersion = minorVersion = 0;
+ if (!XF86VidModeQueryVersion(dpy, &majorVersion, &minorVersion)) {
+ fprintf(stderr, "Error: XF86VidMode extension missing!\n");
+ return GHOST_kFailure;
+ }
+
+ /* The X11 man page says vidmodes needs to be freed, but doing so causes a
+ * segfault. - z0r */
+ XF86VidModeGetAllModeLines(dpy, DefaultScreen(dpy), &numSettings, &vidmodes);
+ GHOST_ASSERT(index < numSettings, "Requested setting outside of valid range.\n");
+
+ setting.xPixels = vidmodes[index]->hdisplay;
+ setting.yPixels = vidmodes[index]->vdisplay;
+ setting.bpp = DefaultDepth(dpy,DefaultScreen(dpy));
+
+#else