#include <locale.h>
#include <pthread.h>
#include <unistd.h>
+#include <sys/prctl.h>
#include <android/configuration.h>
#include <android/looper.h>
#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "ecere-app", __VA_ARGS__))
#define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, "ecere-app", __VA_ARGS__))
#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "ecere-app", __VA_ARGS__))
-#ifdef _DEBUG
+#ifndef _DEBUG
#define LOGV(...) ((void)0)
#else
#define LOGV(...) ((void)__android_log_print(ANDROID_LOG_VERBOSE, "ecere-app", __VA_ARGS__))
void pre_exec_cmd(AppCommand cmd)
{
- PrintLn("pre_exec_cmd: ", cmd);
+ //PrintLn("pre_exec_cmd: ", cmd);
switch(cmd)
{
case inputChanged:
void post_exec_cmd(AppCommand cmd)
{
- PrintLn("post_exec_cmd: ", cmd);
+ //PrintLn("post_exec_cmd: ", cmd);
switch(cmd)
{
case termWindow:
static void onDestroy(ANativeActivity* activity)
{
AndroidAppGlue app = (AndroidAppGlue)activity->instance;
- LOGV("Destroy: %p\n", activity);
+ LOGI("Destroy: %p\n", activity);
app.cleanup();
app.Wait();
delete androidActivity;
delete __androidCurrentModule;
- LOGV("THE END.");
+ LOGI("THE END.");
}
static void onStart(ANativeActivity* activity)
{
AndroidAppGlue app = (AndroidAppGlue)activity->instance;
- LOGV("Start: %p\n", activity);
+ LOGI("Start: %p\n", activity);
app.set_activity_state(start);
}
static void onResume(ANativeActivity* activity)
{
AndroidAppGlue app = (AndroidAppGlue)activity->instance;
- LOGV("Resume: %p\n", activity);
+ LOGI("Resume: %p\n", activity);
app.set_activity_state(resume);
}
{
AndroidAppGlue app = (AndroidAppGlue)activity->instance;
void* savedState = null;
- LOGV("SaveInstanceState: %p\n", activity);
+ LOGI("SaveInstanceState: %p\n", activity);
app.mutex.Wait();
app.stateSaved = false;
app.write_cmd(saveState);
static void onPause(ANativeActivity* activity)
{
AndroidAppGlue app = (AndroidAppGlue)activity->instance;
- LOGV("Pause: %p\n", activity);
+ LOGI("Pause: %p\n", activity);
app.set_activity_state(pause);
}
static void onStop(ANativeActivity* activity)
{
AndroidAppGlue app = (AndroidAppGlue)activity->instance;
- LOGV("Stop: %p\n", activity);
+ LOGI("Stop: %p\n", activity);
app.set_activity_state(stop);
}
static void onConfigurationChanged(ANativeActivity* activity)
{
AndroidAppGlue app = (AndroidAppGlue)activity->instance;
- LOGV("ConfigurationChanged: %p\n", activity);
+ LOGI("ConfigurationChanged: %p\n", activity);
app.write_cmd(configChanged);
}
static void onLowMemory(ANativeActivity* activity)
{
AndroidAppGlue app = (AndroidAppGlue)activity->instance;
- LOGV("LowMemory: %p\n", activity);
+ LOGI("LowMemory: %p\n", activity);
app.write_cmd(lowMemory);
}
static void onWindowFocusChanged(ANativeActivity* activity, int focused)
{
AndroidAppGlue app = (AndroidAppGlue)activity->instance;
- LOGV("WindowFocusChanged: %p -- %d\n", activity, focused);
+ LOGI("WindowFocusChanged: %p -- %d\n", activity, focused);
app.write_cmd(focused ? gainedFocus : lostFocus);
}
static void onNativeWindowCreated(ANativeActivity* activity, ANativeWindow* window)
{
AndroidAppGlue app = (AndroidAppGlue)activity->instance;
- LOGV("NativeWindowCreated: %p -- %p\n", activity, window);
+ LOGI("NativeWindowCreated: %p -- %p\n", activity, window);
app.set_window(window);
}
static void onNativeWindowDestroyed(ANativeActivity* activity, ANativeWindow* window)
{
AndroidAppGlue app = (AndroidAppGlue)activity->instance;
- LOGV("NativeWindowDestroyed: %p -- %p\n", activity, window);
+ LOGI("NativeWindowDestroyed: %p -- %p\n", activity, window);
app.set_window(null);
}
static void onInputQueueCreated(ANativeActivity* activity, AInputQueue* queue)
{
AndroidAppGlue app = (AndroidAppGlue)activity->instance;
- LOGV("InputQueueCreated: %p -- %p\n", activity, queue);
+ LOGI("InputQueueCreated: %p -- %p\n", activity, queue);
app.set_input(queue);
}
static void onInputQueueDestroyed(ANativeActivity* activity, AInputQueue* queue)
{
AndroidAppGlue app = (AndroidAppGlue)activity->instance;
- LOGV("InputQueueDestroyed: %p -- %p\n", activity, queue);
+ LOGI("InputQueueDestroyed: %p -- %p\n", activity, queue);
app.inputQueue = null;
app.set_input(null);
}
__thisModule = null;
__androidCurrentModule = null;
- LOGV("Creating: %p\n", activity);
+ prctl(PR_SET_DUMPABLE, 1);
+
+ LOGI("Creating: %p\n", activity);
//(*activity->vm)->AttachCurrentThread(activity->vm, &env, 0);
clazz = (*env)->GetObjectClass(env, activity->clazz);
eModule_Load(__androidCurrentModule, "ecere", publicAccess);
+ /*
if(activity->internalDataPath) PrintLn("internalDataPath is ", activity->internalDataPath);
if(activity->externalDataPath) PrintLn("externalDataPath is ", activity->externalDataPath);
{
char tmp[256];
PrintLn("cwd is ", GetWorkingDir(tmp, sizeof(tmp)));
}
+ */
ANativeActivity_setWindowFlags(activity, AWINDOW_FLAG_FULLSCREEN|AWINDOW_FLAG_KEEP_SCREEN_ON, 0 );
app = AndroidActivity { activity = activity, moduleName = moduleName };
static AndroidActivity androidActivity;
-default const char * AndroidInterface_GetLibLocation()
+default const char * AndroidInterface_GetLibLocation(Application a)
{
- if(androidActivity)
- {
- static char loc[MAX_LOCATION];
- sprintf(loc, "/data/data/com.ecere.%s/lib/lib", androidActivity.moduleName);
- return loc;
- }
- return null;
+ static char loc[MAX_LOCATION];
+ // sprintf(loc, "/data/data/com.ecere.%s/lib/lib", a.argv[0]);
+ sprintf(loc, "/data/app/com.ecere.%s-1/lib/arm64/lib", a.argv[0]);
+ return loc;
}
static bool gotInit;