struct widget_info *info = data;
struct widget_evas_event_info evas_info;
int *cur_instance_cnt;
+ char *widget_id;
+ char *instance_id;
if (info->restart)
return;/* LCOV_EXCL_LINE */
info->event_queue = NULL;
}
+ widget_id = strdup(info->widget_id);
+ if (widget_id == NULL) {
+ ErrPrint("out of memory");
+ return;
+ }
+
+ instance_id = strdup(info->instance_id);
+ if (instance_id == NULL) {
+ ErrPrint("out of memory");
+ free(widget_id);
+ return;
+ }
+
+ if (s_info.widget_table)
+ g_hash_table_remove(s_info.widget_table, info->instance_id);
+
if (s_info.instance_cnt_table) {
- cur_instance_cnt = g_hash_table_lookup(s_info.instance_cnt_table, info->widget_id);
+ cur_instance_cnt = g_hash_table_lookup(s_info.instance_cnt_table, widget_id);
if (cur_instance_cnt != NULL) {
(*cur_instance_cnt)--;
+ aul_widget_instance_del(widget_id, instance_id);
if (*cur_instance_cnt == 0)
- g_hash_table_remove(s_info.instance_cnt_table, info->widget_id);
+ g_hash_table_remove(s_info.instance_cnt_table, widget_id);
}
}
- if (s_info.widget_table)
- g_hash_table_remove(s_info.widget_table, info->instance_id);
+ free(widget_id);
+ free(instance_id);
}
static void __resize_cb(void *data, Evas *e, Evas_Object *layout, void *event_info)