summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Lillqvist <tlillqvist@suse.com>2012-01-25 16:41:45 +0200
committerTor Lillqvist <tlillqvist@suse.com>2012-01-25 19:05:31 +0200
commitf9c0e552355a0ae30ba75b427a3d8749ca8ebe9b (patch)
tree0b475f8d9286fe2a398014b6358863b459c7b29e
parent113dca13b1d0f957d69c25d6d9e84e821bd710aa (diff)
Bin global_android_app and instead use lo-bootstrap API
Instead of introducing a global variable, use the already existing saved android_app pointer in lo-bootstrap.c, and just add a function to rettrieve that. Reanme osl/detail/android.h back to android_native_app_glue.h, which is the file from NDK/sources that it is. "android.h" sounded to me too grand, as if it was some universal Android header. But if we do start to modify the android_native_app_glue stuff heavily, then it indeed makes sense to call it something else. Until then, revert also some whitespace changes to android_native_app_glue.c for it to be as close as possible to the "upstream" one in the NDK, for clarity.
-rw-r--r--sal/Package_inc.mk2
-rw-r--r--sal/android/android_native_app_glue.c15
-rw-r--r--sal/android/lo-bootstrap.c7
-rw-r--r--sal/inc/osl/detail/android_native_app_glue.h (renamed from sal/inc/osl/detail/android.h)7
-rw-r--r--solenv/inc/unxandr/lo-bootstrap.h2
-rw-r--r--vcl/android/androidinst.cxx14
-rw-r--r--vcl/inc/android/androidinst.hxx1
7 files changed, 24 insertions, 24 deletions
diff --git a/sal/Package_inc.mk b/sal/Package_inc.mk
index d0520efcd757..e43de3e46388 100644
--- a/sal/Package_inc.mk
+++ b/sal/Package_inc.mk
@@ -64,7 +64,7 @@ $(eval $(call gb_Package_add_file,sal_inc,inc/osl/thread.hxx,osl/thread.hxx))
$(eval $(call gb_Package_add_file,sal_inc,inc/osl/time.h,osl/time.h))
$(eval $(call gb_Package_add_file,sal_inc,inc/osl/util.h,osl/util.h))
$(eval $(call gb_Package_add_file,sal_inc,inc/osl/detail/file.h,osl/detail/file.h))
-$(eval $(call gb_Package_add_file,sal_inc,inc/osl/detail/android.h,osl/detail/android.h))
+$(eval $(call gb_Package_add_file,sal_inc,inc/osl/detail/android_native_app_glue.h,osl/detail/android_native_app_glue.h))
$(eval $(call gb_Package_add_file,sal_inc,inc/rtl/allocator.hxx,rtl/allocator.hxx))
$(eval $(call gb_Package_add_file,sal_inc,inc/rtl/alloc.h,rtl/alloc.h))
$(eval $(call gb_Package_add_file,sal_inc,inc/rtl/bootstrap.h,rtl/bootstrap.h))
diff --git a/sal/android/android_native_app_glue.c b/sal/android/android_native_app_glue.c
index efd7a4b8c38e..cf5d8e8575fd 100644
--- a/sal/android/android_native_app_glue.c
+++ b/sal/android/android_native_app_glue.c
@@ -22,7 +22,7 @@
#include <unistd.h>
#include <sys/resource.h>
-#include "osl/detail/android.h"
+#include "osl/detail/android_native_app_glue.h"
#include <android/log.h>
#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "threaded_app", __VA_ARGS__))
@@ -236,14 +236,9 @@ static void* android_app_entry(void* param) {
// --------------------------------------------------------------------
static struct android_app* android_app_create(ANativeActivity* activity,
- void* savedState, size_t savedStateSize)
-{
+ void* savedState, size_t savedStateSize) {
struct android_app* android_app = (struct android_app*)malloc(sizeof(struct android_app));
memset(android_app, 0, sizeof(struct android_app));
-
- // get this across to VCL.
- global_android_app = android_app;
-
android_app->activity = activity;
pthread_mutex_init(&android_app->mutex, NULL);
@@ -419,13 +414,9 @@ static void onInputQueueDestroyed(ANativeActivity* activity, AInputQueue* queue)
android_app_set_input((struct android_app*)activity->instance, NULL);
}
-__attribute__ ((visibility("default"))) struct android_app *global_android_app = NULL;
-
__attribute__ ((visibility("default"))) void ANativeActivity_onCreate(ANativeActivity* activity,
- void* savedState, size_t savedStateSize)
-{
+ void* savedState, size_t savedStateSize) {
LOGI("Creating: %p\n", activity);
-
activity->callbacks->onDestroy = onDestroy;
activity->callbacks->onStart = onStart;
activity->callbacks->onResume = onResume;
diff --git a/sal/android/lo-bootstrap.c b/sal/android/lo-bootstrap.c
index bd9049432081..3cb8d3a25300 100644
--- a/sal/android/lo-bootstrap.c
+++ b/sal/android/lo-bootstrap.c
@@ -1470,6 +1470,13 @@ lo_get_javavm(void)
}
__attribute__ ((visibility("default")))
+struct android_app *
+lo_get_app(void)
+{
+ return app;
+}
+
+__attribute__ ((visibility("default")))
void
android_main(struct android_app* state)
{
diff --git a/sal/inc/osl/detail/android.h b/sal/inc/osl/detail/android_native_app_glue.h
index beb5b1d348a3..1b8c1f10725d 100644
--- a/sal/inc/osl/detail/android.h
+++ b/sal/inc/osl/detail/android_native_app_glue.h
@@ -30,11 +30,6 @@
extern "C" {
#endif
-/*
- * Global activity to be hooked by upper layers.
- */
-extern struct android_app *global_android_app;
-
/**
* The native activity interface provided by <android/native_activity.h>
* is based on a set of application-provided callbacks that will be called
@@ -86,6 +81,8 @@ extern struct android_app *global_android_app;
* full usage example. Also look at the JavaDoc of NativeActivity.
*/
+struct android_app;
+
/**
* Data associated with an ALooper fd that will be returned as the "outData"
* when that source has data ready.
diff --git a/solenv/inc/unxandr/lo-bootstrap.h b/solenv/inc/unxandr/lo-bootstrap.h
index 48b1a5c57e72..d78d88beaaab 100644
--- a/solenv/inc/unxandr/lo-bootstrap.h
+++ b/solenv/inc/unxandr/lo-bootstrap.h
@@ -66,6 +66,8 @@ int lo_dlcall_argc_argv(void *function,
JavaVM *lo_get_javavm(void);
+struct android_app *lo_get_app(void);
+
#ifdef __cplusplus
}
#endif
diff --git a/vcl/android/androidinst.cxx b/vcl/android/androidinst.cxx
index 08c01ae4fea2..a7721438e8c3 100644
--- a/vcl/android/androidinst.cxx
+++ b/vcl/android/androidinst.cxx
@@ -31,14 +31,16 @@
#include <generic/gendata.hxx>
#include <android/log.h>
#include <android/looper.h>
-#include <osl/detail/android.h>
+#include <lo-bootstrap.h>
+#include <osl/detail/android_native_app_glue.h>
AndroidSalInstance::AndroidSalInstance( SalYieldMutex *pMutex )
: SvpSalInstance( pMutex )
{
+ app = lo_get_app();
fprintf (stderr, "created Android Sal Instance for app %p window %p\n",
- global_android_app,
- global_android_app ? global_android_app->window : NULL);
+ app,
+ app ? app->window : NULL);
}
AndroidSalInstance::~AndroidSalInstance()
@@ -48,8 +50,8 @@ AndroidSalInstance::~AndroidSalInstance()
void AndroidSalInstance::Wakeup()
{
- if (global_android_app && global_android_app->looper)
- ALooper_wake (global_android_app->looper);
+ if (app && app->looper)
+ ALooper_wake (app->looper);
else
fprintf (stderr, "busted - no global looper\n");
}
@@ -71,7 +73,7 @@ bool AndroidSalInstance::AnyInput( sal_uInt16 nType )
(void) nType;
// FIXME: ideally we should check the input queue to avoid being busy ...
fprintf (stderr, "FIXME: AnyInput returns true\n");
- // global_android_app->inputQueue ? ...
+ // app->inputQueue ? ...
return true;
}
diff --git a/vcl/inc/android/androidinst.hxx b/vcl/inc/android/androidinst.hxx
index a5c69b0f419a..3b026b0d9357 100644
--- a/vcl/inc/android/androidinst.hxx
+++ b/vcl/inc/android/androidinst.hxx
@@ -45,6 +45,7 @@ public:
virtual bool AnyInput( sal_uInt16 nType );
protected:
virtual void DoReleaseYield( int nTimeoutMS );
+ struct android_app *app;
};
#endif // ANDROID_SALINST_H