Hello guys,

        Time to dump all pending patch :) First bunch are small one, with 
normally 
little effect outside of their file.

- eet_race_memdirect.diff : The most important change is a fix for a race 
condition between opening the file and obtaining the file size for the mmap. 
It also introduce a new function in EET :
        EAPI Eet_File *eet_memopen_read(const void *data, size_t size);
(it give you the possibility to directly open an eet from memory). I did fix 
some minor prototype issue with this same patch.
        Just a little warning about this patch, it could perhaps break windows 
build 
as I am not sure I did follow all eet patch related to windows.

- evas_unused.diff : Remove evas_common_draw_context_cutouts_add as its unused 
outside of evas_draw_main.c

- expedite.diff : Add support for sdl-16 engine (no need for any external 
header or whatever as I use the same engine info structure for both engine). 
It also add :
        const char      *build_path(const char *filename);
This correctly handle a path for all ressource used by the different test.

That's all for the easy part.
        Cedric
diff -NrauBb -X exclude.cvs e17-clean/libs/evas/src/lib/engines/common/evas_draw_main.c e17-dev/libs/evas/src/lib/engines/common/evas_draw_main.c
--- e17-clean/libs/evas/src/lib/engines/common/evas_draw_main.c	2007-10-03 23:13:08.000000000 +0200
+++ e17-dev/libs/evas/src/lib/engines/common/evas_draw_main.c	2007-10-02 17:54:57.000000000 +0200
@@ -19,7 +19,7 @@
    rects->active = 0;
 }
 
