Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/evas

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


Modified Files:
        Evas_Engine_SDL.h evas_engine.c evas_engine.h 


Log Message:


cedric's cache changes patch

===================================================================
RCS file: 
/cvs/e/e17/libs/evas/src/modules/engines/software_sdl/Evas_Engine_SDL.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- Evas_Engine_SDL.h   16 Jul 2007 07:25:34 -0000      1.1
+++ Evas_Engine_SDL.h   12 Apr 2008 00:32:28 -0000      1.2
@@ -12,11 +12,11 @@
    Evas_Engine_Info magic;
 
    struct {
-      SDL_Surface              *surface;
-      int                      fullscreen : 1;
-      int                       hwsurface : 1;
-      int                      noframe : 1;
-      int                       alpha : 1;
+     int                        rotation;
+     int                       fullscreen : 1;
+     int                        hwsurface : 1;
+     int                       noframe : 1;
+     int                        alpha : 1;
    } info;
 };
 #endif
===================================================================
RCS file: /cvs/e/e17/libs/evas/src/modules/engines/software_sdl/evas_engine.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- evas_engine.c       5 Oct 2007 14:35:39 -0000       1.8
+++ evas_engine.c       12 Apr 2008 00:32:28 -0000      1.9
@@ -9,51 +9,53 @@
 
 /* #define DEBUG_SDL */
 
-extern Evas_List*      evas_modules;
-
 static Evas_Func       func = {};
 static Evas_Func       pfunc = {};
 
-static void*           _sdl_output_setup               (int w, int h, int 
fullscreen, int noframe, int alpha, int hwsurface);
-static void            _sdl_stretch_blit               (const 
RGBA_Engine_Image* from, RGBA_Engine_Image* to, int w, int h);
+static void*                     _sdl_output_setup     (int w, int h, int 
fullscreen, int noframe, int alpha, int hwsurface);
+
+static Engine_Image_Entry       *_sdl_image_alloc       (void);
+static void                      _sdl_image_delete      (Engine_Image_Entry 
*eim);
 
-static int              _sdl_image_constructor          (RGBA_Engine_Image*, 
void* data);
-static void             _sdl_image_destructor           (RGBA_Engine_Image 
*eim);
+static int                       _sdl_image_constructor (Engine_Image_Entry*, 
void* data);
+static void                      _sdl_image_destructor  (Engine_Image_Entry 
*eim);
 
-static void             _sdl_image_dirty_region         (RGBA_Engine_Image 
*eim, int x, int y, int w, int h);
+static void                      _sdl_image_dirty_region(Engine_Image_Entry 
*eim, int x, int y, int w, int h);
 
-static int              _sdl_image_dirty                (RGBA_Engine_Image 
*dst, const RGBA_Engine_Image *src);
+static int                       _sdl_image_dirty       (Engine_Image_Entry 
*dst, const Engine_Image_Entry *src);
 
-static int              _sdl_image_size_set             (RGBA_Engine_Image 
*dst, const RGBA_Engine_Image *src);
+static int                       _sdl_image_size_set    (Engine_Image_Entry 
*dst, const Engine_Image_Entry *src);
 
-static int              _sdl_image_update_data          (RGBA_Engine_Image* 
dst, void* engine_data);
+static int                       _sdl_image_update_data (Engine_Image_Entry* 
dst, void* engine_data);
 
-static void             _sdl_image_load                 (RGBA_Engine_Image 
*eim, const RGBA_Image* im);
-static int              _sdl_image_mem_size_get         (RGBA_Engine_Image 
*eim);
+static void                      _sdl_image_load        (Engine_Image_Entry 
*eim, const Image_Entry* im);
+static int                       _sdl_image_mem_size_get(Engine_Image_Entry 
*eim);
 
 #ifdef DEBUG_SDL
-static void             _sdl_image_debug(const char* context, 
RGBA_Engine_Image* im);
+static void                      _sdl_image_debug       (const char* context, 
Engine_Image_Entry* im);
 #endif
 
 static const Evas_Cache_Engine_Image_Func       _sdl_cache_engine_image_cb = {
-   .key = NULL,
-   .constructor = _sdl_image_constructor,
-   .destructor = _sdl_image_destructor,
-   .dirty_region = _sdl_image_dirty_region,
-   .dirty = _sdl_image_dirty,
-   .size_set = _sdl_image_size_set,
-   .update_data = _sdl_image_update_data,
-   .load = _sdl_image_load,
-   .mem_size_get = _sdl_image_mem_size_get,
-#ifdef DEBUG_SDL
-   .debug = _sdl_image_debug
+  NULL /* key */,
+  _sdl_image_alloc /* alloc */,
+  _sdl_image_delete /* dealloc */,
+  _sdl_image_constructor /* constructor */,
+  _sdl_image_destructor /* destructor */,
+  _sdl_image_dirty_region /* dirty_region */,
+  _sdl_image_dirty /* dirty */,
+  _sdl_image_size_set /* size_set */,
+  _sdl_image_update_data /* update_data */,
+  _sdl_image_load /* load */,
+  _sdl_image_mem_size_get /* mem_size_get */,
+#ifdef DEBUG_SDL  /* debug */
+  _sdl_image_debug
 #else
-   .debug = NULL
+  NULL
 #endif
 };
 
-#define _SDL_UPDATE_PIXELS(EIM) ;
-/*         EIM->src->image->data = ((SDL_Surface*) EIM->engine_data)->pixels; 
*/
+#define _SDL_UPDATE_PIXELS(EIM)                                 \
+  ((RGBA_Image *) EIM->cache_entry.src)->image.data = EIM->surface->pixels;
 
 #define RMASK 0x00ff0000
 #define GMASK 0x0000ff00
@@ -113,13 +115,12 @@
 
    e->engine.func = &func;
    e->engine.data.context = e->engine.func->context_new(e->engine.data.output);
