Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/evas

Dir     : e17/libs/evas/src/lib/include


Modified Files:
        evas_common.h 


Log Message:


i was just playing with adding thread supprot to INTERNALS of evas (ie the
renderer gets threaded). if i thread at the simplest levels (low down in for
example the image scaler code - one of the most expensvie gfx routnes) on an
actual dual core system - performance drops by 40%. this just doesn't work
well at that level. thread creates and joins per render op are just a bad
thing (tm) :) so this really needs to go in much higher up and that presents
problems. :( i will need to clearly define entry and exit points to and from
threaded space (and thus all the locks) - remove all nested calls (where
internal code goes thru the same entry/exit points traditionally so it
deadlocks itself).. anyway - this here has all that code stripepd out i
played with - it is just the autofoo and build stuff so we can turn on/off
thread support at will in the build.


===================================================================
RCS file: /cvs/e/e17/libs/evas/src/lib/include/evas_common.h,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -3 -r1.68 -r1.69
--- evas_common.h       8 Oct 2006 13:00:26 -0000       1.68
+++ evas_common.h       28 Oct 2006 03:02:21 -0000      1.69
@@ -12,6 +12,31 @@
 #define _GNU_SOURCE
 #endif
 
+#ifdef BUILD_PTHREAD
+# include <pthread.h>
+# define RLK         struct { pthread_rwlock_t rwl; } _reslock
+# define RLK_ADD(x)  pthread_rwlock_init   (&((x)->_reslock.rwl), NULL)
+# define RLK_DEL(x)  pthread_rwlock_destroy(&((x)->_reslock.rwl))
+# define RLK_RLK(x)  pthread_rwlock_rdlock (&((x)->_reslock.rwl))
+# define RLK_WLK(x)  pthread_rwlock_wrlock (&((x)->_reslock.rwl))
+# define RLK_ULK(x)  pthread_rwlock_unlock (&((x)->_reslock.rwl))
+#else
+# define RLK         
+# define RLK_ADD(x)  
+# define RLK_DEL(x)  
+# define RLK_RLK(x) 
+# define RLK_WLK(x) 
+# define RLK_ULK(x) 
+#endif
+
+typedef struct _Genlock Genlock;
+
+struct _Genlock
+{
+   RLK;
+   int _dummy;
+};
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
@@ -80,7 +105,7 @@
 typedef unsigned __int64              DATA64;
 #define strdup _strdup
 #define snprintf _snprintf
-#define rewind(f) fseek(f,0,SEEK_SET)
+#define rewind(f) fseek(f, 0, SEEK_SET)
 #endif
 
 typedef unsigned int                  DATA32;
@@ -706,45 +731,52 @@
 EAPI void evas_common_scale_hsva_a8_span                    (DATA32 *src, 
DATA8 *mask, int src_len, DATA32 mul_col, DATA32 *dst, int dst_len, int dir);
 
 /****/
+/*done*/
 EAPI void          evas_common_image_init              (void);
 EAPI void          evas_common_image_shutdown          (void);
 
-EAPI RGBA_Surface *evas_common_image_surface_new       (RGBA_Image *im);
-EAPI void          evas_common_image_surface_free      (RGBA_Surface *is);
-EAPI void          evas_common_image_surface_alloc     (RGBA_Surface *is);
-EAPI void          evas_common_image_surface_dealloc   (RGBA_Surface *is);
+/*done - internal - dont use */
+EAPI RGBA_Surface *evas_common_image_surface_new       (RGBA_Image *im);/*2*/
+EAPI void          evas_common_image_surface_free      (RGBA_Surface *is);/*2*/
+EAPI void          evas_common_image_surface_alloc     (RGBA_Surface *is);/*2*/
+EAPI void          evas_common_image_surface_dealloc   (RGBA_Surface *is);/*2*/
+EAPI void          evas_common_image_cache             (RGBA_Image *im); /*2*/
+EAPI void          evas_common_image_uncache           (RGBA_Image *im); /*2*/
+EAPI void          evas_common_image_store             (RGBA_Image *im); /*2*/
+EAPI void          evas_common_image_unstore           (RGBA_Image *im); /*2*/
+EAPI RGBA_Image   *evas_common_image_find              (const char *file, 
const char *key, DATA64 timestamp, RGBA_Image_Loadopts *lo); /*2*/
+EAPI void          evas_common_image_cache_free        (void); /*2*/
+EAPI void          evas_common_image_premul             (RGBA_Image *im); /*2*/
+EAPI void          evas_common_image_set_alpha_sparse   (RGBA_Image *im); /*2*/
 
+/*done*/
 EAPI RGBA_Image   *evas_common_image_alpha_create      (int w, int h);
 EAPI RGBA_Image   *evas_common_image_create            (int w, int h);
 EAPI RGBA_Image   *evas_common_image_new               (void);
+
 EAPI void          evas_common_image_free              (RGBA_Image *im);
 EAPI void          evas_common_image_ref               (RGBA_Image *im);
 EAPI void          evas_common_image_unref             (RGBA_Image *im);
-EAPI void          evas_common_image_cache             (RGBA_Image *im);
-EAPI void          evas_common_image_uncache           (RGBA_Image *im);
 EAPI void          evas_common_image_flush_cache       (void);
 EAPI void          evas_common_image_set_cache         (int size);
 EAPI int           evas_common_image_get_cache         (void);
-EAPI void          evas_common_image_store             (RGBA_Image *im);
-EAPI void          evas_common_image_unstore           (RGBA_Image *im);
-EAPI RGBA_Image   *evas_common_image_find              (const char *file, 
const char *key, DATA64 timestamp, RGBA_Image_Loadopts *lo);
 EAPI int           evas_common_image_ram_usage         (RGBA_Image *im);
 EAPI void          evas_common_image_dirty             (RGBA_Image *im);
-EAPI void          evas_common_image_cache_free        (void);
 
+EAPI RGBA_Image   *evas_common_image_line_buffer_obtain        (int len);
+EAPI void          evas_common_image_line_buffer_release       (void);
+EAPI void          evas_common_image_line_buffer_free          (void);
+
+EAPI RGBA_Image   *evas_common_image_alpha_line_buffer_obtain  (int len);
+EAPI void          evas_common_image_alpha_line_buffer_release (void);
+EAPI void          evas_common_image_alpha_line_buffer_free    (void);
+
+/*done*/
 EAPI RGBA_Image   *evas_common_load_image_from_file     (const char *file, 
const char *key, RGBA_Image_Loadopts *lo);
 EAPI void          evas_common_load_image_data_from_file(RGBA_Image *im);
 EAPI int           evas_common_save_image_to_file       (RGBA_Image *im, const 
char *file, const char *key, int quality, int compress);
-EAPI void          evas_common_image_premul             (RGBA_Image *im);
-EAPI void          evas_common_image_set_alpha_sparse   (RGBA_Image *im);
 
-EAPI RGBA_Image   *evas_common_image_line_buffer_obtain       (int len);
-EAPI void          evas_common_image_line_buffer_release      (void);
-EAPI void          evas_common_image_line_buffer_free         (void);
 
-EAPI RGBA_Image   *evas_common_image_alpha_line_buffer_obtain  (int len);
-EAPI void          evas_common_image_alpha_line_buffer_release (void);
-EAPI void          evas_common_image_alpha_line_buffer_free    (void);
 
 
 /****/
@@ -901,6 +933,9 @@
 void            evas_common_array_hash_add     (Evas_Array_Hash *hash, int 
key, int data);
 int             evas_common_array_hash_search  (Evas_Array_Hash *hash, int 
key);
 
+void evas_stringshare_init(void);
+void evas_stringshare_shutdown(void);
+       
 /*****************************************************************************/
 
 #ifdef __cplusplus



-------------------------------------------------------------------------
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