-EAPI Cutout_Rect*
+static Cutout_Rect*
 evas_common_draw_context_cutouts_add(Cutout_Rects* rects,
                                      int x, int y, int w, int h)
 {
diff -NrauBb -X exclude.cvs e17-clean/libs/eet/src/lib/Eet.h e17-dev/libs/eet/src/lib/Eet.h
--- e17-clean/libs/eet/src/lib/Eet.h	2007-09-28 14:34:06.000000000 +0200
+++ e17-dev/libs/eet/src/lib/Eet.h	2007-09-27 17:22:39.000000000 +0200
@@ -249,7 +249,7 @@
     * If the eet file handle is not valid NULL is returned and size_ret is
     * filled with 0.
     */
-   EAPI void	 *eet_read_direct  (Eet_File *ef, const char *name, int *size_ret);
+   EAPI const void *eet_read_direct(Eet_File *ef, const char *name, int *size_ret);
 
    /**
     * Write a specified entry to an eet file handle
diff -NrauBb -X exclude.cvs e17-clean/libs/eet/src/lib/eet_data.c e17-dev/libs/eet/src/lib/eet_data.c
--- e17-clean/libs/eet/src/lib/eet_data.c	2007-10-03 23:13:05.000000000 +0200
+++ e17-dev/libs/eet/src/lib/eet_data.c	2007-10-03 23:13:38.000000000 +0200
@@ -906,7 +906,7 @@
 eet_data_read(Eet_File *ef, Eet_Data_Descriptor *edd, const char *name)
 {
    void *data_dec;
-   void *data;
+   const void *data;
    int	size;
    int	required_free = 0;
 
diff -NrauBb -X exclude.cvs e17-clean/libs/eet/src/lib/eet_image.c e17-dev/libs/eet/src/lib/eet_image.c
--- e17-clean/libs/eet/src/lib/eet_image.c	2007-03-20 18:54:12.000000000 +0100
+++ e17-dev/libs/eet/src/lib/eet_image.c	2006-12-20 12:24:26.000000000 +0100
@@ -733,7 +733,7 @@
    unsigned int *d = NULL;
    int		free_data = 0;
 
-   data = eet_read_direct (ef, name, &size);
+   data = (void*) eet_read_direct (ef, name, &size);
    if (!data)
      {
 	data = eet_read(ef, name, &size);
@@ -759,7 +759,7 @@
    int	d;
    int	free_data = 0;
 
-   data = eet_read_direct (ef, name, &size);
+   data = (void*) eet_read_direct (ef, name, &size);
    if (!data)
      {
 	data = eet_read(ef, name, &size);
diff -NrauBb -X exclude.cvs e17-clean/libs/eet/src/lib/eet_lib.c e17-dev/libs/eet/src/lib/eet_lib.c
--- e17-clean/libs/eet/src/lib/eet_lib.c	2007-09-28 14:34:06.000000000 +0200
+++ e17-dev/libs/eet/src/lib/eet_lib.c	2007-10-02 17:36:56.000000000 +0200
@@ -26,7 +26,7 @@
    char            *path;
    FILE            *fp;
    Eet_File_Header *header;
-   unsigned char   *data;
+   const unsigned char  *data;
    
    int              magic;
    int              references;
@@ -454,142 +454,15 @@
      }
 }
 
-EAPI Eet_File *
-eet_open(const char *file, Eet_File_Mode mode)
+static Eet_File*
+eet_internal_read (Eet_File *ef)
 {
-   Eet_File	*ef;
-   struct stat	file_stat;
-#ifdef _WIN32
-   HANDLE       h;
-#endif
-   
-   if (!file)
-     return NULL;
-
-   /* find the current file handle in cache*/
-   ef = NULL;
-   if (mode == EET_FILE_MODE_READ)
-     {
-	ef = eet_cache_find((char *)file, eet_writers, eet_writers_num);
-	if (ef)
-	  {
-	     eet_flush(ef);
-	     ef->delete_me_now = 1;
-	     eet_close(ef);
-	  }
-	ef = eet_cache_find((char *)file, eet_readers, eet_readers_num);
-     }
-   else if ((mode == EET_FILE_MODE_WRITE) || (mode == EET_FILE_MODE_READ_WRITE))
-     {
-	ef = eet_cache_find((char *)file, eet_readers, eet_readers_num);
-	if (ef)
-	  {
-	     ef->delete_me_now = 1;
-	     eet_close(ef);
-	  }
-	ef = eet_cache_find((char *)file, eet_writers, eet_writers_num);
-     }
-
-   if (stat(file, &file_stat))
-     {
-	if (mode == EET_FILE_MODE_WRITE)
-	  memset(&file_stat, 0, sizeof(file_stat));
-	else
-	  return NULL;
-     }
-
-   /* We found one */
-   if (ef && (file_stat.st_mtime != ef->mtime))
-     {
-	ef->delete_me_now = 1;
-	eet_close(ef);
-	ef = NULL;
-     }
-   
-   if (ef)
-     {
-	/* reference it up and return it */
-	ef->references++;
-	return ef;
-     }
-
-   /* Allocate struct for eet file and have it zero'd out */
-   ef = malloc(sizeof(Eet_File) + strlen(file) + 1);
-   if (!ef)
-     return NULL;
-
-   /* fill some of the members */
-   ef->path = ((char *)ef) + sizeof(Eet_File);
-   strcpy(ef->path, file);
-   ef->magic = EET_MAGIC_FILE;
-   ef->references = 1;
-   ef->mode = mode;
-   ef->header = NULL;
-   ef->mtime = file_stat.st_mtime;
-   ef->delete_me_now = 0;
-   ef->data = NULL;
-   ef->data_size = 0;
-
-   /* try open the file based on mode */
-   if ((ef->mode == EET_FILE_MODE_READ) || (ef->mode == EET_FILE_MODE_READ_WRITE))
-     ef->fp = fopen(ef->path, "rb");
-   else
-     {
-	if (eet_test_close(ef->mode != EET_FILE_MODE_WRITE, ef))
-	  return NULL;
-	else
-	  {
-	     /* opening for write - delete old copy of file right away */
-	     unlink(ef->path);
-	     ef->fp = fopen(ef->path, "wb");
-	  }
-     }
-
-   /* if we can't open - bail out */
-   if (eet_test_close(!ef->fp, ef))
-     return NULL;
-
-#ifndef _WIN32
-   fcntl(fileno(ef->fp), F_SETFD, FD_CLOEXEC);
-#else
-   /* FIXME: check if that code is needed / correct */
-   h = (HANDLE) _get_osfhandle (fileno(ef->fp));
-   if (h == (HANDLE) -1)
-     return NULL;
-   SetHandleInformation (h, HANDLE_FLAG_INHERIT, 0);
-#endif
-   /* if we opened for read or read-write */
-   if ((mode == EET_FILE_MODE_READ) || (mode == EET_FILE_MODE_READ_WRITE))
-     {
-	unsigned char		*dyn_buf = NULL;
-	unsigned char		*p = NULL;
+   const unsigned char	*dyn_buf = NULL;
+   const unsigned char	*p = NULL;
 	int			index = 0;
 	int			num_entries;
 	int			byte_entries;
 	int			i;
-#ifdef _WIN32
-	HANDLE                  fm;
-#endif
-
-
-	ef->data_size = file_stat.st_size;
-#ifndef _WIN32
-	ef->data = mmap(NULL, ef->data_size, PROT_READ,
-			MAP_SHARED, fileno(ef->fp), 0);
-#else
-	fm = CreateFileMapping((HANDLE) _get_osfhandle (fileno(ef->fp)),
-			       NULL,
-			       PAGE_READONLY,
-			       0,
-			       0,
-			       NULL);
-	ef->data = MapViewOfFile(fm,
-				 FILE_MAP_READ,
-				 0,
-				 0,
-				 ef->data_size);
-	CloseHandle(fm);
-#endif
 
 	if (eet_test_close((ef->data == (void *)-1) || (ef->data == NULL), ef))
 	  return NULL;
@@ -613,12 +486,12 @@
 	EXTRACT_INT(byte_entries, ef->data, index);
 
 	/* we cant have <= 0 values here - invalid */
-//     if (eet_test_close((num_entries <= 0) || (byte_entries <= 0), ef))
-//	  return NULL;
+   if (eet_test_close((num_entries <= 0) || (byte_entries <= 0), ef))
+     return NULL;
 
 	/* we can't have more entires than minimum bytes for those! invalid! */
-	if (eet_test_close((num_entries * 20) > byte_entries, ef))
-	  return NULL;
+/*    if (eet_test_close((num_entries * 20) > byte_entries, ef)) */
+/*      return NULL; */
 
 	/* allocate header */
 	ef->header = calloc(1, sizeof(Eet_File_Header));
@@ -716,7 +589,7 @@
 	       }
 	     else
 	       /* The only really usefull peace of code for efn->name (no backward compatibility) */
-	       efn->name = (char*)((unsigned char *)(p + HEADER_SIZE));
+	  efn->name = (char*)((unsigned char*)(p + HEADER_SIZE));
 
 	     /* get hash bucket it should go in */
 	     hash = _eet_hash_gen(efn->name, ef->header->directory->size);
@@ -724,7 +597,7 @@
 	     ef->header->directory->nodes[hash] = efn;
 
 	     /* read-only mode, so currently we have no data loaded */
-	     if (mode == EET_FILE_MODE_READ)
+	if (ef->mode == EET_FILE_MODE_READ)
 	       efn->data = NULL;
 	     /* read-write mode - read everything into ram */
 	     else
@@ -737,6 +610,172 @@
 	     /* advance */
 	     p += HEADER_SIZE + name_size;
 	  }
