Handling instance id duplication
[platform/core/appfw/appcore-widget.git] / src / base / widget_base.c
index c732576..1af2e8a 100644 (file)
@@ -308,6 +308,11 @@ static void __control_create(const char *class_id, const char *id, bundle *b)
        widget_base_instance_data *data;
        char *content = NULL;
 
+       if (appcore_multiwindow_base_instance_find(id)) {
+               LOGE("Already exist id (%s)", id);
+               return;
+       }
+
        data = (widget_base_instance_data *)
                        calloc(1, sizeof(widget_base_instance_data));
        if (!data) {
@@ -776,9 +781,14 @@ static void __multiwindow_exit(void *data)
 
 EXPORT_API int widget_base_exit(void)
 {
+       int ret;
+
        appcore_multiwindow_base_exit();
-       if (appcore_multiwindow_base_instance_get_cnt() != 0 && __is_permanent)
-               aul_notify_exit();
+       if (appcore_multiwindow_base_instance_get_cnt() == 0 && __is_permanent) {
+               ret = aul_notify_exit();
+               aul_widget_write_log(LOG_TAG, "[%s:%d] permanent exit : %d",
+                       __FUNCTION__, __LINE__, ret);
+       }
 
        return 0;
 }
@@ -1525,7 +1535,7 @@ static void __multiwindow_instance_terminate(
        if (cls->ops.destroy)
                cls->ops.destroy(instance_h, reason, content_info, class_data);
 
-       LOGD("%s is destroyed %d", id, reason);
+       LOGW("%s is destroyed %d", id, reason);
        if (reason == WIDGET_BASE_DESTROY_TYPE_PERMANENT) {
                __is_permanent = true;
                event = WIDGET_INSTANCE_EVENT_DESTROY;