Hi,

        I started to work on a SDL engine for ETK. I attached a first try.

        It basically create an etk_embed with an mdi_area in it and all 
requested 
window are mdi_window added to this mdi_area. I was planing to use this 
engine as a base for simplifying the framebuffer engine. It's mostly working, 
but I have some issues :
        - The window never got any decoration. I don't understand why, because 
etk_test of mdi_window work correctly.
        - Etk window resizing is not working correctly, the window get resized, 
but 
it's not refreshed unless a widget got refreshed. For example with the tree 
test of etk_test, if you resize the window, you will see the change only if 
you click on the sort button.
        - The mouse cursor act strangely. It didn't come back to default in 
some case 
and some area could only be detected one time. In the etk tree test, I can 
only pass one time over the column head for resizing them.

        I don't know if it's due to miss use of etk, limitation of current etk 
or 
bugs. I would like advice on all this issue.

Thanks,
        Cedric

PS: I am aware of the current bug of etk due to recent change on evas smart 
object and my cvs is older than this change.
diff -Nrau -X exclude.cvs e17-clean/libs/etk/configure.in e17-dev/libs/etk/configure.in
--- e17-clean/libs/etk/configure.in	2007-10-03 23:13:06.000000000 +0200
+++ e17-dev/libs/etk/configure.in	2007-10-08 10:42:21.000000000 +0200
@@ -131,6 +131,19 @@
 AM_CONDITIONAL(BUILD_ENGINE_EE_S_X11, test "x$have_ecore_x" = "xyes")
 
 #####################################################################
