about summary refs log tree commit diff stats
path: root/src/libtools/my_x11_conv.c
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-04-12 14:31:54 +0200
committerptitSeb <sebastien.chev@gmail.com>2025-04-12 14:31:54 +0200
commit68f5512ee704da7dea035fee32a30f68bf6c17a3 (patch)
tree470d9bb8638ce9c681c95da3edd161c5e04fb9fc /src/libtools/my_x11_conv.c
parentb3165e62aba5c1807d7b37096559cb57551e3859 (diff)
downloadbox64-68f5512ee704da7dea035fee32a30f68bf6c17a3.tar.gz
box64-68f5512ee704da7dea035fee32a30f68bf6c17a3.zip
[BOX32][WRAPPER] Fixed 32bits wrapping for XRenderQueryFilters function
Diffstat (limited to 'src/libtools/my_x11_conv.c')
-rw-r--r--src/libtools/my_x11_conv.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/libtools/my_x11_conv.c b/src/libtools/my_x11_conv.c
index eb1dadbd..816f9b9b 100644
--- a/src/libtools/my_x11_conv.c
+++ b/src/libtools/my_x11_conv.c
@@ -1407,3 +1407,35 @@ void* inplace_XDeviceInfo_enlarge(void* a)
     }
     return a;
 }
+
+
+void* inplace_XFilters_shrink(void* a)
+{
+    if(a) {
+        my_XFilters_t* src = a;
+        my_XFilters_32_t* dst = a;
+        dst->nfilter = src->nfilter;
+        char** filter = src->filter;
+        dst->filter = to_ptrv(filter);
+        dst->nalias = src->nalias;
+        dst->alias = to_ptrv(src->alias);
+        for(int i=0; i<dst->nfilter; ++i)
+            ((ptr_t*)(filter))[i] = to_ptrv(filter[i]);
+    }
+    return a;
+}
+void* inplace_XFilters_enlarge(void* a)
+{
+    if(a) {
+        my_XFilters_t* dst = a;
+        my_XFilters_32_t* src = a;
+        dst->alias = from_ptrv(src->alias);
+        dst->nalias = src->nalias;
+        dst->filter = from_ptrv(src->filter);
+        dst->nfilter = src->nfilter;
+        char** filter = dst->filter;
+        for(int i=dst->nfilter-1; i>=0; --i)
+            filter[i] = from_ptrv(((ptr_t*)(filter))[i]);
+    }
+    return a;
+}