Enlightenment CVS committal
Author : raster
Project : e17
Module : libs/evas
Dir : e17/libs/evas/src/modules/engines/software_x11
Modified Files:
evas_outbuf.c
Log Message:
cedric's cache changes patch
===================================================================
RCS file: /cvs/e/e17/libs/evas/src/modules/engines/software_x11/evas_outbuf.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -3 -r1.18 -r1.19
--- evas_outbuf.c 9 Mar 2008 09:35:12 -0000 1.18
+++ evas_outbuf.c 12 Apr 2008 00:32:28 -0000 1.19
@@ -330,6 +330,7 @@
Outbuf_Region *obr;
int bpl = 0;
int use_shm = 1;
+ int alpha;
if ((buf->onebuf) && (buf->priv.x.shm))
{
@@ -360,7 +361,7 @@
im = buf->priv.onebuf;
for (yy = y; yy < (y + h); yy++)
{
- memset(im->image->data + (im->image->w * yy) + x,
+ memset(im->image.data + (im->cache_entry.w * yy) + x,
0, w * sizeof(DATA32));
}
}
@@ -375,26 +376,26 @@
*cy = y;
*cw = w;
*ch = h;
-
+
+ alpha = ((buf->priv.x.mask) || (buf->priv.destination_alpha));
+
use_shm = buf->priv.x.shm;
if ((buf->rot == 0) &&
(buf->priv.mask.r == 0xff0000) &&
(buf->priv.mask.g == 0x00ff00) &&
(buf->priv.mask.b == 0x0000ff))
{
- im = evas_cache_image_empty(evas_common_image_cache_get());
- im->image->w = buf->w;
- im->image->h = buf->h;
- im->image->data = NULL;
- im->image->no_free = 1;
- im->extended_info = obr;
obr->xob = evas_software_x11_x_output_buffer_new(buf->priv.x.disp,
buf->priv.x.vis,
buf->priv.x.depth,
buf->w, buf->h,
use_shm,
NULL);
- im->image->data = (DATA32 *)
evas_software_x11_x_output_buffer_data(obr->xob, &bpl);
+ im = (RGBA_Image *)
evas_cache_image_data(evas_common_image_cache_get(),
+ buf->w, buf->h,
+ (DATA32 *)
evas_software_x11_x_output_buffer_data(obr->xob, &bpl),
+ alpha,
EVAS_COLORSPACE_ARGB8888);
+ im->extended_info = obr;
if (buf->priv.x.mask)
obr->mxob =
evas_software_x11_x_output_buffer_new(buf->priv.x.disp,
buf->priv.x.vis,
@@ -405,10 +406,9 @@
}
else
{
- im = evas_cache_image_empty(evas_common_image_cache_get());
- im->image->w = buf->w;
- im->image->h = buf->h;
- evas_common_image_surface_alloc(im->image);
+ im = (RGBA_Image *)
evas_cache_image_empty(evas_common_image_cache_get());
+ im->flags |= alpha ? RGBA_IMAGE_HAS_ALPHA : 0;
+ evas_cache_image_surface_alloc(&im->cache_entry, buf->w, buf->h);
im->extended_info = obr;
if ((buf->rot == 0) || (buf->rot == 180))
obr->xob =
evas_software_x11_x_output_buffer_new(buf->priv.x.disp,
@@ -431,22 +431,14 @@
use_shm,
NULL);
}
- if ((buf->priv.x.mask) || (buf->priv.destination_alpha))
- {
- im->flags |= RGBA_IMAGE_HAS_ALPHA;
- /* FIXME: faster memset! */
- memset(im->image->data, 0, w * h * sizeof(DATA32));
- }
- buf->priv.onebuf = im;
+ if (alpha)
+ /* FIXME: faster memset! */
+ memset(im->image.data, 0, w * h * sizeof(DATA32));
+
+ buf->priv.onebuf = im;
return im;
}
-
-
-
-
-
-
-
+
obr = calloc(1, sizeof(Outbuf_Region));
obr->x = x;
obr->y = y;
@@ -464,32 +456,30 @@
// use_shm = 0; /* 630 -> 1006 fps */
// if ((w * h) < (200 * 200)) use_shm = 0; /* 630 -> 962 fps */
+ alpha = ((buf->priv.x.mask) || (buf->priv.destination_alpha));
+
if ((buf->rot == 0) &&
(buf->priv.mask.r == 0xff0000) &&
(buf->priv.mask.g == 0x00ff00) &&
(buf->priv.mask.b == 0x0000ff))
{
- im = evas_cache_image_empty(evas_common_image_cache_get());
- im->image->w = w;
- im->image->h = h;
- im->image->data = NULL;
- im->image->no_free = 1;
- im->extended_info = obr;
obr->xob = _find_xob(buf->priv.x.disp,
buf->priv.x.vis,
buf->priv.x.depth,
w, h,
use_shm,
NULL);
- /*
- obr->xob = evas_software_x11_x_output_buffer_new(buf->priv.x.disp,
- buf->priv.x.vis,
- buf->priv.x.depth,
- w, h,
- use_shm,
- NULL);
- */
- im->image->data = (DATA32 *)
evas_software_x11_x_output_buffer_data(obr->xob, &bpl);
+/* obr->xob = evas_software_x11_x_output_buffer_new(buf->priv.x.disp, */
+/* buf->priv.x.vis, */
+/* buf->priv.x.depth, */
+/* w, h, */
+/* use_shm, */
+/* NULL); */
+ im = (RGBA_Image *)
evas_cache_image_data(evas_common_image_cache_get(),
+ w, h,
+ (DATA32 *)
evas_software_x11_x_output_buffer_data(obr->xob, &bpl),
+ alpha,
EVAS_COLORSPACE_ARGB8888);
+ im->extended_info = obr;
if (buf->priv.x.mask)
obr->mxob = _find_xob(buf->priv.x.disp,
buf->priv.x.vis,
@@ -506,10 +496,9 @@
}
else
{
- im = evas_cache_image_empty(evas_common_image_cache_get());
- im->image->w = w;
- im->image->h = h;
- evas_common_image_surface_alloc(im->image);
+ im = (RGBA_Image *)
evas_cache_image_empty(evas_common_image_cache_get());
+ im->flags |= alpha ? RGBA_IMAGE_HAS_ALPHA : 0;
+ evas_cache_image_surface_alloc(&im->cache_entry, w, h);
im->extended_info = obr;
if ((buf->rot == 0) || (buf->rot == 180))
obr->xob = _find_xob(buf->priv.x.disp,
@@ -556,11 +545,9 @@
*/
}
if ((buf->priv.x.mask) || (buf->priv.destination_alpha))
- {
- im->flags |= RGBA_IMAGE_HAS_ALPHA;
- /* FIXME: faster memset! */
- memset(im->image->data, 0, w * h * sizeof(DATA32));
- }
+ /* FIXME: faster memset! */
+ memset(im->image.data, 0, w * h * sizeof(DATA32));
+
buf->priv.pending_writes = evas_list_append(buf->priv.pending_writes, im);
return im;
}
@@ -692,7 +679,7 @@
RGBA_Image *im;
Outbuf_Region *obr;
- im = buf->priv.pending_writes->data;
+ im = evas_list_data(buf->priv.pending_writes);
buf->priv.pending_writes =
evas_list_remove_list(buf->priv.pending_writes, buf->priv.pending_writes);
obr = im->extended_info;
evas_cache_image_drop(im);
@@ -703,6 +690,7 @@
if (obr->mxob) evas_software_x11_x_output_buffer_free(obr->mxob,
0);
*/
free(obr);
+ evas_cache_image_drop(&im->cache_entry);
}
#endif
}
@@ -720,10 +708,10 @@
im = buf->priv.onebuf;
buf->priv.onebuf = NULL;
obr = im->extended_info;
- evas_cache_image_drop(im);
if (obr->xob) evas_software_x11_x_output_buffer_free(obr->xob, 0);
if (obr->mxob) evas_software_x11_x_output_buffer_free(obr->mxob, 0);
free(obr);
+ evas_cache_image_drop(&im->cache_entry);
}
else
{
@@ -790,7 +778,7 @@
if (!conv_func) return;
data = evas_software_x11_x_output_buffer_data(obr->xob, &bpl);
- src_data = update->image->data;
+ src_data = update->image.data;
if (buf->rot == 0)
{
obr->x = x;
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs