diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-12-13 11:16:37 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-12-13 11:16:37 +0100 |
| commit | fa76ce1f057f46a6133dfab67b78cdf16fd1f7f0 (patch) | |
| tree | e8ff26b7f48a32fd06e57e17c53d8440484351de /src/libtools | |
| parent | 59bb9c2083a3c9781bf0e0446f7de67951f0aff8 (diff) | |
| download | box64-fa76ce1f057f46a6133dfab67b78cdf16fd1f7f0.tar.gz box64-fa76ce1f057f46a6133dfab67b78cdf16fd1f7f0.zip | |
[BOX32][WRAPPER] Added 3 more 32bits wrapped function to libcairo
Diffstat (limited to 'src/libtools')
| -rw-r--r-- | src/libtools/my_x11_conv.c | 45 | ||||
| -rw-r--r-- | src/libtools/my_x11_conv.h | 1 |
2 files changed, 46 insertions, 0 deletions
diff --git a/src/libtools/my_x11_conv.c b/src/libtools/my_x11_conv.c index eb143e94..c9efd6e3 100644 --- a/src/libtools/my_x11_conv.c +++ b/src/libtools/my_x11_conv.c @@ -72,6 +72,31 @@ void convert_Screen_to_32(void* d, void* s) dst->save_unders = src->save_unders; dst->root_input_mask = to_long(src->root_input_mask); } +void convert_Screen_to_64(void* d, void* s) +{ + my_Screen_t* dst = d; + my_Screen_32_t* src = s; + dst->root_input_mask = from_long(src->root_input_mask); + dst->save_unders = src->save_unders; + dst->backing_store = src->backing_store; + dst->min_maps = src->min_maps; + dst->max_maps = src->max_maps; + dst->black_pixel = from_ulong(src->black_pixel); + dst->white_pixel = from_ulong(src->white_pixel); + dst->cmap = from_ulong(src->cmap); + dst->default_gc = from_ptrv(src->default_gc); + dst->root_visual = from_ptrv(src->root_visual); + dst->root_depth = src->root_depth; + dst->depths = from_ptrv(src->depths); + dst->ndepths = src->ndepths; + dst->mheight = src->mheight; + dst->mwidth = src->mwidth; + dst->height = src->height; + dst->width = src->width; + dst->root = from_ulong(src->root); + dst->display = getDisplay(from_ptrv(src->display)); + dst->ext_data = from_ptrv(src->ext_data); +} void internal_convert_Visual_to_32(void* d, void* s) { @@ -137,6 +162,17 @@ my_Visual_t* getVisual64(int N, my_Visual_32_t* a) return ret->_64; } +void* get_display_screen(int idx, void* a) +{ + my_XDisplay_t* dpy = my32_Displays_64[idx]; + my_XDisplay_32_t* dpy32 = &my32_Displays_32[idx]; + my_Screen_32_t* screens32 = from_ptrv(dpy32->screens); + for(int i=0; i<dpy->nscreens; ++i) + if(&screens32[i] == a) + return &dpy->screens[i]; + return a; +} + void* convert_Visual_to_32(void* dpy, void* a) { if(!dpy) return a; @@ -156,6 +192,15 @@ void* convert_Visual_to_64(void* dpy, void* a) return a; } +void* getScreen64(void* dpy, void* a) +{ + if(!dpy) return a; + for(int i=0; i<N_DISPLAY; ++i) + if(((&my32_Displays_32[i])==dpy) || (my32_Displays_64[i]==dpy)) { + return get_display_screen(i, a); + } + return a; +} void* my_dlopen(x64emu_t* emu, void *filename, int flag); void* addDisplay(void* d) diff --git a/src/libtools/my_x11_conv.h b/src/libtools/my_x11_conv.h index 709f7cfe..01b37d5d 100644 --- a/src/libtools/my_x11_conv.h +++ b/src/libtools/my_x11_conv.h @@ -24,6 +24,7 @@ void delDisplay(void* d); void refreshDisplay(void* dpy); void convert_Screen_to_32(void* d, void* s); +void* getScreen64(void* dpy, void* a); void* convert_Visual_to_32(void* dpy, void* a); void* convert_Visual_to_64(void* dpy, void* a); |