void vlc_vaapi_FilterReleaseInstance(filter_t *filter, struct vlc_vaapi_instance *va_inst) { vlc_vaapi_ReleaseInstance(va_inst); vlc_mutex_lock(&holder.lock); if (filter == holder.owner) { holder.inst = NULL; holder.owner = NULL; } vlc_mutex_unlock(&holder.lock); }
static void pool_pic_destroy_cb(picture_t *pic) { picture_sys_t *p_sys = pic->p_sys; struct pic_sys_vaapi_instance *instance = p_sys->instance; if (atomic_fetch_sub(&instance->pic_refcount, 1) == 1) { vaDestroySurfaces(instance->va_dpy, instance->render_targets, instance->num_render_targets); vlc_vaapi_ReleaseInstance(instance->va_inst); free(instance); } free(pic->p_sys); }