summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--legacy/evas/src/modules/engines/directfb/evas_engine.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/legacy/evas/src/modules/engines/directfb/evas_engine.c b/legacy/evas/src/modules/engines/directfb/evas_engine.c
index 1a9a489d3c..28840314ca 100644
--- a/legacy/evas/src/modules/engines/directfb/evas_engine.c
+++ b/legacy/evas/src/modules/engines/directfb/evas_engine.c
@@ -408,6 +408,19 @@ _dfb_surface_for_each_cutout(IDirectFBSurface *surface, RGBA_Draw_Context *dc, _
408 int i; 408 int i;
409 409
410 rects = evas_common_draw_context_apply_cutouts(dc); 410 rects = evas_common_draw_context_apply_cutouts(dc);
411 if (!rects)
412 {
413 DFBRegion cr;
414 cr.x1 = 0;
415 cr.y1 = 0;
416 surface->GetSize(surface, &cr.x2, &cr.y2);
417 cr.x2 -= 1;
418 cr.y2 -= 1;
419 surface->SetClip(surface, NULL);
420 cb(surface, dc, &cr, data);
421 return;
422 }
423
411 for (i = 0; i < rects->active; ++i) 424 for (i = 0; i < rects->active; ++i)
412 { 425 {
413 Cutout_Rect *r; 426 Cutout_Rect *r;
@@ -1087,13 +1100,22 @@ _cb_draw_rectangle(IDirectFBSurface *surface, RGBA_Draw_Context *dc __UNUSED__,
1087} 1100}
1088 1101
1089static void 1102static void
1090evas_engine_dfb_rectangle_draw(void *data __UNUSED__, void *context, void *surface, int x, int y, int w, int h) 1103evas_engine_dfb_rectangle_draw(void *data, void *context, void *surface, int x, int y, int w, int h)
1091{ 1104{
1092 IDirectFBSurface *screen = surface; 1105 IDirectFBSurface *screen = surface;
1106 Render_Engine *re = data;
1107 RGBA_Draw_Context *dc = context;
1093 Eina_Rectangle r; 1108 Eina_Rectangle r;
1094 1109
1095 if (!_dfb_surface_set_color_from_context(screen, context)) 1110 if (!_dfb_surface_set_color_from_context(screen, context))
1096 return; 1111 {
1112 if (dc->render_op != EVAS_RENDER_COPY)
1113 return;
1114 if (!re->screen_image->cache_entry.src->flags.alpha)
1115 return;
1116 screen->SetColor(screen, 0, 0, 0, 0);
1117 screen->SetDrawingFlags(screen, DSDRAW_NOFX);
1118 }
1097 1119
1098 EINA_RECTANGLE_SET(&r, x, y, w, h); 1120 EINA_RECTANGLE_SET(&r, x, y, w, h);
1099 _dfb_surface_for_each_cutout(screen, context, _cb_draw_rectangle, &r); 1121 _dfb_surface_for_each_cutout(screen, context, _cb_draw_rectangle, &r);
@@ -1621,6 +1643,7 @@ module_open(Evas_Module *em)
1621 ORD(info); 1643 ORD(info);
1622 ORD(info_free); 1644 ORD(info_free);
1623 ORD(setup); 1645 ORD(setup);
1646 ORD(canvas_alpha_get);
1624 ORD(output_free); 1647 ORD(output_free);
1625 ORD(output_resize); 1648 ORD(output_resize);
1626 ORD(output_tile_size_set); 1649 ORD(output_tile_size_set);