MCPcopy Create free account
hub / github.com/KhronosGroup/Vulkan-Tools / demo_create_xlib_window

Function demo_create_xlib_window

cube/cube.c:2831–2865  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2829#endif
2830#if defined(VK_USE_PLATFORM_XLIB_KHR)
2831static void demo_create_xlib_window(struct demo *demo) {
2832 const char *display_envar = getenv("DISPLAY");
2833 if (display_envar == NULL || display_envar[0] == '\0') {
2834 printf("Environment variable DISPLAY requires a valid value.\nExiting ...\n");
2835 fflush(stdout);
2836 exit(1);
2837 }
2838
2839 XInitThreads();
2840 demo->xlib_display = XOpenDisplay(NULL);
2841 long visualMask = VisualScreenMask;
2842 int numberOfVisuals;
2843 XVisualInfo vInfoTemplate = {};
2844 vInfoTemplate.screen = DefaultScreen(demo->xlib_display);
2845 XVisualInfo *visualInfo = XGetVisualInfo(demo->xlib_display, visualMask, &vInfoTemplate, &numberOfVisuals);
2846
2847 Colormap colormap =
2848 XCreateColormap(demo->xlib_display, RootWindow(demo->xlib_display, vInfoTemplate.screen), visualInfo->visual, AllocNone);
2849
2850 XSetWindowAttributes windowAttributes = {};
2851 windowAttributes.colormap = colormap;
2852 windowAttributes.background_pixel = 0xFFFFFFFF;
2853 windowAttributes.border_pixel = 0;
2854 windowAttributes.event_mask = KeyPressMask | KeyReleaseMask | StructureNotifyMask | ExposureMask;
2855
2856 demo->xlib_window = XCreateWindow(demo->xlib_display, RootWindow(demo->xlib_display, vInfoTemplate.screen), 0, 0, demo->width,
2857 demo->height, 0, visualInfo->depth, InputOutput, visualInfo->visual,
2858 CWBackPixel | CWBorderPixel | CWEventMask | CWColormap, &windowAttributes);
2859
2860 XSelectInput(demo->xlib_display, demo->xlib_window, ExposureMask | KeyPressMask);
2861 XMapWindow(demo->xlib_display, demo->xlib_window);
2862 XFlush(demo->xlib_display);
2863 demo->xlib_wm_delete_window = XInternAtom(demo->xlib_display, "WM_DELETE_WINDOW", False);
2864 XSetWMProtocols(demo->xlib_display, demo->xlib_window, &demo->xlib_wm_delete_window, 1);
2865}
2866static void demo_handle_xlib_event(struct demo *demo, const XEvent *event) {
2867 switch (event->type) {
2868 case ClientMessage:

Callers 1

mainFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected