| 926 | //----------------------------XLib--------------------------- |
| 927 | #ifdef VK_USE_PLATFORM_XLIB_KHR |
| 928 | static void AppCreateXlibWindow(AppInstance &inst) { |
| 929 | long visualMask = VisualScreenMask; |
| 930 | int numberOfVisuals{}; |
| 931 | |
| 932 | inst.xlib_display = XOpenDisplay(nullptr); |
| 933 | if (inst.xlib_display == nullptr) { |
| 934 | THROW_ERR("XLib failed to connect to the X server."); |
| 935 | } |
| 936 | |
| 937 | XVisualInfo vInfoTemplate = {}; |
| 938 | vInfoTemplate.screen = DefaultScreen(inst.xlib_display); |
| 939 | XVisualInfo *visualInfoBegin = XGetVisualInfo(inst.xlib_display, visualMask, &vInfoTemplate, &numberOfVisuals); |
| 940 | XVisualInfo *visualInfoEnd = visualInfoBegin + numberOfVisuals; |
| 941 | const Visual *rootVisual = DefaultVisual(inst.xlib_display, vInfoTemplate.screen); |
| 942 | const XVisualInfo *foundVisualInfo = |
| 943 | std::find_if(visualInfoBegin, visualInfoEnd, [rootVisual](const XVisualInfo &vi) { return vi.visual == rootVisual; }); |
| 944 | const XVisualInfo *visualInfo = foundVisualInfo == visualInfoEnd ? visualInfoBegin : foundVisualInfo; |
| 945 | inst.xlib_window = XCreateWindow(inst.xlib_display, RootWindow(inst.xlib_display, vInfoTemplate.screen), 0, 0, inst.width, |
| 946 | inst.height, 0, visualInfo->depth, InputOutput, visualInfo->visual, 0, nullptr); |
| 947 | |
| 948 | XSync(inst.xlib_display, false); |
| 949 | XFree(visualInfoBegin); |
| 950 | } |
| 951 | |
| 952 | static VkSurfaceKHR AppCreateXlibSurface(AppInstance &inst) { |
| 953 | VkXlibSurfaceCreateInfoKHR createInfo; |
nothing calls this directly
no outgoing calls
no test coverage detected