about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-10-18 10:23:08 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-10-18 10:23:08 +0200
commit3598f2855f48f2a50feaa834afd4da1bc7291f91 (patch)
treeef0dd09f5c67c6360600519bceaa1754aa895ef0 /src
parentf36a479d0f759aa0687cb361ac7b2bdcc906dbb6 (diff)
downloadbox64-3598f2855f48f2a50feaa834afd4da1bc7291f91.tar.gz
box64-3598f2855f48f2a50feaa834afd4da1bc7291f91.zip
[BOX32] A few more X11 wrapped functions and fixes
Diffstat (limited to 'src')
-rw-r--r--src/libtools/my_x11_conv.c13
-rw-r--r--src/libtools/my_x11_conv.h1
-rw-r--r--src/wrapped32/generated/functions_list.txt1
-rw-r--r--src/wrapped32/generated/wrappedlibx11types32.h1
-rw-r--r--src/wrapped32/wrappedlibx11.c13
-rw-r--r--src/wrapped32/wrappedlibx11_private.h2
6 files changed, 29 insertions, 2 deletions
diff --git a/src/libtools/my_x11_conv.c b/src/libtools/my_x11_conv.c
index 89709a9f..720b9e19 100644
--- a/src/libtools/my_x11_conv.c
+++ b/src/libtools/my_x11_conv.c
@@ -434,6 +434,19 @@ void convert_XVisualInfo_to_32(void* dpy, my_XVisualInfo_32_t* dst, my_XVisualIn
     dst->colormap_size = src->colormap_size;
     dst->bits_per_rgb = src->bits_per_rgb;
 }
+void convert_XVisualInfo_to_64_novisual(void* dpy, my_XVisualInfo_t* dst, my_XVisualInfo_32_t* src)
+{
+    dst->bits_per_rgb = src->bits_per_rgb;
+    dst->colormap_size = src->colormap_size;
+    dst->blue_mask = from_ulong(src->blue_mask);
+    dst->green_mask = from_ulong(src->green_mask);
+    dst->red_mask = from_ulong(src->red_mask);
+    dst->c_class = src->c_class;
+    dst->depth = src->depth;
+    dst->screen = src->screen;
+    dst->visualid = from_ulong(src->visualid);
+    dst->visual = NULL;
+}
 void convert_XVisualInfo_to_64(void* dpy, my_XVisualInfo_t* dst, my_XVisualInfo_32_t* src)
 {
     dst->bits_per_rgb = src->bits_per_rgb;
diff --git a/src/libtools/my_x11_conv.h b/src/libtools/my_x11_conv.h
index b6dc28fd..96a75ca3 100644
--- a/src/libtools/my_x11_conv.h
+++ b/src/libtools/my_x11_conv.h
@@ -42,6 +42,7 @@ void inplace_XModifierKeymap_enlarge(void* a);
 
 void convert_XVisualInfo_to_32(void* dpy, my_XVisualInfo_32_t* dst, my_XVisualInfo_t* src);
 void convert_XVisualInfo_to_64(void* dpy, my_XVisualInfo_t* dst, my_XVisualInfo_32_t* src);
+void convert_XVisualInfo_to_64_novisual(void* dpy, my_XVisualInfo_t* dst, my_XVisualInfo_32_t* src);
 void inplace_XVisualInfo_shrink(void* dpy, void *a);
 void inplace_XVisualInfo_enlarge(void* dpy, void *a);
 
diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt
index 793db726..74d64986 100644
--- a/src/wrapped32/generated/functions_list.txt
+++ b/src/wrapped32/generated/functions_list.txt
@@ -2094,6 +2094,7 @@ wrappedlibx11:
 - iFXLpi:
   - XQueryColors
   - XSetWMProtocols
+  - XStoreColors
 - iFXLpp:
   - XGetWMNormalHints
 - iFXppp:
diff --git a/src/wrapped32/generated/wrappedlibx11types32.h b/src/wrapped32/generated/wrappedlibx11types32.h
index 055fee0d..ae0d36f1 100644
--- a/src/wrapped32/generated/wrappedlibx11types32.h
+++ b/src/wrapped32/generated/wrappedlibx11types32.h
@@ -113,6 +113,7 @@ typedef uintptr_t (*LFXLiiuuuiupLp_t)(void*, uintptr_t, int32_t, int32_t, uint32
 	GO(XChangeWindowAttributes, iFXLLp_t) \
 	GO(XQueryColors, iFXLpi_t) \
 	GO(XSetWMProtocols, iFXLpi_t) \
+	GO(XStoreColors, iFXLpi_t) \
 	GO(XGetWMNormalHints, iFXLpp_t) \
 	GO(XCheckIfEvent, iFXppp_t) \
 	GO(XIfEvent, iFXppp_t) \
diff --git a/src/wrapped32/wrappedlibx11.c b/src/wrapped32/wrappedlibx11.c
index e2256ba5..003d47d2 100644
--- a/src/wrapped32/wrappedlibx11.c
+++ b/src/wrapped32/wrappedlibx11.c
@@ -2143,7 +2143,7 @@ EXPORT void* my32_XGetIMValues(x64emu_t* emu, void* xim, ptr_t* b)
 EXPORT void* my32_XGetVisualInfo(x64emu_t* emu, void* dpy, long mask, my_XVisualInfo_32_t* template, int* n)
 {
     my_XVisualInfo_t template_l = {0};
-    if(template) convert_XVisualInfo_to_64(dpy, &template_l, template);
+    if(template) convert_XVisualInfo_to_64_novisual(dpy, &template_l, template);
     my_XVisualInfo_t* ret = my->XGetVisualInfo(dpy, mask, template?(&template_l):NULL, n);
     inplace_XVisualInfo_shrink(dpy, ret);
     return ret;
@@ -2170,6 +2170,17 @@ EXPORT int my32_XQueryColors(x64emu_t* emu, void* dpy, XID map, my_XColor_32_t*
     return ret;
 }
 
+EXPORT int my32_XStoreColors(x64emu_t* emu, void* dpy, XID map, my_XColor_32_t* defs, int ncolor)
+{
+    struct_LWWWcc_t defs_l[ncolor];
+    for(int i=0; i<ncolor; ++i)
+        from_struct_LWWWcc(defs_l+i, to_ptrv(defs+i));
+    int ret = my->XStoreColors(dpy, map, defs_l, ncolor);
+    for(int i=0; i<ncolor; ++i)
+        to_struct_LWWWcc(to_ptrv(defs+i), defs_l+i);
+    return ret;
+}
+
 EXPORT int my32_XFreeFont(x64emu_t* emu, void* dpy, void* f)
 {
     inplace_XFontStruct_enlarge(f);
diff --git a/src/wrapped32/wrappedlibx11_private.h b/src/wrapped32/wrappedlibx11_private.h
index a32c5d46..d94475c5 100644
--- a/src/wrapped32/wrappedlibx11_private.h
+++ b/src/wrapped32/wrappedlibx11_private.h
@@ -1120,7 +1120,7 @@ GO(XShrinkRegion, iFpii)
 GO(XStoreBuffer, iFXpii)
 GO(XStoreBytes, iFXpi)
 GO(XStoreColor, iFXLbLWWWcc_)
-GO(XStoreColors, iFXLbLWWWcc_i)
+GOM(XStoreColors, iFEXLpi)
 //GO(_XStoreEventCookie, vFpp)
 GO(XStoreName, iFXLp)
 GO(XStoreNamedColor, iFXLpLi)