From 5ca1eba26d4abe4ea7b2a6cec68d968196ec6dbc Mon Sep 17 00:00:00 2001 From: "taeyoon0.lee" Date: Wed, 15 Mar 2017 16:51:46 +0900 Subject: [PATCH] Fix crash by fd increase - Added wl_buffer_destroy in tizen remote surface changed/update callback Change-Id: Id22549d43bee48e30dfd94c020e66db942f2672b --- internal/widget_view/widget_view_impl.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/internal/widget_view/widget_view_impl.cpp b/internal/widget_view/widget_view_impl.cpp index f9ed21d..81cfea4 100644 --- a/internal/widget_view/widget_view_impl.cpp +++ b/internal/widget_view/widget_view_impl.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include #include @@ -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; -- 2.34.1