diff options
author | Jesse Hall <jessehall@google.com> | 2012-06-05 14:12:16 -0700 |
---|---|---|
committer | android code review <noreply-gerritcodereview@google.com> | 2012-06-05 14:12:17 -0700 |
commit | d483545584a66921b4b07c79eb5d55a1946ff2a0 (patch) | |
tree | 90bc265ccf9005b009fcb252a8a8766d2c05cd28 /android/opengles.c | |
parent | d812e574932a0ed386165532868a6854e8c1b331 (diff) | |
parent | 23a322d55622b2045eaeb94ebcf5b26e8ef51369 (diff) | |
download | external_qemu-d483545584a66921b4b07c79eb5d55a1946ff2a0.zip external_qemu-d483545584a66921b4b07c79eb5d55a1946ff2a0.tar.gz external_qemu-d483545584a66921b4b07c79eb5d55a1946ff2a0.tar.bz2 |
Merge "Track started and initialized states separately"
Diffstat (limited to 'android/opengles.c')
-rw-r--r-- | android/opengles.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/android/opengles.c b/android/opengles.c index f56252c..7405750 100644 --- a/android/opengles.c +++ b/android/opengles.c @@ -60,6 +60,7 @@ extern int android_init_opengles_pipes(void); #endif static ADynamicLibrary* rendererLib; +static int rendererStarted; /* Define the function pointers */ #define DYNLINK_FUNC(name) \ @@ -147,10 +148,16 @@ android_startOpenglesRenderer(int width, int height) return -1; } + if (rendererStarted) { + return 0; + } + if (!initOpenGLRenderer(width, height, ANDROID_OPENGLES_BASE_PORT)) { D("Can't start OpenGLES renderer?"); return -1; } + + rendererStarted = 1; return 0; } @@ -199,6 +206,15 @@ android_getOpenglesHardwareStrings(char* vendor, size_t vendorBufSize, { const char *vendorSrc, *rendererSrc, *versionSrc; + assert(vendorBufSize > 0 && rendererBufSize > 0 && versionBufSize > 0); + assert(vendor != NULL && renderer != NULL && version != NULL); + + if (!rendererStarted) { + D("Can't get OpenGL ES hardware strings when renderer not started"); + vendor[0] = renderer[0] = version = '\0'; + return; + } + getHardwareStrings(&vendorSrc, &rendererSrc, &versionSrc); if (!vendorSrc) vendorSrc = ""; if (!rendererSrc) rendererSrc = ""; @@ -221,15 +237,16 @@ android_getOpenglesHardwareStrings(char* vendor, size_t vendorBufSize, void android_stopOpenglesRenderer(void) { - if (rendererLib) { + if (rendererStarted) { stopOpenGLRenderer(); + rendererStarted = 0; } } int android_showOpenglesWindow(void* window, int x, int y, int width, int height, float rotation) { - if (rendererLib) { + if (rendererStarted) { int success = createOpenGLSubwindow((FBNativeWindowType)window, x, y, width, height, rotation); return success ? 0 : -1; } else { @@ -240,7 +257,7 @@ android_showOpenglesWindow(void* window, int x, int y, int width, int height, fl int android_hideOpenglesWindow(void) { - if (rendererLib) { + if (rendererStarted) { int success = destroyOpenGLSubwindow(); return success ? 0 : -1; } else { @@ -251,7 +268,7 @@ android_hideOpenglesWindow(void) void android_redrawOpenglesWindow(void) { - if (rendererLib) { + if (rendererStarted) { repaintOpenGLDisplay(); } } |