diff --git a/tools/emulator/opengl/system/egl/egl.cpp b/tools/emulator/opengl/system/egl/egl.cpp index 79fffe96e..c920e0cad 100644 --- a/tools/emulator/opengl/system/egl/egl.cpp +++ b/tools/emulator/opengl/system/egl/egl.cpp @@ -361,9 +361,16 @@ EGLBoolean egl_window_surface_t::swapBuffers() rcEnc->rcFlushWindowColorBuffer(rcEnc, rcSurface); + android_native_buffer_t* prevBuf = buffer; //post the back buffer nativeWindow->queueBuffer(nativeWindow, buffer); + buffer->common.incRef(&buffer->common); + + if (prevBuf) { + prevBuf->common.decRef(&prevBuf->common); + } + // dequeue a new buffer if (nativeWindow->dequeueBuffer(nativeWindow, &buffer)) { setErrorReturn(EGL_BAD_ALLOC, EGL_FALSE);