[waffle] [PATCH] Fix for Android EGL_BAD_NATIVE_WINDOW at surface creation.

Juha-Pekka Heikkilä juha-pekka.heikkila at linux.intel.com
Wed Nov 7 00:57:33 PST 2012


From: Juha-Pekka Heikkila <juha-pekka.heikkila at linux.intel.com>

On Android Waffle always fails with EGL_BAD_NATIVE_WINDOW, this fixes that
problem.

Signed-off-by: Juha-Pekka Heikkila <juha-pekka.heikkila at linux.intel.com>
---
 src/waffle/android/droid_surfaceflingerlink.cpp |    4 ++++
 src/waffle/android/droid_window.c               |    2 +-
 2 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/src/waffle/android/droid_surfaceflingerlink.cpp
b/src/waffle/android/droid_surfaceflingerlink.cpp
index 472ada7..7272c0d 100644
--- a/src/waffle/android/droid_surfaceflingerlink.cpp
+++ b/src/waffle/android/droid_surfaceflingerlink.cpp
@@ -49,6 +49,8 @@ struct droid_surfaceflinger_container {
 };

 struct droid_ANativeWindow_container {
+    // it is important ANativeWindow* is the first element in this structure
+    ANativeWindow* native_window;
     sp<SurfaceControl> surface_control;
     sp<ANativeWindow> window;
 };
@@ -149,6 +151,8 @@ droid_setup_surface(
         goto error;
     }

+    pANWContainer->native_window = pANWContainer->window.get();
+
     return pANWContainer;

 error_closeTransaction:
diff --git a/src/waffle/android/droid_window.c
b/src/waffle/android/droid_window.c
index f03c03a..688b3de 100644
--- a/src/waffle/android/droid_window.c
+++ b/src/waffle/android/droid_window.c
@@ -55,7 +55,7 @@ droid_window_create(struct wcore_platform *wc_plat,
         goto error;

     ok = wegl_window_init(&self->wegl, wc_config,
-                          (intptr_t) self->pANWContainer);
+                          (intptr_t) *((intptr_t*)(self->pANWContainer)));
     if (!ok)
         goto error;

-- 
1.7.5.4



More information about the waffle mailing list