-   info->info.surface = ((Render_Engine*) e->engine.data.output)->surface;
 }
 
 static void
 evas_engine_sdl_output_free    (void *data)
 {
-   Render_Engine*              re = (Render_Engine*) data;
+   Render_Engine*              re = data;
 
    if (re->cache)
      evas_cache_engine_image_shutdown(re->cache);
@@ -132,7 +133,7 @@
      free(re->update_rects);
    free(re);
 
-   evas_common_font_shutdown();
+/*    evas_common_font_shutdown(); */
    evas_common_image_shutdown();
 
    SDL_QuitSubSystem(SDL_INIT_VIDEO);
@@ -142,13 +143,14 @@
 evas_engine_sdl_output_resize  (void *data, int w, int h)
 {
    /* FIXME */
-   Render_Engine*              re = (Render_Engine*) data;
-   RGBA_Engine_Image*          eim = NULL;
+   Render_Engine        *re = data;
+   SDL_Surface          *surface;
 
    if (w == re->tb->outbuf_w && h == re->tb->outbuf_h)
      return;
 
-   eim = re->rgba_engine_image;
+   /* Destroy the current screen */
+   evas_cache_engine_image_drop(&re->rgba_engine_image->cache_entry);
 
    /* Rebuil tilebuf */
    evas_common_tilebuf_free(re->tb);
@@ -157,28 +159,25 @@
       evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
 
    /* Build the new screen */
-   re->surface = SDL_SetVideoMode(w, h, 32,
-                                 (re->hwsurface ? SDL_HWSURFACE : 
SDL_SWSURFACE)
-                                 | (re->fullscreen ? SDL_FULLSCREEN : 0)
-                                 | (re->noframe ? SDL_NOFRAME : 0)
-                                  | (re->alpha ? SDL_SRCALPHA : 0));
+   surface = SDL_SetVideoMode(w, h, 32,
+                              (re->flags.hwsurface ? SDL_HWSURFACE : 
SDL_SWSURFACE)
+                              | (re->flags.fullscreen ? SDL_FULLSCREEN : 0)
+                              | (re->flags.noframe ? SDL_NOFRAME : 0)
+                              | (re->flags.alpha ? SDL_SRCALPHA : 0));
 
-   if (!re->surface)
+   if (!surface)
      {
        fprintf(stderr, "Unable to change the resolution to : %ix%i\n", w, h);
        exit(-1);
      }
-   re->rgba_engine_image = evas_cache_engine_image_engine(re->cache, 
re->surface);
+   re->rgba_engine_image = (SDL_Engine_Image_Entry *) 
evas_cache_engine_image_engine(re->cache, surface);
    if (!re->rgba_engine_image)
      {
        fprintf(stderr, "RGBA_Image allocation from SDL failed\n");
        exit(-1);
      }
 
-   SDL_FillRect(re->surface, NULL, 0);
-
-   /* Destroy the copy */
-   evas_cache_engine_image_drop(eim);
+   SDL_FillRect(surface, NULL, 0);
 }
 
 static void
@@ -218,13 +217,13 @@
                                                 int *x, int *y, int *w, int *h,
                                                 int *cx, int *cy, int *cw, int 
*ch)
 {
-   Render_Engine* re = (Render_Engine*) data;
-   Tilebuf_Rect*  tb_rect;
-   SDL_Rect rect;
+   Render_Engine        *re = data;
+   Tilebuf_Rect         *tb_rect;
+   SDL_Rect              rect;
 
-   if (re->end)
+   if (re->flags.end)
      {
-       re->end = 0;
+       re->flags.end = 0;
        return NULL;
      }
    if (!re->rects)
@@ -245,7 +244,7 @@
      {
        evas_common_tilebuf_free_render_rects(re->rects);
        re->rects = NULL;
-       re->end = 1;
+       re->flags.end = 1;
      }
 
    rect.x = *x;
@@ -253,7 +252,7 @@
    rect.w = *w;
    rect.h = *h;
 
-   SDL_FillRect(re->surface, &rect, 0);
+   SDL_FillRect(re->rgba_engine_image->surface, &rect, 0);
 
    /* Return the "fake" surface so it is passed to the drawing routines. */
    return re->rgba_engine_image;
@@ -282,29 +281,31 @@
 }
 
 static void
-_sdl_image_dirty_region(RGBA_Engine_Image *eim, int x, int y, int w, int h)
+_sdl_image_dirty_region(Engine_Image_Entry *eim, int x, int y, int w, int h)
 {
-   SDL_UpdateRect((SDL_Surface*) eim->engine_data, x, y, w, h);
+   SDL_Engine_Image_Entry       *dst;
+
+   dst = (SDL_Engine_Image_Entry *) eim;
+
+   SDL_UpdateRect(dst->surface, x, y, w, h);
 }
 
 static void
-evas_engine_sdl_output_flush                   (void *data)
+evas_engine_sdl_output_flush(void *data)
 {
-   Render_Engine                               *re = (Render_Engine *) data;
+   Render_Engine        *re = (Render_Engine *) data;
 
    if (re->update_rects_count > 0)
-     SDL_UpdateRects(re->surface, re->update_rects_count, re->update_rects);
+     SDL_UpdateRects(re->rgba_engine_image->surface, re->update_rects_count, 
re->update_rects);
 
    re->update_rects_count = 0;
 }
 
 
 static void
