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

Reply via email to