Fix crash by fd increase
authortaeyoon0.lee <taeyoon0.lee@samsung.com>
Wed, 15 Mar 2017 07:51:46 +0000 (16:51 +0900)
committertaeyoon0.lee <taeyoon0.lee@samsung.com>
Thu, 1 Jun 2017 04:42:25 +0000 (13:42 +0900)
 - Added wl_buffer_destroy in tizen remote surface changed/update callback

Change-Id: Id22549d43bee48e30dfd94c020e66db942f2672b

internal/widget_view/widget_view_impl.cpp

index f9ed21d..81cfea4 100644 (file)
@@ -36,6 +36,7 @@
 #include <widget_instance.h>
 #include <tzplatform_config.h>
 #include <wayland-extension/tizen-extension-client-protocol.h>
+#include <tbm_surface_internal.h>
 #include <unistd.h>
 #include <libintl.h>
 
@@ -135,6 +136,9 @@ static void OnBufferUpdated( struct tizen_remote_surface *surface, uint32_t type
   if( preBuffer != NULL && tizen_remote_surface_get_version( surface ) >= TIZEN_REMOTE_SURFACE_RELEASE_SINCE_VERSION )
   {
     tizen_remote_surface_release( surface, preBuffer );
+    tbm_surface_h preTbmSurface = (tbm_surface_h)wl_buffer_get_user_data( preBuffer );
+    tbm_surface_internal_unref( preTbmSurface );
+    wl_buffer_destroy( preBuffer );
   }
 
   preBuffer = buffer;
@@ -1065,6 +1069,15 @@ void WidgetView::CloseRemoteSurface()
 {
   if( mWatcherHandle != NULL )
   {
+    if( preBuffer != NULL && tizen_remote_surface_get_version( mRemoteSurface ) >= TIZEN_REMOTE_SURFACE_RELEASE_SINCE_VERSION )
+    {
+      tizen_remote_surface_release( mRemoteSurface, preBuffer );
+      tbm_surface_h preTbmSurface = (tbm_surface_h)wl_buffer_get_user_data( preBuffer );
+      tbm_surface_internal_unref( preTbmSurface );
+      wl_buffer_destroy( preBuffer );
+      preBuffer = NULL;
+    }
+
     screen_connector_toolkit_remove( mWatcherHandle );
     mWatcherHandle = NULL;
     mRemoteSurface = NULL;