if (!strcmp(global->interface, "tizen_remote_surface_manager"))
{
shared_info.tizen_rsm = wl_registry_bind(registry, global->id,
- &tizen_remote_surface_manager_interface, 1);
+ &tizen_remote_surface_manager_interface, global->version<2? global->version : 2);
SDL_Log("[SDL] Create tizen_rsm : %p",shared_info.tizen_rsm);
}
}
return SDL_TRUE;
}
+struct wl_buffer *pre_buffer; //pre_buffer for tizen remote surface
static void
_tizen_rs_cb_buffer_update(void *data, struct tizen_remote_surface *trs, struct wl_buffer *buffer, uint32_t time)
{
tizen_remote_surface_transfer_visibility(trs, TIZEN_REMOTE_SURFACE_VISIBILITY_TYPE_VISIBLE);
tbm_surface_h tbmSurface= wl_buffer_get_user_data(buffer);
-
if(eglCreateImageKHR != NULL && glEGLImageTargetTexture2DOES != NULL && eglDestroyImageKHR != NULL)
{
SDL_VideoDevice *_this = SDL_GetVideoDevice();
SDL_Log("Failed to unmap tbm_surface\n");
}
+ if( pre_buffer)
+ {
+ if (tizen_remote_surface_get_version(trs) >= TIZEN_REMOTE_SURFACE_RELEASE_SINCE_VERSION)
+ tizen_remote_surface_release(trs, pre_buffer);
+ }
+ pre_buffer = buffer;
+
if (tbm_surface_destroy (tbmSurface) != TBM_SURFACE_ERROR_NONE)
SDL_Log("Failed to destroy tbm_surface\n");