return item;
}
-static void __process_pending_item(struct pending_item *item, const char *instance_id)
+static int __instance_pause(struct widget_info *info)
+{
+ Evas_Object *tbm_obj;
+
+ if (!info) {
+ LOGE("instance id is invalid");
+ return -1;
+ }
+
+ if (!info->layout) {
+ LOGE("invalid layout object");
+ return -1;
+ }
+
+ tbm_obj = elm_object_part_content_get(info->layout, "tbm,widget");
+ if (!tbm_obj) {
+ LOGE("widget object is invalid");
+ return -1;
+ }
+
+ return screen_connector_toolkit_evas_send_visibility(tbm_obj,
+ VISIBILITY_TYPE_FULLY_OBSCURED);
+}
+
+static int __instance_resume(struct widget_info *info)
+{
+ Evas_Object *tbm_obj;
+
+ if (!info) {
+ LOGE("instance id is invalid");
+ return -1;
+ }
+
+ if (!info->layout) {
+ LOGE("invalid layout object");
+ return -1;
+ }
+
+ tbm_obj = elm_object_part_content_get(info->layout, "tbm,widget");
+ if (!tbm_obj) {
+ LOGE("widget object is invalid");
+ return -1;
+ }
+
+ return screen_connector_toolkit_evas_send_visibility(tbm_obj,
+ VISIBILITY_TYPE_UNOBSCURED);
+}
+
+static void __process_pending_item(struct pending_item *item, struct widget_info *info)
{
int ret;
if (!strcmp(item->event, "resize")) {
- ret = widget_instance_resize(instance_id, item->w, item->h);
+ ret = widget_instance_resize(info->instance_id, item->w, item->h);
} else if (!strcmp(item->event, "resume")) {
- ret = widget_instance_resume(instance_id);
+ ret = __instance_resume(info);
} else if (!strcmp(item->event, "pause")) {
- ret = widget_instance_pause(instance_id);
+ ret = __instance_pause(info);
} else {
LOGW("Unknown event(%s)", item->event);
return;
}
LOGD("instance_id(%s), event(%s), result(%d)",
- instance_id, item->event, ret);
+ info->instance_id, item->event, ret);
}
static void __flush_pending_queue(struct widget_info *info)
while (!g_queue_is_empty(info->pending_queue)) {
item = g_queue_pop_head(info->pending_queue);
- __process_pending_item(item, info->instance_id);
+ __process_pending_item(item, info);
__destroy_pending_item(item);
}
struct widget_info *info;
struct pending_item *item;
int ret;
+ Evas_Object *tbm_obj;
+ bool is_visible;
if (!is_widget_feature_enabled())
return WIDGET_ERROR_NOT_SUPPORTED;
info = (struct widget_info *)value;
if (info) {
if (info->is_created) {
- ret = widget_instance_resume(info->instance_id);
+
+ if (!info->layout) {
+ LOGE("widget(%s) layout is invalid", info->instance_id);
+ continue;
+ }
+
+ tbm_obj = elm_object_part_content_get(info->layout, "tbm,widget");
+ if (!tbm_obj) {
+ LOGE("widget(%s) object is invalid", info->instance_id);
+ continue;
+ }
+
+ ret = screen_connector_toolkit_evas_is_visible(tbm_obj, &is_visible);
+ if (ret < 0 || !is_visible) {
+ LOGE("widget(%s) object is invisible", info->instance_id);
+ continue;
+ }
+
+ ret = __instance_resume(info);
if (ret < 0) {
ErrPrint("Fail to resume the widget(%s):(%d)",
info->instance_id, ret);
info = (struct widget_info *)value;
if (info) {
if (info->is_created) {
- ret = widget_instance_pause(info->instance_id);
+ ret = __instance_pause(info);
if (ret < 0) {
ErrPrint("Fail to pause the widget(%s):(%d)",
info->instance_id, ret);
}
if (info->is_created) {
- ret = widget_instance_pause(info->instance_id);
+ ret = __instance_pause(info);
if (ret < 0) {
ErrPrint("Fail to pause the widget(%p):(%d)", widget, ret);
return ret;
}
if (info->is_created) {
- ret = widget_instance_resume(info->instance_id);
+ ret = __instance_resume(info);
if (ret < 0) {
ErrPrint("Fail to resume the widget(%p):(%d)", widget, ret);
return ret;