return -1;
}
- if (instance->pid) {
+ if (instance->pid > 0) {
ret = __send_aul_cmd(instance, "destroy", NULL);
} else { /* uninitialized */
__remove_instance(instance);
head = app->instances;
if (head) {
instance = (widget_instance_h)head->data;
- if (instance->pid == pid)
+ if (instance->pid == -1 || instance->pid == pid)
return 0;
+ _E("instance->pid (%d), pid (%d)", instance->pid, pid);
}
}
return -1;
}
break;
case WIDGET_INSTANCE_EVENT_FAULT:
-
+ break;
+ case WIDGET_INSTANCE_EVENT_CREATE_ABORTED:
+ instance->pid = -1;
break;
default:
_E("unknown status: %d", status);
while (iter) {
instance = (struct _widget_instance *)iter->data;
if (instance && instance->pid == pid) {
- instance->pid = 0;
+ instance->pid = -1;
instance->status = WIDGET_INSTANCE_TERMINATED;
__notify_event(WIDGET_INSTANCE_EVENT_FAULT, instance->widget_id, instance->id);
}