From c6e7ec345081a7e54d1832f89db444973c29663e Mon Sep 17 00:00:00 2001 From: "jungmin76.park" Date: Mon, 1 Apr 2013 13:14:59 +0900 Subject: [PATCH] fix resize problem (reaquire buffer when resized) Change-Id: Icb49f1212a747e48cbbb25deaa1b39c6bdf8b829 Signed-off-by: jungmin76.park --- src/FShell_AppWidgetContextBase.cpp | 30 +++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/FShell_AppWidgetContextBase.cpp b/src/FShell_AppWidgetContextBase.cpp index 9bce5a2..0e6aa77 100644 --- a/src/FShell_AppWidgetContextBase.cpp +++ b/src/FShell_AppWidgetContextBase.cpp @@ -140,21 +140,27 @@ _AppWidgetContextBase::IsSharedMemCreated(void) const int _AppWidgetContextBase::GetSharedMemId(int w, int h) { - SysLog(NID_APP, "Enter"); + SysLog(NID_APP, "Enter"); - if( __buffer_info == null) - { - std::unique_ptr packageName(_StringConverter::CopyToCharArrayN(__providerId)); - std::unique_ptr id(_StringConverter::CopyToCharArrayN(__instanceId)); + bool isResized = (__buffer_info != null) && (__buffer_info->width != w || __buffer_info->height != h); + if ( isResized ) + { + ReleaseSharedMem(); + } - __buffer_info = provider_buffer_acquire(__type, packageName.get(), id.get(), w, h, sizeof(int), AppWidgetHandleBufferEventCallback, this); - SysTryReturnResult(NID_APP, __buffer_info , -1, "[E_SYSTEM] failed to provider_buffer_acquire"); - SysLog(NID_APP, "provider_buffer_acquire successed"); + if( __buffer_info == null) + { + std::unique_ptr packageName(_StringConverter::CopyToCharArrayN(__providerId)); + std::unique_ptr id(_StringConverter::CopyToCharArrayN(__instanceId)); - __buffer = provider_buffer_ref(__buffer_info); - SysTryReturnResult(NID_APP, __buffer , -1, "[E_SYSTEM] failed to provider_buffer_ref"); - SysLog(NID_APP, "provider_buffer_ref successed"); - } + __buffer_info = provider_buffer_acquire(__type, packageName.get(), id.get(), w, h, sizeof(int), AppWidgetHandleBufferEventCallback, this); + SysTryReturnResult(NID_APP, __buffer_info , -1, "[E_SYSTEM] failed to provider_buffer_acquire"); + SysLog(NID_APP, "provider_buffer_acquire successed"); + + __buffer = provider_buffer_ref(__buffer_info); + SysTryReturnResult(NID_APP, __buffer , -1, "[E_SYSTEM] failed to provider_buffer_ref"); + SysLog(NID_APP, "provider_buffer_ref successed"); + } int bufferId = __buffer_info->fb->handle; __providerState = RUNNING; -- 2.34.1