Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/evas

Dir     : e17/libs/evas/src/modules/engines/software_generic


Modified Files:
        evas_engine.c 


Log Message:


a few things.

1. disable viewports other than 1:1 at 0,0
2. remove output space coorsds for pointer.
3. remove geom caching
4. make threaded pipelined engine a runtime detect if u have > 1 cpu.
5. pthread build default if u have pthread.h and sched.h

===================================================================
RCS file: 
/cvs/e/e17/libs/evas/src/modules/engines/software_generic/evas_engine.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- evas_engine.c       15 Nov 2006 11:57:42 -0000      1.10
+++ evas_engine.c       16 Nov 2006 03:20:24 -0000      1.11
@@ -9,6 +9,8 @@
  *****
  */
 
+static int cpunum = 0;
+
 static void *
 eng_context_new(void *data)
 {
@@ -141,22 +143,28 @@
 eng_rectangle_draw(void *data, void *context, void *surface, int x, int y, int 
w, int h)
 {
 #ifdef BUILD_PTHREAD
-   evas_common_pipe_rectangle_draw(surface, context, x, y, w, h);
-#else
-   evas_common_rectangle_draw(surface, context, x, y, w, h);
-   evas_common_cpu_end_opt();
-#endif   
+   if (cpunum > 1)
+     evas_common_pipe_rectangle_draw(surface, context, x, y, w, h);
+   else
+#endif
+     {
+       evas_common_rectangle_draw(surface, context, x, y, w, h);
+       evas_common_cpu_end_opt();
+     }
 }
 
 static void
 eng_line_draw(void *data, void *context, void *surface, int x1, int y1, int 
x2, int y2)
 {
 #ifdef BUILD_PTHREAD
-   evas_common_pipe_line_draw(surface, context, x1, y1, x2, y2);
-#else   
-   evas_common_line_draw(surface, context, x1, y1, x2, y2);
-   evas_common_cpu_end_opt();
+   if (cpunum > 1)
+     evas_common_pipe_line_draw(surface, context, x1, y1, x2, y2);
+   else
 #endif   
+     {
+       evas_common_line_draw(surface, context, x1, y1, x2, y2);
+       evas_common_cpu_end_opt();
+     }
 }
 
 static void *
@@ -175,11 +183,14 @@
 eng_polygon_draw(void *data, void *context, void *surface, void *polygon)
 {
 #ifdef BUILD_PTHREAD
-   evas_common_pipe_poly_draw(surface, context, polygon);
-#else
-   evas_common_polygon_draw(surface, context, polygon);
-   evas_common_cpu_end_opt();
+   if (cpunum > 1)
+     evas_common_pipe_poly_draw(surface, context, polygon);
+   else
 #endif
+     {
+       evas_common_polygon_draw(surface, context, polygon);
+       evas_common_cpu_end_opt();
+     }
 }
 
 static void *
@@ -308,11 +319,14 @@
 eng_gradient_draw(void *data, void *context, void *surface, void *gradient, 
int x, int y, int w, int h)
 {
 #ifdef BUILD_PTHREAD
-   evas_common_pipe_grad_draw(surface, context, x, y, w, h, gradient);
-#else   
-   evas_common_gradient_draw(surface, context, x, y, w, h, gradient);
-   evas_common_cpu_end_opt();
+   if (cpunum > 1)
+     evas_common_pipe_grad_draw(surface, context, x, y, w, h, gradient);
+   else
 #endif   
+     {
+       evas_common_gradient_draw(surface, context, x, y, w, h, gradient);
+       evas_common_cpu_end_opt();
+     }
 }
 
 static void *
@@ -502,20 +516,23 @@
 {
    evas_common_load_image_data_from_file(image);
 #ifdef BUILD_PTHREAD
-   evas_common_pipe_image_draw(image, surface, context, smooth,
-                              src_x, src_y, src_w, src_h,
-                              dst_x, dst_y, dst_w, dst_h);
-#else
-   if (smooth)
-     evas_common_scale_rgba_in_to_out_clip_smooth(image, surface, context,
-                                     src_x, src_y, src_w, src_h,
-                                     dst_x, dst_y, dst_w, dst_h);
+   if (cpunum > 1)
+     evas_common_pipe_image_draw(image, surface, context, smooth,
+                                src_x, src_y, src_w, src_h,
+                                dst_x, dst_y, dst_w, dst_h);
    else
-     evas_common_scale_rgba_in_to_out_clip_sample(image, surface, context,
-                                     src_x, src_y, src_w, src_h,
-                                     dst_x, dst_y, dst_w, dst_h);
-   evas_common_cpu_end_opt();
 #endif
+     {
+       if (smooth)
+         evas_common_scale_rgba_in_to_out_clip_smooth(image, surface, context,
+                                                      src_x, src_y, src_w, 
src_h,
+                                                      dst_x, dst_y, dst_w, 
dst_h);
+       else
+         evas_common_scale_rgba_in_to_out_clip_sample(image, surface, context,
+                                                      src_x, src_y, src_w, 
src_h,
+                                                      dst_x, dst_y, dst_w, 
dst_h);
+       evas_common_cpu_end_opt();
+     }
 }
 
 static char *
@@ -655,50 +672,14 @@
 eng_font_draw(void *data, void *context, void *surface, void *font, int x, int 
y, int w, int h, int ow, int oh, const char *text)
 {
 #ifdef BUILD_PTHREAD
-   evas_common_pipe_text_draw(surface, context, font, x, y, text);
-#else   
-   evas_common_font_draw(surface, context, font, x, y, text);
-   evas_common_cpu_end_opt();
-#endif   
-#if 0   
+   if (cpunum > 1)
+     evas_common_pipe_text_draw(surface, context, font, x, y, text);
    else
+#endif   
      {
-       /* create output surface size ow x oh and scale to w x h */
-       RGBA_Draw_Context *dc, *dc_in;
-
-       dc_in = context;
-       dc = evas_common_draw_context_new();
-       if (dc)
-         {
-            RGBA_Image *im;
-            int inset;
-
-            dc->col.col = dc_in->col.col;
-            inset = evas_common_font_query_inset( font, text);
-            im = evas_common_image_create(ow+inset, oh);
-            if (im)
-              {
-                 int max_ascent;
-                 int j;
-
-                 im->flags |= RGBA_IMAGE_HAS_ALPHA;
-                 j = (ow + inset) * oh;
-                 memset(im->image->data, 0, j * sizeof(DATA32));
-
-                 max_ascent = evas_common_font_max_ascent_get(font);
-
-                 evas_common_font_draw(im, dc, font, 0, max_ascent, text);
-                 evas_common_cpu_end_opt();
-                 evas_common_scale_rgba_in_to_out_clip_smooth
-                   (im, surface, context, inset, 0, ow, oh,
-                    x + ((inset * w) / ow), y - ((max_ascent * h) / oh),
-                    w, h);
-                 evas_common_image_free(im);
-              }
-            evas_common_draw_context_free(dc);
-         }
+       evas_common_font_draw(surface, context, font, x, y, text);
+       evas_common_cpu_end_opt();
      }
-#endif   
 }
 
 static void
@@ -863,6 +844,7 @@
 {
    if (!em) return 0;
    em->functions = (void *)(&func);
+   cpunum = evas_common_cpu_count();
    return 1;
 }
 



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to