From c3e29f8adc275fa25168ecf6d5991feacc66fd1d Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Mon, 25 Nov 2002 07:42:58 +0000 Subject: [PATCH] spotted some old debugging code... and fixed up dfb engine to handle sruface proeprly that uses its alpha channle where no objects exist (similar to the software x11 engine and shape masks etc.) SVN revision: 6461 --- .../evas/src/lib/engines/directfb/evas_engine_dfb.c | 12 +++++++++++- .../src/lib/engines/software_qtopia/evas_engine.c | 2 +- .../evas/src/lib/engines/software_x11/evas_engine.c | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/legacy/evas/src/lib/engines/directfb/evas_engine_dfb.c b/legacy/evas/src/lib/engines/directfb/evas_engine_dfb.c index bbe195dec6..cc18718643 100644 --- a/legacy/evas/src/lib/engines/directfb/evas_engine_dfb.c +++ b/legacy/evas/src/lib/engines/directfb/evas_engine_dfb.c @@ -290,6 +290,7 @@ evas_engine_directfb_output_redraws_next_update_get(void *data, int *x, int *y, Evas_Object_List *l; int ux, uy, uw, uh; static first = 1; + DFBRegion region; re = (Render_Engine *) data; if (re->end) @@ -320,6 +321,14 @@ evas_engine_directfb_output_redraws_next_update_get(void *data, int *x, int *y, *cy = *y = uy; *cw = *w = uw; *ch = *h = uh; + region.x1 = ux; + region.y1 = uy; + region.x2 = ux + uw - 1; + region.y2 = uy + uh - 1; + re->backbuf->SetClip(re->backbuf, ®ion); + re->backbuf->Clear(re->backbuf, 0, 0, 0, 0); + re->backbuf->SetClip(re->backbuf, NULL); + /* Return the "fake" surface so it is passed to the drawing routines. */ return re->rgba_image; @@ -871,6 +880,7 @@ evas_engine_directfb_font_draw(void *data, void *context, void *surface, surf = (IDirectFBSurface *)im->image->data; surf->Lock(surf, DSLF_WRITE, &p, &pitch); im->image->data = p; + im->flags |= RGBA_IMAGE_HAS_ALPHA; if ((w == ow) && (h == oh)) evas_common_font_draw(im, context, font, x, y, text); else @@ -893,7 +903,7 @@ evas_engine_directfb_font_draw(void *data, void *context, void *surface, im->flags |= RGBA_IMAGE_HAS_ALPHA; j = ow * oh; - for (i = 0; i < j; i++) im->image->data[i] = (dc->col.col & 0xffffff); + memset(im->image->data, 0, j * sizeof(DATA32)); max_ascent = evas_common_font_max_ascent_get(font); diff --git a/legacy/evas/src/lib/engines/software_qtopia/evas_engine.c b/legacy/evas/src/lib/engines/software_qtopia/evas_engine.c index ef18d3fec2..33f32f1802 100644 --- a/legacy/evas/src/lib/engines/software_qtopia/evas_engine.c +++ b/legacy/evas/src/lib/engines/software_qtopia/evas_engine.c @@ -994,7 +994,7 @@ evas_engine_software_qtopia_font_draw(void *data, void *context, void *surface, im->flags |= RGBA_IMAGE_HAS_ALPHA; j = ow * oh; - for (i = 0; i < j; i++) im->image->data[i] = (dc->col.col & 0xffffff); + memset(im->image->data, 0, j * sizeof(DATA32)); max_ascent = evas_common_font_max_ascent_get(font); diff --git a/legacy/evas/src/lib/engines/software_x11/evas_engine.c b/legacy/evas/src/lib/engines/software_x11/evas_engine.c index 423f4f1a77..443b9ff817 100644 --- a/legacy/evas/src/lib/engines/software_x11/evas_engine.c +++ b/legacy/evas/src/lib/engines/software_x11/evas_engine.c @@ -1037,7 +1037,7 @@ evas_engine_software_x11_font_draw(void *data, void *context, void *surface, voi im->flags |= RGBA_IMAGE_HAS_ALPHA; j = ow * oh; - for (i = 0; i < j; i++) im->image->data[i] = (dc->col.col & 0xffffff); + memset(im->image->data, 0, j * sizeof(DATA32)); max_ascent = evas_common_font_max_ascent_get(font);