forked from enlightenment/efl
Bugfix on directfb engine:
* cleaning dirty rectangles on dfb surfaces now is done correctly. SVN revision: 41777
This commit is contained in:
parent
b2d4ead502
commit
af554298cd
|
@ -408,6 +408,19 @@ _dfb_surface_for_each_cutout(IDirectFBSurface *surface, RGBA_Draw_Context *dc, _
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
rects = evas_common_draw_context_apply_cutouts(dc);
|
rects = evas_common_draw_context_apply_cutouts(dc);
|
||||||
|
if (!rects)
|
||||||
|
{
|
||||||
|
DFBRegion cr;
|
||||||
|
cr.x1 = 0;
|
||||||
|
cr.y1 = 0;
|
||||||
|
surface->GetSize(surface, &cr.x2, &cr.y2);
|
||||||
|
cr.x2 -= 1;
|
||||||
|
cr.y2 -= 1;
|
||||||
|
surface->SetClip(surface, NULL);
|
||||||
|
cb(surface, dc, &cr, data);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < rects->active; ++i)
|
for (i = 0; i < rects->active; ++i)
|
||||||
{
|
{
|
||||||
Cutout_Rect *r;
|
Cutout_Rect *r;
|
||||||
|
@ -1087,13 +1100,22 @@ _cb_draw_rectangle(IDirectFBSurface *surface, RGBA_Draw_Context *dc __UNUSED__,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
evas_engine_dfb_rectangle_draw(void *data __UNUSED__, void *context, void *surface, int x, int y, int w, int h)
|
evas_engine_dfb_rectangle_draw(void *data, void *context, void *surface, int x, int y, int w, int h)
|
||||||
{
|
{
|
||||||
IDirectFBSurface *screen = surface;
|
IDirectFBSurface *screen = surface;
|
||||||
|
Render_Engine *re = data;
|
||||||
|
RGBA_Draw_Context *dc = context;
|
||||||
Eina_Rectangle r;
|
Eina_Rectangle r;
|
||||||
|
|
||||||
if (!_dfb_surface_set_color_from_context(screen, context))
|
if (!_dfb_surface_set_color_from_context(screen, context))
|
||||||
return;
|
{
|
||||||
|
if (dc->render_op != EVAS_RENDER_COPY)
|
||||||
|
return;
|
||||||
|
if (!re->screen_image->cache_entry.src->flags.alpha)
|
||||||
|
return;
|
||||||
|
screen->SetColor(screen, 0, 0, 0, 0);
|
||||||
|
screen->SetDrawingFlags(screen, DSDRAW_NOFX);
|
||||||
|
}
|
||||||
|
|
||||||
EINA_RECTANGLE_SET(&r, x, y, w, h);
|
EINA_RECTANGLE_SET(&r, x, y, w, h);
|
||||||
_dfb_surface_for_each_cutout(screen, context, _cb_draw_rectangle, &r);
|
_dfb_surface_for_each_cutout(screen, context, _cb_draw_rectangle, &r);
|
||||||
|
@ -1621,6 +1643,7 @@ module_open(Evas_Module *em)
|
||||||
ORD(info);
|
ORD(info);
|
||||||
ORD(info_free);
|
ORD(info_free);
|
||||||
ORD(setup);
|
ORD(setup);
|
||||||
|
ORD(canvas_alpha_get);
|
||||||
ORD(output_free);
|
ORD(output_free);
|
||||||
ORD(output_resize);
|
ORD(output_resize);
|
||||||
ORD(output_tile_size_set);
|
ORD(output_tile_size_set);
|
||||||
|
|
Loading…
Reference in New Issue