+   return ef;
+}
+
+EAPI Eet_File *
+eet_memopen_read(const void *data, size_t size)
+{
+   Eet_File	*ef;
+
+   if (data == NULL || size == 0)
+     return NULL;
+
+   ef = malloc (sizeof (Eet_File));
+   if (!ef)
+     return NULL;
+
+   ef->path = NULL;
+   ef->magic = EET_MAGIC_FILE;
+   ef->references = 1;
+   ef->mode = EET_FILE_MODE_READ;
+   ef->header = NULL;
+   ef->mtime = 0;
+   ef->delete_me_now = 1;
+   ef->fp = NULL;
+   ef->data = data;
+   ef->data_size = size;
+
+   return eet_internal_read(ef);
+}
+
+EAPI Eet_File *
+eet_open(const char *file, Eet_File_Mode mode)
+{
+   FILE         *fp;
+   Eet_File	*ef;
+   struct stat	 file_stat;
+
+#ifdef _WIN32
+   HANDLE        h;
+#endif
+
+   if (!file)
+     return NULL;
+
+   /* find the current file handle in cache*/
+   ef = NULL;
+   if (mode == EET_FILE_MODE_READ)
+     {
+	ef = eet_cache_find((char *)file, eet_writers, eet_writers_num);
+	if (ef)
+	  {
+	     eet_flush(ef);
+	     ef->delete_me_now = 1;
+	     eet_close(ef);
+	  }
+	ef = eet_cache_find((char *)file, eet_readers, eet_readers_num);
+     }
+   else if ((mode == EET_FILE_MODE_WRITE) || (mode == EET_FILE_MODE_READ_WRITE))
+     {
+	ef = eet_cache_find((char *)file, eet_readers, eet_readers_num);
+	if (ef)
+	  {
+	     ef->delete_me_now = 1;
+	     eet_close(ef);
+	  }
+	ef = eet_cache_find((char *)file, eet_writers, eet_writers_num);
+     }
+
+   /* try open the file based on mode */
+   if ((mode == EET_FILE_MODE_READ) || (mode == EET_FILE_MODE_READ_WRITE)) {
+      fp = fopen(file, "rb");
+      if (fp == NULL)
+        return NULL;
+
+      if (fstat(fileno(fp), &file_stat))
+        {
+           fclose(fp);
+           return NULL;
+        }
+   } else {
+        if (mode != EET_FILE_MODE_WRITE)
+          return NULL;
+
+        memset(&file_stat, 0, sizeof(file_stat));
+
+        /* opening for write - delete old copy of file right away */
+        unlink(file);
+        fp = fopen(file, "wb");
+   }
+
+   /* We found one */
+   if (ef && (file_stat.st_mtime != ef->mtime))
+     {
+	ef->delete_me_now = 1;
+	eet_close(ef);
+	ef = NULL;
+     }
+
+   if (ef)
+     {
+	/* reference it up and return it */
+        fclose(fp);
+	ef->references++;
+	return ef;
+     }
+
+   /* Allocate struct for eet file and have it zero'd out */
+   ef = malloc(sizeof(Eet_File) + strlen(file) + 1);
+   if (!ef)
+     return NULL;
+
+   /* fill some of the members */
+   ef->fp = fp;
+   ef->path = ((char *)ef) + sizeof(Eet_File);
+   strcpy(ef->path, file);
+   ef->magic = EET_MAGIC_FILE;
+   ef->references = 1;
+   ef->mode = mode;
+   ef->header = NULL;
+   ef->mtime = file_stat.st_mtime;
+   ef->delete_me_now = 0;
+   ef->data = NULL;
+   ef->data_size = 0;
+
+   /* if we can't open - bail out */
+   if (eet_test_close(!ef->fp, ef))
+     return NULL;
+
+#ifndef _WIN32
+   fcntl(fileno(ef->fp), F_SETFD, FD_CLOEXEC);
+#else
+   /* FIXME: check if that code is needed / correct */
+   h = (HANDLE) _get_osfhandle (fileno(ef->fp));
+   if (h == (HANDLE) -1)
+     return NULL;
+   SetHandleInformation (h, HANDLE_FLAG_INHERIT, 0);
+#endif
+   /* if we opened for read or read-write */
+   if ((mode == EET_FILE_MODE_READ) || (mode == EET_FILE_MODE_READ_WRITE))
+     {
+#ifdef _WIN32
+	HANDLE                  fm;
+#endif
+
+
+	ef->data_size = file_stat.st_size;
+#ifndef _WIN32
+	ef->data = mmap(NULL, ef->data_size, PROT_READ,
+			MAP_SHARED, fileno(ef->fp), 0);
+#else
+	fm = CreateFileMapping((HANDLE) _get_osfhandle (fileno(ef->fp)),
+			       NULL,
+			       PAGE_READONLY,
+			       0,
+			       0,
+			       NULL);
+	ef->data = MapViewOfFile(fm,
+				 FILE_MAP_READ,
+				 0,
+				 0,
+				 ef->data_size);
+	CloseHandle(fm);
+#endif
+
+	ef = eet_internal_read(ef);
+	if (!ef)
+	  return NULL;
      }
 
    /* we need to delete the original file in read-write mode and re-open for writing */
@@ -843,8 +882,9 @@
 	  }
 	free(ef->header);
      }
+
 #ifndef _WIN32
-   if (ef->data) munmap(ef->data, ef->data_size);
+   if (ef->data) munmap((void*)ef->data, ef->data_size);
 #else
    if (ef->data) UnmapViewOfFile (ef->data);
 #endif
@@ -957,10 +998,10 @@
    return data;
 }
 
