From 98b2c359c2b3361f43e14b0c5d07a02c055dd10e Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Tue, 13 Jul 2010 17:51:26 -0700 Subject: [PATCH] Copy over updated NDK APIs and follow other API changes. Change-Id: Ifec95268c9ade21963eea13357ec2f56fd7968c2 --- .../usr/include/android/native_activity.h | 42 ++++++++++++++++++ .../usr/include/android_glue/threaded_app.h | 32 +++++++++++++ .../android-9/arch-arm/usr/lib/libandroid.so | Bin 13652 -> 9556 bytes .../arch-arm/usr/lib/libthreaded_app.a | Bin 50780 -> 57420 bytes ndk/samples/bitmap-plasma/default.properties | 2 +- ndk/samples/native-plasma/jni/plasma.c | 12 +++-- .../android/apis/graphics/WindowSurface.java | 5 ++- 7 files changed, 88 insertions(+), 5 deletions(-) diff --git a/ndk/platforms/android-9/arch-arm/usr/include/android/native_activity.h b/ndk/platforms/android-9/arch-arm/usr/include/android/native_activity.h index d0ff05277..ea6f05fbc 100644 --- a/ndk/platforms/android-9/arch-arm/usr/include/android/native_activity.h +++ b/ndk/platforms/android-9/arch-arm/usr/include/android/native_activity.h @@ -146,6 +146,21 @@ typedef struct ANativeActivityCallbacks { */ void (*onNativeWindowCreated)(ANativeActivity* activity, ANativeWindow* window); + /** + * The drawing window for this native activity has been resized. You should + * retrieve the new size from the window and ensure that your rendering in + * it now matches. + */ + void (*onNativeWindowResized)(ANativeActivity* activity, ANativeWindow* window); + + /** + * The drawing window for this native activity needs to be redrawn. To avoid + * transient artifacts during screen changes (such resizing after rotation), + * applications should not return from this function until they have finished + * drawing their window in its current state. + */ + void (*onNativeWindowRedrawNeeded)(ANativeActivity* activity, ANativeWindow* window); + /** * The drawing window for this native activity is going to be destroyed. * You MUST ensure that you do not touch the window object after returning @@ -169,6 +184,11 @@ typedef struct ANativeActivityCallbacks { */ void (*onInputQueueDestroyed)(ANativeActivity* activity, AInputQueue* queue); + /** + * The rectangle in the window in which content should be placed has changed. + */ + void (*onContentRectChanged)(ANativeActivity* activity, const ARect* rect); + /** * The system is running low on memory. Use this callback to release * resources you do not need, to help the system avoid killing more @@ -197,6 +217,28 @@ void ANativeActivity_setWindowFormat(ANativeActivity* activity, int32_t format); void ANativeActivity_setWindowFlags(ANativeActivity* activity, uint32_t addFlags, uint32_t removeFlags); +/** + * Flags for ANativeActivity_showSoftInput; see the Java InputMethodManager + * API for documentation. + */ +enum { + ANATIVEACTIVITY_SHOW_SOFT_INPUT_IMPLICIT = 0x0001, + ANATIVEACTIVITY_SHOW_SOFT_INPUT_FORCED = 0x0002, +}; + +void ANativeActivity_showSoftInput(ANativeActivity* activity, uint32_t flags); + +/** + * Flags for ANativeActivity_hideSoftInput; see the Java InputMethodManager + * API for documentation. + */ +enum { + ANATIVEACTIVITY_HIDE_SOFT_INPUT_IMPLICIT_ONLY = 0x0001, + ANATIVEACTIVITY_HIDE_SOFT_INPUT_NOT_ALWAYS = 0x0002, +}; + +void ANativeActivity_hideSoftInput(ANativeActivity* activity, uint32_t flags); + #ifdef __cplusplus }; #endif diff --git a/ndk/platforms/android-9/arch-arm/usr/include/android_glue/threaded_app.h b/ndk/platforms/android-9/arch-arm/usr/include/android_glue/threaded_app.h index adfdbea06..2b58e9c2d 100644 --- a/ndk/platforms/android-9/arch-arm/usr/include/android_glue/threaded_app.h +++ b/ndk/platforms/android-9/arch-arm/usr/include/android_glue/threaded_app.h @@ -48,6 +48,10 @@ struct android_app { // When non-NULL, this is the window surface that the app can draw in. ANativeWindow* window; + // Current content rectangle of the window; this is the area where the + // window's content should be placed to be seen by the user. + ARect contentRect; + // Current state of the app's activity. May be either APP_CMD_START, // APP_CMD_RESUME, APP_CMD_PAUSE, or APP_CMD_STOP; see below. int activityState; @@ -69,8 +73,10 @@ struct android_app { int running; int destroyed; + int redrawNeeded; AInputQueue* pendingInputQueue; ANativeWindow* pendingWindow; + ARect pendingContentRect; }; enum { @@ -104,6 +110,26 @@ enum { */ APP_CMD_WINDOW_CHANGED, + /** + * Command from main thread: the current ANativeWindow has been resized. + * Please redraw with its new size. + */ + APP_CMD_WINDOW_RESIZED, + + /** + * Command from main thread: the system needs that the current ANativeWindow + * be redrawn. You should redraw the window before handing this to + * android_app_exec_cmd() in order to avoid transient drawing glitches. + */ + APP_CMD_WINDOW_REDRAW_NEEDED, + + /** + * Command from main thread: the content area of the window has changed, + * such as from the soft input window being shown or hidden. You can + * find the new content rect in android_app::contentRect. + */ + APP_CMD_CONTENT_RECT_CHANGED, + /** * Command from main thread: the app's activity window has gained * input focus. @@ -116,6 +142,12 @@ enum { */ APP_CMD_LOST_FOCUS, + /** + * Command from main thread: the system is running low on memory. + * Try to reduce your memory use. + */ + APP_CMD_LOW_MEMORY, + /** * Command from main thread: the app's activity has been started. */ diff --git a/ndk/platforms/android-9/arch-arm/usr/lib/libandroid.so b/ndk/platforms/android-9/arch-arm/usr/lib/libandroid.so index ba26010a72fdfbbc1899f8c82892dba55cac5881..d79ec890a58382b3f8d7ade88155c852ce07532e 100644 GIT binary patch literal 9556 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 literal 13652 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 c82z9%VB}1;e}~_zBq_x|0bAihr~m)} diff --git a/ndk/platforms/android-9/arch-arm/usr/lib/libthreaded_app.a b/ndk/platforms/android-9/arch-arm/usr/lib/libthreaded_app.a index ad55439aefe5617ac6115ecb6e5cc2ab32cd62b6..d3073db8f741f1797723b64c138b4bab75d7292c 100644 GIT binary patch literal 57420 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 X646dCDDEbrylLV0||sA=EBVjSW&4` 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 - LOGI("width=%d height=%d stride=%d format=%d", buffer->width, buffer->height, - buffer->stride, buffer->format); - + //LOGI("width=%d height=%d stride=%d format=%d", buffer->width, buffer->height, + // buffer->stride, buffer->format); + int yy; for (yy = 0; yy < buffer->height; yy++) { uint16_t* line = (uint16_t*)pixels; @@ -417,6 +417,12 @@ static int engine_do_ui_event(struct engine* engine) { if (AInputEvent_getType(event) == INPUT_EVENT_TYPE_MOTION) { engine->animating = 1; AInputQueue_finishEvent(engine->app->inputQueue, event, 1); + } else if (AInputEvent_getType(event) == INPUT_EVENT_TYPE_KEY) { + LOGI("Key event: action=%d keyCode=%d metaState=0x%x", + AKeyEvent_getAction(event), + AKeyEvent_getKeyCode(event), + AKeyEvent_getMetaState(event)); + AInputQueue_finishEvent(engine->app->inputQueue, event, 0); } else { AInputQueue_finishEvent(engine->app->inputQueue, event, 0); } diff --git a/samples/ApiDemos/src/com/example/android/apis/graphics/WindowSurface.java b/samples/ApiDemos/src/com/example/android/apis/graphics/WindowSurface.java index 7829ec953..305147c55 100644 --- a/samples/ApiDemos/src/com/example/android/apis/graphics/WindowSurface.java +++ b/samples/ApiDemos/src/com/example/android/apis/graphics/WindowSurface.java @@ -13,7 +13,7 @@ import android.view.SurfaceHolder; * Demonstrates how to take over the Surface from a window to do direct * drawing to it (without going through the view hierarchy). */ -public class WindowSurface extends Activity implements SurfaceHolder.Callback { +public class WindowSurface extends Activity implements SurfaceHolder.Callback2 { DrawingThread mDrawingThread; @Override @@ -76,6 +76,9 @@ public class WindowSurface extends Activity implements SurfaceHolder.Callback { // new sizes from the canvas. } + public void surfaceRedrawNeeded(SurfaceHolder holder) { + } + public void surfaceDestroyed(SurfaceHolder holder) { // We need to tell the drawing thread to stop, and block until // it has done so.