]> git.cworth.org Git - fips/blob - test/util-x11.c
util-x11: Rework init_window interface to accept XVisualInfo
[fips] / test / util-x11.c
1 /* Copyright © 2013, Intel Corporation
2  *
3  * Permission is hereby granted, free of charge, to any person obtaining a copy
4  * of this software and associated documentation files (the "Software"), to deal
5  * in the Software without restriction, including without limitation the rights
6  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7  * copies of the Software, and to permit persons to whom the Software is
8  * furnished to do so, subject to the following conditions:
9  *
10  * The above copyright notice and this permission notice shall be included in
11  * all copies or substantial portions of the Software.
12  *
13  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19  * THE SOFTWARE.
20  */
21
22 #include <stdio.h>
23 #include <stdlib.h>
24
25 #include "util-x11.h"
26
27 Display *
28 util_x11_init_display (void)
29 {
30         Display *dpy;
31
32         dpy = XOpenDisplay (NULL);
33
34         if (dpy == NULL) {
35                 fprintf(stderr, "Failed to open display %s\n",
36                         XDisplayName(NULL));
37                 exit (1);
38         }
39
40         return dpy;
41 }
42
43 void
44 util_x11_fini_display (Display *dpy)
45 {
46         XCloseDisplay (dpy);
47 }
48
49 Window
50 util_x11_init_window (Display *dpy, XVisualInfo *visual_info)
51 {
52         int width = 64;
53         int height = 64;
54         Window root, window;
55         XSetWindowAttributes window_attr;
56         Colormap colormap;
57         unsigned long window_mask, event_mask;
58         unsigned long black;
59
60         root = DefaultRootWindow (dpy);
61         black = BlackPixel (dpy, DefaultScreen (dpy));
62         colormap = XCreateColormap (dpy, root, visual_info->visual, AllocNone);
63         event_mask = KeyPressMask | StructureNotifyMask | ExposureMask;
64
65         window_mask = 0;
66         window_mask |= CWBackPixel;     window_attr.background_pixel = black;
67         window_mask |= CWBorderPixel;   window_attr.border_pixel = black;
68         window_mask |= CWColormap;      window_attr.colormap = colormap;
69         window_mask |= CWEventMask;     window_attr.event_mask = event_mask;
70
71         window = XCreateWindow(dpy, root, 0, 0, width, height, 0,
72                                visual_info->depth, InputOutput,
73                                visual_info->visual,
74                                window_mask, &window_attr);
75
76         XMapWindow (dpy, window);
77
78         XFreeColormap (dpy, colormap);
79
80         return window;
81 }
82
83 void
84 util_x11_fini_window (Display *dpy, Window window)
85 {
86         XDestroyWindow (dpy, window);
87 }