summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers/egl
diff options
context:
space:
mode:
authorChia-I Wu <[email protected]>2011-11-24 17:13:15 +0800
committerChia-I Wu <[email protected]>2011-11-25 11:18:02 +0800
commitd3d3c12a95bddb7b624818af559ab6b18d890d2f (patch)
treee289d5db309fe9ac950a7d51477fd9488147fa9f /src/gallium/state_trackers/egl
parent24d25b55bf511493e70600cc7c49c0a0e6fc7a32 (diff)
st/egl: fix a crash in Android backend
There is no buffer and android_surface_present should be a no-op when eglSwapBuffers is called twice in a row.
Diffstat (limited to 'src/gallium/state_trackers/egl')
-rw-r--r--src/gallium/state_trackers/egl/android/native_android.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/gallium/state_trackers/egl/android/native_android.cpp b/src/gallium/state_trackers/egl/android/native_android.cpp
index 5f4638a679a..490d6e83884 100644
--- a/src/gallium/state_trackers/egl/android/native_android.cpp
+++ b/src/gallium/state_trackers/egl/android/native_android.cpp
@@ -355,9 +355,6 @@ android_surface_swap_buffers(struct native_surface *nsurf)
struct android_surface *asurf = android_surface(nsurf);
struct android_display *adpy = asurf->adpy;
- if (!asurf->buf)
- return TRUE;
-
android_surface_enqueue_buffer(&asurf->base);
asurf->stamp++;
@@ -395,6 +392,10 @@ android_surface_present(struct native_surface *nsurf,
if (ctrl->swap_interval || ctrl->natt != NATIVE_ATTACHMENT_BACK_LEFT)
return FALSE;
+ /* this happens when eglSwapBuffers is called more than once in a row */
+ if (!asurf->buf)
+ return TRUE;
+
/* we always render to color_res first when it exists */
if (asurf->color_res) {
copy_resources(&adpy->base, asurf->color_res, asurf->buf_res);