-evas_engine_sdl_output_idle_flush               (void *data)
+evas_engine_sdl_output_idle_flush(void *data)
 {
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
+   (void) data;
 }
 
 /*
@@ -314,7 +315,7 @@
 static void*
 evas_engine_sdl_image_load(void *data, const char *file, const char *key, int 
*error, Evas_Image_Load_Opts *lo)
 {
-   Render_Engine*      re = (Render_Engine*) data;
+   Render_Engine*      re = (Render_Engine*) data;;
 
    *error = 0;
    return evas_cache_engine_image_request(re->cache, file, key, lo, NULL, 
error);
@@ -323,13 +324,15 @@
 static int
 evas_engine_sdl_image_alpha_get(void *data, void *image)
 {
-   RGBA_Engine_Image *eim = image;
+   SDL_Engine_Image_Entry       *eim = image;
+   RGBA_Image                   *im;
 
    if (!eim) return 1;
-   switch (eim->src->cs.space)
+   im = (RGBA_Image *) eim->cache_entry.src;
+   switch (eim->cache_entry.src->space)
      {
      case EVAS_COLORSPACE_ARGB8888:
-        if (eim->src->flags & RGBA_IMAGE_HAS_ALPHA) return 1;
+        if (im->flags & RGBA_IMAGE_HAS_ALPHA) return 1;
      default:
         break;
      }
@@ -339,31 +342,31 @@
 static void
 evas_engine_sdl_image_size_get(void *data, void *image, int *w, int *h)
 {
-   RGBA_Engine_Image*   eim;
+   SDL_Engine_Image_Entry       *eim;
 
    eim = image;
-   if (w) *w = eim->src->image->w;
-   if (h) *h = eim->src->image->h;
+   if (w) *w = eim->cache_entry.src->w;
+   if (h) *h = eim->cache_entry.src->h;
 }
 
 static int
 evas_engine_sdl_image_colorspace_get(void *data, void *image)
 {
-   RGBA_Engine_Image *eim = image;
+   SDL_Engine_Image_Entry       *eim = image;
 
    if (!eim) return EVAS_COLORSPACE_ARGB8888;
-   return eim->src->cs.space;
+   return eim->cache_entry.src->space;
 }
 
 static void
 evas_engine_sdl_image_colorspace_set(void *data, void *image, int cspace)
 {
-   RGBA_Engine_Image *eim = (RGBA_Engine_Image*) image;
+   SDL_Engine_Image_Entry       *eim = image;
 
    if (!eim) return;
-   if (eim->src->cs.space == cspace) return;
+   if (eim->cache_entry.src->space == cspace) return;
 
-   evas_cache_engine_image_colorspace(eim, cspace, NULL);
+   evas_cache_engine_image_colorspace(&eim->cache_entry, cspace, NULL);
 }
 
 static void*
@@ -388,40 +391,41 @@
 static void
 evas_engine_sdl_image_free(void *data, void *image)
 {
-   RGBA_Engine_Image*          eim = (RGBA_Engine_Image*) image;
+   SDL_Engine_Image_Entry       *eim = image;
 
    (void) data;
 
-   evas_cache_engine_image_drop(eim);
+   evas_cache_engine_image_drop(&eim->cache_entry);
 }
 
 static void*
 evas_engine_sdl_image_size_set(void *data, void *image, int w, int h)
 {
-   RGBA_Engine_Image*          eim = (RGBA_Engine_Image*) image;
+   SDL_Engine_Image_Entry       *eim = image;
 
    (void) data;
 
-   return evas_cache_engine_image_size_set(eim, w, h);
+   return evas_cache_engine_image_size_set(&eim->cache_entry, w, h);
 }
 
-void*
+static void*
 evas_engine_sdl_image_dirty_region(void *data,
                                   void *image,
                                   int x, int y, int w, int h)
 {
-   RGBA_Engine_Image*          eim = (RGBA_Engine_Image*) image;
+   SDL_Engine_Image_Entry       *eim = image;
 
    (void) data;
 
-   return evas_cache_engine_image_dirty(eim, x, y, w, h);
+   return evas_cache_engine_image_dirty(&eim->cache_entry, x, y, w, h);
 }
 
-void*
+static void*
 evas_engine_sdl_image_data_get(void *data, void *image,
                               int to_write, DATA32** image_data)
 {
-   RGBA_Engine_Image*          eim = (RGBA_Engine_Image*) image;
+   SDL_Engine_Image_Entry       *eim = image;
+   RGBA_Image                   *im;
 
    (void) data;
 
@@ -430,19 +434,20 @@
         *image_data = NULL;
         return NULL;
      }
+   im = (RGBA_Image *) eim->cache_entry.src;
 
-   switch (eim->src->cs.space)
+   switch (eim->cache_entry.src->space)
      {
      case EVAS_COLORSPACE_ARGB8888:
         if (to_write)
-          eim = evas_cache_engine_image_dirty(eim, 0, 0, eim->src->image->w, 
eim->src->image->h);
+          eim = (SDL_Engine_Image_Entry *) 
evas_cache_engine_image_dirty(&eim->cache_entry, 0, 0, eim->cache_entry.src->w, 
eim->cache_entry.src->h);
 
-        evas_cache_engine_image_load_data(eim);
-        *image_data = eim->src->image->data;
+        evas_cache_engine_image_load_data(&eim->cache_entry);
+        *image_data = im->image.data;
         break;
      case EVAS_COLORSPACE_YCBCR422P709_PL:
      case EVAS_COLORSPACE_YCBCR422P601_PL:
-        *image_data = eim->src->cs.data;
+        *image_data = im->cs.data;
         break;
      default:
         abort();
@@ -451,37 +456,39 @@
    return eim;
 }
 
-void*
+static void*
 evas_engine_sdl_image_data_put(void *data, void *image, DATA32* image_data)
 {
-   Render_Engine*      re = (Render_Engine*) data;
-   RGBA_Engine_Image*  eim = (RGBA_Engine_Image*) image;
+   SDL_Engine_Image_Entry       *eim = image;
+   Render_Engine                *re = data;
+   RGBA_Image                   *im;
 
    if (!eim) return NULL;
+   im = (RGBA_Image*) eim->cache_entry.src;
 
-   switch (eim->src->cs.space)
+   switch (eim->cache_entry.src->space)
      {
      case EVAS_COLORSPACE_ARGB8888:
-        if (image_data != eim->src->image->data)
+        if (image_data != im->image.data)
           {
-             evas_cache_engine_image_drop(eim);
-             eim = evas_cache_engine_image_data(re->cache,
-                                                eim->src->image->w, 
eim->src->image->h,
-                                                image_data,
-                                                func.image_alpha_get(data, 
eim),
-                                                
func.image_colorspace_get(data, eim),
-                                                NULL);
+             evas_cache_engine_image_drop(&eim->cache_entry);
+             eim = (SDL_Engine_Image_Entry *) 
evas_cache_engine_image_data(re->cache,
+                                                                           
eim->cache_entry.w, eim->cache_entry.h,
+                                                                           
image_data,
+                                                                           
func.image_alpha_get(data, eim),
+                                                                           
func.image_colorspace_get(data, eim),
+                                                                           
NULL);
           }
         break;
      case EVAS_COLORSPACE_YCBCR422P601_PL:
      case EVAS_COLORSPACE_YCBCR422P709_PL:
-        if (image_data != eim->src->cs.data)
+        if (image_data != im->cs.data)
           {
-             if (eim->src->cs.data)
-               if (!eim->src->cs.no_free)
-                 free(eim->src->cs.data);
-             eim->src->cs.data = image_data;
-             evas_common_image_colorspace_dirty(eim->src);
+             if (im->cs.data)
+               if (!im->cs.no_free)
+                 free(im->cs.data);
+             im->cs.data = image_data;
+             evas_common_image_colorspace_dirty(im);
           }
         break;
      default:
@@ -491,130 +498,141 @@
    return eim;
 }
 
-void*
+static void*
 evas_engine_sdl_image_alpha_set(void *data, void *image, int has_alpha)
 {
-   RGBA_Engine_Image*          eim = (RGBA_Engine_Image*) image;
+   SDL_Engine_Image_Entry       *eim = image;
+   RGBA_Image                   *im;
 
    (void) data;
 
    if (!eim) return NULL;
-   if (eim->src->cs.space != EVAS_COLORSPACE_ARGB8888)
+
+   im = (RGBA_Image *) eim->cache_entry.src;
+
+   if (eim->cache_entry.src->space != EVAS_COLORSPACE_ARGB8888)
      {
-        eim->src->flags &= ~RGBA_IMAGE_HAS_ALPHA;
+        im->flags &= ~RGBA_IMAGE_HAS_ALPHA;
         return eim;
      }
 
-   eim = evas_cache_engine_image_dirty(eim, 0, 0, eim->src->image->w, 
eim->src->image->h);
+   eim = (SDL_Engine_Image_Entry *) 
evas_cache_engine_image_dirty(&eim->cache_entry, 0, 0, eim->cache_entry.w, 
eim->cache_entry.h);
 
    /* FIXME: update SDL_Surface flags */
    if (has_alpha)
