win32

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 184328428e41704305f3af18c664c9ed7bd9fab6
parent c6990309e655802f9c64fedbbdab6cb6e97d0f11
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Wed, 17 Dec 2025 08:32:00 +0900

use 32bit-deep visual to create window, still BadMatch

Diffstat:
Mwin32.c | 27++++++++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/win32.c b/win32.c @@ -1,8 +1,10 @@ #include <stdio.h> #include <stdlib.h> #include <X11/Xlib.h> +#include <X11/Xutil.h> void fatal(char *msg); +int findVisual32(Display *display, int screen, XVisualInfo *return_visual_info); int main(void) { Display *display = XOpenDisplay(NULL); @@ -23,11 +25,16 @@ int main(void) { &attr); XMapWindow(display, window); + XVisualInfo vi32; + if (findVisual32(display, screen, &vi32) < 0) { + fatal("32bit-deep visual info not found"); + } + Window window32 = XCreateWindow(display, DefaultRootWindow(display), 0, 0, 1, 1, 0, 32, InputOutput, - DefaultVisual(display, screen), + vi32.visual, 0, NULL); XSync(display, window); @@ -47,3 +54,21 @@ void fatal(char *msg) { fprintf(stderr, "%s\n", msg); exit(1); } + +int findVisual32(Display *display, int screen, XVisualInfo *return_visual_info) { + long mask = VisualDepthMask|VisualRedMaskMask|VisualGreenMaskMask|VisualBlueMaskMask; + XVisualInfo template = { + .depth = 32, + .red_mask = 0xff0000, + .green_mask = 0x00ff00, + .blue_mask = 0x0000ff, + }; + int n; + XVisualInfo *vinfos = XGetVisualInfo(display, mask, &template, &n); + if (n == 0) { + return -1; + } + *return_visual_info = vinfos[0]; + XFree(vinfos); + return 0; +}