{
if (cw->ec->internal) //internal clients render when they feel like it
e_comp_object_damage(cw->smart_obj, 0, 0, cw->w, cw->h);
+
+ if (!cw->update_count || !(e_pixmap_validate_check(cw->ec->pixmap)))
+ return;
+
evas_object_show(cw->smart_obj);
}
}
E_Client *ec = cw->ec;
if (ec->ignored) return;
+
if (cw->effect_obj)
{
//INF("SHOW2 %p", ec);
{
RENDER_DEBUG("IGNORED %p: %d,%d %dx%d", cw->ec, x, y, w, h);
e_comp_object_render_update_add(obj);
+
+ if ((cw->ec->visible) && (!evas_object_visible_get(cw->smart_obj)))
+ evas_object_show(cw->smart_obj);
+
return;
}
/* clip rect to client surface */
}
cw->updates_exist = 1;
e_comp_object_render_update_add(obj);
+
+ if ((cw->ec->visible) && (!evas_object_visible_get(cw->smart_obj)))
+ evas_object_show(cw->smart_obj);
}
EAPI Eina_Bool
return EINA_FALSE;
}
+EAPI Eina_Bool
+e_pixmap_validate_check(const E_Pixmap *cp)
+{
+ Eina_Bool success = EINA_FALSE;
+ EINA_SAFETY_ON_NULL_RETURN_VAL(cp, EINA_FALSE);
+
+ switch (cp->type)
+ {
+ case E_PIXMAP_TYPE_X:
+#ifndef HAVE_WAYLAND_ONLY
+ {
+ int pw, ph;
+ if (!cp->pixmap) break;
+ ecore_x_pixmap_geometry_get(cp->pixmap, NULL, NULL, &pw, &ph);
+ success = (pw > 0) && (ph > 0);
+ }
+#endif
+ break;
+ case E_PIXMAP_TYPE_WL:
+#if defined(HAVE_WAYLAND_CLIENTS) || defined(HAVE_WAYLAND_ONLY)
+ _e_pixmap_update_wl(cp);
+ success = (cp->w > 0) && (cp->h > 0);
+#endif
+ break;
+ default:
+ break;
+ }
+ return success;
+}
+
EAPI void
e_pixmap_image_draw_done(E_Pixmap *cp)
{
EAPI void *e_pixmap_image_data_get(E_Pixmap *cp);
EAPI Eina_Bool e_pixmap_image_data_argb_convert(E_Pixmap *cp, void *pix, void *ipix, Eina_Rectangle *r, int stride);
EAPI Eina_Bool e_pixmap_image_draw(E_Pixmap *cp, const Eina_Rectangle *r);
+EAPI Eina_Bool e_pixmap_validate_check(const E_Pixmap *cp);
EAPI void e_pixmap_image_opaque_set(E_Pixmap *cp, int x, int y, int w, int h);
EAPI void e_pixmap_image_opaque_get(E_Pixmap *cp, int *x, int *y, int *w, int *h);