Get to the point of being able to do native drawing.

A little cleanup.

Change-Id: I37ef0557abf330d91d6fe47e81d062206b3bc346
diff --git a/core/jni/android_app_NativeActivity.cpp b/core/jni/android_app_NativeActivity.cpp
index 49b9609..dab1dba 100644
--- a/core/jni/android_app_NativeActivity.cpp
+++ b/core/jni/android_app_NativeActivity.cpp
@@ -362,8 +362,12 @@
         sp<ANativeWindow> oldNativeWindow = code->nativeWindow;
         code->setSurface(surface);
         if (oldNativeWindow != code->nativeWindow) {
-            if (code->nativeWindow != NULL && code->callbacks.onNativeWindowChanged != NULL) {
-                code->callbacks.onNativeWindowChanged(&code->activity,
+            if (oldNativeWindow != NULL && code->callbacks.onNativeWindowDestroyed != NULL) {
+                code->callbacks.onNativeWindowDestroyed(&code->activity,
+                        oldNativeWindow.get());
+            }
+            if (code->nativeWindow != NULL && code->callbacks.onNativeWindowCreated != NULL) {
+                code->callbacks.onNativeWindowCreated(&code->activity,
                         code->nativeWindow.get());
             }
         }
diff --git a/native/android/native_window.cpp b/native/android/native_window.cpp
index 7a6eb6d..448cbfc 100644
--- a/native/android/native_window.cpp
+++ b/native/android/native_window.cpp
@@ -39,3 +39,9 @@
 int32_t ANativeWindow_getFormat(ANativeWindow* window) {
     return getWindowProp(window, NATIVE_WINDOW_FORMAT);
 }
+
+int32_t ANativeWindow_setBuffersGeometry(ANativeWindow* window, int32_t width,
+        int32_t height, int32_t format) {
+    native_window_set_buffers_geometry(window, width, height, format);
+    return 0;
+}
diff --git a/native/include/android/native_activity.h b/native/include/android/native_activity.h
index d23e40f..bf5c641 100644
--- a/native/include/android/native_activity.h
+++ b/native/include/android/native_activity.h
@@ -132,14 +132,6 @@
     void (*onNativeWindowCreated)(ANativeActivity* activity, ANativeWindow* window);
 
     /**
-     * The drawing window for this native activity has changed.  During this time,
-     * old ANativeWindow object is still valid but no longer active and drawing
-     * should switch to the new ANativeWindow given here.  After returning from
-     * this function, you must not touch the old window.
-     */
-    void (*onNativeWindowChanged)(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
diff --git a/native/include/android/native_window.h b/native/include/android/native_window.h
index b3f47b2..678ba3d 100644
--- a/native/include/android/native_window.h
+++ b/native/include/android/native_window.h
@@ -22,6 +22,15 @@
 extern "C" {
 #endif
 
+/*
+ * Pixel formats that a window can use.
+ */
+enum {
+    WINDOW_FORMAT_RGBA_8888          = 1,
+    WINDOW_FORMAT_RGBX_8888          = 2,
+    WINDOW_FORMAT_RGB_565            = 4,
+};
+
 struct ANativeWindow;
 typedef struct ANativeWindow ANativeWindow;
 
@@ -43,6 +52,22 @@
  */
 int32_t ANativeWindow_getFormat(ANativeWindow* window);
 
+/*
+ * Change the format and size of the window buffers.
+ *
+ * The width and height control the number of pixels in the buffers, not the
+ * dimensions of the window on screen.  If these are different than the
+ * window's physical size, then it buffer will be scaled to match that size
+ * when compositing it to the screen.
+ *
+ * The format may be one of the window format constants above.
+ *
+ * For all of these parameters, if 0 is supplied than the window's base
+ * value will come back in force.
+ */
+int32_t ANativeWindow_setBuffersGeometry(ANativeWindow* window, int32_t width,
+        int32_t height, int32_t format);
+
 #ifdef __cplusplus
 };
 #endif