about summary refs log tree commit diff stats
path: root/src/librarian
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-09-18 21:01:13 +0200
committerptitSeb <sebastien.chev@gmail.com>2021-09-18 21:01:13 +0200
commit9414ece323bc6a9d024b6b969eb9f9c8bb9e20d3 (patch)
treef59b535fe2c6a3273a9e7ff73e411fbb0c38aa51 /src/librarian
parentc64cb5b92b610adbc9c6bf73f8330bdd746611fd (diff)
downloadbox64-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-xsrc/librarian/globalsymbols.c6
-rwxr-xr-xsrc/librarian/librarian.c28
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;
 }