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

No NativeActivity, so native_app_glue and struct android_app are meaningless

Leave the NativeActivity-related code in androidinst.cxx for reference for
now.

Change-Id: I760c02ea361361be2d2b69c4cad1e38311f51247
üst fd56eb98
......@@ -61,7 +61,6 @@ $(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_native_app_glue.h,osl/detail/android_native_app_glue.h))
$(eval $(call gb_Package_add_file,sal_inc,inc/osl/detail/android-bootstrap.h,osl/detail/android-bootstrap.h))
$(eval $(call gb_Package_add_file,sal_inc,inc/osl/detail/ios-bootstrap.h,osl/detail/ios-bootstrap.h))
$(eval $(call gb_Package_add_file,sal_inc,inc/osl/detail/component-mapping.h,osl/detail/component-mapping.h))
......
This diff is collapsed.
......@@ -30,19 +30,22 @@
* instead of those above.
*/
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <time.h>
#include <unistd.h>
#include <fcntl.h>
#include <dlfcn.h>
#include <fcntl.h>
#include <pthread.h>
#include <sys/mman.h>
#include <unistd.h>
#include <zlib.h>
#include <jni.h>
#include <zlib.h>
#include <android/log.h>
......@@ -50,12 +53,6 @@
#include "osl/detail/android-bootstrap.h"
#pragma GCC diagnostic ignored "-Wdeclaration-after-statement"
#include "android_native_app_glue.c"
#pragma GCC diagnostic warning "-Wdeclaration-after-statement"
#undef LOGI
#undef LOGW
......@@ -72,15 +69,6 @@ struct engine {
int dummy;
};
/* These vars are valid / used only when this library is used from
* NativeActivity-based apps.
*/
static struct android_app *app;
static int (*lo_main)(int, const char **);
static int lo_main_argc;
static const char **lo_main_argv;
static int sleep_time = 0;
/* These are valid / used in all apps. */
static const char *data_dir;
static const char *cache_dir;
......@@ -278,26 +266,6 @@ setup_assets_tree(void)
return 1;
}
static void
engine_handle_cmd(struct android_app* state,
int32_t cmd)
{
(void) state;
switch (cmd) {
case APP_CMD_SAVE_STATE:
break;
case APP_CMD_INIT_WINDOW:
break;
case APP_CMD_TERM_WINDOW:
break;
case APP_CMD_GAINED_FOCUS:
break;
case APP_CMD_LOST_FOCUS:
break;
}
}
/* The lo-native-code shared library is always loaded from Java, so this is
* always called by JNI first.
*/
......@@ -404,7 +372,6 @@ get_jni_string_array(JNIEnv *env,
const char *s = (*env)->GetStringUTFChars(env, (*env)->GetObjectArrayElement(env, strv, i), NULL);
(*argv)[i] = strdup(s);
(*env)->ReleaseStringUTFChars(env, (*env)->GetObjectArrayElement(env, strv, i), s);
/* LOGI("argv[%d] = %s", i, lo_main_argv[i]); */
}
(*argv)[*argc] = NULL;
......@@ -412,26 +379,6 @@ get_jni_string_array(JNIEnv *env,
}
// public static native boolean setup(Object lo_main_argument,
// int lo_main_delay);
__attribute__ ((visibility("default")))
jboolean
Java_org_libreoffice_android_Bootstrap_setup__Ljava_lang_Object_2I(JNIEnv* env,
jobject clazz,
jobject lo_main_argument,
jint lo_main_delay)
{
(void) clazz;
if (!get_jni_string_array(env, "setup: lo_main_argument", lo_main_argument, &lo_main_argc, &lo_main_argv))
return JNI_FALSE;
sleep_time = lo_main_delay;
return JNI_TRUE;
}
// public static native int getpid();
__attribute__ ((visibility("default")))
......@@ -1312,59 +1259,4 @@ lo_get_app_data_dir(void)
return data_dir;
}
__attribute__ ((visibility("default")))
struct android_app *
lo_get_app(void)
{
return app;
}
/* Note that android_main() is used only in NativeActivity-based apps. Only
* the android/qa/sc unit test app is such, and it is unclear whether there is
* any reason to continue maintaining that buildable.
*/
__attribute__ ((visibility("default")))
void
android_main(struct android_app* state)
{
jint nRet;
JNIEnv *pEnv = NULL;
struct engine engine;
Dl_info lo_main_info;
JavaVMAttachArgs aArgs = {
JNI_VERSION_1_2,
"LibreOfficeThread",
NULL
};
fprintf (stderr, "android_main in thread: %d\n", (int)pthread_self());
if (sleep_time != 0) {
LOGI("android_main: Sleeping for %d seconds, start ndk-gdb NOW if that is your intention", sleep_time);
sleep(sleep_time);
}
nRet = (*(*state->activity->vm)->AttachCurrentThreadAsDaemon)(state->activity->vm, &pEnv, &aArgs);
fprintf (stderr, "attach thread returned %d %p\n", nRet, pEnv);
app = state;
memset(&engine, 0, sizeof(engine));
state->userData = &engine;
state->onAppCmd = engine_handle_cmd;
/* Look up lo_main() dynamically even if it is in the same .so as this code,
* but that is only in the case for code built to be used in a NativeActivity-based app.
*/
lo_main = dlsym(RTLD_DEFAULT, "lo_main");
if (dladdr(lo_main, &lo_main_info) != 0) {
lo_main_argv[0] = lo_main_info.dli_fname;
}
lo_main(lo_main_argc, lo_main_argv);
nRet = (*(*state->activity->vm)->DetachCurrentThread)(state->activity->vm);
fprintf (stderr, "exit android_main\n");
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -62,8 +62,6 @@ JavaVM *lo_get_javavm(void);
const char *lo_get_app_data_dir(void);
struct android_app *lo_get_app(void);
#ifdef __cplusplus
}
#endif
......
......@@ -34,7 +34,6 @@
#include <android/looper.h>
#include <android/bitmap.h>
#include <osl/detail/android-bootstrap.h>
#include <osl/detail/android_native_app_glue.h>
#include <rtl/strbuf.hxx>
#include <basebmp/scanlineformats.hxx>
......@@ -48,6 +47,8 @@ public:
virtual bool ErrorTrapPop( bool ) { return false; }
};
#if 0 // Code from NativeActivity-based times left for reference inside #if 0 here and later
static rtl::OString MotionEdgeFlagsToString(int32_t nFlags)
{
rtl::OStringBuffer aStr;
......@@ -194,6 +195,8 @@ static sal_uInt16 KeyToCode(AInputEvent *event)
return nCode;
}
#endif
static void BlitFrameRegionToWindow(ANativeWindow_Buffer *pOutBuffer,
const basebmp::BitmapDeviceSharedPtr& aDev,
const ARect &rSrcRect,
......@@ -355,6 +358,8 @@ void AndroidSalInstance::damaged(AndroidSalFrame */* frame */, const Rectangle &
mbQueueReDraw = true;
}
#if 0
static const char *app_cmd_name(int cmd)
{
switch (cmd) {
......@@ -381,17 +386,22 @@ static const char *app_cmd_name(int cmd)
}
}
#endif
void AndroidSalInstance::GetWorkArea( Rectangle& rRect )
{
if (!mpApp || !mpApp->window)
rRect = Rectangle( Point( 0, 0 ),
Size( 1280, 750 ) );
else
rRect = Rectangle( Point( 0, 0 ),
Size( ANativeWindow_getWidth( mpApp->window ),
ANativeWindow_getHeight( mpApp->window ) ) );
rRect = Rectangle( Point( 0, 0 ),
Size( 1280, 750 ) );
#if 0
rRect = Rectangle( Point( 0, 0 ),
Size( ANativeWindow_getWidth( mpApp->window ),
ANativeWindow_getHeight( mpApp->window ) ) );
#endif
}
#if 0
void AndroidSalInstance::onAppCmd (struct android_app* app, int32_t cmd)
{
fprintf (stderr, "app cmd for app %p: %s\n", app, app_cmd_name(cmd));
......@@ -583,6 +593,8 @@ int32_t AndroidSalInstance::onInputEvent (struct android_app* app, AInputEvent*
return bHandled ? 1 : 0;
}
#endif
AndroidSalInstance *AndroidSalInstance::getInstance()
{
if (!ImplGetSVData())
......@@ -593,6 +605,8 @@ AndroidSalInstance *AndroidSalInstance::getInstance()
return static_cast<AndroidSalInstance *>(pData->m_pInstance);
}
#if 0
extern "C" {
void onAppCmd_cb (struct android_app *app, int32_t cmd)
{
......@@ -605,23 +619,14 @@ extern "C" {
}
}
#endif
AndroidSalInstance::AndroidSalInstance( SalYieldMutex *pMutex )
: SvpSalInstance( pMutex )
, mpApp( NULL )
, mbQueueReDraw( false )
{
mpApp = lo_get_app();
fprintf (stderr, "created Android Sal Instance for app %p window %p thread: %d\n",
mpApp,
mpApp ? mpApp->window : NULL,
fprintf (stderr, "created Android Sal Instance thread: %d\n",
(int)pthread_self());
if (mpApp)
{
pthread_mutex_lock (&mpApp->mutex);
mpApp->onAppCmd = onAppCmd_cb;
mpApp->onInputEvent = onInputEvent_cb;
pthread_mutex_unlock (&mpApp->mutex);
}
}
AndroidSalInstance::~AndroidSalInstance()
......@@ -632,10 +637,7 @@ AndroidSalInstance::~AndroidSalInstance()
void AndroidSalInstance::Wakeup()
{
fprintf (stderr, "Wakeup alooper\n");
if (mpApp && mpApp->looper)
ALooper_wake (mpApp->looper);
else
fprintf (stderr, "busted - no global looper\n");
fprintf (stderr, "busted - no global looper\n");
}
void AndroidSalInstance::DoReleaseYield (int nTimeoutMS)
......@@ -644,10 +646,15 @@ void AndroidSalInstance::DoReleaseYield (int nTimeoutMS)
fprintf( stderr, "hit idle !\n" );
bHitIdle = true;
#if 1
// Presumably this should never be called at all except in
// NativeActivity-based apps with a GUI, like android/qa/desktop, where
// the message pump is run here in vcl?
if (!mpApp) {
// NativeActivity-based apps with a GUI, where the message pump is
// run here in vcl, but we don't have any NativeActivitry-based
// apps any more.
(void) nTimeoutMS;
{
static bool beenhere = false;
if (!beenhere)
{
......@@ -656,7 +663,7 @@ void AndroidSalInstance::DoReleaseYield (int nTimeoutMS)
}
return;
}
#else
// release yield mutex
sal_uLong nAcquireCount = ReleaseYieldMutex();
......@@ -685,6 +692,7 @@ void AndroidSalInstance::DoReleaseYield (int nTimeoutMS)
if (mbQueueReDraw && mpApp && mpApp->window)
AndroidSalInstance::getInstance()->RedrawWindows (mpApp->window);
#endif
}
bool AndroidSalInstance::AnyInput( sal_uInt16 nType )
......
......@@ -68,7 +68,6 @@ public:
void damaged(AndroidSalFrame *frame, const Rectangle &rRect);
protected:
virtual void DoReleaseYield( int nTimeoutMS );
struct android_app *mpApp;
Region maRedrawRegion;
bool mbQueueReDraw;
};
......
......@@ -791,11 +791,9 @@ sal_Bool Dialog::Close()
sal_Bool Dialog::ImplStartExecuteModal()
{
#ifdef ANDROID
// If a non-NativeActivity app, we shouldn't be showing any dialogs
if (lo_get_app() == NULL) {
fprintf(stderr, "%s: Should not do anything, returning false\n", __FUNCTION__);
return sal_False;
}
// Not sure if the idea is that this will be called on Android or
// not? But OK, let's try to have the below code reached on
// Android...
#endif
if ( mbInExecute )
......
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