fix touch event delivery problem
[framework/osp/appwidget-service.git] / src / FShell_AppWidgetContextBase.cpp
index c952843..9bce5a2 100644 (file)
@@ -88,6 +88,8 @@ using namespace Tizen::Base::Collection;
 const String ARG_KEY_INSTANCE_ID = L"_InstanceId";
 const String ARG_KEY_PROVIDER_NAME = L"_ProviderName";
 const String ARG_KEY_USER_INFO = L"_UserInfo";
+const String ARG_KEY_WIDTH = L"_Width";
+const String ARG_KEY_HEIGHT = L"_Height";
 
 
 _AppWidgetContextBase::_AppWidgetContextBase(target_type type, const String& userInfo, const String& providerId, const String& instanceId, int width, int height, int priority)
@@ -102,6 +104,7 @@ _AppWidgetContextBase::_AppWidgetContextBase(target_type type, const String& use
        ,__ipcClientId(-1)
        ,__buffer_info(null)
        ,__buffer(null)
+       ,__providerState(INVALID)
 {
        _AppWidgetManagerImpl::ExtractAppIdAndProviderName(providerId, __appId, __providerName);
 
@@ -111,22 +114,29 @@ _AppWidgetContextBase::_AppWidgetContextBase(target_type type, const String& use
 _AppWidgetContextBase::~_AppWidgetContextBase()
 {
        SysLog(NID_APP, "providerId(%ls), instanceId(%ls), width(%d), height(%d), priority(%d)", __providerId.GetPointer(), __instanceId.GetPointer(), __width, __height, __priority);
+       ReleaseSharedMem();
 }
 
 
 void
-_AppWidgetContextBase::SetClientId(int clientId)
+_AppWidgetContextBase::SetIpcClientId(int clientId)
 {
        __ipcClientId = clientId;
 }
 
 bool
-_AppWidgetContextBase::HasValidClientId() const
+_AppWidgetContextBase::HasValidClientId(void) const
 {
        SysLog(NID_APP, "%d", __ipcClientId);
        return (__ipcClientId > -1);
 }
 
+bool
+_AppWidgetContextBase::IsSharedMemCreated(void) const
+{
+       return ( __buffer_info && __buffer_info);
+}
+
 int
 _AppWidgetContextBase::GetSharedMemId(int w, int h)
 {
@@ -147,11 +157,25 @@ _AppWidgetContextBase::GetSharedMemId(int w, int h)
        }
 
     int bufferId = __buffer_info->fb->handle;
+    __providerState = RUNNING;
 
     SysLog(NID_APP, "(%d) Exit", bufferId);
     return bufferId;
 }
 
+
+void
+_AppWidgetContextBase::Suspend()
+{
+       __providerState = SUSPENDED;
+}
+
+bool
+_AppWidgetContextBase::IsRunning() const
+{
+       return (__providerState == RUNNING);
+}
+
 result
 _AppWidgetContextBase::ReleaseSharedMem()
 {
@@ -188,6 +212,8 @@ _AppWidgetContextBase::CreateRequestArgs(void)
        pArgs->Add(new String(ARG_KEY_INSTANCE_ID), new String(__instanceId));
        pArgs->Add(new String(ARG_KEY_PROVIDER_NAME), new String(__providerName));
        pArgs->Add(new String(ARG_KEY_USER_INFO), new String(__userInfo));
+       pArgs->Add(new String(ARG_KEY_WIDTH), new String(Integer::ToString(__width)));
+       pArgs->Add(new String(ARG_KEY_HEIGHT), new String(Integer::ToString(__height)));
 
        return pArgs;
 }