From e3c30b9fa2b2d53b33bca888edf62faa21118098 Mon Sep 17 00:00:00 2001 From: hyunho Date: Tue, 13 Nov 2018 17:29:59 +0900 Subject: Check buffer duplication If we do not check it, new buffer can be destroyed and empty pointer is remained in viewer side and could cause null tbm buffer issue. Change-Id: Ib9ffc53d02ec4f181f0f4117bc35fc37317afc77 Signed-off-by: hyunho --- screen_connector_remote_surface_evas/image.cc | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'screen_connector_remote_surface_evas') diff --git a/screen_connector_remote_surface_evas/image.cc b/screen_connector_remote_surface_evas/image.cc index df4558a..d38320f 100644 --- a/screen_connector_remote_surface_evas/image.cc +++ b/screen_connector_remote_surface_evas/image.cc @@ -14,8 +14,15 @@ * limitations under the License. */ +#include + #include "screen_connector_remote_surface_evas/image_internal.h" +#ifdef LOG_TAG +#undef LOG_TAG +#endif + +#define LOG_TAG "SC_REMOTE_SURFACE" #define SC_TOOLKIT_HANDLE_TAG "SC_TOOLKIT_HANDLE_TAG" namespace screen_connector { @@ -176,6 +183,12 @@ void Image::Update(std::shared_ptr tbm) { tbm_surface_h tbmSurface; Evas_Native_Surface ns; + /* if prev buffer is equal to current buffer, do not cleanup tizen remote surface resources */ + if (prev_buf_.get() != nullptr && tbm->GetRaw() == prev_buf_->GetRaw()) { + prev_buf_->SetIsOwner(false); + LOGW("Same buffer do not destroy buffer(%p)", tbm->GetRaw()); + } + prev_buf_ = std::move(tbm); /* get tbm surface from buffer */ tbmSurface = (tbm_surface_h)wl_buffer_get_user_data(prev_buf_->GetRaw()); -- cgit v1.2.3