[SDL_Tizen] Add pre-buffer for remote-surface. 61/105961/2
authorhuiyu.eun <huiyu.eun@samsung.com>
Tue, 20 Dec 2016 06:21:04 +0000 (15:21 +0900)
committerhuiyu.eun <huiyu.eun@samsung.com>
Tue, 20 Dec 2016 06:22:55 +0000 (15:22 +0900)
Change-Id: Icca14b992ab17a5c725ebbd43d5a419e03c61c36
Signed-off-by: huiyu.eun <huiyu.eun@samsung.com>
src/video/tizen/SDL_tizenindicator.c

index 572f68c..18d5815 100644 (file)
@@ -512,7 +512,7 @@ SDL_bool Tizen_remote_surface_init(void)
              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);
                }
           }
@@ -542,13 +542,13 @@ SDL_bool Tizen_remote_surface_init(void)
     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();
@@ -587,6 +587,13 @@ _tizen_rs_cb_buffer_update(void *data, struct tizen_remote_surface *trs, struct
             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");