diff --git a/legacy/ecore/src/lib/ecore_evas/ecore_evas_ews.c b/legacy/ecore/src/lib/ecore_evas/ecore_evas_ews.c index 01afab52d2..e9a992a242 100644 --- a/legacy/ecore/src/lib/ecore_evas/ecore_evas_ews.c +++ b/legacy/ecore/src/lib/ecore_evas/ecore_evas_ews.c @@ -226,6 +226,7 @@ _ecore_evas_ews_resize_internal(Ecore_Evas *ee, int w, int h) einfo->info.alpha_threshold = 0; einfo->info.func.new_update_region = NULL; einfo->info.func.free_update_region = NULL; + evas_object_image_data_set(ee->engine.ews.image, pixels); if (!evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo)) { ERR("evas_engine_info_set() for engine '%s' failed.", ee->driver); @@ -580,7 +581,8 @@ _ecore_evas_ews_render(Ecore_Evas *ee) Ecore_Evas *ee2; Eina_Rectangle *r; int w, h, rend = 0; - + void *pixels; + EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2) { if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2); @@ -592,8 +594,10 @@ _ecore_evas_ews_render(Ecore_Evas *ee) if ((w != ee->w) || (h != ee->h)) ecore_evas_resize(ee, w, h); + pixels = evas_object_image_data_get(ee->engine.ews.image, 1); updates = evas_render_updates(ee->evas); - + evas_object_image_data_set(ee->engine.ews.image, pixels); + EINA_LIST_FOREACH(updates, l, r) evas_object_image_data_update_add(ee->engine.ews.image, r->x, r->y, r->w, r->h); @@ -1079,9 +1083,14 @@ ecore_evas_ews_new(int x, int y, int w, int h) ee = calloc(1, sizeof(Ecore_Evas)); if (!ee) return NULL; + if (w < 1) w = 1; + if (h < 1) h = 1; + o = evas_object_image_add(_ews_ee->evas); evas_object_image_content_hint_set(o, EVAS_IMAGE_CONTENT_HINT_DYNAMIC); evas_object_image_colorspace_set(o, EVAS_COLORSPACE_ARGB8888); + evas_object_image_size_set(o, w, h); + evas_object_image_alpha_set(o, 1); ECORE_MAGIC_SET(ee, ECORE_MAGIC_EVAS); @@ -1089,9 +1098,6 @@ ecore_evas_ews_new(int x, int y, int w, int h) ee->driver = EWS_ENGINE_NAME; - if (w < 1) w = 1; - if (h < 1) h = 1; - ee->x = 0; ee->y = 0; ee->w = w; @@ -1110,8 +1116,6 @@ ecore_evas_ews_new(int x, int y, int w, int h) ee->engine.ews.image = o; evas_object_data_set(ee->engine.ews.image, "Ecore_Evas", ee); - evas_object_image_size_set(o, ee->w, ee->h); - evas_object_image_alpha_set(o, 1); evas_object_event_callback_add(ee->engine.ews.image, EVAS_CALLBACK_MOUSE_IN, _ecore_evas_ews_cb_mouse_in, ee); @@ -1172,6 +1176,7 @@ ecore_evas_ews_new(int x, int y, int w, int h) einfo->info.alpha_threshold = 0; einfo->info.func.new_update_region = NULL; einfo->info.func.free_update_region = NULL; + evas_object_image_data_set(o, pixels); if (!evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo)) { ERR("evas_engine_info_set() for engine '%s' failed.", ee->driver);