test: Exercise XVidMode switching
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
e4ef6e9e5b
commit
47cd7fdd0b
|
|
@ -280,6 +280,9 @@ PKG_CHECK_MODULES(X11_DRI3, [xcb-dri3 xcb-sync xcb-xfixes xcb-present x11-xcb xs
|
|||
AM_CONDITIONAL(X11_DRI3, test "x$x11_dri3" = "xyes" -a "x$shm" = "xyes")
|
||||
AM_CONDITIONAL(X11_SHM, test "x$shm" = "xyes")
|
||||
|
||||
PKG_CHECK_MODULES(X11_VM, [xxf86vm], [x11_vm="yes"], [x11_vm="no"])
|
||||
AM_CONDITIONAL(X11_VM, test "x$x11_vm" = "xyes")
|
||||
|
||||
AC_ARG_ENABLE(tools,
|
||||
AS_HELP_STRING([--disable-tools],
|
||||
[Enable building and installing the miscellaneous tools [default=auto]]),
|
||||
|
|
|
|||
|
|
@ -28,6 +28,12 @@ stress_TESTS = \
|
|||
shm-test \
|
||||
$(NULL)
|
||||
|
||||
if X11_VM
|
||||
stress_TESTS += \
|
||||
xvidmode \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
if DRI2
|
||||
stress_TESTS += \
|
||||
dri2-race \
|
||||
|
|
|
|||
|
|
@ -0,0 +1,54 @@
|
|||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/extensions/xf86vmode.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
Display *dpy;
|
||||
XF86VidModeModeLine current;
|
||||
XF86VidModeModeInfo **modes;
|
||||
int num_modes, i;
|
||||
int saved_mode = -1;
|
||||
int dotclock;
|
||||
|
||||
dpy = XOpenDisplay(NULL);
|
||||
if (dpy == NULL)
|
||||
dpy = XOpenDisplay(":0");
|
||||
|
||||
XF86VidModeGetModeLine(dpy, DefaultScreen(dpy), &dotclock, ¤t);
|
||||
XF86VidModeGetAllModeLines(dpy, XDefaultScreen(dpy),
|
||||
&num_modes, &modes);
|
||||
for (i = 0; i < num_modes; i++) {
|
||||
int this;
|
||||
|
||||
this = (current.hdisplay == modes[i]->hdisplay &&
|
||||
current.vdisplay == modes[i]->vdisplay &&
|
||||
dotclock == modes[i]->dotclock);
|
||||
if (this && saved_mode == -1)
|
||||
saved_mode = i;
|
||||
|
||||
printf("[%d] %dx%d%s\n",
|
||||
i,
|
||||
modes[i]->hdisplay,
|
||||
modes[i]->vdisplay,
|
||||
this ? "*" : "");
|
||||
}
|
||||
|
||||
for (i = 0; i < num_modes; i++) {
|
||||
printf("Switching to mode %dx%d\n",
|
||||
modes[i]->hdisplay,
|
||||
modes[i]->vdisplay);
|
||||
XF86VidModeSwitchToMode(dpy, XDefaultScreen(dpy), modes[i]);
|
||||
XSync(dpy, True);
|
||||
}
|
||||
|
||||
if (saved_mode != -1) {
|
||||
XF86VidModeSwitchToMode(dpy, XDefaultScreen(dpy),
|
||||
modes[saved_mode]);
|
||||
XFlush(dpy);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
Reference in New Issue