-     eim->src->flags |= RGBA_IMAGE_HAS_ALPHA;
+     im->flags |= RGBA_IMAGE_HAS_ALPHA;
    else
-     eim->src->flags &= ~RGBA_IMAGE_HAS_ALPHA;
+     im->flags &= ~RGBA_IMAGE_HAS_ALPHA;
    return eim;
 }
 
-void*
+static void*
 evas_engine_sdl_image_border_set(void *data, void *image, int l, int r, int t, 
int b)
 {
    return image;
 }
 
-void
+static void
 evas_engine_sdl_image_border_get(void *data, void *image, int *l, int *r, int 
*t, int *b)
 {
    /* FIXME: need to know what evas expect from this call */
 }
 
-void
+static void
 evas_engine_sdl_image_draw(void *data, void *context, void *surface, void 
*image,
                           int src_region_x, int src_region_y, int 
src_region_w, int src_region_h,
                           int dst_region_x, int dst_region_y, int 
dst_region_w, int dst_region_h,
                           int smooth)
 {
-   Render_Engine*       re = data;
-   RGBA_Engine_Image*  eim = (RGBA_Engine_Image*) image;
-   RGBA_Engine_Image*   dst = (RGBA_Engine_Image*) surface;
-   RGBA_Draw_Context*  dc = (RGBA_Draw_Context*) context;
-   int                  mustlock_im = 0;
-   int                  mustlock_dst = 0;
+   SDL_Engine_Image_Entry       *eim = image;
+   SDL_Engine_Image_Entry       *dst = surface;
+   RGBA_Draw_Context            *dc = (RGBA_Draw_Context*) context;
+   int                           mustlock_im = 0;
+   int                           mustlock_dst = 0;
 
    (void) data;
 
-   if (eim->src->cs.space == EVAS_COLORSPACE_ARGB8888)
-     evas_cache_engine_image_load_data(eim);
+   if (eim->cache_entry.src->space == EVAS_COLORSPACE_ARGB8888)
+     evas_cache_engine_image_load_data(&eim->cache_entry);
 
    /* Fallback to software method */
-   if (SDL_MUSTLOCK(((SDL_Surface*) dst->engine_data)))
+   if (SDL_MUSTLOCK(dst->surface))
      {
         mustlock_dst = 1;
-       SDL_LockSurface(dst->engine_data);
+       SDL_LockSurface(dst->surface);
        _SDL_UPDATE_PIXELS(dst);
      }
 
-   if (eim->engine_data && SDL_MUSTLOCK(((SDL_Surface*) eim->engine_data)))
+   if (eim->surface && SDL_MUSTLOCK(eim->surface))
      {
         mustlock_im = 1;
-       SDL_LockSurface(eim->engine_data);
+       SDL_LockSurface(eim->surface);
        _SDL_UPDATE_PIXELS(eim);
      }
 
-   evas_common_image_colorspace_normalize(eim->src);
+   evas_common_image_colorspace_normalize((RGBA_Image *) eim->cache_entry.src);
 
    if (smooth)
-     evas_common_scale_rgba_in_to_out_clip_smooth(eim->src, dst->src, dc,
+     evas_common_scale_rgba_in_to_out_clip_smooth((RGBA_Image *) 
eim->cache_entry.src,
+                                                  (RGBA_Image *) 
dst->cache_entry.src,
+                                                  dc,
                                                   src_region_x, src_region_y, 
src_region_w, src_region_h,
                                                   dst_region_x, dst_region_y, 
dst_region_w, dst_region_h);
    else
-     evas_common_scale_rgba_in_to_out_clip_sample(eim->src, dst->src, dc,
+     evas_common_scale_rgba_in_to_out_clip_sample((RGBA_Image *) 
eim->cache_entry.src,
+                                                  (RGBA_Image *) 
dst->cache_entry.src,
+                                                  dc,
                                                   src_region_x, src_region_y, 
src_region_w, src_region_h,
                                                   dst_region_x, dst_region_y, 
dst_region_w, dst_region_h);
    evas_common_cpu_end_opt ();
 
    if (mustlock_im)
-     SDL_UnlockSurface(eim->engine_data);
+     SDL_UnlockSurface(eim->surface);
 
    if (mustlock_dst)
-     SDL_UnlockSurface(dst->engine_data);
+     SDL_UnlockSurface(dst->surface);
 }
 
-void
+static void
 evas_engine_sdl_image_cache_flush(void *data)
 {
-   Render_Engine*       re = (Render_Engine*) data;
-   int                  size;
+   Render_Engine        *re = (Render_Engine*) data;
+   int                   size;
 
    size = evas_cache_engine_image_get(re->cache);
    evas_cache_engine_image_set(re->cache, 0);
    evas_cache_engine_image_set(re->cache, size);
 }
 
-void
+static void
 evas_engine_sdl_image_cache_set(void *data, int bytes)
 {
-   Render_Engine*       re = (Render_Engine*) data;
+   Render_Engine        *re = (Render_Engine*) data;
 
    evas_cache_engine_image_set(re->cache, bytes);
 }
 
-int
+static int
 evas_engine_sdl_image_cache_get(void *data)
 {
-   Render_Engine*       re = (Render_Engine*) data;
+   Render_Engine        *re = (Render_Engine*) data;
 
    return evas_cache_engine_image_get(re->cache);
 }
 
-char*
+static char*
 evas_engine_sdl_image_comment_get(void *data, void *image, char *key)
 {
-   RGBA_Engine_Image         *eim = (RGBA_Engine_Image*) image;
+   SDL_Engine_Image_Entry       *eim = image;
+   RGBA_Image                   *im;
+
+   if (!eim) return NULL;
+   im = (RGBA_Image *) eim->cache_entry.src;
 
-   return eim->src->info.comment;
+   return im->info.comment;
 }
 
-char*
+static char*
 evas_engine_sdl_image_format_get(void *data, void *image)
 {
    /* FIXME: need to know what evas expect from this call */
@@ -624,101 +642,140 @@
 static void
 evas_engine_sdl_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)
 {
-   RGBA_Engine_Image*  eim = (RGBA_Engine_Image*) surface;
-   int                  mustlock_im = 0;
+   SDL_Engine_Image_Entry       *eim = surface;
+   int                           mustlock_im = 0;
 
-   if (eim->engine_data && SDL_MUSTLOCK(((SDL_Surface*) eim->engine_data)))
+   if (eim->surface && SDL_MUSTLOCK(eim->surface))
      {
         mustlock_im = 1;
-       SDL_LockSurface(eim->engine_data);
+       SDL_LockSurface(eim->surface);
        _SDL_UPDATE_PIXELS(eim);
      }
 
-   evas_common_font_draw(eim->src, context, font, x, y, text);
+   evas_common_font_draw((RGBA_Image *) eim->cache_entry.src, context, font, 
x, y, text);
    evas_common_cpu_end_opt();
 
    if (mustlock_im)
-     SDL_UnlockSurface(eim->engine_data);
+     SDL_UnlockSurface(eim->surface);
 }
 
 static void
 evas_engine_sdl_line_draw(void *data, void *context, void *surface, int x1, 
int y1, int x2, int y2)
 {
-   RGBA_Engine_Image*  eim = (RGBA_Engine_Image*) surface;
-   int                  mustlock_im = 0;
+   SDL_Engine_Image_Entry       *eim = surface;
+   int                           mustlock_im = 0;
 
-   if (eim->engine_data && SDL_MUSTLOCK(((SDL_Surface*) eim->engine_data)))
+   if (eim->surface && SDL_MUSTLOCK(eim->surface))
      {
         mustlock_im = 1;
-       SDL_LockSurface(eim->engine_data);
+       SDL_LockSurface(eim->surface);
        _SDL_UPDATE_PIXELS(eim);
      }
 
-   evas_common_line_draw(eim->src, context, x1, y1, x2, y2);
+   evas_common_line_draw((RGBA_Image *) eim->cache_entry.src, context, x1, y1, 
x2, y2);
    evas_common_cpu_end_opt();
 
    if (mustlock_im)
-     SDL_UnlockSurface(eim->engine_data);
+     SDL_UnlockSurface(eim->surface);
 }
 
 static void
 evas_engine_sdl_rectangle_draw(void *data, void *context, void *surface, int 
x, int y, int w, int h)
 {
-   RGBA_Engine_Image*  eim = (RGBA_Engine_Image*) surface;
-   int                  mustlock_im = 0;
+   SDL_Engine_Image_Entry       *eim = surface;
+#if ENGINE_SDL_PRIMITIVE
+   RGBA_Draw_Context            *dc = context;
+#endif
+   int                           mustlock_im = 0;
 
-   if (eim->engine_data && SDL_MUSTLOCK(((SDL_Surface*) eim->engine_data)))
+#if ENGINE_SDL_PRIMITIVE
+   if (A_VAL(&dc->col.col) != 0x00)
      {
-        mustlock_im = 1;
-       SDL_LockSurface(eim->engine_data);
-       _SDL_UPDATE_PIXELS(eim);
-     }
+        if (A_VAL(&dc->col.col) != 0xFF)
+          {
+#endif
+             if (eim->surface && SDL_MUSTLOCK(eim->surface))
+               {
+                  mustlock_im = 1;
+                  SDL_LockSurface(eim->surface);
+                  _SDL_UPDATE_PIXELS(eim);
+               }
+
+             evas_common_rectangle_draw((RGBA_Image *) eim->cache_entry.src, 
context, x, y, w, h);
+             evas_common_cpu_end_opt();
+
+             if (mustlock_im)
+               SDL_UnlockSurface(eim->surface);
+#if ENGINE_SDL_PRIMITIVE
+          }
+        else
+          {
+             SDL_Rect        dstrect;
 
-   evas_common_rectangle_draw(eim->src, context, x, y, w, h);
-   evas_common_cpu_end_opt();
+             if (dc->clip.use)
+               {
+                  SDL_Rect   cliprect;
 
-   if (mustlock_im)
-     SDL_UnlockSurface(eim->engine_data);
+                  cliprect.x = dc->clip.x;
+                  cliprect.y = dc->clip.y;
+                  cliprect.w = dc->clip.w;
+                  cliprect.h = dc->clip.h;
+
+                  SDL_SetClipRect(eim->surface, &cliprect);
+               }
+
+             dstrect.x = x;
+             dstrect.y = y;
+             dstrect.w = w;
+             dstrect.h = h;
+
+             SDL_FillRect(eim->surface, &dstrect, 
SDL_MapRGBA(eim->surface->format, R_VAL(&dc->col.col), G_VAL(&dc->col.col), 
B_VAL(&dc->col.col), 0xFF));
+
+             if (dc->clip.use)
+               SDL_SetClipRect(eim->surface, NULL);
+          }
+     }
+#endif
 }
 
 static void
 evas_engine_sdl_polygon_draw(void *data, void *context, void *surface, void 
*polygon)
 {
-   RGBA_Engine_Image*  eim = (RGBA_Engine_Image*) surface;
-   int                  mustlock_im = 0;
+   SDL_Engine_Image_Entry       *eim = surface;
+   int                           mustlock_im = 0;
 
-   if (eim->engine_data && SDL_MUSTLOCK(((SDL_Surface*) eim->engine_data)))
+   if (eim->surface && SDL_MUSTLOCK(eim->surface))
      {
         mustlock_im = 1;
-       SDL_LockSurface(eim->engine_data);
+       SDL_LockSurface(eim->surface);
        _SDL_UPDATE_PIXELS(eim);
      }
 
-   evas_common_polygon_draw(eim->src, context, polygon);
+   evas_common_polygon_draw((RGBA_Image *) eim->cache_entry.src, context, 
polygon);
    evas_common_cpu_end_opt();
 
    if (mustlock_im)
-     SDL_UnlockSurface(eim->engine_data);
+     SDL_UnlockSurface(eim->surface);
 }
 
 static void
 evas_engine_sdl_gradient_draw(void *data, void *context, void *surface, void 
*gradient, int x, int y, int w, int h)
 {
-   RGBA_Engine_Image*  eim = (RGBA_Engine_Image*) surface;
-   int                  mustlock_im = 0;
+   SDL_Engine_Image_Entry       *eim = surface;
+   int                           mustlock_im = 0;
 
-   if (eim->engine_data && SDL_MUSTLOCK(((SDL_Surface*) eim->engine_data)))
+   if (eim->surface && SDL_MUSTLOCK(eim->surface))
      {
         mustlock_im = 1;
-       SDL_LockSurface(eim->engine_data);
+       SDL_LockSurface(eim->surface);
        _SDL_UPDATE_PIXELS(eim);
      }
 
-   evas_common_gradient_draw(eim->src, context, x, y, w, h, gradient);
+   evas_common_gradient_draw((RGBA_Image *) eim->cache_entry.src, context, x, 
y, w, h, gradient);
    evas_common_cpu_end_opt();
 
    if (mustlock_im)
-     SDL_UnlockSurface(eim->engine_data);
+     SDL_UnlockSurface(eim->surface);
 }
 
 EAPI int module_open(Evas_Module *em)
@@ -793,6 +850,7 @@
 _sdl_output_setup              (int w, int h, int fullscreen, int noframe, int 
alpha, int hwsurface)
 {
    Render_Engine               *re = calloc(1, sizeof(Render_Engine));
+   SDL_Surface                  *surface;
 
    /* if we haven't initialized - init (automatic abort if already done) */
    evas_common_cpu_init();
@@ -808,6 +866,9 @@
    evas_common_draw_init();
    evas_common_tilebuf_init();
 
+   if (w <= 0) w = 640;
+   if (h <= 0) h = 480;
+
    re->cache = evas_cache_engine_image_init(&_sdl_cache_engine_image_cb, 
evas_common_image_cache_get());
    if (!re->cache)
      {
@@ -818,199 +879,221 @@
    re->tb = evas_common_tilebuf_new(w, h);
    /* in preliminary tests 16x16 gave highest framerates */
    evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
-   re->surface = SDL_SetVideoMode(w, h, 32,
-                                 (hwsurface ? SDL_HWSURFACE : SDL_SWSURFACE)
-                                 | (fullscreen ? SDL_FULLSCREEN : 0)
-                                 | (noframe ? SDL_NOFRAME : 0)
-                                  | (alpha ? SDL_SRCALPHA : 0));
+   surface = SDL_SetVideoMode(w, h, 32,
+                              (hwsurface ? SDL_HWSURFACE : SDL_SWSURFACE)
+                              | (fullscreen ? SDL_FULLSCREEN : 0)
+                              | (noframe ? SDL_NOFRAME : 0)
+                              | (alpha ? SDL_SRCALPHA : 0));
 
-   if (!re->surface)
-     return NULL;
+   if (!surface)
+     {
+        fprintf(stderr, "SDL_SetVideoMode [ %i x %i x 32 ] failed.\n", w, h);
+        exit(-1);
+     }
 
-   SDL_SetAlpha(re->surface, SDL_SRCALPHA | SDL_RLEACCEL, 0);
+   SDL_SetAlpha(surface, SDL_SRCALPHA | SDL_RLEACCEL, 0);
 
    /* We create a "fake" RGBA_Image which points to the SDL surface. Each 
access
     * to that surface is wrapped in Lock / Unlock calls whenever the data is
     * manipulated directly. */
-   re->rgba_engine_image = evas_cache_engine_image_engine(re->cache, 
re->surface);
+   re->rgba_engine_image = (SDL_Engine_Image_Entry *) 
evas_cache_engine_image_engine(re->cache, surface);
    if (!re->rgba_engine_image)
      {
        fprintf(stderr, "RGBA_Image allocation from SDL failed\n");
         exit(-1);
      }
 
-   SDL_FillRect(re->surface, NULL, 0);
+   SDL_FillRect(surface, NULL, 0);
 
-   re->alpha = alpha;
-   re->hwsurface = hwsurface;
-   re->fullscreen = fullscreen;
-   re->noframe = noframe;
+   re->flags.alpha = alpha;
+   re->flags.hwsurface = hwsurface;
+   re->flags.fullscreen = fullscreen;
+   re->flags.noframe = noframe;
    return re;
 }
 
-static void
-_sdl_stretch_blit              (const RGBA_Engine_Image* from,
-                                RGBA_Engine_Image* to,
-                                int w, int h)
+static Engine_Image_Entry*
+_sdl_image_alloc(void)
 {
-   int                          mustlock_from = 0;
-   int                          mustlock_to = 0;
-
-   if (from->engine_data)
-     if (SDL_MUSTLOCK(((SDL_Surface*) from->engine_data)))
-       mustlock_from = 1;
-
-   if (to->engine_data)
-     if (SDL_MUSTLOCK(((SDL_Surface*) to->engine_data)))
-       mustlock_to = 1;
-
-   if (mustlock_from)
-     {
-        SDL_LockSurface(from->engine_data);
-        _SDL_UPDATE_PIXELS(from);
-     }
-
-   if (mustlock_to)
-     {
-        SDL_LockSurface(to->engine_data);
-        _SDL_UPDATE_PIXELS(to);
-     }
-
-   evas_common_blit_rectangle(from->src, to->src, 0, 0, w, h, 0, 0);
+   SDL_Engine_Image_Entry       *new;
 
-   if (mustlock_to)
-     SDL_UnlockSurface(to->engine_data);
+   new = calloc(1, sizeof (SDL_Engine_Image_Entry));
 
-   if (mustlock_from)
-     SDL_UnlockSurface(from->engine_data);
+   return (Engine_Image_Entry *) new;
+}
 
-   evas_common_cpu_end_opt();
+static void
+_sdl_image_delete(Engine_Image_Entry *eim)
+{
+   free(eim);
 }
 
 static int
-_sdl_image_constructor(RGBA_Engine_Image* eim, void* data)
+_sdl_image_constructor(Engine_Image_Entry *ie, void *data)
 {
-   SDL_Surface     *sdl = NULL;
+   SDL_Surface                  *sdl = NULL;
+   SDL_Engine_Image_Entry       *eim = (SDL_Engine_Image_Entry *) ie;
+   RGBA_Image                   *im;
+
+   im = (RGBA_Image *) ie->src;
 
-   if (eim->src->image->data)
+   if (im)
      {
-        /* FIXME: Take care of CSPACE */
-        sdl = SDL_CreateRGBSurfaceFrom(eim->src->image->data,
-                                       eim->src->image->w, eim->src->image->h,
-                                       32, eim->src->image->w * 4,
-                                       RMASK, GMASK, BMASK, AMASK);
-        eim->engine_data = sdl;
+        evas_cache_image_load_data(&im->cache_entry);
+
+        if (im->image.data)
+          {
+             /* FIXME: Take care of CSPACE */
+             sdl = SDL_CreateRGBSurfaceFrom(im->image.data,
+                                            ie->w, ie->h,
+                                            32, ie->w * 4,
+                                            RMASK, GMASK, BMASK, AMASK);
+             eim->surface = sdl;
+             eim->flags.engine_surface = 0;
+          }
      }
 
    return 0;
 }
 
 static void
-_sdl_image_destructor(RGBA_Engine_Image *eim)
+_sdl_image_destructor(Engine_Image_Entry *eie)
 {
-   if (eim->engine_data)
-     SDL_FreeSurface(eim->engine_data);
-   eim->engine_data = NULL;
+   SDL_Engine_Image_Entry       *seie = (SDL_Engine_Image_Entry *) eie;
+
+   if (seie->surface && !seie->flags.engine_surface)
+     SDL_FreeSurface(seie->surface);
+   seie->surface = NULL;
 }
 
 static int
-_sdl_image_dirty(RGBA_Engine_Image *dst, const RGBA_Engine_Image *src)
+_sdl_image_dirty(Engine_Image_Entry *dst, const Engine_Image_Entry *src)
 {
-   SDL_Surface     *sdl = NULL;
+   SDL_Engine_Image_Entry       *eim = (SDL_Engine_Image_Entry *) dst;
+   SDL_Surface                  *sdl = NULL;
+   RGBA_Image                   *im;
+
+   im = (RGBA_Image *) dst->src;
 
    /* FIXME: Take care of CSPACE */
-   sdl = SDL_CreateRGBSurfaceFrom(dst->src->image->data,
-                                  dst->src->image->w, dst->src->image->h,
-                                  32, dst->src->image->w * 4,
+   sdl = SDL_CreateRGBSurfaceFrom(im->image.data,
+                                  dst->w, dst->h,
+                                  32, dst->w * 4,
                                   0xff0000, 0xff00, 0xff, 0xff000000);
-   dst->engine_data = sdl;
+   eim->surface = sdl;
+   eim->flags.engine_surface = 0;
 
    return 0;
 }
 
 static int
-_sdl_image_update_data(RGBA_Engine_Image *dst, void* engine_data)
+_sdl_image_update_data(Engine_Image_Entry *dst, void* engine_data)
 {
-   SDL_Surface     *sdl = NULL;
+   SDL_Engine_Image_Entry       *eim = (SDL_Engine_Image_Entry *) dst;
+   SDL_Surface                  *sdl = NULL;
+   RGBA_Image                   *im;
+
+   im = (RGBA_Image *) dst->src;
 
    if (engine_data)
      {
         sdl = engine_data;
 
-        dst->src->image->data = sdl->pixels;
-        dst->src->image->no_free = 1;
-        dst->src->image->w = sdl->w;
-        dst->src->image->h = sdl->h;
-        dst->src->flags |= RGBA_IMAGE_HAS_ALPHA;
+        if (im)
+          {
+             im->image.data = sdl->pixels;
+             im->image.no_free = 1;
+             im->flags |= RGBA_IMAGE_HAS_ALPHA;
+             dst->src->w = sdl->w;
+             dst->src->h = sdl->h;
+          }
+        dst->w = sdl->w;
+        dst->h = sdl->h;
      }
    else
-     /* FIXME: Take care of CSPACE */
-     sdl = SDL_CreateRGBSurfaceFrom(dst->src->image->data,
-                                    dst->src->image->w, dst->src->image->h,
-                                    32, dst->src->image->w * 4,
-                                    RMASK, GMASK, BMASK, AMASK);
+     {
+        /* FIXME: Take care of CSPACE */
+        SDL_FreeSurface(eim->surface);
+        sdl = SDL_CreateRGBSurfaceFrom(im->image.data,
+                                       dst->w, dst->h,
+                                       32, dst->w * 4,
+                                       RMASK, GMASK, BMASK, AMASK);
+     }
 
-   dst->engine_data = sdl;
+   eim->surface = sdl;
 
    return 0;
 }
 
 static int
-_sdl_image_size_set(RGBA_Engine_Image *dst, const RGBA_Engine_Image *src)
+_sdl_image_size_set(Engine_Image_Entry *dst, const Engine_Image_Entry *src)
 {
-   SDL_Surface*    sdl;
-
-   sdl = SDL_CreateRGBSurfaceFrom(dst->src->image->data,
-                                  dst->src->image->w, dst->src->image->h,
-                                  32, dst->src->image->w * 4,
+   SDL_Engine_Image_Entry       *eim = (SDL_Engine_Image_Entry *) dst;
+   SDL_Surface                  *sdl;
+   RGBA_Image                   *im;
+
+   im = (RGBA_Image *) dst->src;
+
+   /* FIXME: handle im == NULL */
+   sdl = SDL_CreateRGBSurfaceFrom(im->image.data,
+                                  dst->w, dst->h,
+                                  32, dst->w * 4,
                                   RMASK, GMASK, BMASK, AMASK);
 
-   dst->engine_data = sdl;
-
-/*    _sdl_stretch_blit(src, dst, dst->src->image->w, dst->src->image->h); */
+   eim->surface = sdl;
 
    return 0;
 }
 
 static void
-_sdl_image_load(RGBA_Engine_Image *eim, const RGBA_Image *im)
+_sdl_image_load(Engine_Image_Entry *eim, const Image_Entry *ie_im)
 {
-   SDL_Surface*    sdl;
+   SDL_Engine_Image_Entry       *load = (SDL_Engine_Image_Entry *) eim;
+   SDL_Surface                  *sdl;
 
-   if (!eim->engine_data)
+   if (!load->surface)
      {
-        sdl = SDL_CreateRGBSurfaceFrom(eim->src->image->data,
-                                       eim->src->image->w, eim->src->image->h,
-                                       32, eim->src->image->w * 4,
+        RGBA_Image      *im;
+
+        im = (RGBA_Image *) ie_im;
+
+        sdl = SDL_CreateRGBSurfaceFrom(im->image.data,
+                                       eim->w, eim->h,
+                                       32, eim->w * 4,
                                        RMASK, GMASK, BMASK, AMASK);
-        eim->engine_data = sdl;
+        load->surface = sdl;
      }
 }
 
 static int
-_sdl_image_mem_size_get(RGBA_Engine_Image *eim)
+_sdl_image_mem_size_get(Engine_Image_Entry *eim)
 {
-   int  size = 0;
+   SDL_Engine_Image_Entry       *seie = (SDL_Engine_Image_Entry *) eim;
+   int                           size = 0;
 
-   if (eim->engine_data)
-     size = sizeof (SDL_Surface) + sizeof (SDL_PixelFormat) + (eim->src ? 
evas_common_image_ram_usage(eim->src) : 0);
+   /* FIXME: Count surface size. */
+   if (seie->surface)
+     size = sizeof (SDL_Surface) + sizeof (SDL_PixelFormat);
 
    return size;
 }
 
 #ifdef DEBUG_SDL
 static void
-_sdl_image_debug(const char* context, RGBA_Engine_Image* eim)
+_sdl_image_debug(const char* context, Engine_Image_Entry* eie)
 {
+   SDL_Engine_Image_Entry       *eim = (SDL_Engine_Image_Entry *) eie;
+
    printf ("*** %s image (%p) ***\n", context, eim);
    if (eim)
      {
-       printf ("* W: %i\n* H: %i\n", eim->src->image->w, eim->src->image->h);
-       printf ("* Pixels: %p\n* SDL Surface: %p\n", eim->src->image->data, 
eim->engine_data);
-        printf ("* Surface->pixels: %p\n", ((SDL_Surface*) 
eim->engine_data)->pixels);
-       printf ("* Flags: %i\n", eim->src->flags);
-       printf ("* Filename: %s\n* Key: %s\n", eim->src->info.file, 
eim->src->info.key);
-        printf ("* Reference: %i\n", eim->references);
+        printf ("* W: %i\n* H: %i\n* R: %i\n", eim->cache_entry.w, 
eim->cache_entry.h, eim->cache_entry.references);
+        if (eim->cache_entry.src)
+          printf ("* Pixels: %p\n* SDL Surface: %p\n",((RGBA_Image*) 
eim->cache_entry.src)->image.data, eim->surface);
+        if (eim->surface)
+          printf ("* Surface->pixels: %p\n", eim->surface->pixels);
+       printf ("* Key: %s\n", eim->cache_entry.cache_key);
+        printf ("* Reference: %i\n", eim->cache_entry.references);
      }
    printf ("*** ***\n");
 }
===================================================================
RCS file: /cvs/e/e17/libs/evas/src/modules/engines/software_sdl/evas_engine.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- evas_engine.h       17 Jul 2007 04:34:20 -0000      1.1
+++ evas_engine.h       12 Apr 2008 00:32:28 -0000      1.2
@@ -5,29 +5,42 @@
 #include "evas_private.h"
 #include "Evas_Engine_SDL.h"
 
-typedef struct _Render_Engine Render_Engine;
-
-struct _Render_Engine
+typedef struct _SDL_Engine_Image_Entry SDL_Engine_Image_Entry;
+struct _SDL_Engine_Image_Entry
 {
-   RGBA_Engine_Image*           rgba_engine_image;
-   SDL_Surface*                 surface;
-
-   Tilebuf*                     tb;
-   Tilebuf_Rect*                rects;
-   Evas_Object_List*            cur_rect;
+   Engine_Image_Entry            cache_entry;
 
-   Evas_Cache_Engine_Image*     cache;
+   SDL_Surface                  *surface;
 
-   SDL_Rect*                    update_rects;
-   int                          update_rects_count;
-   int                          update_rects_limit;
+   struct
+   {
+     unsigned int                engine_surface : 1;
+   } flags;
+};
 
-   int                          fullscreen:1;
-   int                          noframe:1;
-   int                          alpha:1;
-   int                          hwsurface:1;
+typedef struct _Render_Engine Render_Engine;
+struct _Render_Engine
+{
+   SDL_Engine_Image_Entry       *rgba_engine_image;
 
-   int                          end:1;
+   Tilebuf                      *tb;
+   Tilebuf_Rect                 *rects;
+   Evas_Object_List             *cur_rect;
+
+   Evas_Cache_Engine_Image      *cache;
+
+   SDL_Rect                     *update_rects;
+   int                           update_rects_count;
+   int                           update_rects_limit;
+
+   struct
+   {
+     unsigned int               fullscreen : 1;
+     unsigned int               noframe : 1;
+     unsigned int               alpha : 1;
+     unsigned int               hwsurface : 1;
+     unsigned int               end : 1;
+   } flags;
 };
 
 #endif



-------------------------------------------------------------------------
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
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to