summaryrefslogtreecommitdiffstats
path: root/native
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2010-07-09 18:20:09 -0700
committerDianne Hackborn <hackbod@google.com>2010-07-09 18:20:09 -0700
commitfaccac7616795859af257777900db514d425a106 (patch)
tree54845290d489839c1bf48c36a907d7aa9bb4e35a /native
parent289b9b62372ef52a06113b83dfb870e2c2fb325a (diff)
downloadframeworks_base-faccac7616795859af257777900db514d425a106.zip
frameworks_base-faccac7616795859af257777900db514d425a106.tar.gz
frameworks_base-faccac7616795859af257777900db514d425a106.tar.bz2
Make a stupid thing about the glue less stupid.
There is no reason to make the app developer delete the glue. Seriously. Change-Id: Ic6a93ba17b44889783b35a2a0a2b67ffcd647f47
Diffstat (limited to 'native')
-rw-r--r--native/glue/threaded_app/threaded_app.c26
-rw-r--r--native/include/android_glue/threaded_app.h6
2 files changed, 14 insertions, 18 deletions
diff --git a/native/glue/threaded_app/threaded_app.c b/native/glue/threaded_app/threaded_app.c
index 16c905c..2411e93 100644
--- a/native/glue/threaded_app/threaded_app.c
+++ b/native/glue/threaded_app/threaded_app.c
@@ -29,18 +29,6 @@
#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "threaded_app", __VA_ARGS__))
#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "threaded_app", __VA_ARGS__))
-void android_app_destroy(struct android_app* android_app) {
- LOGI("android_app_destroy!");
- pthread_mutex_lock(&android_app->mutex);
- if (android_app->inputQueue != NULL) {
- AInputQueue_detachLooper(android_app->inputQueue);
- }
- android_app->destroyed = 1;
- pthread_cond_broadcast(&android_app->cond);
- pthread_mutex_unlock(&android_app->mutex);
- // Can't touch android_app object after this.
-}
-
int8_t android_app_read_cmd(struct android_app* android_app) {
int8_t cmd;
if (read(android_app->msgread, &cmd, sizeof(cmd)) == sizeof(cmd)) {
@@ -97,6 +85,18 @@ int32_t android_app_exec_cmd(struct android_app* android_app, int8_t cmd) {
return android_app->destroyRequested ? 0 : 1;
}
+static void android_app_destroy(struct android_app* android_app) {
+ LOGI("android_app_destroy!");
+ pthread_mutex_lock(&android_app->mutex);
+ if (android_app->inputQueue != NULL) {
+ AInputQueue_detachLooper(android_app->inputQueue);
+ }
+ android_app->destroyed = 1;
+ pthread_cond_broadcast(&android_app->cond);
+ pthread_mutex_unlock(&android_app->mutex);
+ // Can't touch android_app object after this.
+}
+
static void* android_app_entry(void* param) {
struct android_app* android_app = (struct android_app*)param;
@@ -110,6 +110,8 @@ static void* android_app_entry(void* param) {
pthread_mutex_unlock(&android_app->mutex);
android_main(android_app);
+
+ android_app_destroy(android_app);
return NULL;
}
diff --git a/native/include/android_glue/threaded_app.h b/native/include/android_glue/threaded_app.h
index 491389b..adfdbea 100644
--- a/native/include/android_glue/threaded_app.h
+++ b/native/include/android_glue/threaded_app.h
@@ -144,12 +144,6 @@ enum {
};
/**
- * Call if android_app->destroyRequested is non-zero. Upon return, the
- * android_app structure is no longer valid and must not be touched.
- */
-void android_app_destroy(struct android_app* android_app);
-
-/**
* Call when ALooper_pollAll() returns LOOPER_ID_MAIN, reading the next
* app command message.
*/