-EAPI void *
+EAPI const void *
 eet_read_direct(Eet_File *ef, const char *name, int *size_ret)
 {
-   void *data = NULL;
+   const void	*data = NULL;
    int size = 0;
    Eet_File_Node *efn;
    
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/configure.in e17-dev/apps/expedite/configure.in
--- e17-clean/apps/expedite/configure.in	2007-10-15 11:21:57.000000000 +0200
+++ e17-dev/apps/expedite/configure.in	2007-11-07 18:46:19.000000000 +0100
@@ -146,14 +146,19 @@
 sdl_libs=""
 
 have_sdl="no"
+sdl_cflags=`$SDL_CONFIG --cflags`
+sdl_libs=`$SDL_CONFIG --libs`
+
+save_CFLAGS=$CFLAGS
+CFLAGS="$CFLAGS $sdl_cflags"
 AC_CHECK_HEADER(Evas_Engine_SDL.h,
   [ AC_DEFINE(HAVE_SOFTWARE_SDL, 1, [Evas Software SDL Support])
     have_sdl="yes"
-    sdl_cflags=`$SDL_CONFIG --cflags`
-    sdl_libs=`$SDL_CONFIG --libs` ],
+  ],
   [ dummy=no ],
   [ #include <Evas.h> ]
 )
+CFLAGS=$save_CFLAGS
 
 AC_SUBST(sdl_cflags)
 AC_SUBST(sdl_libs)
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/engine_software_sdl.c e17-dev/apps/expedite/src/bin/engine_software_sdl.c
--- e17-clean/apps/expedite/src/bin/engine_software_sdl.c	2007-07-16 09:27:43.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/engine_software_sdl.c	2007-11-07 20:17:46.000000000 +0100
@@ -1,3 +1,4 @@
+#include <assert.h>
 #include "main.h"
 
 #ifndef HAVE_SOFTWARE_SDL
@@ -31,11 +32,15 @@
           {
              i++;
              if (!strcmp(argv[i], "sdl")) ok = 1;
+             if (!strcmp(argv[i], "sdl-16")) ok = 2;
           }
      }
    if (!ok) return 0;
 
+   if (ok == 1)
    evas_output_method_set(evas, evas_render_method_lookup("software_sdl"));
+   else
+     evas_output_method_set(evas, evas_render_method_lookup("software_16_sdl"));
 
    einfo = (Evas_Engine_Info_SDL *) evas_engine_info_get(evas);
 
@@ -44,6 +49,8 @@
    einfo->info.noframe = 0;
 
    evas_engine_info_set(evas, (Evas_Engine_Info *) einfo);
+
+   return 1;
 }
 
 void
@@ -112,8 +119,14 @@
                   else
                     evas_key_lock_on(evas, "Scroll_Lock");
                   break;
-               case SDLK_ESCAPE: evas_event_feed_key_down(evas, "Escape", "Escape", NULL, NULL, 0, NULL); break;
-               case SDLK_RETURN: evas_event_feed_key_down(evas, "Return", "Return", NULL, NULL, 0, NULL); break;
+               case SDLK_s:
+               case SDLK_ESCAPE:
+                  evas_event_feed_key_down(evas, "Escape", "Escape", NULL, NULL, 0, NULL);
+                  break;
+               case SDLK_KP_ENTER:
+               case SDLK_RETURN:
+                  evas_event_feed_key_down(evas, "Return", "Return", NULL, NULL, 0, NULL);
+                  break;
                case SDLK_LEFT: evas_event_feed_key_down(evas, "Left", "Left", NULL, NULL, 0, NULL); break;
                case SDLK_RIGHT: evas_event_feed_key_down(evas, "Right", "Right", NULL, NULL, 0, NULL); break;
                case SDLK_q:
@@ -122,6 +135,8 @@
                   else
                     evas_event_feed_key_down(evas, "q", "q", NULL, NULL, 0, NULL);
                   break;
+               default:
+                  break;
                }
              break;
           case SDL_KEYUP:
@@ -154,6 +169,8 @@
                   else
                     evas_event_feed_key_up(evas, "q", "q", NULL, NULL, 0, NULL);
                   break;
