am 98b2c359: Copy over updated NDK APIs and follow other API changes.

Merge commit '98b2c359c2b3361f43e14b0c5d07a02c055dd10e' into gingerbread-plus-aosp

* commit '98b2c359c2b3361f43e14b0c5d07a02c055dd10e':
  Copy over updated NDK APIs and follow other API changes.
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 d0ff052..ea6f05f 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
@@ -147,6 +147,21 @@
     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
      * from this function: in the common case of drawing to the window from
@@ -170,6 +185,11 @@
     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
      * important processes.
@@ -197,6 +217,28 @@
 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 adfdbea..2b58e9c 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 @@
     // 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 @@
 
     int running;
     int destroyed;
+    int redrawNeeded;
     AInputQueue* pendingInputQueue;
     ANativeWindow* pendingWindow;
+    ARect pendingContentRect;
 };
 
 enum {
@@ -105,6 +111,26 @@
     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.
      */
@@ -117,6 +143,12 @@
     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.
      */
     APP_CMD_START,
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 ba26010..d79ec89 100644
--- a/ndk/platforms/android-9/arch-arm/usr/lib/libandroid.so
+++ b/ndk/platforms/android-9/arch-arm/usr/lib/libandroid.so
Binary files differ
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 ad55439..d3073db 100644
--- a/ndk/platforms/android-9/arch-arm/usr/lib/libthreaded_app.a
+++ b/ndk/platforms/android-9/arch-arm/usr/lib/libthreaded_app.a
Binary files differ
diff --git a/ndk/samples/bitmap-plasma/default.properties b/ndk/samples/bitmap-plasma/default.properties
index 9d135cb..9a2c9f6 100644
--- a/ndk/samples/bitmap-plasma/default.properties
+++ b/ndk/samples/bitmap-plasma/default.properties
@@ -8,4 +8,4 @@
 # project structure.
 
 # Project target.
-target=android-7
+target=android-9
diff --git a/ndk/samples/native-plasma/jni/plasma.c b/ndk/samples/native-plasma/jni/plasma.c
index 964b892..dcc8f6f 100644
--- a/ndk/samples/native-plasma/jni/plasma.c
+++ b/ndk/samples/native-plasma/jni/plasma.c
@@ -202,9 +202,9 @@
 #define  YT2_INCR   FIXED_FROM_FLOAT(1/163.)
 
     void* pixels = buffer->bits;
-    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 @@
         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 7829ec9..305147c 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 @@
  * 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 @@
         // 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.