mirror of
https://github.com/X11Libre/xf86-video-intel.git
synced 2026-03-24 01:24:12 +00:00
test: Exercise XVidMode switching
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
@@ -28,6 +28,12 @@ stress_TESTS = \
|
||||
shm-test \
|
||||
$(NULL)
|
||||
|
||||
if X11_VM
|
||||
stress_TESTS += \
|
||||
xvidmode \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
if DRI2
|
||||
stress_TESTS += \
|
||||
dri2-race \
|
||||
|
||||
54
test/xvidmode.c
Normal file
54
test/xvidmode.c
Normal file
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user