+               default:
+                  break;
                }
              break;
           case SDL_QUIT:
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_blend_border.c e17-dev/apps/expedite/src/bin/image_blend_border.c
--- e17-clean/apps/expedite/src/bin/image_blend_border.c	2007-04-11 13:58:32.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_blend_border.c	2007-11-07 20:35:41.000000000 +0100
@@ -25,7 +25,7 @@
      {
 	o = evas_object_image_add(evas);
 	o_images[i] = o;
-	evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/bar.png", NULL);
+	evas_object_image_file_set(o, build_path("bar.png"), NULL);
 	evas_object_image_border_set(o, 8, 8, 8, 8);
 	evas_object_show(o);
      }
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_blend_border_recolor.c e17-dev/apps/expedite/src/bin/image_blend_border_recolor.c
--- e17-clean/apps/expedite/src/bin/image_blend_border_recolor.c	2007-04-11 13:58:32.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_blend_border_recolor.c	2007-11-07 20:35:59.000000000 +0100
@@ -25,7 +25,7 @@
      {
 	o = evas_object_image_add(evas);
 	o_images[i] = o;
-	evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/pan.png", NULL);
+	evas_object_image_file_set(o, build_path("pan.png"), NULL);
 	evas_object_color_set(o, 64, 64, 64, 255);
 	evas_object_image_border_set(o, 3, 3, 3, 3);
 	evas_object_show(o);
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_blend_nearest_scaled.c e17-dev/apps/expedite/src/bin/image_blend_nearest_scaled.c
--- e17-clean/apps/expedite/src/bin/image_blend_nearest_scaled.c	2007-04-11 13:58:32.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_blend_nearest_scaled.c	2007-11-07 20:36:13.000000000 +0100
@@ -25,7 +25,7 @@
      {
 	o = evas_object_image_add(evas);
 	o_images[i] = o;
-        evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/logo.png", NULL);
+        evas_object_image_file_set(o, build_path("logo.png"), NULL);
 	evas_object_image_smooth_scale_set(o, 0);
 	evas_object_show(o);
      }
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_blend_nearest_solid_scaled.c e17-dev/apps/expedite/src/bin/image_blend_nearest_solid_scaled.c
--- e17-clean/apps/expedite/src/bin/image_blend_nearest_solid_scaled.c	2007-04-11 13:58:32.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_blend_nearest_solid_scaled.c	2007-11-07 20:36:26.000000000 +0100
@@ -25,7 +25,7 @@
      {
 	o = evas_object_image_add(evas);
 	o_images[i] = o;
-        evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/image.png", NULL);
+        evas_object_image_file_set(o, build_path("image.png"), NULL);
 	evas_object_image_smooth_scale_set(o, 0);
 	evas_object_show(o);
      }
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_blend_occlude1.c e17-dev/apps/expedite/src/bin/image_blend_occlude1.c
--- e17-clean/apps/expedite/src/bin/image_blend_occlude1.c	2007-10-20 19:28:27.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_blend_occlude1.c	2007-11-07 20:36:47.000000000 +0100
@@ -27,12 +27,12 @@
 	o = evas_object_image_add(evas);
 	o_images[i] = o;
 	if (i < (OBNUM / 2))
-	  evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/logo.png", NULL);
+	  evas_object_image_file_set(o, build_path("logo.png"), NULL);
 	else
 	  {
 	     Evas_Coord x, y;
 
-	     evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/image.png", NULL);
+	     evas_object_image_file_set(o, build_path("image.png"), NULL);
 	     x = (win_w / 4) + (((rnd() & 0xff) * ((win_w / 2) - 120)) >> 8);
 	     y = (win_h / 4) + (((rnd() & 0xff) * ((win_h / 2) - 120)) >> 8);
 	     evas_object_move(o, x, y);
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_blend_occlude1_many.c e17-dev/apps/expedite/src/bin/image_blend_occlude1_many.c
--- e17-clean/apps/expedite/src/bin/image_blend_occlude1_many.c	2007-10-20 19:28:27.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_blend_occlude1_many.c	2007-11-07 20:37:10.000000000 +0100
@@ -30,12 +30,12 @@
 	o = evas_object_image_add(evas);
 	o_images[i] = o;
 	if (i < (OBNUM / 2))
-	  evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/logo.png", NULL);
+	  evas_object_image_file_set(o, build_path("logo.png"), NULL);
 	else
 	  {
 	     Evas_Coord x, y;
 
-	     evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/image.png", NULL);
+	     evas_object_image_file_set(o, build_path("image.png"), NULL);
 	     x = (win_w / 4) + (((rnd() & 0xff) * ((win_w / 2) - 120)) >> 8);
 	     y = (win_h / 4) + (((rnd() & 0xff) * ((win_h / 2) - 120)) >> 8);
 	     evas_object_move(o, x, y);
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_blend_occlude1_very_many.c e17-dev/apps/expedite/src/bin/image_blend_occlude1_very_many.c
--- e17-clean/apps/expedite/src/bin/image_blend_occlude1_very_many.c	2007-10-20 19:28:27.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_blend_occlude1_very_many.c	2007-11-07 20:37:29.000000000 +0100
@@ -30,12 +30,12 @@
 	o = evas_object_image_add(evas);
 	o_images[i] = o;
 	if (i < (OBNUM / 2))
-	  evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/logo.png", NULL);
+	  evas_object_image_file_set(o, build_path("logo.png"), NULL);
 	else
 	  {
 	     Evas_Coord x, y;
 
-	     evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/image.png", NULL);
+	     evas_object_image_file_set(o, build_path("image.png"), NULL);
 	     x = (win_w / 4) + (((rnd() & 0xff) * ((win_w / 2) - 120)) >> 8);
 	     y = (win_h / 4) + (((rnd() & 0xff) * ((win_h / 2) - 120)) >> 8);
 	     evas_object_move(o, x, y);
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_blend_occlude2.c e17-dev/apps/expedite/src/bin/image_blend_occlude2.c
--- e17-clean/apps/expedite/src/bin/image_blend_occlude2.c	2007-10-20 19:28:27.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_blend_occlude2.c	2007-11-07 20:37:48.000000000 +0100
@@ -27,12 +27,12 @@
 	o = evas_object_image_add(evas);
 	o_images[i] = o;
 	if (i & 0x1)
-	  evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/logo.png", NULL);
+	  evas_object_image_file_set(o, build_path("logo.png"), NULL);
 	else
 	  {
 	     Evas_Coord x, y;
 
-	     evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/image.png", NULL);
+	     evas_object_image_file_set(o, build_path("image.png"), NULL);
 	     x = (win_w / 4) + (((rnd() & 0xff) * ((win_w / 2) - 120)) >> 8);
 	     y = (win_h / 4) + (((rnd() & 0xff) * ((win_h / 2) - 120)) >> 8);
 	     evas_object_move(o, x, y);
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_blend_occlude2_few.c e17-dev/apps/expedite/src/bin/image_blend_occlude2_few.c
--- e17-clean/apps/expedite/src/bin/image_blend_occlude2_few.c	2007-10-20 19:28:27.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_blend_occlude2_few.c	2007-11-07 20:38:09.000000000 +0100
@@ -30,12 +30,12 @@
 	o = evas_object_image_add(evas);
 	o_images[i] = o;
 	if (i & 0x1)
-	  evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/logo.png", NULL);
+	  evas_object_image_file_set(o, build_path("logo.png"), NULL);
 	else
 	  {
 	     Evas_Coord x, y;
 
-	     evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/image.png", NULL);
+	     evas_object_image_file_set(o, build_path("image.png"), NULL);
 	     x = (win_w / 4) + (((rnd() & 0xff) * ((win_w / 2) - 120)) >> 8);
 	     y = (win_h / 4) + (((rnd() & 0xff) * ((win_h / 2) - 120)) >> 8);
 	     evas_object_move(o, x, y);
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_blend_occlude2_many.c e17-dev/apps/expedite/src/bin/image_blend_occlude2_many.c
--- e17-clean/apps/expedite/src/bin/image_blend_occlude2_many.c	2007-10-20 19:28:27.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_blend_occlude2_many.c	2007-11-07 20:38:28.000000000 +0100
@@ -30,12 +30,12 @@
 	o = evas_object_image_add(evas);
 	o_images[i] = o;
 	if (i & 0x1)
-	  evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/logo.png", NULL);
+	  evas_object_image_file_set(o, build_path("logo.png"), NULL);
 	else
 	  {
 	     Evas_Coord x, y;
 
-	     evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/image.png", NULL);
+	     evas_object_image_file_set(o, build_path("image.png"), NULL);
 	     x = (win_w / 4) + (((rnd() & 0xff) * ((win_w / 2) - 120)) >> 8);
 	     y = (win_h / 4) + (((rnd() & 0xff) * ((win_h / 2) - 120)) >> 8);
 	     evas_object_move(o, x, y);
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_blend_occlude2_very_many.c e17-dev/apps/expedite/src/bin/image_blend_occlude2_very_many.c
--- e17-clean/apps/expedite/src/bin/image_blend_occlude2_very_many.c	2007-10-20 19:28:27.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_blend_occlude2_very_many.c	2007-11-07 20:38:50.000000000 +0100
@@ -30,12 +30,12 @@
 	o = evas_object_image_add(evas);
 	o_images[i] = o;
 	if (i & 0x1)
-	  evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/logo.png", NULL);
+	  evas_object_image_file_set(o, build_path("logo.png"), NULL);
 	else
 	  {
 	     Evas_Coord x, y;
 
-	     evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/image.png", NULL);
+	     evas_object_image_file_set(o, build_path("image.png"), NULL);
 	     x = (win_w / 4) + (((rnd() & 0xff) * ((win_w / 2) - 120)) >> 8);
 	     y = (win_h / 4) + (((rnd() & 0xff) * ((win_h / 2) - 120)) >> 8);
 	     evas_object_move(o, x, y);
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_blend_occlude3.c e17-dev/apps/expedite/src/bin/image_blend_occlude3.c
--- e17-clean/apps/expedite/src/bin/image_blend_occlude3.c	2007-10-20 19:28:27.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_blend_occlude3.c	2007-11-07 20:40:17.000000000 +0100
@@ -27,12 +27,12 @@
 	o = evas_object_image_add(evas);
 	o_images[i] = o;
 	if (i > (OBNUM / 2))
-	  evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/logo.png", NULL);
+	  evas_object_image_file_set(o, build_path("logo.png"), NULL);
 	else
 	  {
 	     Evas_Coord x, y;
 
-	     evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/image.png", NULL);
+	     evas_object_image_file_set(o, build_path("image.png"), NULL);
 	     x = (win_w / 4) + (((rnd() & 0xff) * ((win_w / 2) - 120)) >> 8);
 	     y = (win_h / 4) + (((rnd() & 0xff) * ((win_h / 2) - 120)) >> 8);
 	     evas_object_move(o, x, y);
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_blend_occlude3_few.c e17-dev/apps/expedite/src/bin/image_blend_occlude3_few.c
--- e17-clean/apps/expedite/src/bin/image_blend_occlude3_few.c	2007-10-20 19:28:27.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_blend_occlude3_few.c	2007-11-07 20:40:36.000000000 +0100
@@ -30,12 +30,12 @@
 	o = evas_object_image_add(evas);
 	o_images[i] = o;
 	if (i > (OBNUM / 2))
-	  evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/logo.png", NULL);
+	  evas_object_image_file_set(o, build_path("logo.png"), NULL);
 	else
 	  {
 	     Evas_Coord x, y;
 
-	     evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/image.png", NULL);
+	     evas_object_image_file_set(o, build_path("image.png"), NULL);
 	     x = (win_w / 4) + (((rnd() & 0xff) * ((win_w / 2) - 120)) >> 8);
 	     y = (win_h / 4) + (((rnd() & 0xff) * ((win_h / 2) - 120)) >> 8);
 	     evas_object_move(o, x, y);
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_blend_occlude3_many.c e17-dev/apps/expedite/src/bin/image_blend_occlude3_many.c
--- e17-clean/apps/expedite/src/bin/image_blend_occlude3_many.c	2007-10-20 19:28:27.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_blend_occlude3_many.c	2007-11-07 20:40:56.000000000 +0100
@@ -30,12 +30,12 @@
 	o = evas_object_image_add(evas);
 	o_images[i] = o;
 	if (i > (OBNUM / 2))
-	  evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/logo.png", NULL);
+	  evas_object_image_file_set(o, build_path("logo.png"), NULL);
 	else
 	  {
 	     Evas_Coord x, y;
 
-	     evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/image.png", NULL);
+	     evas_object_image_file_set(o, build_path("image.png"), NULL);
 	     x = (win_w / 4) + (((rnd() & 0xff) * ((win_w / 2) - 120)) >> 8);
 	     y = (win_h / 4) + (((rnd() & 0xff) * ((win_h / 2) - 120)) >> 8);
 	     evas_object_move(o, x, y);
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_blend_occlude3_very_many.c e17-dev/apps/expedite/src/bin/image_blend_occlude3_very_many.c
--- e17-clean/apps/expedite/src/bin/image_blend_occlude3_very_many.c	2007-10-20 19:28:27.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_blend_occlude3_very_many.c	2007-11-07 20:41:21.000000000 +0100
@@ -30,12 +30,12 @@
 	o = evas_object_image_add(evas);
 	o_images[i] = o;
 	if (i > (OBNUM / 2))
-	  evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/logo.png", NULL);
+	  evas_object_image_file_set(o, build_path("logo.png"), NULL);
 	else
 	  {
 	     Evas_Coord x, y;
 
-	     evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/image.png", NULL);
+	     evas_object_image_file_set(o, build_path("image.png"), NULL);
 	     x = (win_w / 4) + (((rnd() & 0xff) * ((win_w / 2) - 120)) >> 8);
 	     y = (win_h / 4) + (((rnd() & 0xff) * ((win_h / 2) - 120)) >> 8);
 	     evas_object_move(o, x, y);
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_blend_smooth_scaled.c e17-dev/apps/expedite/src/bin/image_blend_smooth_scaled.c
--- e17-clean/apps/expedite/src/bin/image_blend_smooth_scaled.c	2007-04-11 13:58:32.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_blend_smooth_scaled.c	2007-11-07 20:41:32.000000000 +0100
@@ -25,7 +25,7 @@
      {
 	o = evas_object_image_add(evas);
 	o_images[i] = o;
-        evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/logo.png", NULL);
+        evas_object_image_file_set(o, build_path("logo.png"), NULL);
 	evas_object_image_smooth_scale_set(o, 1);
 	evas_object_show(o);
      }
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_blend_smooth_solid_scaled.c e17-dev/apps/expedite/src/bin/image_blend_smooth_solid_scaled.c
--- e17-clean/apps/expedite/src/bin/image_blend_smooth_solid_scaled.c	2007-04-11 13:58:32.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_blend_smooth_solid_scaled.c	2007-11-07 20:41:44.000000000 +0100
@@ -25,7 +25,7 @@
      {
 	o = evas_object_image_add(evas);
 	o_images[i] = o;
-        evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/image.png", NULL);
+        evas_object_image_file_set(o, build_path("image.png"), NULL);
 	evas_object_image_smooth_scale_set(o, 1);
 	evas_object_show(o);
      }
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_blend_solid_border.c e17-dev/apps/expedite/src/bin/image_blend_solid_border.c
--- e17-clean/apps/expedite/src/bin/image_blend_solid_border.c	2007-04-11 13:58:32.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_blend_solid_border.c	2007-11-07 20:41:55.000000000 +0100
@@ -25,7 +25,7 @@
      {
 	o = evas_object_image_add(evas);
 	o_images[i] = o;
-	evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/frame.png", NULL);
+	evas_object_image_file_set(o, build_path("frame.png"), NULL);
 	evas_object_image_border_set(o, 8, 8, 8, 8);
 	evas_object_show(o);
      }
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_blend_solid_unscaled.c e17-dev/apps/expedite/src/bin/image_blend_solid_unscaled.c
--- e17-clean/apps/expedite/src/bin/image_blend_solid_unscaled.c	2007-04-11 13:58:32.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_blend_solid_unscaled.c	2007-11-07 20:42:06.000000000 +0100
@@ -25,7 +25,7 @@
      {
 	o = evas_object_image_add(evas);
 	o_images[i] = o;
-        evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/image.png", NULL);
+        evas_object_image_file_set(o, build_path("image.png"), NULL);
 	evas_object_image_fill_set(o, 0, 0, 120, 160);
 	evas_object_resize(o, 120, 160);
 	evas_object_show(o);
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_blend_unscaled.c e17-dev/apps/expedite/src/bin/image_blend_unscaled.c
--- e17-clean/apps/expedite/src/bin/image_blend_unscaled.c	2007-04-11 13:58:32.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_blend_unscaled.c	2007-11-07 20:42:17.000000000 +0100
@@ -25,7 +25,7 @@
      {
 	o = evas_object_image_add(evas);
 	o_images[i] = o;
-        evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/logo.png", NULL);
+        evas_object_image_file_set(o, build_path("logo.png"), NULL);
 	evas_object_image_fill_set(o, 0, 0, 120, 160);
 	evas_object_resize(o, 120, 160);
 	evas_object_show(o);
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_crossfade.c e17-dev/apps/expedite/src/bin/image_crossfade.c
--- e17-clean/apps/expedite/src/bin/image_crossfade.c	2007-10-20 19:28:27.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_crossfade.c	2007-11-07 20:42:35.000000000 +0100
@@ -24,14 +24,14 @@
 
    o = evas_object_image_add(evas);
    o_images[0] = o;
-   evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/im1.png", NULL);
+   evas_object_image_file_set(o, build_path("im1.png"), NULL);
    evas_object_image_fill_set(o, 0, 0, 720, 420);
    evas_object_resize(o, 720, 420);
    evas_object_show(o);
 
    o = evas_object_image_add(evas);
    o_images[1] = o;
-   evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/im2.png", NULL);
+   evas_object_image_file_set(o, build_path("im2.png"), NULL);
    evas_object_image_fill_set(o, 0, 0, 720, 420);
    evas_object_resize(o, 720, 420);
    evas_object_show(o);
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_data_ycbcr601pl.c e17-dev/apps/expedite/src/bin/image_data_ycbcr601pl.c
--- e17-clean/apps/expedite/src/bin/image_data_ycbcr601pl.c	2007-04-11 14:36:32.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_data_ycbcr601pl.c	2007-11-07 20:42:58.000000000 +0100
@@ -38,7 +38,7 @@
 	yp = malloc(640 * 480);
 	up = malloc(320 * 240);
 	vp = malloc(320 * 240);
-	f = fopen(PACKAGE_DATA_DIR"/data/tp.yuv", "rb");
+	f = fopen(build_path("tp.yuv"), "rb");
 	if (f)
 	  {
 	     fread(yp, 640 * 480, 1, f);
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_data_ycbcr601pl_wide_stride.c e17-dev/apps/expedite/src/bin/image_data_ycbcr601pl_wide_stride.c
--- e17-clean/apps/expedite/src/bin/image_data_ycbcr601pl_wide_stride.c	2007-10-20 19:28:27.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_data_ycbcr601pl_wide_stride.c	2007-11-07 20:43:15.000000000 +0100
@@ -38,7 +38,7 @@
 	yp = malloc(640 * 480);
 	up = malloc(320 * 240);
 	vp = malloc(320 * 240);
-	f = fopen(PACKAGE_DATA_DIR"/data/tp.yuv", "rb");
+	f = fopen(build_path("tp.yuv"), "rb");
 	if (f)
 	  {
 	     fread(yp, 640 * 480, 1, f);
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/image_quality_scale.c e17-dev/apps/expedite/src/bin/image_quality_scale.c
--- e17-clean/apps/expedite/src/bin/image_quality_scale.c	2007-04-11 13:58:32.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/image_quality_scale.c	2007-11-07 20:43:27.000000000 +0100
@@ -26,7 +26,7 @@
      {
 	o = evas_object_image_add(evas);
 	o_images[i] = o;
-        evas_object_image_file_set(o, PACKAGE_DATA_DIR"/data/tp.png", NULL);
+        evas_object_image_file_set(o, build_path("tp.png"), NULL);
 	evas_object_image_fill_set(o, 0, 0, 640, 480);
 	evas_object_resize(o, 640, 480);
 	evas_object_show(o);
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/main.c e17-dev/apps/expedite/src/bin/main.c
--- e17-clean/apps/expedite/src/bin/main.c	2007-10-20 19:28:28.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/main.c	2007-11-07 21:07:27.000000000 +0100
@@ -1075,9 +1075,36 @@
 }
 #endif
 
+
+const char *
+build_path(const char *filename)
+{
+   static char  path[4096];
+   static char  buffer[4096];
+   static int   init = 0;
+
+   if (!init)
+     {
+        char    *prefix;
+
+        prefix = getenv("EXPEDITE_DATA_DIR");
+        if (!prefix)
+          strcpy(path, PACKAGE_DATA_DIR"/data/");
+        else
+          snprintf(path, 4096, "%s/", prefix);
+
+        init = 1;
+     }
+
+   snprintf(buffer, 4096, "%s%s", path, filename);
+
+   return buffer;
+}
+
 int
 engine_abort(void)
 {
+   fprintf(stderr, "go: %i\n", go);
    go = 0;
    return go;
 }
@@ -1098,7 +1125,6 @@
 _profile_parse(int argc, char **argv)
 {
    int i;
-   int ok = 0;
 
    for (i = 1; i < argc; i++)
      {
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/main.h e17-dev/apps/expedite/src/bin/main.h
--- e17-clean/apps/expedite/src/bin/main.h	2007-10-15 11:21:57.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/main.h	2007-11-07 20:51:26.000000000 +0100
@@ -34,6 +34,7 @@
 void srnd(void);
 unsigned int rnd(void);
 double get_time(void);
+const char      *build_path(const char *filename);
 void   engine_loop(void);
 int    engine_abort(void);
 
diff -NrauBb -X exclude.cvs e17-clean/apps/expedite/src/bin/ui.c e17-dev/apps/expedite/src/bin/ui.c
--- e17-clean/apps/expedite/src/bin/ui.c	2007-10-20 19:28:28.000000000 +0200
+++ e17-dev/apps/expedite/src/bin/ui.c	2007-11-07 20:34:33.000000000 +0100
@@ -206,13 +207,11 @@
 static void
 _ui_menu_item_add(char *icon, char *text, void (*func) (void))
 {
-   char buf[4096];
    Menu_Item *mi;
 
    mi = malloc(sizeof(Menu_Item));
-   snprintf(buf, 4096, "%s%s", data_dir, icon);
    mi->o_icon = evas_object_image_add(evas);
-   evas_object_image_file_set(mi->o_icon, buf, NULL);
+   evas_object_image_file_set(mi->o_icon, build_path(icon), NULL);
    evas_object_resize(mi->o_icon, 32, 32);
    evas_object_image_fill_set(mi->o_icon, 0, 0, 32, 32);
    mi->icon = strdup(icon);
@@ -225,16 +224,8 @@
 static void
 _ui_setup(void)
 {
-   char  buf[4096];
    Evas_Object *o;
    Evas_Coord x, y, w, h;
-   char *prefix;
-
-   prefix = getenv("EXPEDITE_DATA_DIR");
-   if (!prefix)
-     strcpy(data_dir, PACKAGE_DATA_DIR"/data/");
-   else
-     snprintf(data_dir, 4096, "%s/", prefix);
 
    o = evas_object_rectangle_add(evas);
    evas_object_move(o, 0, 0);
@@ -297,8 +288,7 @@
 
    o = evas_object_image_add(evas);
    evas_object_move(o, (win_w - 120) / 2, ((win_h - 160) / 2));
-   snprintf(buf, 4096, "%s%s", data_dir, "logo.png");
-   evas_object_image_file_set(o, buf, NULL);
+   evas_object_image_file_set(o, build_path("logo.png"), NULL);
    evas_object_image_fill_set(o, 0, 0, 120, 160);
    evas_object_resize(o, 120, 160);
    evas_object_layer_set(o, -98);
@@ -315,16 +305,14 @@
 
    o = evas_object_image_add(evas);
    evas_object_move(o, 0, 0);
-   snprintf(buf, 4096, "%s%s", data_dir, "icon_sel.png");
-   evas_object_image_file_set(o, buf, NULL);
+   evas_object_image_file_set(o, build_path("icon_sel.png"), NULL);
    evas_object_resize(o, 56, 56);
    evas_object_image_fill_set(o, 0, 0, 56, 56);
    o_menu_icon_sel = o;
 
    o = evas_object_image_add(evas);
    evas_object_move(o, 0, 0);
-   snprintf(buf, 4096, "%s%s", data_dir, "text_sel.png");
-   evas_object_image_file_set(o, buf, NULL);
+   evas_object_image_file_set(o, build_path("text_sel.png"), NULL);
    evas_object_resize(o, 96, 32);
    evas_object_image_fill_set(o, 0, 0, 96, 32);
    evas_object_image_border_set(o, 8, 8, 8, 8);
@@ -332,8 +320,7 @@
 
    o = evas_object_image_add(evas);
    evas_object_move(o, 0, 0);
-   snprintf(buf, 4096, "%s%s", data_dir, "icon_sel2.png");
-   evas_object_image_file_set(o, buf, NULL);
+   evas_object_image_file_set(o, build_path("icon_sel2.png"), NULL);
    evas_object_resize(o, 56, 41);
    evas_object_image_fill_set(o, 0, 0, 56, 41);
    o_menu_icon_sel2 = o;
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to