From ae77377f7be6dbb662321571937bf7ac15744f78 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Mon, 20 Apr 2020 20:21:39 +0200 Subject: [PATCH] app: [Android] replace PlatformHandle with JavaVM, AppContext methods Clearer and fewer types. Signed-off-by: Elias Naur --- app/app_android.go | 12 ++++++++---- app/internal/window/handle_android.go | 11 ----------- app/internal/window/os_android.go | 16 +++++++++++----- 3 files changed, 19 insertions(+), 20 deletions(-) delete mode 100644 app/internal/window/handle_android.go diff --git a/app/app_android.go b/app/app_android.go index 13a004a9..ba7420fc 100644 --- a/app/app_android.go +++ b/app/app_android.go @@ -4,11 +4,15 @@ import ( "gioui.org/app/internal/window" ) -type Handle window.Handle +// JavaVM returns the global JNI JavaVM. +func JavaVM() uintptr { + return window.JavaVM() +} -// PlatformHandle returns the Android platform-specific Handle. -func PlatformHandle() *Handle { - return (*Handle)(window.PlatformHandle) +// AppContext returns the global Application context as a JNI +// jobject. +func AppContext() uintptr { + return window.AppContext() } // androidDriver is an interface that allows the Window's run method diff --git a/app/internal/window/handle_android.go b/app/internal/window/handle_android.go deleted file mode 100644 index d35ccb98..00000000 --- a/app/internal/window/handle_android.go +++ /dev/null @@ -1,11 +0,0 @@ -package window - -var PlatformHandle *Handle - -type Handle struct { - // JVM is the JNI *JVM pointer. - JVM uintptr - // Context is a global reference to the application's - // android.content.Context instance. - Context uintptr -} diff --git a/app/internal/window/os_android.go b/app/internal/window/os_android.go index a23fb178..def55c35 100644 --- a/app/internal/window/os_android.go +++ b/app/internal/window/os_android.go @@ -61,6 +61,8 @@ var dataDirChan = make(chan string, 1) var theJVM *C.JavaVM +var appContext C.jobject + var views = make(map[C.jlong]*window) var mainWindow = newWindowRendezvous() @@ -91,15 +93,19 @@ func runGoMain(env *C.JNIEnv, class C.jclass, jdataDir C.jbyteArray, context C.j dataDir := C.GoStringN((*C.char)(unsafe.Pointer(dirBytes)), n) dataDirChan <- dataDir C.gio_jni_ReleaseByteArrayElements(env, jdataDir, dirBytes) - context = C.gio_jni_NewGlobalRef(env, context) + appContext = C.gio_jni_NewGlobalRef(env, context) - PlatformHandle = &Handle{ - JVM: uintptr(unsafe.Pointer(theJVM)), - Context: uintptr(context), - } runMain() } +func JavaVM() uintptr { + return uintptr(unsafe.Pointer(theJVM)) +} + +func AppContext() uintptr { + return uintptr(appContext) +} + func GetDataDir() string { return <-dataDirChan }