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)) ...@@ -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/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/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/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/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/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)) $(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 @@ ...@@ -30,19 +30,22 @@
* instead of those above. * instead of those above.
*/ */
#include <string.h> #include <errno.h>
#include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/time.h> #include <sys/time.h>
#include <time.h>
#include <unistd.h>
#include <fcntl.h>
#include <dlfcn.h> #include <dlfcn.h>
#include <fcntl.h>
#include <pthread.h>
#include <sys/mman.h> #include <sys/mman.h>
#include <unistd.h>
#include <zlib.h>
#include <jni.h> #include <jni.h>
#include <zlib.h>
#include <android/log.h> #include <android/log.h>
...@@ -50,12 +53,6 @@ ...@@ -50,12 +53,6 @@
#include "osl/detail/android-bootstrap.h" #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 LOGI
#undef LOGW #undef LOGW
...@@ -72,15 +69,6 @@ struct engine { ...@@ -72,15 +69,6 @@ struct engine {
int dummy; 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. */ /* These are valid / used in all apps. */
static const char *data_dir; static const char *data_dir;
static const char *cache_dir; static const char *cache_dir;
...@@ -278,26 +266,6 @@ setup_assets_tree(void) ...@@ -278,26 +266,6 @@ setup_assets_tree(void)
return 1; 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 /* The lo-native-code shared library is always loaded from Java, so this is
* always called by JNI first. * always called by JNI first.
*/ */
...@@ -404,7 +372,6 @@ get_jni_string_array(JNIEnv *env, ...@@ -404,7 +372,6 @@ get_jni_string_array(JNIEnv *env,
const char *s = (*env)->GetStringUTFChars(env, (*env)->GetObjectArrayElement(env, strv, i), NULL); const char *s = (*env)->GetStringUTFChars(env, (*env)->GetObjectArrayElement(env, strv, i), NULL);
(*argv)[i] = strdup(s); (*argv)[i] = strdup(s);
(*env)->ReleaseStringUTFChars(env, (*env)->GetObjectArrayElement(env, strv, i), s); (*env)->ReleaseStringUTFChars(env, (*env)->GetObjectArrayElement(env, strv, i), s);
/* LOGI("argv[%d] = %s", i, lo_main_argv[i]); */
} }
(*argv)[*argc] = NULL; (*argv)[*argc] = NULL;
...@@ -412,26 +379,6 @@ get_jni_string_array(JNIEnv *env, ...@@ -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(); // public static native int getpid();
__attribute__ ((visibility("default"))) __attribute__ ((visibility("default")))
...@@ -1312,59 +1259,4 @@ lo_get_app_data_dir(void) ...@@ -1312,59 +1259,4 @@ lo_get_app_data_dir(void)
return data_dir; 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: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -62,8 +62,6 @@ JavaVM *lo_get_javavm(void); ...@@ -62,8 +62,6 @@ JavaVM *lo_get_javavm(void);
const char *lo_get_app_data_dir(void); const char *lo_get_app_data_dir(void);
struct android_app *lo_get_app(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
......
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
#include <android/looper.h> #include <android/looper.h>
#include <android/bitmap.h> #include <android/bitmap.h>
#include <osl/detail/android-bootstrap.h> #include <osl/detail/android-bootstrap.h>
#include <osl/detail/android_native_app_glue.h>
#include <rtl/strbuf.hxx> #include <rtl/strbuf.hxx>
#include <basebmp/scanlineformats.hxx> #include <basebmp/scanlineformats.hxx>
...@@ -48,6 +47,8 @@ public: ...@@ -48,6 +47,8 @@ public:
virtual bool ErrorTrapPop( bool ) { return false; } 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) static rtl::OString MotionEdgeFlagsToString(int32_t nFlags)
{ {
rtl::OStringBuffer aStr; rtl::OStringBuffer aStr;
...@@ -194,6 +195,8 @@ static sal_uInt16 KeyToCode(AInputEvent *event) ...@@ -194,6 +195,8 @@ static sal_uInt16 KeyToCode(AInputEvent *event)
return nCode; return nCode;
} }
#endif
static void BlitFrameRegionToWindow(ANativeWindow_Buffer *pOutBuffer, static void BlitFrameRegionToWindow(ANativeWindow_Buffer *pOutBuffer,
const basebmp::BitmapDeviceSharedPtr& aDev, const basebmp::BitmapDeviceSharedPtr& aDev,
const ARect &rSrcRect, const ARect &rSrcRect,
...@@ -355,6 +358,8 @@ void AndroidSalInstance::damaged(AndroidSalFrame */* frame */, const Rectangle & ...@@ -355,6 +358,8 @@ void AndroidSalInstance::damaged(AndroidSalFrame */* frame */, const Rectangle &
mbQueueReDraw = true; mbQueueReDraw = true;
} }
#if 0
static const char *app_cmd_name(int cmd) static const char *app_cmd_name(int cmd)
{ {
switch (cmd) { switch (cmd) {
...@@ -381,17 +386,22 @@ static const char *app_cmd_name(int cmd) ...@@ -381,17 +386,22 @@ static const char *app_cmd_name(int cmd)
} }
} }
#endif
void AndroidSalInstance::GetWorkArea( Rectangle& rRect ) void AndroidSalInstance::GetWorkArea( Rectangle& rRect )
{ {
if (!mpApp || !mpApp->window) rRect = Rectangle( Point( 0, 0 ),
rRect = Rectangle( Point( 0, 0 ), Size( 1280, 750 ) );
Size( 1280, 750 ) );
else #if 0
rRect = Rectangle( Point( 0, 0 ), rRect = Rectangle( Point( 0, 0 ),
Size( ANativeWindow_getWidth( mpApp->window ), Size( ANativeWindow_getWidth( mpApp->window ),
ANativeWindow_getHeight( mpApp->window ) ) ); ANativeWindow_getHeight( mpApp->window ) ) );
#endif
} }
#if 0
void AndroidSalInstance::onAppCmd (struct android_app* app, int32_t cmd) void AndroidSalInstance::onAppCmd (struct android_app* app, int32_t cmd)
{ {
fprintf (stderr, "app cmd for app %p: %s\n", app, app_cmd_name(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* ...@@ -583,6 +593,8 @@ int32_t AndroidSalInstance::onInputEvent (struct android_app* app, AInputEvent*
return bHandled ? 1 : 0; return bHandled ? 1 : 0;
} }
#endif
AndroidSalInstance *AndroidSalInstance::getInstance() AndroidSalInstance *AndroidSalInstance::getInstance()
{ {
if (!ImplGetSVData()) if (!ImplGetSVData())
...@@ -593,6 +605,8 @@ AndroidSalInstance *AndroidSalInstance::getInstance() ...@@ -593,6 +605,8 @@ AndroidSalInstance *AndroidSalInstance::getInstance()
return static_cast<AndroidSalInstance *>(pData->m_pInstance); return static_cast<AndroidSalInstance *>(pData->m_pInstance);
} }
#if 0
extern "C" { extern "C" {
void onAppCmd_cb (struct android_app *app, int32_t cmd) void onAppCmd_cb (struct android_app *app, int32_t cmd)
{ {
...@@ -605,23 +619,14 @@ extern "C" { ...@@ -605,23 +619,14 @@ extern "C" {
} }
} }
#endif
AndroidSalInstance::AndroidSalInstance( SalYieldMutex *pMutex ) AndroidSalInstance::AndroidSalInstance( SalYieldMutex *pMutex )
: SvpSalInstance( pMutex ) : SvpSalInstance( pMutex )
, mpApp( NULL )
, mbQueueReDraw( false ) , mbQueueReDraw( false )
{ {
mpApp = lo_get_app(); fprintf (stderr, "created Android Sal Instance thread: %d\n",
fprintf (stderr, "created Android Sal Instance for app %p window %p thread: %d\n",
mpApp,
mpApp ? mpApp->window : NULL,
(int)pthread_self()); (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() AndroidSalInstance::~AndroidSalInstance()
...@@ -632,10 +637,7 @@ AndroidSalInstance::~AndroidSalInstance() ...@@ -632,10 +637,7 @@ AndroidSalInstance::~AndroidSalInstance()
void AndroidSalInstance::Wakeup() void AndroidSalInstance::Wakeup()
{ {
fprintf (stderr, "Wakeup alooper\n"); fprintf (stderr, "Wakeup alooper\n");
if (mpApp && mpApp->looper) fprintf (stderr, "busted - no global looper\n");
ALooper_wake (mpApp->looper);
else
fprintf (stderr, "busted - no global looper\n");
} }
void AndroidSalInstance::DoReleaseYield (int nTimeoutMS) void AndroidSalInstance::DoReleaseYield (int nTimeoutMS)
...@@ -644,10 +646,15 @@ void AndroidSalInstance::DoReleaseYield (int nTimeoutMS) ...@@ -644,10 +646,15 @@ void AndroidSalInstance::DoReleaseYield (int nTimeoutMS)
fprintf( stderr, "hit idle !\n" ); fprintf( stderr, "hit idle !\n" );
bHitIdle = true; bHitIdle = true;
#if 1
// Presumably this should never be called at all except in // Presumably this should never be called at all except in
// NativeActivity-based apps with a GUI, like android/qa/desktop, where // NativeActivity-based apps with a GUI, where the message pump is
// the message pump is run here in vcl? // run here in vcl, but we don't have any NativeActivitry-based
if (!mpApp) { // apps any more.
(void) nTimeoutMS;
{
static bool beenhere = false; static bool beenhere = false;
if (!beenhere) if (!beenhere)
{ {
...@@ -656,7 +663,7 @@ void AndroidSalInstance::DoReleaseYield (int nTimeoutMS) ...@@ -656,7 +663,7 @@ void AndroidSalInstance::DoReleaseYield (int nTimeoutMS)
} }
return; return;
} }
#else
// release yield mutex // release yield mutex
sal_uLong nAcquireCount = ReleaseYieldMutex(); sal_uLong nAcquireCount = ReleaseYieldMutex();
...@@ -685,6 +692,7 @@ void AndroidSalInstance::DoReleaseYield (int nTimeoutMS) ...@@ -685,6 +692,7 @@ void AndroidSalInstance::DoReleaseYield (int nTimeoutMS)
if (mbQueueReDraw && mpApp && mpApp->window) if (mbQueueReDraw && mpApp && mpApp->window)
AndroidSalInstance::getInstance()->RedrawWindows (mpApp->window); AndroidSalInstance::getInstance()->RedrawWindows (mpApp->window);
#endif
} }
bool AndroidSalInstance::AnyInput( sal_uInt16 nType ) bool AndroidSalInstance::AnyInput( sal_uInt16 nType )
......
...@@ -68,7 +68,6 @@ public: ...@@ -68,7 +68,6 @@ public:
void damaged(AndroidSalFrame *frame, const Rectangle &rRect); void damaged(AndroidSalFrame *frame, const Rectangle &rRect);
protected: protected:
virtual void DoReleaseYield( int nTimeoutMS ); virtual void DoReleaseYield( int nTimeoutMS );
struct android_app *mpApp;
Region maRedrawRegion; Region maRedrawRegion;
bool mbQueueReDraw; bool mbQueueReDraw;
}; };
......
...@@ -791,11 +791,9 @@ sal_Bool Dialog::Close() ...@@ -791,11 +791,9 @@ sal_Bool Dialog::Close()
sal_Bool Dialog::ImplStartExecuteModal() sal_Bool Dialog::ImplStartExecuteModal()
{ {
#ifdef ANDROID #ifdef ANDROID
// If a non-NativeActivity app, we shouldn't be showing any dialogs // Not sure if the idea is that this will be called on Android or
if (lo_get_app() == NULL) { // not? But OK, let's try to have the below code reached on
fprintf(stderr, "%s: Should not do anything, returning false\n", __FUNCTION__); // Android...
return sal_False;
}
#endif #endif
if ( mbInExecute ) 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