int
_AppWidgetContextBase::GetSharedMemId(int w, int h)
{
- SysLog(NID_APP, "Enter");
+ SysLog(NID_APP, "Enter");
- if( __buffer_info == null)
- {
- std::unique_ptr<char[]> packageName(_StringConverter::CopyToCharArrayN(__providerId));
- std::unique_ptr<char[]> 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<char[]> packageName(_StringConverter::CopyToCharArrayN(__providerId));
+ std::unique_ptr<char[]> 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;