summaryrefslogtreecommitdiffstats
path: root/xorg/tests/randr/trandr.c
diff options
context:
space:
mode:
authorJay Sorg <jay.sorg@gmail.com>2013-02-17 19:03:43 -0800
committerJay Sorg <jay.sorg@gmail.com>2013-02-17 19:03:43 -0800
commitf04e162b037d79bceef7452ba6312c16049e5116 (patch)
treecee99261c06fa657a0011c91a2cb6808b037a19c /xorg/tests/randr/trandr.c
parentf8b851855dc4bdcb3ffbbf9274798510cf53513d (diff)
downloadxrdp-proprietary-f04e162b037d79bceef7452ba6312c16049e5116.tar.gz
xrdp-proprietary-f04e162b037d79bceef7452ba6312c16049e5116.zip
xorg randr test app
Diffstat (limited to 'xorg/tests/randr/trandr.c')
-rw-r--r--xorg/tests/randr/trandr.c99
1 files changed, 86 insertions, 13 deletions
diff --git a/xorg/tests/randr/trandr.c b/xorg/tests/randr/trandr.c
index 60eed507..f0be27e0 100644
--- a/xorg/tests/randr/trandr.c
+++ b/xorg/tests/randr/trandr.c
@@ -28,32 +28,105 @@
#include <signal.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
+#include <X11/extensions/Xrandr.h>
-Display *g_disp = 0;
-Window g_win = 0;
-int g_winWidth = 50;
-int g_winHeight = 50;
+static int
+process_randr(Display *disp, Window win, int event_base, XEvent *ev)
+{
+ XRRScreenChangeNotifyEvent *rr_screen_change_notify;
+
+ switch (ev->type - event_base)
+ {
+ case RRScreenChangeNotify:
+ rr_screen_change_notify = (XRRScreenChangeNotifyEvent *) ev;
+ printf("RRScreenChangeNotify: width %d height %d\n",
+ rr_screen_change_notify->width,
+ rr_screen_change_notify->height);
+ break;
+ }
+ return 0;
+}
int
main(int argc, char **argv)
{
XEvent ev;
+ Display *disp;
+ Window win;
+ Window root_window;
+ Screen *screen;
int screenNumber;
+ int eventMask;
int white;
int black;
+ int event_base;
+ int error_base;
+ int ver_maj;
+ int ver_min;
+ int cont;
+
+ disp = XOpenDisplay(0);
+ screenNumber = DefaultScreen(disp);
+ white = WhitePixel(disp, screenNumber);
+ black = BlackPixel(disp, screenNumber);
+
+ screen = ScreenOfDisplay(disp, screenNumber);
+ root_window = RootWindowOfScreen(screen);
- g_disp = XOpenDisplay(0);
+ eventMask = StructureNotifyMask;
+ XSelectInput(disp, root_window, eventMask);
+
+ win = XCreateSimpleWindow(disp, root_window, 50, 50, 250, 250,
+ 0, black, white);
+
+ XMapWindow(disp, win);
+ eventMask = StructureNotifyMask | VisibilityChangeMask;
+ XSelectInput(disp, win, eventMask);
+
+ eventMask = KeyPressMask | KeyReleaseMask | ButtonPressMask |
+ ButtonReleaseMask | VisibilityChangeMask |
+ FocusChangeMask | StructureNotifyMask |
+ PointerMotionMask | ExposureMask | PropertyChangeMask;
+ XSelectInput(disp, win, eventMask);
+
+ if (!XRRQueryExtension(disp, &event_base, &error_base))
+ {
+ printf("error randr\n");
+ return 1;
+ }
+ XRRQueryVersion(disp, &ver_maj, &ver_min);
+ printf("randr version %d %d\n", ver_maj, ver_min);
- screenNumber = DefaultScreen(g_disp);
- white = WhitePixel(g_disp, screenNumber);
- black = BlackPixel(g_disp, screenNumber);
+ XRRSelectInput(disp, win, RRScreenChangeNotifyMask);
- g_win = XCreateSimpleWindow(g_disp, DefaultRootWindow(g_disp),
- 50, 50, g_winWidth, g_winHeight,
- 0, black, white);
- while (1)
+ cont = 1;
+ while (cont)
{
- XNextEvent(g_disp, &ev)
+ printf("loop\n");
+ XNextEvent(disp, &ev);
+ switch (ev.type)
+ {
+ case ButtonPress:
+ cont = 0;
+ break;
+ case ClientMessage:
+ printf("ClientMessage\n");
+ break;
+ case ConfigureNotify:
+ if (ev.xconfigure.window == root_window)
+ {
+ printf("ConfigureNotify for root window\n");
+ }
+ break;
+ default:
+ if ((ev.type >= event_base) &&
+ (ev.type < event_base + RRNumberEvents))
+ {
+ printf("randr\n");
+ process_randr(disp, win, event_base, &ev);
+ }
+ break;
+ }
}
return 0;