+## Ecore_SDL
+PKG_CHECK_MODULES(ECORE_SDL, [ecore-sdl >= 0.9.9], [
+    have_ecore_sdl=yes
+    AC_DEFINE(HAVE_ECORE_SDL, 1, [Define to 1 if you have the Ecore_SDL headers and libraries])
+    requirements="$requirements ecore-sdl"
+  ], [
+    have_ecore_sdl=no
+    AC_DEFINE(HAVE_ECORE_SDL, 0, [Define to 1 if you have the Ecore_SDL headers and libraries])
+])
+
+AM_CONDITIONAL(BUILD_ENGINE_EE_S_SDL, test "x$have_ecore_sdl" = "xyes")
+
+#####################################################################
 ## Ecore_FB
 PKG_CHECK_MODULES(ECORE_FB, [ecore-fb >= 0.9.9], [
     have_ecore_fb=yes
@@ -192,6 +205,7 @@
 src/engines/ecore_evas_software_x11/Makefile
 src/engines/ecore_evas_software_x11_16/Makefile
 src/engines/ecore_evas_gl_x11/Makefile
+src/engines/ecore_evas_software_sdl/Makefile
 src/engines/ecore_fb/Makefile
 src/bin/Makefile
 src/tools/Makefile
@@ -261,6 +275,7 @@
 echo "Configuration Options Summary:"
 echo
 echo "  Ecore Evas Software X11 Engine..............: $have_ecore_x"
+echo "  Ecore SDL Engine............................: $have_ecore_sdl"
 echo "  Ecore FB Engine.............................: $have_ecore_fb"
 echo "  Ecore FB Engine X11 Support.................: $have_ecore_fb_x11_support"
 echo
diff -Nrau -X exclude.cvs e17-clean/libs/etk/src/engines/ecore_evas_software_sdl/ecore_evas_software_sdl.c e17-dev/libs/etk/src/engines/ecore_evas_software_sdl/ecore_evas_software_sdl.c
--- e17-clean/libs/etk/src/engines/ecore_evas_software_sdl/ecore_evas_software_sdl.c	1970-01-01 01:00:00.000000000 +0100
+++ e17-dev/libs/etk/src/engines/ecore_evas_software_sdl/ecore_evas_software_sdl.c	2007-10-10 17:51:23.000000000 +0200
@@ -0,0 +1,720 @@
+#include <sys/param.h>
+#include <string.h>
+#include <stdlib.h>
+#include <Ecore_Evas.h>
+#include <Ecore_Sdl.h>
+#include <Ecore_File.h>
+#include <Edje.h>
+#include <Etk.h>
+#include "Etk_Engine_Ecore_Evas.h"
+
+#include "config.h"
+
+static void            (*_event_callback)(Etk_Event_Type event, Etk_Event_Global event_info) = NULL;
+
+static char             *_theme_find(const char *theme_name);
+
+static Etk_Bool          _engine_init(void);
+static void              _engine_shutdown(void);
+
+static void              _generic_window_constructor(Etk_Window *window);
+static void              _generic_window_destructor(Etk_Window *window);
+static void              _generic_window_show(Etk_Window *window);
+static void              _generic_window_hide(Etk_Window *window);
+static Evas             *_generic_window_evas_get(Etk_Window *window);
+static void              _generic_window_title_set(Etk_Window *window, const char *title);
+static const char       *_generic_window_title_get(Etk_Window *window);
+
+static void              _generic_window_move(Etk_Window *window, int x, int y);
+static void              _generic_window_resize(Etk_Window *window, int w, int h);
+static void              _generic_window_size_min_set(Etk_Window *window, int w, int h);
+static void              _generic_window_evas_position_get(Etk_Window *window, int *x, int *y);
+static void              _generic_window_screen_position_get(Etk_Window *window, int *x, int *y);
+static void              _generic_window_size_get(Etk_Window *window, int *w, int *h);
+static void              _generic_window_screen_geometry_get(Etk_Window *window, int *x, int *y, int *w, int *h);
+
+static void              _generic_window_maximized_set(Etk_Window *window, Etk_Bool maximized);
+static Etk_Bool          _generic_window_maximized_get(Etk_Window *window);
+
+static void              _generic_window_raise(Etk_Window *window);
+static void              _generic_window_lower(Etk_Window *window);
+
+static void              _generic_window_focused_set(Etk_Window *window, Etk_Bool focused);
+static Etk_Bool          _generic_window_focused_get(Etk_Window *window);
+static void              _generic_window_decorated_set(Etk_Window *window, Etk_Bool decorated);
+static Etk_Bool          _generic_window_decorated_get(Etk_Window *window);
+
+static void              _generic_window_pointer_set(Etk_Window *window, Etk_Pointer_Type pointer_type);
+
+static void              _generic_event_callback_set(void (*callback)(Etk_Event_Type event, Etk_Event_Global event_info));
+
+static void              _generic_mouse_position_get(int *x, int *y);
+static void              _generic_mouse_screen_geometry_get(int *x, int *y, int *w, int *h);
+
+static Ecore_Evas       *_generic_ecore_evas = NULL;
+static Evas             *_generic_evas = NULL;
+
+static Etk_Widget       *_generic_root_window = NULL;
+static Etk_Widget       *_generic_mdi_area = NULL;
+
+static Evas_Object      *_generic_background = NULL;
+static Evas_Object      *_generic_mouse_pointer = NULL;
+
+#define DEFAULT_WIDTH 1024
+#define DEFAULT_HEIGHT 768
+
+static int               _width = DEFAULT_WIDTH;
+static int               _height = DEFAULT_HEIGHT;
+
+static char             *_wm_theme_file = NULL;
+
+struct _Etk_Engine_Window_Info
+{
+  struct
+  {
+    int w;
+    int h;
+  } min;
+
+  struct
+  {
+    int w;
+    int h;
+  } current;
+};
+typedef struct _Etk_Engine_Window_Info  Etk_Engine_Window_Info;
+
+static Etk_Engine engine_info = {
+  NULL, /* engine specific data */
+  NULL, /* engine name */
+  NULL, /* super (parent) engine */
+  NULL, /* DL handle */
+
+  _engine_init,
+  _engine_shutdown,
+
+  _generic_window_constructor,
+  _generic_window_destructor,
+  _generic_window_show,
+  _generic_window_hide,
+  _generic_window_evas_get,
+  _generic_window_title_set,
+  _generic_window_title_get,
+
+  NULL, /* window_wmclass_set */
+
+  _generic_window_move,
+  _generic_window_resize,
+  _generic_window_size_min_set,
+  _generic_window_evas_position_get,
+  _generic_window_screen_position_get,
+  _generic_window_size_get,
+  _generic_window_screen_geometry_get,
+
+  NULL, /* window_modal_for_window */
+  NULL, /* window_iconified_set */
+  NULL, /* window_iconified_get */
+
+  _generic_window_maximized_set,
+  _generic_window_maximized_get,
+
+  NULL, /* window_fullscreen_set */
+  NULL, /* window_fullscreen_get */
+
+  _generic_window_raise,
+  _generic_window_lower,
+
+  NULL, /* window_stacking_set */
+  NULL, /* window_stacking_get */
+  NULL, /* window_sticky_set */
+  NULL, /* window_sticky_get */
+
+  _generic_window_focused_set,
+  _generic_window_focused_get,
+  _generic_window_decorated_set,
+  _generic_window_decorated_get,
+
+  NULL, /* window_shaped_set */
+  NULL, /* window_shaped_get */
+  NULL, /* window_has_alpha_set */
+  NULL, /* window_has_alpha_get */     
+  NULL, /* window_skip_taskbar_hint_set */
+  NULL, /* window_skip_taskbar_hint_get */
+  NULL, /* window_skip_pager_hint_set */
+  NULL, /* window_skip_pager_hint_get */
+
+  _generic_window_pointer_set,
+
+  NULL, /* popup_window_constructor */
+  NULL, /* popup_window_popup */
+  NULL, /* popup_window_popdown */
+
+  _generic_event_callback_set,
+
+  NULL, /* event_timestamp_get */
+
+  _generic_mouse_position_get,
+  _generic_mouse_screen_geometry_get,
+
+  NULL, /* selection_text_set */
+  NULL, /* selection_text_request */
+  NULL, /* selection_clear */
+
+  NULL, /* drag_constructor */
+  NULL, /* drag_begin */
+};
+
+/* Called when the engine is loaded */
+Etk_Engine*
+engine_open(int *argc, char ***argv)
+{
+   _wm_theme_file = _theme_find(etk_config_wm_theme_get());
+   if (!_wm_theme_file)
+   {
+      /* fallback to default theme */
+      _wm_theme_file = _theme_find("default");
+      if (!_wm_theme_file)
+      {
+         return NULL;
+      }
+   }
+
+   engine_info.engine_data = NULL;
+   engine_info.engine_name = strdup("ecore_software_sdl");
+
+   /* Parse the arguments */
+   if (argc && argv)
+   {
+      char *_width_arg = NULL;
+      char *_height_arg = NULL;
+
+      etk_argument_value_get(argc, argv, "ecore-width", 0, ETK_TRUE, &_width_arg);
+      if (_width_arg)
+        {
+           _width = (int) strtol(_width_arg, (char **) NULL, 10);
+           if (_width <= 0)
+             _width = DEFAULT_WIDTH;
+        }
+
+      etk_argument_value_get(argc, argv, "ecore-height", 0, ETK_TRUE, &_height_arg);
+      if (_height_arg)
+         {
+            _height = (int) strtol(_height_arg, (char **) NULL, 10);
+            if (_height <= 0)
+              _height = DEFAULT_HEIGHT;
+         }
+   }
+
+   return &engine_info;
+}
+
+/* Called when the engine is unloaded */
+void
+engine_close(void)
+{
+   free(engine_info.engine_name);
+   free(_wm_theme_file);
+}
+
+/* On SDL window resize */
+static void
+_generic_root_window_resize_cb(Ecore_Evas *ecore_evas)
+{
+   Evas_Object  *obj;
+
+   if (!ecore_evas)
+     return;
+
+   ecore_evas_geometry_get(_generic_ecore_evas, NULL, NULL, &_width, &_height);
+   obj = etk_embed_object_get(ETK_EMBED(_generic_root_window));
+   evas_object_resize(obj, _width, _height);
+   evas_object_resize(_generic_background, _width, _height);
+}
+
+/* Initializes the engine */
+static Etk_Bool
+_engine_init(void)
+{
+   if (!ecore_sdl_init(NULL))
+     {
+        ETK_WARNING("Ecore_SDL initialization failed!");
+        return ETK_FALSE;
+     }
+   if (!ecore_evas_init())
+     {
+        ETK_WARNING("Ecore_Evas initialization failed!");
+        return ETK_FALSE;
+     }
+
+   _generic_ecore_evas = ecore_evas_sdl_new(NULL, _width, _height, 0, 1, 0, 1);
+   if (!_generic_ecore_evas)
+     {
+        ETK_WARNING("Unable to create a SDL Ecore_Evas");
+        return ETK_FALSE;
+     }
+
+   _generic_evas = ecore_evas_get(_generic_ecore_evas);
+   if (!_generic_evas)
+     {
+        ETK_WARNING("Unable to create a FB Evas");
+        return ETK_FALSE;
+     }
+
+   ecore_evas_show(_generic_ecore_evas);
+
+   /* Create the root window. */
+   _generic_root_window = etk_embed_new(_generic_evas);
+
+   ecore_evas_callback_resize_set(_generic_ecore_evas, _generic_root_window_resize_cb);
+   ecore_evas_callback_delete_request_set(_generic_ecore_evas, ecore_evas_hide);
+
+   /* Create the background. */
+   _generic_background = edje_object_add(_generic_evas);
+   edje_object_file_set(_generic_background, _wm_theme_file, "etk/wm_background");
+   evas_object_move(_generic_background, 0, 0);
+   evas_object_resize(_generic_background, _width, _height);
+   evas_object_show(_generic_background);
+
+   /* Create the mdi area. */
+   _generic_mdi_area = etk_mdi_area_new();
+   etk_container_add(ETK_CONTAINER(_generic_root_window), _generic_mdi_area);
+
+   /* Setup default pointer. */
+   _generic_window_pointer_set(NULL, ETK_POINTER_DEFAULT);
+
+   /* Show all widget. */
+   etk_widget_show_all(ETK_WIDGET(_generic_root_window));
+
+   return ETK_TRUE;
+}
+
+/* Shutdowns the engine */
+static void
+_engine_shutdown(void)
+{
+   ecore_evas_free(_generic_ecore_evas);
+   _generic_ecore_evas = NULL;
+
+   ecore_evas_shutdown();
+
+   ecore_sdl_shutdown();
+}
+
+static void
+_generic_window_constructor(Etk_Window *window)
+{
+   Etk_Engine_Window_Info       *info;
+   Etk_Widget                   *widget;
+
+   widget = etk_mdi_window_new();
+
+   window->engine_data = widget;
+
+   info = calloc(1, sizeof (Etk_Engine_Window_Info));
+
+   etk_object_data_set(ETK_OBJECT(window), "etk_engine_window_info", info);
+   etk_container_add(ETK_CONTAINER(_generic_mdi_area), widget);
+   etk_mdi_window_decorated_set(ETK_MDI_WINDOW(widget), ETK_TRUE);
+
+   ETK_TOPLEVEL(window)->evas = _generic_evas;
+}
+
+static void
+_generic_window_destructor(Etk_Window *window)
+{
+   Etk_Object   *obj;
+   void         *info;
+
+   obj = window->engine_data;
+
+   if (!obj)
+     return ;
+
+   info = etk_object_data_get(ETK_OBJECT(window), "etk_engine_window_info");
+   if (info)
+     free(info);
+   etk_object_data_set(ETK_OBJECT(window), "etk_engine_window_info", NULL);
+
+   etk_mdi_window_delete_request(ETK_MDI_WINDOW(obj));
+}
+
+static void
+_generic_window_show(Etk_Window *window)
+{
+   Etk_Widget   *widget;
+
+   widget = window->engine_data;
+
+   if (widget)
+     etk_widget_show(widget);
+}
+
+static void
+_generic_window_hide(Etk_Window *window)
+{
+   Etk_Widget   *widget;
+
+   widget = window->engine_data;
+
+   if (widget)
+     etk_widget_hide(widget);
+}
+
+static Evas*
+_generic_window_evas_get(Etk_Window *window)
+{
+   return _generic_evas;
+}
+
+static void
+_generic_window_title_set(Etk_Window *window, const char *title)
+{
+   Etk_Mdi_Window       *mdi;
+
+   mdi = window->engine_data;
+
+   if (mdi)
+     etk_mdi_window_title_set(mdi, title);
+}
+
+static const char*
+_generic_window_title_get(Etk_Window *window)
+{
+   Etk_Mdi_Window       *mdi;
+
+   mdi = window->engine_data;
+
+   if (mdi)
+     return etk_mdi_window_title_get(mdi);
+   else
+     return NULL;
+}
+
+static void
+_generic_window_move(Etk_Window *window, int x, int y)
+{
+   Etk_Mdi_Window       *mdi;
+
+   mdi = window->engine_data;
+
+   if (mdi)
+     etk_mdi_window_move(mdi, x, y);
+}
+
+static void
+_generic_window_resize(Etk_Window *window, int w, int h)
+{
+   Etk_Engine_Window_Info       *info;
+   Etk_Widget                   *widget;
+
+   widget = window->engine_data;
+
+   if (widget)
+     {
+        info = etk_object_data_get(ETK_OBJECT(window), "etk_engine_window_info");
+
+        info->current.w = ETK_MAX(info->min.w, w);
+        info->current.h = ETK_MAX(info->min.h, h);
+
+        fprintf(stderr, "[ %i, %i ] => [ %i, %i ]\n", info->min.w, info->min.h, w, h);
+
+        evas_object_resize(widget->smart_object, info->current.w, info->current.h);
+
+
+        etk_widget_size_request_set(widget, info->current.w, info->current.h);
+     }
+}
+
+static void
+_generic_window_size_min_set(Etk_Window *window, int w, int h)
+{
+   Etk_Engine_Window_Info       *info;
+   Etk_Widget                   *widget;
+
+   widget = window->engine_data;
+
+   if (widget)
+     {
+        info = etk_object_data_get(ETK_OBJECT(window), "etk_engine_window_info");
+
+        if (info)
+          {
+             info->min.w = w;
+             info->min.h = h;
+          }
+        _generic_window_resize(window, info->current.w, info->current.h);
+     }
+}
+
+static void
+_generic_window_evas_position_get(Etk_Window *window, int *x, int *y)
+{
+   Etk_Widget           *widget;
+
+   widget = window->engine_data;
+
+   if (widget)
+     etk_widget_geometry_get(widget, x, y, NULL, NULL);
+}
+
+static void
+_generic_window_screen_position_get(Etk_Window *window, int *x, int *y)
+{
+   Etk_Widget           *widget;
+
+   widget = window->engine_data;
+
+   if (widget)
+     etk_widget_geometry_get(widget, x, y, NULL, NULL);
+   else
+     {
+        if (x) *x = 0;
+        if (y) *y = 0;
+     }
+}
+
+static void
+_generic_window_size_get(Etk_Window *window, int *w, int *h)
+{
+   Etk_Engine_Window_Info       *info;
+   Etk_Widget                   *widget;
+
+   widget = window->engine_data;
+
+   if (widget)
+     {
+        info = etk_object_data_get(ETK_OBJECT(window), "etk_engine_window_info");
+
+        if (info)
+          {
+             if (w) *w = info->current.w;
+             if (h) *h = info->current.h;
+          }
+     }
+   else
+     {
+        if (w) *w = _width;
+        if (h) *h = _height;
+     }
+}
+
+static void
+_generic_window_screen_geometry_get(Etk_Window *window, int *x, int *y, int *w, int *h)
+{
+   if (x) *x = 0;
+   if (y) *y = 0;
+   if (w) *w = _width;
+   if (h) *h = _height;
+}
+
+static void
+_generic_window_maximized_set(Etk_Window *window, Etk_Bool maximized)
+{
+   Etk_Mdi_Window       *mdi;
+
+   mdi = window->engine_data;
+
+   if (mdi)
+     etk_mdi_window_maximized_set(mdi, maximized);
+}
+
+static Etk_Bool
+_generic_window_maximized_get(Etk_Window *window)
+{
+   Etk_Mdi_Window       *mdi;
+
+   mdi = window->engine_data;
+
+   if (mdi)
+     return etk_mdi_window_maximized_get(mdi);
+   return ETK_FALSE;
+}
+
+static void
+_generic_window_raise(Etk_Window *window)
+{
+   Etk_Widget           *widget;
+
+   widget = window->engine_data;
+
+   if (widget)
+     etk_widget_raise(widget);
+}
+
+static void
+_generic_window_lower(Etk_Window *window)
+{
+   Etk_Widget           *widget;
+
+   widget = window->engine_data;
+
+   if (widget)
+     etk_widget_lower(widget);
+}
+
+static void
+_generic_window_focused_set(Etk_Window *window, Etk_Bool focused)
+{
+   Etk_Widget           *widget;
+
+   widget = window->engine_data;
+
+   if (widget)
+     etk_widget_focus(widget);
+}
+
+static Etk_Bool
+_generic_window_focused_get(Etk_Window *window)
+{
+   Etk_Widget           *widget;
+
+   widget = window->engine_data;
+
+   if (widget)
+     return etk_widget_is_focused(widget);
+   return ETK_FALSE;
+}
+
+static void
+_generic_window_decorated_set(Etk_Window *window, Etk_Bool decorated)
+{
+   Etk_Mdi_Window       *mdi;
+
+   mdi = window->engine_data;
+
+   if (mdi)
+     etk_mdi_window_decorated_set(mdi, decorated);
+}
+
+static Etk_Bool
+_generic_window_decorated_get(Etk_Window *window)
+{
+   Etk_Mdi_Window       *mdi;
+
+   mdi = window->engine_data;
+
+   if (mdi)
+     return etk_mdi_window_decorated_get(mdi);
+   return ETK_FALSE;
+}
+
+static void
+_generic_window_pointer_set(Etk_Window *window, Etk_Pointer_Type pointer_type)
+{
+   const char   *group;
+   int           w, h;
+
+   if (_generic_mouse_pointer)
+     evas_object_del(_generic_mouse_pointer);
+
+   fprintf(stderr, "pointer_type: %i\n", pointer_type);
+
+   switch (pointer_type)
+   {
+      case ETK_POINTER_DND_DROP:
+         group = "etk/wm_pointer_dnd_drop";
+         break;
+      case ETK_POINTER_MOVE:
+         group = "etk/wm_pointer_dnd_move";
+         break;
+      case ETK_POINTER_H_DOUBLE_ARROW:
+         group = "etk/wm_pointer_h_double_arrow";
+         break;
+      case ETK_POINTER_V_DOUBLE_ARROW:
+         group = "etk/wm_pointer_v_double_arrow";
+         break;
+      case ETK_POINTER_RESIZE:
+         group = "etk/wm_pointer_resize";
+         break;
+      case ETK_POINTER_RESIZE_TL:
+         group = "etk/wm_pointer_resize_tl";
+         break;
+      case ETK_POINTER_RESIZE_T:
+         group = "etk/wm_pointer_resize_t";
+         break;
+      case ETK_POINTER_RESIZE_TR:
+         group = "etk/wm_pointer_resize_tr";
+         break;
+      case ETK_POINTER_RESIZE_R:
+         group = "etk/wm_pointer_resize_r";
+         break;
+      case ETK_POINTER_RESIZE_BR:
+         group = "etk/wm_pointer_resize_br";
+         break;
+      case ETK_POINTER_RESIZE_B:
+         group = "etk/wm_pointer_resize_b";
+         break;
+      case ETK_POINTER_RESIZE_BL:
+         group = "etk/wm_pointer_resize_bl";
+         break;
+      case ETK_POINTER_RESIZE_L:
+         group = "etk/wm_pointer_resize_l";
+         break;
+      case ETK_POINTER_TEXT_EDIT:
+         group = "etk/wm_pointer_text_edit";
+         break;
+      case ETK_POINTER_DEFAULT:
+      default:
+         group = "etk/wm_pointer_default";
+         break;
+   }
+
+   _generic_mouse_pointer = edje_object_add(_generic_evas);
+   if (edje_file_group_exists(_wm_theme_file, group))
+     edje_object_file_set(_generic_mouse_pointer, _wm_theme_file, group);
+   else
+     edje_object_file_set(_generic_mouse_pointer, _wm_theme_file, "etk/wm_pointer_default");
+
+   evas_object_pass_events_set(_generic_mouse_pointer, 1);
+   edje_object_size_min_get(_generic_mouse_pointer, &w, &h);
+   evas_object_resize(_generic_mouse_pointer, w, h);
+
+   fprintf(stderr, "cursor: %s\n", group);
+
+   ecore_evas_object_cursor_set(_generic_ecore_evas, _generic_mouse_pointer, 10000, 0, 0);
+}
+
+static void
+_generic_event_callback_set(void (*callback)(Etk_Event_Type event, Etk_Event_Global event_info))
+{
+   _event_callback = callback;
+}
+
+static void
+_generic_mouse_position_get(int *x, int *y)
+{
+   evas_object_geometry_get(_generic_mouse_pointer, x, y, NULL, NULL);
+}
+
+static void
+_generic_mouse_screen_geometry_get(int *x, int *y, int *w, int *h)
+{
+   if (x) *x = 0;
+   if (y) *y = 0;
+   if (w) *w = _width;
+   if (h) *h = _height;
+}
+
+/* Finds the theme called "theme_name" in the subdir wm and returns its path, or NULL on failure */
+static char
+*_theme_find(const char *theme_name)
+{
+   char *home;
+   char  path[PATH_MAX];
+
+   if (!theme_name)
+      return NULL;
+
+   if ((home = getenv("HOME")))
+   {
+      snprintf(path, PATH_MAX, "%s/.e/etk/wm/%s.edj", home, theme_name);
+      if (ecore_file_exists(path))
+         return strdup(path);
+   }
+
+   snprintf(path, PATH_MAX, PACKAGE_DATA_DIR "/wm/%s.edj", theme_name);
+   if (ecore_file_exists(path))
+      return strdup(path);
+
+   return NULL;
+}
diff -Nrau -X exclude.cvs e17-clean/libs/etk/src/engines/ecore_evas_software_sdl/Makefile.am e17-dev/libs/etk/src/engines/ecore_evas_software_sdl/Makefile.am
--- e17-clean/libs/etk/src/engines/ecore_evas_software_sdl/Makefile.am	1970-01-01 01:00:00.000000000 +0100
+++ e17-dev/libs/etk/src/engines/ecore_evas_software_sdl/Makefile.am	2007-10-03 18:21:44.000000000 +0200
@@ -0,0 +1,25 @@
+MAINTAINERCLEANFILES = Makefile Makefile.in
+
+AUTOMAKE_OPTIONS = 1.4 foreign
+
+INCLUDES = -I$(top_srcdir)/src/lib \
+	   -I$(top_srcdir)/src/engines/ecore_evas \
+	   -I$(top_srcdir)/src/engines/ecore_evas_software_sdl \
+	   @EVAS_CFLAGS@ @ECORE_CFLAGS@ @ECORE_SDL_CFLAGS@ -g -Wall
+
+pkgdir = $(libdir)/etk/engines
+
+if BUILD_ENGINE_EE_S_SDL
+
+pkg_LTLIBRARIES = ecore_evas_software_sdl.la
+
+ecore_evas_software_sdl_la_SOURCES = \
+	ecore_evas_software_sdl.c
+
+ecore_evas_software_sdl_la_LIBADD = $(top_builddir)/src/lib/libetk.la
+ecore_evas_software_sdl_la_LDFLAGS = -module -avoid-version \
+				     -L$(top_builddir)/src/lib \
+		                     -L$(top_builddir)/src/lib/.libs
+ecore_evas_software_sdl_la_DEPENDENCIES =
+
+endif
diff -Nrau -X exclude.cvs e17-clean/libs/etk/src/engines/Makefile.am e17-dev/libs/etk/src/engines/Makefile.am
--- e17-clean/libs/etk/src/engines/Makefile.am	2007-07-04 15:00:23.000000000 +0200
+++ e17-dev/libs/etk/src/engines/Makefile.am	2007-10-03 18:20:44.000000000 +0200
@@ -5,4 +5,5 @@
 	  ecore_evas_software_x11 \
 	  ecore_evas_software_x11_16 \
 	  ecore_evas_gl_x11 \
+	  ecore_evas_software_sdl \
           ecore_fb
-------------------------------------------------------------------------
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