static void func_free_l(SDL_Vout *vout) { if (!vout) return; SDL_Vout_Opaque *opaque = vout->opaque; if (opaque) { SDL_AMediaCodecBufferProxy **begin = (SDL_AMediaCodecBufferProxy **)ISDL_Array__begin(&opaque->overlay_manager); SDL_AMediaCodecBufferProxy **end = (SDL_AMediaCodecBufferProxy **)ISDL_Array__end(&opaque->overlay_manager); for (; begin < end; ++begin) { SDL_AMediaCodecBufferProxy_destroyP(begin); } ISDL_Array__clear(&opaque->overlay_pool); ISDL_Array__clear(&opaque->overlay_manager); if (opaque->native_window) { ANativeWindow_release(opaque->native_window); opaque->native_window = NULL; } IJK_EGL_freep(&opaque->egl); SDL_AMediaCodec_decreaseReferenceP(&opaque->acodec); } SDL_Vout_FreeInternal(vout); }
static void SDL_VoutAndroid_invalidateAllBuffers_l(SDL_Vout *vout) { AMCTRACE("%s\n", __func__); SDL_Vout_Opaque *opaque = vout->opaque; SDL_AMediaCodecBufferProxy **begin = (SDL_AMediaCodecBufferProxy **)ISDL_Array__begin(&opaque->overlay_manager); SDL_AMediaCodecBufferProxy **end = (SDL_AMediaCodecBufferProxy **)ISDL_Array__end(&opaque->overlay_manager); for (; begin < end; ++begin) { SDL_AMediaCodecBufferProxy_invalidate(*begin); } }