Remove init-time GLES per-frame callback

The GLES renderer interface now allows the per-frame callback to be
registered after initialization. This change updates the emulator to
use the new interface. Since reading back completed frames is slow
(due to pipeline flush/stall), a future change will enable the
callback only while multitouch emulation is actually in use.

Change-Id: I7ad23b4bebe1bd3077863da4d50333cc0578519e
diff --git a/android/opengles.c b/android/opengles.c
index 70e3f8c..6f0556f 100644
--- a/android/opengles.c
+++ b/android/opengles.c
@@ -47,6 +47,7 @@
   DYNLINK_FUNC(initLibrary) \
   DYNLINK_FUNC(setStreamMode) \
   DYNLINK_FUNC(initOpenGLRenderer) \
+  DYNLINK_FUNC(setPostCallback) \
   DYNLINK_FUNC(getHardwareStrings) \
   DYNLINK_FUNC(createOpenGLSubwindow) \
   DYNLINK_FUNC(destroyOpenGLSubwindow) \
@@ -139,20 +140,28 @@
 }
 
 int
-android_startOpenglesRenderer(int width, int height, OnPostFunc onPost, void* onPostContext)
+android_startOpenglesRenderer(int width, int height)
 {
     if (!rendererLib) {
         D("Can't start OpenGLES renderer without support libraries");
         return -1;
     }
 
-    if (!initOpenGLRenderer(width, height, ANDROID_OPENGLES_BASE_PORT, onPost, onPostContext)) {
+    if (!initOpenGLRenderer(width, height, ANDROID_OPENGLES_BASE_PORT)) {
         D("Can't start OpenGLES renderer?");
         return -1;
     }
     return 0;
 }
 
+void
+android_setPostCallback(OnPostFunc onPost, void* onPostContext)
+{
+    if (rendererLib) {
+        setPostCallback(onPost, onPostContext);
+    }
+}
+
 static void strncpy_safe(char* dst, const char* src, size_t n)
 {
     strncpy(dst, src, n);
diff --git a/android/opengles.h b/android/opengles.h
index 4e83c02..aac6249 100644
--- a/android/opengles.h
+++ b/android/opengles.h
@@ -16,10 +16,6 @@
 
 #define ANDROID_OPENGLES_BASE_PORT  22468
 
-/* See the description in render_api.h. */
-typedef void (*OnPostFunc)(void* context, int width, int height, int ydir,
-                           int format, int type, unsigned char* pixels);
-
 /* Call this function to initialize the hardware opengles emulation.
  * This function will abort if we can't find the corresponding host
  * libraries through dlopen() or equivalent.
@@ -30,8 +26,12 @@
  * At the moment, this must be done before the VM starts. The onPost callback
  * may be NULL.
  */
-int android_startOpenglesRenderer(int width, int height,
-                                  OnPostFunc onPost, void* onPostContext);
+int android_startOpenglesRenderer(int width, int height);
+
+/* See the description in render_api.h. */
+typedef void (*OnPostFunc)(void* context, int width, int height, int ydir,
+                           int format, int type, unsigned char* pixels);
+void android_setPostCallback(OnPostFunc onPost, void* onPostContext);
 
 /* Retrieve the Vendor/Renderer/Version strings describing the underlying GL
  * implementation. The call only works while the renderer is started.