evas_object_smart_callback_call(obj, signal, cbdata);
}
+static const char *__to_appid(const char *widget_id)
+{
+ const char *appid;
+
+ appid = g_strstr_len(widget_id, strlen(widget_id), "@");
+ if (appid != NULL) {
+ if (strlen(appid) == 1)
+ return widget_id;
+
+ /* skip @ */
+ appid++;
+ } else {
+ appid = (char *)widget_id;
+ }
+ return appid;
+}
+
static void __screen_connector_watcher_evas_added_cb(const char *appid, Evas_Object *image, void *data)
{
struct widget_info *info;
return;
}
- if (info->restart || (strcmp(appid, info->widget_id) != 0))
+ if (info->restart || (info->widget_id == NULL) || (strcmp(appid, __to_appid(info->widget_id)) != 0)) {
+ ErrPrint("Wrong added info, %s %s", appid, info->widget_id);
return;
+ }
- DbgPrint("widget added: %s, instance : %s, (%p)", appid, info->instance_id, image);
+ DbgPrint("widget added: %s, widget_id : %s, instance : %s, (%p)",
+ appid, info->widget_id, info->instance_id, image);
evas_object_geometry_get(image, &x, &y, &w, &h);
DbgPrint("widget geometry:%d %d %d %d", x, y, w, h);
elm_object_part_content_set(info->layout, "tbm,widget", image);
g_queue_push_tail(info->event_queue, GINT_TO_POINTER(event));
}
+
static int __restart_terminated_widget(const char *widget_id)
{
ops.added = __screen_connector_watcher_evas_added_cb;
ops.removed = __screen_connector_watcher_evas_removed_cb;
ops.updated = __screen_connector_watcher_evas_updated_cb;
- screen_connector_watcher_evas_add(&ops, widget_instance_info->widget_id, widget_instance_info);
+
+ screen_connector_watcher_evas_add(&ops, (char *)__to_appid(widget_instance_info->widget_id), widget_instance_info);
widget_instance_info->pid = widget_instance_launch(widget_instance_info->instance_id, widget_instance_info->content_info, w, h);
widget_instance_info->restart = false;
}
ops.added = __screen_connector_watcher_evas_added_cb;
ops.removed = __screen_connector_watcher_evas_removed_cb;
ops.updated = __screen_connector_watcher_evas_updated_cb;
- screen_connector_watcher_evas_add(&ops, info->widget_id, info);
+ screen_connector_watcher_evas_add(&ops, (char *)__to_appid(info->widget_id), info);
info->pid = widget_instance_launch(info->instance_id, info->content_info, w, h);
if (info->pid < 0) {
ops.added = __screen_connector_watcher_evas_added_cb;
ops.removed = __screen_connector_watcher_evas_removed_cb;
ops.updated = __screen_connector_watcher_evas_updated_cb;
- screen_connector_watcher_evas_add(&ops, info->widget_id, info);
+ screen_connector_watcher_evas_add(&ops, (char *)__to_appid(info->widget_id), info);
info->pid = widget_instance_launch(info->instance_id, info->content_info, w, h);
if (info->pid < 0) {
ErrPrint("Failed to launch an widget");