diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-09-18 21:01:13 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-09-18 21:01:13 +0200 |
| commit | 9414ece323bc6a9d024b6b969eb9f9c8bb9e20d3 (patch) | |
| tree | f59b535fe2c6a3273a9e7ff73e411fbb0c38aa51 /src/librarian | |
| parent | c64cb5b92b610adbc9c6bf73f8330bdd746611fd (diff) | |
| download | box64-9414ece323bc6a9d024b6b969eb9f9c8bb9e20d3.tar.gz box64-9414ece323bc6a9d024b6b969eb9f9c8bb9e20d3.zip | |
Added wrapped gtk2 (enough to launch Dwarf Fortress and some simple gtk2 samples)
Diffstat (limited to 'src/librarian')
| -rwxr-xr-x | src/librarian/globalsymbols.c | 6 | ||||
| -rwxr-xr-x | src/librarian/librarian.c | 28 |
2 files changed, 16 insertions, 18 deletions
diff --git a/src/librarian/globalsymbols.c b/src/librarian/globalsymbols.c index a5ca89c1..dfc163f3 100755 --- a/src/librarian/globalsymbols.c +++ b/src/librarian/globalsymbols.c @@ -24,7 +24,6 @@ // *********** GTK ***************** -#if 0 EXPORT void* gdk_display = NULL; // in case it's used... void my_checkGlobalGdkDisplay() @@ -38,7 +37,7 @@ void my_setGlobalGThreadsInit() int val = 1; uintptr_t globoffs, globend; if (GetGlobalNoWeakSymbolStartEnd(my_context->maplib, "g_threads_got_initialized", &globoffs, &globend, -1, NULL)) { - printf_log(LOG_DEBUG, "Global g_threads_got_initialized workaround, @%p <= %p\n", (void*)globoffs, (void*)val); + printf_log(LOG_DEBUG, "Global g_threads_got_initialized workaround, @%p <= %d\n", (void*)globoffs, val); memcpy((void*)globoffs, &val, sizeof(val)); } } @@ -50,14 +49,13 @@ void** my_GetGTKDisplay() return &gdk_display; char* name = getGDKX11LibName(); - library_t * lib = GetLibInternal(name?name:"libgtk-1.2.so.0"); + library_t * lib = GetLibInternal(name?name:"libgdk-x11-2.0.so.0"); if(!lib) return &gdk_display; // mmm, that will crash later probably void* s = dlsym(GetHandle(lib), "gdk_display"); gdk_display = *(void**)s; return s; } -#endif // **************** NCurses **************** EXPORT int COLS; EXPORT int LINES; diff --git a/src/librarian/librarian.c b/src/librarian/librarian.c index 03bcae0a..852aeefd 100755 --- a/src/librarian/librarian.c +++ b/src/librarian/librarian.c @@ -451,8 +451,8 @@ static int GetGlobalSymbolStartEnd_internal(lib_t *maplib, const char* name, uin // nope, not found return 0; } -//void** my_GetGTKDisplay(); -//void** my_GetGthreadsGotInitialized(); +void** my_GetGTKDisplay(); +void** my_GetGthreadsGotInitialized(); int GetGlobalSymbolStartEnd(lib_t *maplib, const char* name, uintptr_t* start, uintptr_t* end, elfheader_t* self, int version, const char* vername) { if(GetGlobalSymbolStartEnd_internal(maplib, name, start, end, self, version, vername)) { @@ -470,18 +470,18 @@ int GetGlobalSymbolStartEnd(lib_t *maplib, const char* name, uintptr_t* start, u return 1; } // some special case symbol, defined inside box64 itself - //if(!strcmp(name, "gdk_display")) { - // *start = (uintptr_t)my_GetGTKDisplay(); - // *end = *start+sizeof(void*); - // printf_log(LOG_INFO, "Using global gdk_display for gdk-x11 (%p:%p)\n", start, *(void**)start); - // return 1; - //} - //if(!strcmp(name, "g_threads_got_initialized")) { - // *start = (uintptr_t)my_GetGthreadsGotInitialized(); - // *end = *start+sizeof(int); - // printf_log(LOG_INFO, "Using global g_threads_got_initialized for gthread2 (%p:%p)\n", start, *(void**)start); - // return 1; - //} + if(!strcmp(name, "gdk_display")) { + *start = (uintptr_t)my_GetGTKDisplay(); + *end = *start+sizeof(void*); + printf_log(LOG_INFO, "Using global gdk_display for gdk-x11 (%p:%p)\n", start, *(void**)start); + return 1; + } + if(!strcmp(name, "g_threads_got_initialized")) { + *start = (uintptr_t)my_GetGthreadsGotInitialized(); + *end = *start+sizeof(int); + printf_log(LOG_INFO, "Using global g_threads_got_initialized for gthread2 (%p:%p)\n", start, *(void**)start); + return 1; + } // not found... return 0; } |