Enlightenment CVS committal Author : raster Project : e17 Module : libs/evas
Dir : e17/libs/evas/src/modules/engines/software_x11 Modified Files: evas_engine.h evas_outbuf.c evas_x_color.c Log Message: being an anally retentive bastard.. i checked if e worked in 8bpp under vnc. GASP! it didn't. evas's color allocator was screwed. fixed! :) =================================================================== RCS file: /cvs/e/e17/libs/evas/src/modules/engines/software_x11/evas_engine.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- evas_engine.h 8 Mar 2006 15:35:05 -0000 1.2 +++ evas_engine.h 14 Aug 2006 13:50:07 -0000 1.3 @@ -1,10 +1,6 @@ #ifndef EVAS_ENGINE_H #define EVAS_ENGINE_H -/* PERF: - * # EVAS BENCH: 4.072 - */ - #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xatom.h> =================================================================== RCS file: /cvs/e/e17/libs/evas/src/modules/engines/software_x11/evas_outbuf.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- evas_outbuf.c 9 Mar 2006 03:51:27 -0000 1.3 +++ evas_outbuf.c 14 Aug 2006 13:50:07 -0000 1.4 @@ -82,7 +82,8 @@ if (evas_software_x11_x_output_buffer_bit_order(xob) == MSBFirst) buf->priv.x.bit_swap = 1; #endif - if ((vis->class == TrueColor) || (vis->class == DirectColor)) + if (((vis->class == TrueColor) || (vis->class == DirectColor)) && + (x_depth > 8)) { buf->priv.mask.r = (DATA32) vis->red_mask; buf->priv.mask.g = (DATA32) vis->green_mask; @@ -96,7 +97,9 @@ } else if ((vis->class == PseudoColor) || (vis->class == StaticColor) || - (vis->class == GrayScale) || (vis->class == StaticGray)) + (vis->class == GrayScale) || + (vis->class == StaticGray) || + (x_depth <= 8)) { Convert_Pal_Mode pm = PAL_MODE_RGB332; =================================================================== RCS file: /cvs/e/e17/libs/evas/src/modules/engines/software_x11/evas_x_color.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- evas_x_color.c 14 Jan 2006 12:13:37 -0000 1.1 +++ evas_x_color.c 14 Aug 2006 13:50:07 -0000 1.2 @@ -40,13 +40,14 @@ { int r, g, b, i; DATA8 *color_lut; - int sig_mask = 0; + int sig_mask = 0, delt = 0; for (i = 0; i < v->bits_per_rgb; i++) sig_mask |= (0x1 << i); sig_mask <<= (16 - v->bits_per_rgb); i = 0; color_lut = malloc((nr) * (ng) * (nb)); if (!color_lut) return NULL; + delt = 0x0101 * 3; for (r = 0; r < (nr); r++) { for (g = 0; g < (ng); g++) @@ -57,26 +58,48 @@ XColor xcl_in; int val; Status ret; + int dr, dg, db; - val = (int)((((double)r) / ((nr) - 1)) * 65535); + val = (int)((((double)r) / ((nr) - 1)) * 255); + val = (val << 8) | val; xcl.red = (unsigned short)(val); - val = (int)((((double)g) / ((ng) - 1)) * 65535); + val = (int)((((double)g) / ((ng) - 1)) * 255); + val = (val << 8) | val; xcl.green = (unsigned short)(val); - val = (int)((((double)b) / ((nb) - 1)) * 65535); + val = (int)((((double)b) / ((nb) - 1)) * 255); + val = (val << 8) | val; xcl.blue = (unsigned short)(val); xcl_in = xcl; ret = XAllocColor(d, cmap, &xcl); + dr = (int)xcl_in.red - (int)xcl.red; + if (dr < 0) dr = -dr; + dg = (int)xcl_in.green - (int)xcl.green; + if (dg < 0) dg = -dg; + db = (int)xcl_in.blue - (int)xcl.blue; + if (db < 0) db = -db; +/* + printf("ASK [%i]: %04x %04x %04x = %04x %04x %04x | dif = %04x / %04x\n", + ret, + xcl_in.red, xcl_in.green, xcl_in.blue, + xcl.red, xcl.green, xcl.blue, + (dr + dg +db), delt); + */ if ((ret == 0) || + ((dr + dg + db) > delt) +/* + || ((xcl_in.red & sig_mask) != (xcl.red & sig_mask)) || ((xcl_in.green & sig_mask) != (xcl.green & sig_mask)) || - ((xcl_in.blue & sig_mask) != (xcl.blue & sig_mask))) + ((xcl_in.blue & sig_mask) != (xcl.blue & sig_mask)) + */ + ) { unsigned long pixels[256]; int j; if (i > 0) { - for(j = 0; j < i; j++) + for (j = 0; j < i; j++) pixels[j] = (unsigned long) color_lut[j]; XFreeColors(d, cmap, pixels, i, 0); } @@ -110,7 +133,8 @@ int val; Status ret; - val = (int)((((double)g) / ((ng) - 1)) * 65535); + val = (int)((((double)g) / ((ng) - 1)) * 255); + val = (val << 8) | val; xcl.red = (unsigned short)(val); xcl.green = (unsigned short)(val); xcl.blue = (unsigned short)(val); @@ -126,7 +150,7 @@ if (i > 0) { - for(j = 0; j < i; j++) + for (j = 0; j < i; j++) pixels[j] = (unsigned long) color_lut[j]; XFreeColors(d, cmap, pixels, i, 0); } @@ -269,6 +293,7 @@ Convert_Pal_Mode c; Evas_List *l; +/* printf("ALLOC cmap=%i vis=%p\n", cmap, vis);*/ for (l = palettes; l; l = l->next) { pal = l->data; @@ -287,6 +312,7 @@ { if (x_color_alloc[c]) { +/* printf("TRY PAL %i\n", c);*/ pal->lookup = (x_color_alloc[c])(disp, cmap, vis); if (pal->lookup) break; } ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs