Fix widget launch failure in wearable 28/72228/1 accepted/tizen/common/20160531.143610 accepted/tizen/ivi/20160602.022957 accepted/tizen/mobile/20160602.023152 accepted/tizen/tv/20160602.022723 accepted/tizen/wearable/20160602.022933 submit/tizen/20160531.083023
authorDaehyeon Jung <darrenh.jung@samsung.com>
Tue, 31 May 2016 07:39:27 +0000 (16:39 +0900)
committerDaehyeon Jung <darrenh.jung@samsung.com>
Tue, 31 May 2016 08:05:56 +0000 (17:05 +0900)
Change-Id: I49abaafb98879c03fc7578c38b851c84222db56c
Signed-off-by: Daehyeon Jung <darrenh.jung@samsung.com>
src/widget_instance.c

index 1dd17592ef3bf3232a77cd6c240c3979273dd0c3..896f508cd4352663c7af1a2d5037dfb2945a41ae 100644 (file)
@@ -660,10 +660,22 @@ EAPI int widget_instance_terminate(const char *widget_id, const char *instance_i
 {
        int ret = 0;
        bundle *b = NULL;
+       struct _widget_instance *instance;
 
        if (widget_id == NULL || instance_id == NULL)
                return -1;
 
+       instance = __pick_instance(widget_id, instance_id);
+       if (!instance) {
+               _E("illegal operation: termiante (instance not yet initialized: %s)", instance_id);
+               return -1;
+       }
+
+       if (instance->status != WIDGET_INSTANCE_RUNNING) {
+               _E("illegal operation: terminate (wrong status: %s %d)", instance_id, instance->status);
+               return -1;
+       }
+
        b = bundle_create();
        if (b == NULL)
                return -1;
@@ -681,10 +693,22 @@ EAPI int widget_instance_destroy(const char *widget_id, const char *instance_id)
 {
        int ret = 0;
        bundle *b = NULL;
+       struct _widget_instance *instance;
 
        if (widget_id == NULL || instance_id == NULL)
                return -1;
 
+       instance = __pick_instance(widget_id, instance_id);
+       if (!instance) {
+               _E("illegal operation: destroy (instance not yet initialized: %s)", instance_id);
+               return -1;
+       }
+
+       if (instance->status != WIDGET_INSTANCE_RUNNING) {
+               _E("illegal operation: destroy (wrong status: %s %d)", instance_id, instance->status);
+               return -1;
+       }
+
        b = bundle_create();
        if (b == NULL)
                return -1;
@@ -702,10 +726,22 @@ EAPI int widget_instance_resume(const char  *widget_id, const char *instance_id)
 {
        int ret = 0;
        bundle *b = NULL;
+       struct _widget_instance *instance;
 
        if (widget_id == NULL || instance_id == NULL)
                return -1;
 
+       instance = __pick_instance(widget_id, instance_id);
+       if (!instance) {
+               _E("illegal operation: resume (instance not yet initialized: %s)", instance_id);
+               return -1;
+       }
+
+       if (instance->status != WIDGET_INSTANCE_RUNNING) {
+               _E("illegal operation: resume (wrong status: %s %d)", instance_id, instance->status);
+               return -1;
+       }
+
        b = bundle_create();
        if (b == NULL)
                return -1;
@@ -723,10 +759,22 @@ EAPI int widget_instance_pause(const char *widget_id, const char *instance_id)
 {
        int ret = 0;
        bundle *b = NULL;
+       struct _widget_instance *instance;
 
        if (widget_id == NULL || instance_id == NULL)
                return -1;
 
+       instance = __pick_instance(widget_id, instance_id);
+       if (!instance) {
+               _E("illegal operation: pause (instance not yet initialized: %s)", instance_id);
+               return -1;
+       }
+
+       if (instance->status != WIDGET_INSTANCE_RUNNING) {
+               _E("illegal operation: pause (wrong status: %s %d)", instance_id, instance->status);
+               return -1;
+       }
+
        b = bundle_create();
        if (b == NULL)
                return -1;
@@ -744,10 +792,22 @@ EAPI int widget_instance_resize(const char *widget_id, const char *instance_id,
 {
        int ret = 0;
        bundle *b = NULL;
+       struct _widget_instance *instance;
 
        if (widget_id == NULL || instance_id == NULL)
                return -1;
 
+       instance = __pick_instance(widget_id, instance_id);
+       if (!instance) {
+               _E("illegal operation: resize (instance not yet initialized: %s)", instance_id);
+               return -1;
+       }
+
+       if (instance->status != WIDGET_INSTANCE_RUNNING) {
+               _E("illegal operation: resize (wrong status: %s %d)", instance_id, instance->status);
+               return -1;
+       }
+
        b = bundle_create();
        if (b == NULL)
                return -1;