Kaydet (Commit) f9c0e552 authored tarafından Tor Lillqvist's avatar Tor Lillqvist

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.
üst 113dca13
......@@ -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))
......
......@@ -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;
......
......@@ -1469,6 +1469,13 @@ lo_get_javavm(void)
return app->activity->vm;
}
__attribute__ ((visibility("default")))
struct android_app *
lo_get_app(void)
{
return app;
}
__attribute__ ((visibility("default")))
void
android_main(struct android_app* state)
......
......@@ -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.
......
......@@ -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
......
......@@ -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;
}
......
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment