[Pkg-e-commits] [SCM] Core abstraction layer for enlightenment DR 0.17 branch, new-svn-snapshot, updated. 0.9.9.050+svn20081201-1-2552-g7d554c2

Albin Tonnerre albin.tonnerre at gmail.com
Mon Aug 3 16:55:48 UTC 2009


The following commit has been merged in the new-svn-snapshot branch:
commit 63ce2f6a70b7ab7b7b1129fe573ba4a7f062119a
Author: Albin Tonnerre <albin.tonnerre at gmail.com>
Date:   Sun Aug 2 18:21:38 2009 +0200

    Import upstream release 0.9.9.062

diff --git a/AUTHORS b/AUTHORS
index d13c2f2..dc97f60 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -23,3 +23,6 @@ Tim Horton <hortont424 at gmail.com>
 Arnaud de Turckheim 'quarium' <quarium at gmail.com>
 Matt Barclay <mbarclay at gmail.com>
 Peter Wehrfritz <peter.wehrfritz at web.de>
+Albin "Lutin" Tonnerre <albin.tonnerre at gmail.com>
+Vincent Torri <vincent.torri at gmail.com>
+Lars Munch <lars at segv.dk>
diff --git a/README b/README
index 75e659f..787af54 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-Ecore 0.9.9.061
+Ecore 0.9.9.062
 
 Requirements:
 -------------
@@ -31,7 +31,7 @@ BUILDING PACKAGES:
 
 RPM: To build rpm packages:
   
-  sudo rpm -ta ecore-0.9.9.061.tar.gz
+  sudo rpm -ta ecore-0.9.9.062.tar.gz
 
 You will find rpm packages in your system /usr/src/redhat/* dirs (note you may
 not need to use sudo or root if you have your own ~/.rpmrc. see rpm documents
@@ -39,11 +39,11 @@ for more details)
 
 DEB: To build deb packages:
 
-  tar zvf ecore-0.9.9.061.tar.gz
-  cd ecore-0.9.9.061
+  tar zvf ecore-0.9.9.062.tar.gz
+  cd ecore-0.9.9.062
   dpkg-buildpackage -us -uc -rfakeroot
   cd ..
-  rm -rf ecore-0.9.9.061
+  rm -rf ecore-0.9.9.062
 
 You will find all the debian source, binary etc. packages put in the directory
 where you first untarred the source tarball.
diff --git a/config.h.in b/config.h.in
index 0e38850..cfc8b74 100644
--- a/config.h.in
+++ b/config.h.in
@@ -54,12 +54,15 @@
 /* Support for Software SDL Engine in Ecore_Evas */
 #undef BUILD_ECORE_EVAS_SOFTWARE_SDL
 
-/* Support for Software Xlib Engine in Ecore_Evas */
+/* Support for Software X11 Engine in Ecore_Evas */
 #undef BUILD_ECORE_EVAS_SOFTWARE_X11
 
-/* Support for Software XCB Engine in Ecore_Evas */
+/* Evas Software XCB Engine Support */
 #undef BUILD_ECORE_EVAS_SOFTWARE_XCB
 
+/* Evas Software Xlib Engine Support */
+#undef BUILD_ECORE_EVAS_SOFTWARE_XLIB
+
 /* Support for Win32 Engine in Ecore_Evas */
 #undef BUILD_ECORE_EVAS_WIN32
 
diff --git a/configure b/configure
index 3e63bb9..834b0b9 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for ecore 0.9.9.061.
+# Generated by GNU Autoconf 2.61 for ecore 0.9.9.062.
 #
 # Report bugs to <enlightenment-devel at lists.sourceforge.net>.
 #
@@ -723,8 +723,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='ecore'
 PACKAGE_TARNAME='ecore'
-PACKAGE_VERSION='0.9.9.061'
-PACKAGE_STRING='ecore 0.9.9.061'
+PACKAGE_VERSION='0.9.9.062'
+PACKAGE_STRING='ecore 0.9.9.062'
 PACKAGE_BUGREPORT='enlightenment-devel at lists.sourceforge.net'
 
 ac_unique_file="configure.ac"
@@ -1673,7 +1673,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures ecore 0.9.9.061 to adapt to many kinds of systems.
+\`configure' configures ecore 0.9.9.062 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1747,7 +1747,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of ecore 0.9.9.061:";;
+     short | recursive ) echo "Configuration of ecore 0.9.9.062:";;
    esac
   cat <<\_ACEOF
 
@@ -1783,10 +1783,10 @@ Optional Features:
                           disable Software Buffer support in the ecore_evas
                           module.
   --enable-ecore-evas-software-x11
-                          enable Software Xlib support in the ecore_evas
+                          enable Software X11 support in the ecore_evas
                           module.
   --disable-ecore-evas-software-x11
-                          disable Software Xlib support in the ecore_evas
+                          disable Software X11 support in the ecore_evas
                           module.
   --enable-ecore-evas-xrender-x11
                           enable XRender Xlib support in the ecore_evas
@@ -1805,12 +1805,6 @@ Optional Features:
   --disable-ecore-evas-software-16-x11
                           disable Software Xlib 16 bits support in the
                           ecore_evas module.
-  --enable-ecore-evas-software-xcb
-                          enable Software XCB support in the ecore_evas
-                          module.
-  --disable-ecore-evas-software-xcb
-                          disable Software XCB support in the ecore_evas
-                          module.
   --enable-ecore-evas-xrender-xcb
                           enable XRender XCB support in the ecore_evas module.
   --disable-ecore-evas-xrender-xcb
@@ -2037,7 +2031,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-ecore configure 0.9.9.061
+ecore configure 0.9.9.062
 generated by GNU Autoconf 2.61
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -2051,7 +2045,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by ecore $as_me 0.9.9.061, which was
+It was created by ecore $as_me 0.9.9.062, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   $ $0 $@
@@ -3893,7 +3887,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='ecore'
- VERSION='0.9.9.061'
+ VERSION='0.9.9.062'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -5149,13 +5143,13 @@ if test "${lt_cv_nm_interface+set}" = set; then
 else
   lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:5152: $ac_compile\"" >&5)
+  (eval echo "\"\$as_me:5146: $ac_compile\"" >&5)
   (eval "$ac_compile" 2>conftest.err)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:5155: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval echo "\"\$as_me:5149: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:5158: output\"" >&5)
+  (eval echo "\"\$as_me:5152: output\"" >&5)
   cat conftest.out >&5
   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
     lt_cv_nm_interface="MS dumpbin"
@@ -6265,7 +6259,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 6268 "configure"' > conftest.$ac_ext
+  echo '#line 6262 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -8114,11 +8108,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8117: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8111: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8121: \$? = $ac_status" >&5
+   echo "$as_me:8115: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -8438,11 +8432,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8441: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8435: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8445: \$? = $ac_status" >&5
+   echo "$as_me:8439: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -8543,11 +8537,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8546: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8540: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:8550: \$? = $ac_status" >&5
+   echo "$as_me:8544: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -8598,11 +8592,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8601: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8595: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:8605: \$? = $ac_status" >&5
+   echo "$as_me:8599: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -11359,7 +11353,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11362 "configure"
+#line 11356 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11459,7 +11453,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11462 "configure"
+#line 11456 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11698,7 +11692,7 @@ SNAP=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $4);}'`
 version_info=`expr $VMAJ + $VMIN`":$VMIC:$VMIN"
 
 
-release="ver-svn-02"
+release="ver-svn-03"
 case "$host_os" in
    mingw32ce* | cegcc*)
       ;;
@@ -15457,11 +15451,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15460: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15454: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:15464: \$? = $ac_status" >&5
+   echo "$as_me:15458: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -15556,11 +15550,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15559: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15553: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:15563: \$? = $ac_status" >&5
+   echo "$as_me:15557: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -15608,11 +15602,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15611: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15605: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:15615: \$? = $ac_status" >&5
+   echo "$as_me:15609: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -17294,7 +17288,8 @@ if test "x${efl_enable_doc}" = "xyes" ; then
 
 # Check whether --with-doxygen was given.
 if test "${with_doxygen+set}" = set; then
-  withval=$with_doxygen;       efl_doxygen=${withval}
+  withval=$with_doxygen;
+      efl_doxygen=${withval}
        # Extract the first word of "${efl_doxygen}", so it can be a program name with args.
 set dummy ${efl_doxygen}; ac_word=$2
 { echo "$as_me:$LINENO: checking for $ac_word" >&5
@@ -25976,7 +25971,6 @@ sed 's/^/| /' conftest.$ac_ext >&5
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
 fi
 
 
@@ -27585,7 +27579,7 @@ fi
 
 
    if test "x${have_ecore_con}" = "xyes" ; then
-      requirements_ecore_file="${requirements_ecore_con} ${requirements_ecore_file}"
+      requirements_ecore_file="ecore-con ${requirements_ecore_file}"
    fi
 fi
 
@@ -29970,11 +29964,6 @@ fi
 
 # ecore_evas_software_x11
 
-ecore_evas_xlib_deps="no"
-if test "x${have_ecore_x}" = "xyes" -a "x${have_ecore_x_xlib}" = "xyes" ; then
-   ecore_evas_xlib_deps="yes"
-fi
-
 
 
 have_ecore_evas_software_x11="no"
@@ -29994,12 +29983,12 @@ fi
 
 fi
 
-{ echo "$as_me:$LINENO: checking whether ecore_evas Software Xlib support is to be built" >&5
-echo $ECHO_N "checking whether ecore_evas Software Xlib support is to be built... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: checking whether ecore_evas Software X11 support is to be built" >&5
+echo $ECHO_N "checking whether ecore_evas Software X11 support is to be built... $ECHO_C" >&6; }
 { echo "$as_me:$LINENO: result: ${want_module}" >&5
 echo "${ECHO_T}${want_module}" >&6; }
 
-if test "x${ecore_evas_xlib_deps}" = "xyes" -a \
+if test "x${have_ecore_x}" = "xyes" -a \
         "x$have_ecore_evas" = "xyes" -a \
         "x$want_module" = "xyes" ; then
    if test -n "$PKG_CONFIG" && \
@@ -30019,8 +30008,8 @@ _ACEOF
 fi
 fi
 
-{ echo "$as_me:$LINENO: checking whether ecore_evas Software Xlib support is built" >&5
-echo $ECHO_N "checking whether ecore_evas Software Xlib support is built... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: checking whether ecore_evas Software X11 support is built" >&5
+echo $ECHO_N "checking whether ecore_evas Software X11 support is built... $ECHO_C" >&6; }
 { echo "$as_me:$LINENO: result: $have_ecore_evas_software_x11" >&5
 echo "${ECHO_T}$have_ecore_evas_software_x11" >&6; }
 
@@ -30034,6 +30023,27 @@ fi
 
 
 
+have_ecore_evas_software_xlib=no"
+have_ecore_evas_software_xcb=no"
+if test "x$have_ecore_evas_software_x11" = "xyes" ; then
+   have_ecore_evas_software_xlib=`${PKG_CONFIG} --variable=Xlib evas-software-x11`
+   if test "x${have_ecore_evas_software_xlib}" = "xyes" -a "x${have_ecore_x_xlib}" = "xyes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define BUILD_ECORE_EVAS_SOFTWARE_XLIB 1
+_ACEOF
+
+   fi
+   have_ecore_evas_software_xcb=`${PKG_CONFIG} --variable=XCB evas-software-x11`
+   if test "x$have_ecore_evas_software_xcb" = "xyes" -a "x${have_ecore_x_xcb}" = "xyes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define BUILD_ECORE_EVAS_SOFTWARE_XCB 1
+_ACEOF
+
+   fi
+fi
+
 # ecore_evas_xrender_x11
 
 
@@ -30060,7 +30070,7 @@ echo $ECHO_N "checking whether ecore_evas XRender Xlib support is to be built...
 { echo "$as_me:$LINENO: result: ${want_module}" >&5
 echo "${ECHO_T}${want_module}" >&6; }
 
-if test "x${ecore_evas_xlib_deps}" = "xyes" -a \
+if test "x${have_ecore_x_xlib}" = "xyes" -a \
         "x$have_ecore_evas" = "xyes" -a \
         "x$want_module" = "xyes" ; then
    if test -n "$PKG_CONFIG" && \
@@ -30121,7 +30131,7 @@ echo $ECHO_N "checking whether ecore_evas OpenGL Xlib support is to be built...
 { echo "$as_me:$LINENO: result: ${want_module}" >&5
 echo "${ECHO_T}${want_module}" >&6; }
 
-if test "x${ecore_evas_xlib_deps}" = "xyes" -a \
+if test "x${have_ecore_x_xlib}" = "xyes" -a \
         "x$have_ecore_evas" = "xyes" -a \
         "x$want_module" = "xyes" ; then
    if test -n "$PKG_CONFIG" && \
@@ -30182,7 +30192,7 @@ echo $ECHO_N "checking whether ecore_evas Software Xlib 16 bits support is to be
 { echo "$as_me:$LINENO: result: ${want_module}" >&5
 echo "${ECHO_T}${want_module}" >&6; }
 
-if test "x${ecore_evas_xlib_deps}" = "xyes" -a \
+if test "x${have_ecore_x_xlib}" = "xyes" -a \
         "x$have_ecore_evas" = "xyes" -a \
         "x$want_module" = "xyes" ; then
    if test -n "$PKG_CONFIG" && \
@@ -30217,72 +30227,6 @@ fi
 
 
 
-# ecore_evas_software_xcb
-
-ecore_evas_xcb_deps="no"
-if test "x${have_ecore_x}" = "xyes" -a "x${have_ecore_x_xcb}" = "xyes" ; then
-   ecore_evas_xcb_deps="yes"
-fi
-
-
-
-have_ecore_evas_software_xcb="no"
-want_module="${want_ecore_evas_software_xcb}"
-
-if test "x${want_module}" = "xno" ; then
-   # Check whether --enable-ecore-evas-software-xcb was given.
-if test "${enable_ecore_evas_software_xcb+set}" = set; then
-  enableval=$enable_ecore_evas_software_xcb; want_module=$enableval
-fi
-
-else
-   # Check whether --enable-ecore-evas-software-xcb was given.
-if test "${enable_ecore_evas_software_xcb+set}" = set; then
-  enableval=$enable_ecore_evas_software_xcb; want_module=$enableval
-fi
-
-fi
-
-{ echo "$as_me:$LINENO: checking whether ecore_evas Software XCB support is to be built" >&5
-echo $ECHO_N "checking whether ecore_evas Software XCB support is to be built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${want_module}" >&5
-echo "${ECHO_T}${want_module}" >&6; }
-
-if test "x${ecore_evas_xcb_deps}" = "xyes" -a \
-        "x$have_ecore_evas" = "xyes" -a \
-        "x$want_module" = "xyes" ; then
-   if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evas-software-xcb\"") >&5
-  ($PKG_CONFIG --exists --print-errors "evas-software-xcb") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-
-
-cat >>confdefs.h <<\_ACEOF
-#define BUILD_ECORE_EVAS_SOFTWARE_XCB 1
-_ACEOF
-
-       have_ecore_evas_software_xcb="yes"
-
-fi
-fi
-
-{ echo "$as_me:$LINENO: checking whether ecore_evas Software XCB support is built" >&5
-echo $ECHO_N "checking whether ecore_evas Software XCB support is built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $have_ecore_evas_software_xcb" >&5
-echo "${ECHO_T}$have_ecore_evas_software_xcb" >&6; }
-
-if test "x$have_ecore_evas_software_xcb" = "xyes" ; then
-   :
-else
-   :
-fi
-
-
-
-
-
 # ecore_evas_xrender_xcb
 
 
@@ -31590,7 +31534,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by ecore $as_me 0.9.9.061, which was
+This file was extended by ecore $as_me 0.9.9.062, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -31643,7 +31587,7 @@ Report bugs to <bug-autoconf at gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-ecore config.status 0.9.9.061
+ecore config.status 0.9.9.062
 configured by $0, generated by GNU Autoconf 2.61,
   with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -34190,10 +34134,18 @@ echo
 echo "  Ecore_Evas...................: $have_ecore_evas"
 if test "x${have_ecore_evas}" = "xyes" ; then
   echo "    Software Memory Buffer.....: $have_ecore_evas_software_buffer"
-  echo "    Software X11...............: $have_ecore_evas_software_x11"
+  if test "x${have_ecore_evas_software_x11}" = "xyes" ; then
+    if test "x${have_ecore_evas_software_xlib}" = "xyes" ; then
+      echo "    Software X11...............: $have_ecore_evas_software_x11 (Xlib)"
+    fi
+    if test "x${have_ecore_evas_software_xcb}" = "xyes" ; then
+      echo "    Software X11...............: $have_ecore_evas_software_x11 (XCB)"
+    fi
+  else
+    echo "    Software X11...............: $have_ecore_evas_software_x11"
+  fi
   echo "    XRender X11................: $have_ecore_evas_xrender_x11"
   echo "    OpenGL X11.................: $have_ecore_evas_opengl_x11"
-  echo "    Software XCB...............: $have_ecore_evas_software_xcb"
   echo "    XRender XCB................: $have_ecore_evas_xrender_xcb"
   echo "    Software GDI...............: $have_ecore_evas_software_gdi"
   echo "    Software DirectDraw........: $have_ecore_evas_software_ddraw"
diff --git a/configure.ac b/configure.ac
index 8dee24d..e548f97 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
 # get rid of that stupid cache mechanism
 rm -f config.cache
 
-AC_INIT([ecore], [0.9.9.061], [enlightenment-devel at lists.sourceforge.net])
+AC_INIT([ecore], [0.9.9.062], [enlightenment-devel at lists.sourceforge.net])
 AC_PREREQ([2.52])
 AC_CONFIG_SRCDIR([configure.ac])
 AC_CONFIG_MACRO_DIR([m4])
@@ -24,7 +24,7 @@ SNAP=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $4);}'`
 version_info=`expr $VMAJ + $VMIN`":$VMIC:$VMIN"
 AC_SUBST(version_info)
 
-release="ver-svn-02"
+release="ver-svn-03"
 case "$host_os" in
    mingw32ce* | cegcc*)
       ;;
@@ -796,7 +796,7 @@ if test "x${have_ecore_file}" = "xyes" ; then
    ECORE_CHECK_INOTIFY([${want_inotify}], [have_inotify="yes"], [have_inotify="no"])
 
    if test "x${have_ecore_con}" = "xyes" ; then
-      requirements_ecore_file="${requirements_ecore_con} ${requirements_ecore_file}"
+      requirements_ecore_file="ecore-con ${requirements_ecore_file}"
    fi
 fi
 
@@ -898,48 +898,44 @@ ECORE_EVAS_CHECK_MODULE([software-buffer],
 
 # ecore_evas_software_x11
 
-ecore_evas_xlib_deps="no"
-if test "x${have_ecore_x}" = "xyes" -a "x${have_ecore_x_xlib}" = "xyes" ; then
-   ecore_evas_xlib_deps="yes"
-fi
-
 ECORE_EVAS_CHECK_MODULE([software-x11],
    [${want_ecore_evas_software_x11}],
-   [Software Xlib],
-   [${ecore_evas_xlib_deps}])
+   [Software X11],
+   [${have_ecore_x}])
+
+have_ecore_evas_software_xlib=no"
+have_ecore_evas_software_xcb=no"
+if test "x$have_ecore_evas_software_x11" = "xyes" ; then
+   have_ecore_evas_software_xlib=`${PKG_CONFIG} --variable=Xlib evas-software-x11`
+   if test "x${have_ecore_evas_software_xlib}" = "xyes" -a "x${have_ecore_x_xlib}" = "xyes" ; then
+      AC_DEFINE(BUILD_ECORE_EVAS_SOFTWARE_XLIB, 1, [Evas Software Xlib Engine Support])
+   fi
+   have_ecore_evas_software_xcb=`${PKG_CONFIG} --variable=XCB evas-software-x11`
+   if test "x$have_ecore_evas_software_xcb" = "xyes" -a "x${have_ecore_x_xcb}" = "xyes" ; then
+      AC_DEFINE(BUILD_ECORE_EVAS_SOFTWARE_XCB, 1, [Evas Software XCB Engine Support])
+   fi
+fi
 
 # ecore_evas_xrender_x11
 
 ECORE_EVAS_CHECK_MODULE([xrender-x11],
    [${want_ecore_evas_xrender_x11}],
    [XRender Xlib],
-   [${ecore_evas_xlib_deps}])
+   [${have_ecore_x_xlib}])
 
 # ecore_evas_opengl_x11
 
 ECORE_EVAS_CHECK_MODULE([opengl-x11],
    [${want_ecore_evas_opengl_x11}],
    [OpenGL Xlib],
-   [${ecore_evas_xlib_deps}])
+   [${have_ecore_x_xlib}])
 
 # ecore_evas_software_x11 16 bits
 
 ECORE_EVAS_CHECK_MODULE([software-16-x11],
    [${want_ecore_evas_software_16_x11}],
    [Software Xlib 16 bits],
-   [${ecore_evas_xlib_deps}])
-
-# ecore_evas_software_xcb
-
-ecore_evas_xcb_deps="no"
-if test "x${have_ecore_x}" = "xyes" -a "x${have_ecore_x_xcb}" = "xyes" ; then
-   ecore_evas_xcb_deps="yes"
-fi
-
-ECORE_EVAS_CHECK_MODULE([software-xcb],
-   [${want_ecore_evas_software_xcb}],
-   [Software XCB],
-   [${ecore_evas_xcb_deps}])
+   [${have_ecore_x_xlib}])
 
 # ecore_evas_xrender_xcb
 
@@ -1203,10 +1199,18 @@ echo
 echo "  Ecore_Evas...................: $have_ecore_evas"
 if test "x${have_ecore_evas}" = "xyes" ; then
   echo "    Software Memory Buffer.....: $have_ecore_evas_software_buffer"
-  echo "    Software X11...............: $have_ecore_evas_software_x11"
+  if test "x${have_ecore_evas_software_x11}" = "xyes" ; then
+    if test "x${have_ecore_evas_software_xlib}" = "xyes" ; then
+      echo "    Software X11...............: $have_ecore_evas_software_x11 (Xlib)"
+    fi
+    if test "x${have_ecore_evas_software_xcb}" = "xyes" ; then
+      echo "    Software X11...............: $have_ecore_evas_software_x11 (XCB)"
+    fi
+  else
+    echo "    Software X11...............: $have_ecore_evas_software_x11"
+  fi
   echo "    XRender X11................: $have_ecore_evas_xrender_x11"
   echo "    OpenGL X11.................: $have_ecore_evas_opengl_x11"
-  echo "    Software XCB...............: $have_ecore_evas_software_xcb"
   echo "    XRender XCB................: $have_ecore_evas_xrender_xcb"
   echo "    Software GDI...............: $have_ecore_evas_software_gdi"
   echo "    Software DirectDraw........: $have_ecore_evas_software_ddraw"
diff --git a/ecore.spec b/ecore.spec
index 8b2df00..1bd588f 100644
--- a/ecore.spec
+++ b/ecore.spec
@@ -37,7 +37,7 @@
 
 Summary: Enlightened Core X interface library
 Name: ecore
-Version: 0.9.9.061
+Version: 0.9.9.062
 Release: 0.%(date '+%Y%m%d')
 License: BSD
 Group: User Interface/X
diff --git a/m4/ac_attribute.m4 b/m4/ac_attribute.m4
index 3926d23..23479a9 100644
--- a/m4/ac_attribute.m4
+++ b/m4/ac_attribute.m4
@@ -31,8 +31,7 @@ int foo(int x __attribute__ ((unused)))
        [],
        [ac_cv___attribute__="yes"],
        [ac_cv___attribute__="no"]
-    )]
-)
+    )])
 
 AC_MSG_RESULT($ac_cv___attribute__)
 
@@ -44,3 +43,5 @@ if test "x${ac_cv___attribute__}" = "xyes" ; then
 fi
 
 ])
+
+dnl End of ac_attribute.m4
diff --git a/m4/efl_doxygen.m4 b/m4/efl_doxygen.m4
index dd6bc3e..d83ed68 100644
--- a/m4/efl_doxygen.m4
+++ b/m4/efl_doxygen.m4
@@ -32,9 +32,7 @@ AC_MSG_RESULT([${efl_enable_doc}])
 
 if test "x${efl_enable_doc}" = "xyes" ; then
 
-dnl
 dnl Specify the file name, without path
-dnl
 
    efl_doxygen="doxygen"
 
@@ -42,9 +40,9 @@ dnl
       [AC_HELP_STRING(
           [--with-doxygen=FILE],
           [doxygen program to use @<:@default=doxygen@:>@])],
-dnl
+
 dnl Check the given doxygen program.
-dnl
+
       [efl_doxygen=${withval}
        AC_CHECK_PROG([efl_have_doxygen],
           [${efl_doxygen}],
@@ -96,4 +94,4 @@ fi
 
 ])
 
-dnl End of doxygen.m4
+dnl End of efl_doxygen.m4
diff --git a/src/lib/ecore/Ecore.h b/src/lib/ecore/Ecore.h
index 06f5cee..f6c8a5f 100644
--- a/src/lib/ecore/Ecore.h
+++ b/src/lib/ecore/Ecore.h
@@ -51,6 +51,8 @@
 
 #ifdef _WIN32
 # include <winsock2.h>
+#elif defined (__FreeBSD__) && (__FreeBSD_version >= 420001)
+# include <sys/select.h>
 #else
 # include <sys/types.h>
 # include <sys/time.h>
diff --git a/src/lib/ecore/Ecore_Getopt.h b/src/lib/ecore/Ecore_Getopt.h
index 3ce4436..5f0ac4b 100644
--- a/src/lib/ecore/Ecore_Getopt.h
+++ b/src/lib/ecore/Ecore_Getopt.h
@@ -149,6 +149,7 @@ extern "C" {
 	const char *const *choices; /* NULL terminated. */
 	const Ecore_Getopt_Type append_type;
 	const Ecore_Getopt_Desc_Callback callback;
+	const void *dummy;
      } action_param;
   };
 
@@ -328,7 +329,8 @@ extern "C" {
        {.append_type = type}}
 
 #define ECORE_GETOPT_COUNT(shortname, longname, help)		        \
-  {shortname, longname, help, NULL, ECORE_GETOPT_ACTION_COUNT}
+  {shortname, longname, help, NULL, ECORE_GETOPT_ACTION_COUNT,		\
+       {.dummy = NULL}}
 
 #define ECORE_GETOPT_CALLBACK_FULL(shortname, longname, help, metavar, callback_func, callback_data, argument_requirement, default_value) \
   {shortname, longname, help, metavar, ECORE_GETOPT_ACTION_CALLBACK,	\
@@ -347,17 +349,25 @@ extern "C" {
 
 #define ECORE_GETOPT_HELP(shortname, longname)		                \
   {shortname, longname, "show this message.", NULL,			\
-       ECORE_GETOPT_ACTION_HELP}
+       ECORE_GETOPT_ACTION_HELP,					\
+       {.dummy = NULL}}
+
 #define ECORE_GETOPT_VERSION(shortname, longname)	                \
   {shortname, longname, "show program version.", NULL,			\
-       ECORE_GETOPT_ACTION_VERSION}
+       ECORE_GETOPT_ACTION_VERSION,					\
+       {.dummy = NULL}}
+
 #define ECORE_GETOPT_COPYRIGHT(shortname, longname)	                \
   {shortname, longname, "show copyright.", NULL,			\
-       ECORE_GETOPT_ACTION_COPYRIGHT}
+       ECORE_GETOPT_ACTION_COPYRIGHT,					\
+       {.dummy = NULL}}
+
 #define ECORE_GETOPT_LICENSE(shortname, longname)	                \
   {shortname, longname, "show license.", NULL,				\
-       ECORE_GETOPT_ACTION_LICENSE}
-#define ECORE_GETOPT_SENTINEL {0, NULL}
+       ECORE_GETOPT_ACTION_LICENSE,					\
+       {.dummy = NULL}}
+
+#define ECORE_GETOPT_SENTINEL {0, NULL, NULL, NULL, 0, {.dummy = NULL}}
 
 #define ECORE_GETOPT_VALUE_STR(val)      {.strp = &(val)}
 #define ECORE_GETOPT_VALUE_BOOL(val)     {.boolp = &(val)}
diff --git a/src/lib/ecore/ecore_anim.c b/src/lib/ecore/ecore_anim.c
index 75d1c99..d89e330 100644
--- a/src/lib/ecore/ecore_anim.c
+++ b/src/lib/ecore/ecore_anim.c
@@ -46,7 +46,7 @@ ecore_animator_add(int (*func) (void *data), const void *data)
    ECORE_MAGIC_SET(animator, ECORE_MAGIC_ANIMATOR);
    animator->func = func;
    animator->data = (void *)data;
-   animators = _ecore_list2_append(animators, animator);
+   animators = (Ecore_Animator *) eina_inlist_append(EINA_INLIST_GET(animators), EINA_INLIST_GET(animator));
    if (!timer)
      timer = ecore_timer_add(animators_frametime, _ecore_animator, NULL);
    return animator;
@@ -125,7 +125,7 @@ _ecore_animator_shutdown(void)
 	Ecore_Animator *animator;
 
 	animator = animators;
-	animators = _ecore_list2_remove(animators, animator);
+	animators = (Ecore_Animator *) eina_inlist_remove(EINA_INLIST_GET(animators), EINA_INLIST_GET(animators));
 	ECORE_MAGIC_SET(animator, ECORE_MAGIC_NONE);
 	free(animator);
      }
@@ -134,14 +134,10 @@ _ecore_animator_shutdown(void)
 static int
 _ecore_animator(void *data __UNUSED__)
 {
-   Ecore_List2 *l;
+   Ecore_Animator *animator;
 
-   for (l = (Ecore_List2 *)animators; l;)
+   EINA_INLIST_FOREACH(animators, animator)
      {
-	Ecore_Animator *animator;
-
-	animator = (Ecore_Animator *)l;
-	l = l->next;
 	if (!animator->delete_me)
 	  {
 	     if (!animator->func(animator->data))
@@ -153,15 +149,14 @@ _ecore_animator(void *data __UNUSED__)
      }
    if (animators_delete_me)
      {
-	for (l = (Ecore_List2 *)animators; l;)
+	Ecore_Animator *l;
+	for(l = animators; l;)
 	  {
-	     Ecore_Animator *animator;
-
-	     animator = (Ecore_Animator *)l;
-	     l = l->next;
+	     animator = l;
+	     l = (Ecore_Animator *) EINA_INLIST_GET(l)->next;
 	     if (animator->delete_me)
 	       {
-		  animators = _ecore_list2_remove(animators, animator);
+		  animators = (Ecore_Animator *) eina_inlist_remove(EINA_INLIST_GET(animators), EINA_INLIST_GET(animator));
 		  ECORE_MAGIC_SET(animator, ECORE_MAGIC_NONE);
 		  free(animator);
 		  animators_delete_me--;
diff --git a/src/lib/ecore/ecore_events.c b/src/lib/ecore/ecore_events.c
index 9b69b17..fd69557 100644
--- a/src/lib/ecore/ecore_events.c
+++ b/src/lib/ecore/ecore_events.c
@@ -17,7 +17,7 @@ static Ecore_Event         *events = NULL;
 static Ecore_Event_Handler **event_handlers = NULL;
 static int                   event_handlers_num = 0;
 static int                   event_handlers_alloc_num = 0;
-static Ecore_List2_Data     *event_handlers_delete_list = NULL;
+static Eina_List            *event_handlers_delete_list = NULL;
 
 static Ecore_Event_Filter  *event_filters = NULL;
 static int                  event_filters_delete_me = 0;
@@ -87,7 +87,7 @@ ecore_event_handler_add(int type, int (*func) (void *data, int type, void *event
 	       event_handlers[i] = NULL;
 	  }
      }
-   event_handlers[type] = _ecore_list2_append(event_handlers[type], eh);
+   event_handlers[type] = (Ecore_Event_Handler *) eina_inlist_append(EINA_INLIST_GET(event_handlers[type]), EINA_INLIST_GET(eh));
    return eh;
 }
 
@@ -104,8 +104,6 @@ ecore_event_handler_add(int type, int (*func) (void *data, int type, void *event
 EAPI void *
 ecore_event_handler_del(Ecore_Event_Handler *event_handler)
 {
-   Ecore_List2_Data *node;
-
    if (!ECORE_MAGIC_CHECK(event_handler, ECORE_MAGIC_EVENT_HANDLER))
      {
 	ECORE_MAGIC_FAIL(event_handler, ECORE_MAGIC_EVENT_HANDLER,
@@ -113,9 +111,7 @@ ecore_event_handler_del(Ecore_Event_Handler *event_handler)
 	return NULL;
      }
    event_handler->delete_me = 1;
-   node = calloc(1, sizeof(Ecore_List2_Data));
-   node->data = event_handler;
-   event_handlers_delete_list = _ecore_list2_append(event_handlers_delete_list, node);
+   event_handlers_delete_list = eina_list_append(event_handlers_delete_list, event_handler);
    return event_handler->data;
 }
 
@@ -226,7 +222,7 @@ ecore_event_filter_add(void * (*func_start) (void *data), int (*func_filter) (vo
    ef->func_filter = func_filter;
    ef->func_end = func_end;
    ef->data = (void *)data;
-   event_filters = _ecore_list2_append(event_filters, ef);
+   event_filters = (Ecore_Event_Filter *) eina_inlist_append(EINA_INLIST_GET(event_filters), EINA_INLIST_GET(ef));
    return ef;
 }
 
@@ -296,38 +292,28 @@ void
 _ecore_event_shutdown(void)
 {
    int i;
+   Ecore_Event_Handler *eh;
+   Ecore_Event_Filter *ef;
 
    while (events) _ecore_event_del(events);
    for (i = 0; i < event_handlers_num; i++)
      {
-	while (event_handlers[i])
+	while ((eh = event_handlers[i]))
 	  {
-	     Ecore_Event_Handler *eh;
-
-	     eh = event_handlers[i];
-	     event_handlers[i] = _ecore_list2_remove(event_handlers[i], eh);
+	     event_handlers[i] = (Ecore_Event_Handler *) eina_inlist_remove(EINA_INLIST_GET(event_handlers[i]), EINA_INLIST_GET(event_handlers[i]));
 	     ECORE_MAGIC_SET(eh, ECORE_MAGIC_NONE);
-	     free(eh);
+	     if (!eh->delete_me) free(eh);
 	  }
      }
-   while (event_handlers_delete_list)
-     {
-	Ecore_List2_Data *ehd;
-
-	ehd = event_handlers_delete_list;
-	event_handlers_delete_list = _ecore_list2_remove(event_handlers_delete_list, ehd);
-	free(ehd);
-     }
+   EINA_LIST_FREE(event_handlers_delete_list, eh)
+     free(eh);
    if (event_handlers) free(event_handlers);
    event_handlers = NULL;
    event_handlers_num = 0;
    event_handlers_alloc_num = 0;
-   while (event_filters)
+   while ((ef = event_filters))
      {
-	Ecore_Event_Filter *ef;
-
-	ef = event_filters;
-	event_filters = _ecore_list2_remove(event_filters, ef);
+	event_filters = (Ecore_Event_Filter *) eina_inlist_remove(EINA_INLIST_GET(event_filters), EINA_INLIST_GET(event_filters));
 	ECORE_MAGIC_SET(ef, ECORE_MAGIC_NONE);
 	free(ef);
      }
@@ -353,7 +339,7 @@ _ecore_event_add(int type, void *ev, void (*func_free) (void *data, void *ev), v
    e->event = ev;
    e->func_free = func_free;
    e->data = data;
-   events = _ecore_list2_append(events, e);
+   events = (Ecore_Event *) eina_inlist_append(EINA_INLIST_GET(events), EINA_INLIST_GET(e));
    events_num++;
    return e;
 }
@@ -365,7 +351,7 @@ _ecore_event_del(Ecore_Event *event)
 
    data = event->data;
    if (event->func_free) event->func_free(event->data, event->event);
-   events = _ecore_list2_remove(events, event);
+   events = (Ecore_Event *) eina_inlist_remove(EINA_INLIST_GET(events), EINA_INLIST_GET(event));
    ECORE_MAGIC_SET(event, ECORE_MAGIC_NONE);
    free(event);
    events_num--;
@@ -375,23 +361,19 @@ _ecore_event_del(Ecore_Event *event)
 void
 _ecore_event_call(void)
 {
-   Ecore_List2 *l, *ll;
    Ecore_Event *e;
    Ecore_Event_Filter *ef;
    Ecore_Event_Handler *eh;
-   Ecore_List2_Data *ehd;
    int handle_count;
 
-   for (l = (Ecore_List2 *)event_filters; l; l = l->next)
+   EINA_INLIST_FOREACH(event_filters, ef)
      {
-	ef = (Ecore_Event_Filter *)l;
 	if (!ef->delete_me)
 	  {
 	     if (ef->func_start)
 	       ef->loop_data = ef->func_start(ef->data);
-	     for (ll = (Ecore_List2 *)events; ll; ll = ll->next)
+	     EINA_INLIST_FOREACH(events, e)
 	       {
-		  e = (Ecore_Event *)ll;
 		  if (!ef->func_filter(ef->loop_data, ef->data,
 				       e->type, e->event))
 		    {
@@ -405,13 +387,14 @@ _ecore_event_call(void)
      }
    if (event_filters_delete_me)
      {
-	for (l = (Ecore_List2 *)event_filters; l;)
+     	Ecore_Event_Filter *l;
+	EINA_INLIST_FOREACH(event_filters, l)
 	  {
-	     ef = (Ecore_Event_Filter *)l;
-	     l = l->next;
+	     ef = l;
+	     l = (Ecore_Event_Filter *) EINA_INLIST_GET(l)->next;
 	     if (ef->delete_me)
 	       {
-		  event_filters = _ecore_list2_remove(event_filters, ef);
+		  event_filters = (Ecore_Event_Filter *) eina_inlist_remove(EINA_INLIST_GET(event_filters), EINA_INLIST_GET(ef));
 		  ECORE_MAGIC_SET(ef, ECORE_MAGIC_NONE);
 		  free(ef);
 	       }
@@ -419,9 +402,8 @@ _ecore_event_call(void)
 	event_filters_delete_me = 0;
      }
 //   printf("EVENT BATCH...\n");
-   for (l = (Ecore_List2 *)events; l; l = l->next)
+   EINA_INLIST_FOREACH(events, e)
      {
-	e = (Ecore_Event *)l;
 	if (!e->delete_me)
 	  {
 	     handle_count = 0;
@@ -430,9 +412,8 @@ _ecore_event_call(void)
 //	     printf("HANDLE ev type %i, %p\n", e->type, e->event);
 	     if ((e->type >= 0) && (e->type < event_handlers_num))
 	       {
-		  for (ll = (Ecore_List2 *)event_handlers[e->type]; ll; ll = ll->next)
+		  EINA_INLIST_FOREACH(event_handlers[e->type], eh)
 		    {
-		       eh = (Ecore_Event_Handler *)ll;
 		       if (!eh->delete_me)
 			 {
 			    handle_count++;
@@ -451,16 +432,13 @@ _ecore_event_call(void)
    ecore_raw_event_type = ECORE_EVENT_NONE;
    ecore_raw_event_event = NULL;
 
-   while (events) _ecore_event_del(events);
-   while (event_handlers_delete_list)
+   while (events) _ecore_event_del((Ecore_Event *) events);
+   EINA_LIST_FREE(event_handlers_delete_list, eh)
      {
-	ehd = event_handlers_delete_list;
-	eh = ehd->data;
-	event_handlers[eh->type] = _ecore_list2_remove(event_handlers[eh->type], eh);
-	event_handlers_delete_list = _ecore_list2_remove(event_handlers_delete_list, ehd);
+	event_handlers[eh->type] = (Ecore_Event_Handler *) eina_inlist_remove(EINA_INLIST_GET(event_handlers[eh->type]), EINA_INLIST_GET(eh));
+	event_handlers_delete_list = eina_list_remove(event_handlers_delete_list, eh);
 	ECORE_MAGIC_SET(eh, ECORE_MAGIC_NONE);
 	free(eh);
-	free(ehd);
      }
 }
 
diff --git a/src/lib/ecore/ecore_exe.c b/src/lib/ecore/ecore_exe.c
index 8bb4c61..55e512e 100644
--- a/src/lib/ecore/ecore_exe.c
+++ b/src/lib/ecore/ecore_exe.c
@@ -582,7 +582,7 @@ ecore_exe_pipe_run(const char *exe_cmd, Ecore_Exe_Flags flags, const void *data)
 		       }
 		    }
 
-		  exes = _ecore_list2_append(exes, exe);
+		  exes = (Ecore_Exe *) eina_inlist_append(EINA_INLIST_GET(exes), EINA_INLIST_GET(exe));
 		  n = 0;
 	       }
 	     else
@@ -959,7 +959,7 @@ ecore_exe_free(Ecore_Exe * exe)
    IF_FREE(exe->error_data_buf);
    IF_FREE(exe->cmd);
 
-   exes = _ecore_list2_remove(exes, exe);
+   exes = (Ecore_Exe *) eina_inlist_remove(EINA_INLIST_GET(exes), EINA_INLIST_GET(exe));
    ECORE_MAGIC_SET(exe, ECORE_MAGIC_NONE);
    IF_FREE(exe->tag);
    free(exe);
@@ -1302,13 +1302,9 @@ _ecore_exe_shutdown(void)
 Ecore_Exe          *
 _ecore_exe_find(pid_t pid)
 {
-   Ecore_List2        *l;
-
-   for (l = (Ecore_List2 *) exes; l; l = l->next)
+   Ecore_Exe *exe;
+   EINA_INLIST_FOREACH(exes, exe)
      {
-	Ecore_Exe          *exe;
-
-	exe = (Ecore_Exe *) l;
 	if (exe->pid == pid)
 	   return exe;
      }
diff --git a/src/lib/ecore/ecore_idle_enterer.c b/src/lib/ecore/ecore_idle_enterer.c
index 066aaa3..bc53c09 100644
--- a/src/lib/ecore/ecore_idle_enterer.c
+++ b/src/lib/ecore/ecore_idle_enterer.c
@@ -33,7 +33,7 @@ ecore_idle_enterer_add(int (*func) (void *data), const void *data)
    ECORE_MAGIC_SET(ie, ECORE_MAGIC_IDLE_ENTERER);
    ie->func = func;
    ie->data = (void *)data;
-   idle_enterers = _ecore_list2_append(idle_enterers, ie);
+   idle_enterers = (Ecore_Idle_Enterer *) eina_inlist_append(EINA_INLIST_GET(idle_enterers), EINA_INLIST_GET(ie));
    return ie;
 }
 
@@ -56,7 +56,7 @@ ecore_idle_enterer_before_add(int (*func) (void *data), const void *data)
    ECORE_MAGIC_SET(ie, ECORE_MAGIC_IDLE_ENTERER);
    ie->func = func;
    ie->data = (void *)data;
-   idle_enterers = _ecore_list2_prepend(idle_enterers, ie);
+   idle_enterers = (Ecore_Idle_Enterer *) eina_inlist_prepend(EINA_INLIST_GET(idle_enterers), EINA_INLIST_GET(ie));
    return ie;
 }
 
@@ -84,12 +84,10 @@ ecore_idle_enterer_del(Ecore_Idle_Enterer *idle_enterer)
 void
 _ecore_idle_enterer_shutdown(void)
 {
-   while (idle_enterers)
+   Ecore_Idle_Enterer *ie;
+   while ((ie = idle_enterers))
      {
-	Ecore_Idle_Enterer *ie;
-
-	ie = idle_enterers;
-	idle_enterers = _ecore_list2_remove(idle_enterers, ie);
+	idle_enterers = (Ecore_Idle_Enterer *) eina_inlist_remove(EINA_INLIST_GET(idle_enterers), EINA_INLIST_GET(idle_enterers));
 	ECORE_MAGIC_SET(ie, ECORE_MAGIC_NONE);
 	free(ie);
      }
@@ -99,33 +97,25 @@ _ecore_idle_enterer_shutdown(void)
 void
 _ecore_idle_enterer_call(void)
 {
-   Ecore_List2 *l, *last;
-
-   last = idle_enterers ? ((Ecore_List2 *)idle_enterers)->last : NULL;
+   Ecore_Idle_Enterer *ie;
 
-   for (l = (Ecore_List2 *)idle_enterers; l; l = l->next)
+   EINA_INLIST_FOREACH(idle_enterers, ie)
      {
-	Ecore_Idle_Enterer *ie;
-
-	ie = (Ecore_Idle_Enterer *)l;
 	if (!ie->delete_me)
 	  {
 	     if (!ie->func(ie->data)) ecore_idle_enterer_del(ie);
 	  }
-
-	if (l == last) break;
      }
    if (idle_enterers_delete_me)
      {
-	for (l = (Ecore_List2 *)idle_enterers; l;)
+        Ecore_Idle_Enterer *l;
+	for(l = idle_enterers; l;)
 	  {
-	     Ecore_Idle_Enterer *ie;
-
-	     ie = (Ecore_Idle_Enterer *)l;
-	     l = l->next;
+	     ie = l;
+	     l = (Ecore_Idle_Enterer *) EINA_INLIST_GET(l)->next;
 	     if (ie->delete_me)
 	       {
-		  idle_enterers = _ecore_list2_remove(idle_enterers, ie);
+		  idle_enterers = (Ecore_Idle_Enterer *) eina_inlist_remove(EINA_INLIST_GET(idle_enterers), EINA_INLIST_GET(ie));
 		  ECORE_MAGIC_SET(ie, ECORE_MAGIC_NONE);
 		  free(ie);
 	       }
diff --git a/src/lib/ecore/ecore_idle_exiter.c b/src/lib/ecore/ecore_idle_exiter.c
index bdf1322..07a7602 100644
--- a/src/lib/ecore/ecore_idle_exiter.c
+++ b/src/lib/ecore/ecore_idle_exiter.c
@@ -32,7 +32,7 @@ ecore_idle_exiter_add(int (*func) (void *data), const void *data)
    ECORE_MAGIC_SET(ie, ECORE_MAGIC_IDLE_EXITER);
    ie->func = func;
    ie->data = (void *)data;
-   idle_exiters = _ecore_list2_append(idle_exiters, ie);
+   idle_exiters = (Ecore_Idle_Exiter *) eina_inlist_append(EINA_INLIST_GET(idle_exiters), EINA_INLIST_GET(ie));
    return ie;
 }
 
@@ -60,12 +60,10 @@ ecore_idle_exiter_del(Ecore_Idle_Exiter *idle_exiter)
 void
 _ecore_idle_exiter_shutdown(void)
 {
-   while (idle_exiters)
+   Ecore_Idle_Exiter *ie;
+   while ((ie = idle_exiters))
      {
-	Ecore_Idle_Exiter *ie;
-
-	ie = idle_exiters;
-	idle_exiters = _ecore_list2_remove(idle_exiters, ie);
+	idle_exiters = (Ecore_Idle_Exiter *) eina_inlist_remove(EINA_INLIST_GET(idle_exiters), EINA_INLIST_GET(idle_exiters));
 	ECORE_MAGIC_SET(ie, ECORE_MAGIC_NONE);
 	free(ie);
      }
@@ -75,33 +73,26 @@ _ecore_idle_exiter_shutdown(void)
 void
 _ecore_idle_exiter_call(void)
 {
-   Ecore_List2 *l, *last;
-
-   last = idle_exiters ? ((Ecore_List2 *)idle_exiters)->last : NULL;
+   Ecore_Idle_Exiter *ie;
 
-   for (l = (Ecore_List2 *)idle_exiters; l; l = l->next)
+   EINA_INLIST_FOREACH(idle_exiters, ie)
      {
-	Ecore_Idle_Exiter *ie;
-
-	ie = (Ecore_Idle_Exiter *)l;
 	if (!ie->delete_me)
 	  {
 	     if (!ie->func(ie->data)) ecore_idle_exiter_del(ie);
 	  }
-
-	if (l == last) break;
      }
    if (idle_exiters_delete_me)
      {
-	for (l = (Ecore_List2 *)idle_exiters; l;)
+	Ecore_Idle_Exiter *l;
+	for (l = idle_exiters; l;)
 	  {
-	     Ecore_Idle_Exiter *ie;
+	     ie = l;
 
-	     ie = (Ecore_Idle_Exiter *)l;
-	     l = l->next;
+	     l = (Ecore_Idle_Exiter *) EINA_INLIST_GET(l)->next;
 	     if (ie->delete_me)
 	       {
-		  idle_exiters = _ecore_list2_remove(idle_exiters, ie);
+		  idle_exiters = (Ecore_Idle_Exiter *) eina_inlist_remove(EINA_INLIST_GET(idle_exiters), EINA_INLIST_GET(ie));
 		  ECORE_MAGIC_SET(ie, ECORE_MAGIC_NONE);
 		  free(ie);
 	       }
diff --git a/src/lib/ecore/ecore_idler.c b/src/lib/ecore/ecore_idler.c
index 52bcb8e..df22fc6 100644
--- a/src/lib/ecore/ecore_idler.c
+++ b/src/lib/ecore/ecore_idler.c
@@ -40,7 +40,7 @@ ecore_idler_add(int (*func) (void *data), const void *data)
    ECORE_MAGIC_SET(ie, ECORE_MAGIC_IDLER);
    ie->func = func;
    ie->data = (void *)data;
-   idlers = _ecore_list2_append(idlers, ie);
+   idlers = (Ecore_Idler *) eina_inlist_append(EINA_INLIST_GET(idlers), EINA_INLIST_GET(ie));
    return ie;
 }
 
@@ -68,12 +68,10 @@ ecore_idler_del(Ecore_Idler *idler)
 void
 _ecore_idler_shutdown(void)
 {
-   while (idlers)
+   Ecore_Idler *ie;
+   while ((ie = idlers))
      {
-	Ecore_Idler *ie;
-
-	ie = idlers;
-	idlers = _ecore_list2_remove(idlers, ie);
+	idlers = (Ecore_Idler *) eina_inlist_remove(EINA_INLIST_GET(idlers), EINA_INLIST_GET(idlers));
 	ECORE_MAGIC_SET(ie, ECORE_MAGIC_NONE);
 	free(ie);
      }
@@ -83,33 +81,25 @@ _ecore_idler_shutdown(void)
 int
 _ecore_idler_call(void)
 {
-   Ecore_List2 *l, *last;
-
-   last = idlers ? ((Ecore_List2 *)idlers)->last : NULL;
+   Ecore_Idler *ie;
 
-   for (l = (Ecore_List2 *)idlers; l; l = l->next)
+   EINA_INLIST_FOREACH(idlers, ie)
      {
-	Ecore_Idler *ie;
-
-	ie = (Ecore_Idler *)l;
 	if (!ie->delete_me)
 	  {
 	     if (!ie->func(ie->data)) ecore_idler_del(ie);
 	  }
-
-	if (l == last) break;
      }
    if (idlers_delete_me)
      {
-	for (l = (Ecore_List2 *)idlers; l;)
+       Ecore_Idler *l;
+	for (l = idlers; l;)
 	  {
-	     Ecore_Idler *ie;
-
-	     ie = (Ecore_Idler *)l;
-	     l = l->next;
+	     ie = l;
+	     l = (Ecore_Idler *) EINA_INLIST_GET(l)->next;
 	     if (ie->delete_me)
 	       {
-		  idlers = _ecore_list2_remove(idlers, ie);
+		  idlers = (Ecore_Idler *) eina_inlist_remove(EINA_INLIST_GET(idlers), EINA_INLIST_GET(ie));
 		  ECORE_MAGIC_SET(ie, ECORE_MAGIC_NONE);
 		  free(ie);
 	       }
diff --git a/src/lib/ecore/ecore_list.c b/src/lib/ecore/ecore_list.c
index f129bf2..01d6d51 100644
--- a/src/lib/ecore/ecore_list.c
+++ b/src/lib/ecore/ecore_list.c
@@ -63,178 +63,6 @@ static void *_ecore_dlist_previous(Ecore_DList * list);
 static void *_ecore_dlist_first_remove(Ecore_DList *list);
 static void *_ecore_dlist_index_goto(Ecore_DList *list, int index);
 
-/* XXX: Begin deprecated code */
-EAPI void *
-_ecore_list2_append(void *in_list, void *in_item)
-{
-   Ecore_List2 *l, *new_l;
-   Ecore_List2 *list, *item;
-
-   list = in_list;
-   item = in_item;
-   new_l = item;
-   new_l->next = NULL;
-   if (!list)
-     {
-	new_l->prev = NULL;
-	new_l->last = new_l;
-	return new_l;
-     }
-   if (list->last) l = list->last;
-   else for (l = list; l; l = l->next);
-   l->next = new_l;
-   new_l->prev = l;
-   list->last = new_l;
-   return list;
-}
-
-EAPI void *
-_ecore_list2_prepend(void *in_list, void *in_item)
-{
-   Ecore_List2 *new_l;
-   Ecore_List2 *list, *item;
-
-   list = in_list;
-   item = in_item;
-   new_l = item;
-   new_l->prev = NULL;
-   if (!list)
-     {
-	new_l->next = NULL;
-	new_l->last = new_l;
-	return new_l;
-     }
-   new_l->next = list;
-   list->prev = new_l;
-   new_l->last = list->last;
-   list->last = NULL;
-   return new_l;
-}
-
-EAPI void *
-_ecore_list2_append_relative(void *in_list, void *in_item, void *in_relative)
-{
-   Ecore_List2 *l;
-   Ecore_List2 *list, *item, *relative;
-
-   list = in_list;
-   item = in_item;
-   relative = in_relative;
-   for (l = list; l; l = l->next)
-     {
-	if (l == relative)
-	  {
-	     Ecore_List2 *new_l;
-
-	     new_l = item;
-	     if (l->next)
-	       {
-		  new_l->next = l->next;
-		  l->next->prev = new_l;
-	       }
-
-	     else new_l->next = NULL;
-	     l->next = new_l;
-	     new_l->prev = l;
-	     if (!new_l->next)
-	       list->last = new_l;
-	     return list;
-	  }
-     }
-   return _ecore_list2_append(list, item);
-}
-
-EAPI void *
-_ecore_list2_prepend_relative(void *in_list, void *in_item, void *in_relative)
-{
-   Ecore_List2 *l;
-   Ecore_List2 *list, *item, *relative;
-
-   list = in_list;
-   item = in_item;
-   relative = in_relative;
-   for (l = list; l; l = l->next)
-     {
-	if (l == relative)
-	  {
-	     Ecore_List2 *new_l;
-
-	     new_l = item;
-	     new_l->prev = l->prev;
-	     new_l->next = l;
-	     l->prev = new_l;
-	     if (new_l->prev)
-	       {
-		  new_l->prev->next = new_l;
-		  if (!new_l->next)
-		    list->last = new_l;
-		  return list;
-	       }
-	     else
-	       {
-		  if (!new_l->next)
-		    new_l->last = new_l;
-		  else
-		    {
-		       new_l->last = list->last;
-		       list->last = NULL;
-		    }
-		  return new_l;
-	       }
-	  }
-     }
-   return _ecore_list2_prepend(list, item);
-}
-
-EAPI void *
-_ecore_list2_remove(void *in_list, void *in_item)
-{
-   Ecore_List2 *return_l;
-   Ecore_List2 *list, *item;
-
-   /* checkme */
-   if(!in_list)
-     return in_list;
-
-   list = in_list;
-   item = in_item;
-   if (!item) return list;
-   if (item->next)
-     item->next->prev = item->prev;
-   if (item->prev)
-     {
-	item->prev->next = item->next;
-	return_l = list;
-     }
-   else
-     {
-	return_l = item->next;
-	if (return_l)
-	  return_l->last = list->last;
-     }
-   if (item == list->last)
-     list->last = item->prev;
-   item->next = NULL;
-   item->prev = NULL;
-   return return_l;
-}
-
-EAPI void *
-_ecore_list2_find(void *in_list, void *in_item)
-{
-   Ecore_List2 *l;
-   Ecore_List2 *list, *item;
-
-   list = in_list;
-   item = in_item;
-   for (l = list; l; l = l->next)
-     {
-	if (l == item) return item;
-     }
-   return NULL;
-}
-/* XXX: End deprecated code */
-
 /**
 @defgroup Ecore_Data_List_Creation_Group List Creation/Destruction Functions
 
diff --git a/src/lib/ecore/ecore_main.c b/src/lib/ecore/ecore_main.c
index 07e1b12..33fcb8a 100644
--- a/src/lib/ecore/ecore_main.c
+++ b/src/lib/ecore/ecore_main.c
@@ -43,11 +43,21 @@ static void _ecore_main_fd_handlers_call(void);
 static int  _ecore_main_fd_handlers_buf_call(void);
 static void _ecore_main_loop_iterate_internal(int once_only);
 
+#ifdef _WIN32
+static int _ecore_main_win32_select(int nfds, fd_set *readfds, fd_set *writefds,
+				    fd_set *exceptfds, struct timeval *timeout);
+#endif
+
 static int               in_main_loop = 0;
 static int               do_quit = 0;
 static Ecore_Fd_Handler *fd_handlers = NULL;
 static int               fd_handlers_delete_me = 0;
+
+#ifdef _WIN32
+static int (*main_loop_select)(int , fd_set *, fd_set *, fd_set *, struct timeval *) = _ecore_main_win32_select;
+#else
 static int (*main_loop_select)(int , fd_set *, fd_set *, fd_set *, struct timeval *) = select;
+#endif
 
 static double            t1 = 0.0;
 static double            t2 = 0.0;
@@ -347,11 +357,6 @@ _ecore_main_select(double timeout)
      {
 	int sec, usec;
 
-#if _WIN32
-        if (timeout > 0.05)
-          timeout = 0.05;
-#endif
-
 #ifdef FIX_HZ
 	timeout += (0.5 / HZ);
 	sec = (int)timeout;
@@ -394,12 +399,18 @@ _ecore_main_select(double timeout)
    if (_ecore_signal_count_get()) return -1;
 
    ret = main_loop_select(max_fd + 1, &rfds, &wfds, &exfds, t);
+
    _ecore_loop_time = ecore_time_get();
    if (ret < 0)
      {
+#ifdef _WIN32
+       fprintf(stderr, "main_loop_select error %d\n", WSAGetLastError());
+	if (WSAEINTR == WSAGetLastError()) return -1;
+#else
 	if (errno == EINTR) return -1;
 	else if (errno == EBADF)
 	     _ecore_main_fd_handlers_bads_rem();
+#endif
      }
    if (ret > 0)
      {
@@ -652,7 +663,7 @@ _ecore_main_loop_iterate_internal(int once_only)
 		       if (_ecore_signal_count_get() > 0) have_signal = 1;
 		       if (have_event || have_signal) break;
 		       next_time = _ecore_timer_next_get();
-		       if (next_time < 0) goto start_loop;
+		       if (next_time <= 0) break;
 		       if (do_quit) break;
 		    }
                   _ecore_loop_time = ecore_time_get();
@@ -680,40 +691,6 @@ _ecore_main_loop_iterate_internal(int once_only)
 	_ecore_main_fd_handlers_cleanup();
      }
    while (_ecore_main_fd_handlers_buf_call());
-#if _WIN32
-   {
-      MSG msg;
-      BOOL ret;
-      UINT_PTR TmrID = 0;
-      if ((next_time > 0) && ((UINT) (next_time * 1000.0) > USER_TIMER_MINIMUM))
-
-        {
-           TmrID = SetTimer(NULL, 0, (UINT) (next_time * 1000.0), NULL);
-           ret = GetMessage(&msg, NULL, 0, 0);
-        }
-      else
-        {
-           ret = PeekMessage(&msg, NULL, 0, 0, PM_REMOVE);
-        }
-
-      if (ret)
-        {
-           do
-             {
-                TranslateMessage(&msg);
-                DispatchMessageW(&msg);
-                Sleep(0); /* Give other threads a chance to run */
-             } while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE));
-        }
-
-      if (TmrID)
-        {
-           KillTimer(NULL, TmrID);
-           TmrID = 0;
-        }
-   }
-#endif
-
 
 /* ok - too much optimising. let's call idle enterers more often. if we
  * have events that place more events or jobs etc. on the event queue
@@ -723,3 +700,105 @@ _ecore_main_loop_iterate_internal(int once_only)
      _ecore_idle_enterer_call();
    in_main_loop--;
 }
+
+#ifdef _WIN32
+static int
+_ecore_main_win32_select(int nfds, fd_set *readfds, fd_set *writefds,
+			 fd_set *exceptfds, struct timeval *tv)
+{
+   HANDLE* events[MAXIMUM_WAIT_OBJECTS];
+   int     sockets[MAXIMUM_WAIT_OBJECTS];
+   int     events_nbr = 0;
+   DWORD   result;
+   DWORD   timeout;
+   MSG     msg;
+   int     i;
+   int     res;
+
+   /* Create an event object per socket */
+   for(i = 0; i < nfds; i++)
+     {
+        WSAEVENT event;
+        long network_event;
+
+        network_event = 0;
+        if(FD_ISSET(i, readfds))
+	  network_event |= FD_READ;
+        if(FD_ISSET(i, writefds))
+	  network_event |= FD_WRITE;
+        if(FD_ISSET(i, exceptfds))
+	  network_event |= FD_OOB;
+
+        if(network_event)
+	  {
+             event = WSACreateEvent();
+	     WSAEventSelect(i, event, network_event);
+	     events[events_nbr] = event;
+	     sockets[events_nbr] = i;
+	     events_nbr++;
+          }
+     }
+
+   /* Empty the queue before waiting */
+   while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
+     {
+	TranslateMessage(&msg);
+	DispatchMessage(&msg);
+     }
+
+   /* Wait for any message sent or posted to this queue */
+   /* or for one of the passed handles be set to signaled. */
+   if(tv == NULL)
+     timeout = INFINITE;
+   else
+     timeout = (DWORD)(tv->tv_sec * 1000.0 + tv->tv_usec / 1000.0);
+
+   result = MsgWaitForMultipleObjects(events_nbr, events, FALSE,
+				      timeout, QS_ALLINPUT);
+
+   FD_ZERO(readfds);
+   FD_ZERO(writefds);
+   FD_ZERO(exceptfds);
+
+   /* The result tells us the type of event we have. */
+   if (result == WAIT_TIMEOUT)
+     {
+        res = 0;
+     }
+   else if (result == (WAIT_OBJECT_0 + events_nbr))
+     {
+        while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
+	  {
+	     TranslateMessage(&msg);
+	     DispatchMessage(&msg);
+	  }
+
+        res = 0;
+     }
+   else if ((result >= 0) && (result < WAIT_OBJECT_0 + events_nbr))
+     {
+        WSANETWORKEVENTS network_event;
+
+        WSAEnumNetworkEvents(sockets[result], events[result], &network_event);
+
+        if(network_event.lNetworkEvents & FD_READ)
+	  FD_SET(sockets[result], readfds);
+        if(network_event.lNetworkEvents & FD_WRITE)
+	  FD_SET(sockets[result], writefds);
+        if(network_event.lNetworkEvents & FD_OOB)
+	  FD_SET(sockets[result], exceptfds);
+
+        res = 1;
+     }
+   else
+     {
+        fprintf(stderr, "unknown result...\n");
+     }
+
+   /* Remove event objects again */
+   for(i = 0; i < events_nbr; i++)
+     WSACloseEvent(events[i]);
+
+   return res;
+}
+#endif
diff --git a/src/lib/ecore/ecore_poll.c b/src/lib/ecore/ecore_poll.c
index 20630d0..cf2c499 100644
--- a/src/lib/ecore/ecore_poll.c
+++ b/src/lib/ecore/ecore_poll.c
@@ -98,8 +98,7 @@ static int
 _ecore_poller_cb_timer(void *data __UNUSED__)
 {
    int i;
-   Ecore_List2 *l;
-   Ecore_Poller *poller;
+   Ecore_Poller *poller, *l;
    int changes = 0;
 
    at_tick++;
@@ -123,9 +122,8 @@ _ecore_poller_cb_timer(void *data __UNUSED__)
 	 * tick interval, so run all pollers hooked to that counter */
 	if (poller_counters[i] == 0)
 	  {
-	     for (l = (Ecore_List2 *)pollers[i]; l; l = l->next)
+	     EINA_INLIST_FOREACH(pollers[i], poller)
 	       {
-		  poller = (Ecore_Poller *)l;
 		  if (!poller->delete_me)
 		    {
 		       if (!poller->func(poller->data))
@@ -148,13 +146,13 @@ _ecore_poller_cb_timer(void *data __UNUSED__)
 	/* FIXME: walk all pollers and remove deleted ones */
 	for (i = 0; i < 15; i++)
 	  {
-             for (l = (Ecore_List2 *)pollers[i]; l;)
+             for (l = pollers[i]; l;)
 	       {
-                  poller = (Ecore_Poller *)l;
-		  l = l->next;
+                  poller = l;
+		  l = (Ecore_Poller *) EINA_INLIST_GET(l)->next;
 		  if (poller->delete_me)
 		    {
-		       pollers[poller->ibit] = _ecore_list2_remove(pollers[poller->ibit], poller);
+		       pollers[i] = (Ecore_Poller *) eina_inlist_remove(EINA_INLIST_GET(pollers[i]), EINA_INLIST_GET(poller));
 		       free(poller);
 		       poller_delete_count--;
 		       changes++;
@@ -297,7 +295,7 @@ ecore_poller_add(Ecore_Poller_Type type __UNUSED__, int interval, int (*func) (v
    poller->ibit = ibit;
    poller->func = func;
    poller->data = (void *)data;
-   pollers[poller->ibit] = _ecore_list2_prepend(pollers[poller->ibit], poller);
+   pollers[poller->ibit] = (Ecore_Poller *) eina_inlist_prepend(EINA_INLIST_GET(pollers[poller->ibit]), EINA_INLIST_GET(poller));
    if (poller_walking)
      just_added_poller++;
    else
@@ -337,7 +335,7 @@ ecore_poller_del(Ecore_Poller *poller)
      }
    /* not in loop so safe - delete immediately */
    data = poller->data;
-   pollers[poller->ibit] = _ecore_list2_remove(pollers[poller->ibit], poller);
+   pollers[poller->ibit] = (Ecore_Poller *) eina_inlist_remove(EINA_INLIST_GET(pollers[poller->ibit]), EINA_INLIST_GET(poller));
    free(poller);
    _ecore_poller_next_tick_eval();
    return data;
@@ -347,16 +345,13 @@ void
 _ecore_poller_shutdown(void)
 {
    int i;
-   Ecore_List2 *l;
    Ecore_Poller *poller;
 
    for (i = 0; i < 15; i++)
      {
-	for (l = (Ecore_List2 *)pollers[i]; l;)
+	while ((poller = pollers[i]))
 	  {
-	     poller = (Ecore_Poller *)l;
-	     l = l->next;
-	     pollers[poller->ibit] = _ecore_list2_remove(pollers[poller->ibit], poller);
+	     pollers[i] = (Ecore_Poller *) eina_inlist_remove(EINA_INLIST_GET(pollers[i]), EINA_INLIST_GET(pollers[i]));
 	     free(poller);
 	  }
      }
diff --git a/src/lib/ecore/ecore_private.h b/src/lib/ecore/ecore_private.h
index 2b09627..5a7eee1 100644
--- a/src/lib/ecore/ecore_private.h
+++ b/src/lib/ecore/ecore_private.h
@@ -120,21 +120,6 @@ EAPI void ecore_print_warning(const char *function, const char *sparam);
 
 typedef unsigned int              Ecore_Magic;
 
-typedef struct _Ecore_List2       Ecore_List2;
-typedef struct _Ecore_List2_Data  Ecore_List2_Data;
-
-struct _Ecore_List2
-{
-   Ecore_List2  *next, *prev;
-   Ecore_List2  *last;
-};
-
-struct _Ecore_List2_Data
-{
-   Ecore_List2   __list_data;
-   void *data;
-};
-
 #ifndef _ECORE_H
 enum _Ecore_Fd_Handler_Flags
 {
@@ -240,7 +225,7 @@ typedef struct _Ecore_Poller        Ecore_Poller;
 #ifndef _WIN32
 struct _Ecore_Exe
 {
-   Ecore_List2   __list_data;
+   EINA_INLIST;
    ECORE_MAGIC;
    pid_t        pid;
    void        *data;
@@ -276,7 +261,7 @@ struct _Ecore_Exe
 
 struct _Ecore_Timer
 {
-   Ecore_List2     __list_data;
+   EINA_INLIST;
    ECORE_MAGIC;
    double          in;
    double          at;
@@ -290,7 +275,7 @@ struct _Ecore_Timer
 
 struct _Ecore_Idler
 {
-   Ecore_List2   __list_data;
+   EINA_INLIST;
    ECORE_MAGIC;
    int          delete_me : 1;
    int        (*func) (void *data);
@@ -299,7 +284,7 @@ struct _Ecore_Idler
 
 struct _Ecore_Idle_Enterer
 {
-   Ecore_List2   __list_data;
+   EINA_INLIST;
    ECORE_MAGIC;
    int          delete_me : 1;
    int        (*func) (void *data);
@@ -308,7 +293,7 @@ struct _Ecore_Idle_Enterer
 
 struct _Ecore_Idle_Exiter
 {
-   Ecore_List2   __list_data;
+   EINA_INLIST;
    ECORE_MAGIC;
    int          delete_me : 1;
    int        (*func) (void *data);
@@ -335,7 +320,7 @@ struct _Ecore_Fd_Handler
 
 struct _Ecore_Event_Handler
 {
-   Ecore_List2   __list_data;
+   EINA_INLIST;
    ECORE_MAGIC;
    int          type;
    int          delete_me : 1;
@@ -345,7 +330,7 @@ struct _Ecore_Event_Handler
 
 struct _Ecore_Event_Filter
 {
-   Ecore_List2   __list_data;
+   EINA_INLIST;
    ECORE_MAGIC;
    int          delete_me : 1;
    void *     (*func_start) (void *data);
@@ -357,7 +342,7 @@ struct _Ecore_Event_Filter
 
 struct _Ecore_Event
 {
-   Ecore_List2   __list_data;
+   EINA_INLIST;
    ECORE_MAGIC;
    int          type;
    void        *event;
@@ -368,7 +353,7 @@ struct _Ecore_Event
 
 struct _Ecore_Animator
 {
-   Ecore_List2   __list_data;
+   EINA_INLIST;
    ECORE_MAGIC;
    unsigned char delete_me : 1;
    int           (*func) (void *data);
@@ -377,7 +362,7 @@ struct _Ecore_Animator
 
 struct _Ecore_Poller
 {
-   Ecore_List2   __list_data;
+   EINA_INLIST;
    ECORE_MAGIC;
    int           ibit;
    unsigned char delete_me : 1;
diff --git a/src/lib/ecore/ecore_timer.c b/src/lib/ecore/ecore_timer.c
index 2ececa4..fa2c55d 100644
--- a/src/lib/ecore/ecore_timer.c
+++ b/src/lib/ecore/ecore_timer.c
@@ -227,7 +227,7 @@ ecore_timer_delay(Ecore_Timer *timer, double add)
      }
    else
      {
-	timers = _ecore_list2_remove(timers, timer);
+	timers = (Ecore_Timer *) eina_inlist_remove(EINA_INLIST_GET(timers), EINA_INLIST_GET(timer));
 	_ecore_timer_set(timer, timer->at + add, timer->in, timer->func, timer->data);
      }
 }
@@ -277,8 +277,8 @@ ecore_timer_freeze(Ecore_Timer *timer)
    if (timer->frozen)
      return ;
 
-   timers = _ecore_list2_remove(timers, timer);
-   suspended = _ecore_list2_prepend(suspended, timer);
+   timers = (Ecore_Timer *) eina_inlist_remove(EINA_INLIST_GET(timers), EINA_INLIST_GET(timer));
+   suspended = (Ecore_Timer *) eina_inlist_prepend(EINA_INLIST_GET(suspended), EINA_INLIST_GET(timer));
 
    now = ecore_time_get();
 
@@ -303,7 +303,7 @@ ecore_timer_thaw(Ecore_Timer *timer)
    if (!timer->frozen)
      return ;
 
-   suspended = _ecore_list2_remove(suspended, timer);
+   suspended = (Ecore_Timer *) eina_inlist_remove(EINA_INLIST_GET(suspended), EINA_INLIST_GET(timer));
    now = ecore_time_get();
 
    _ecore_timer_set(timer, timer->pending + now, timer->in, timer->func, timer->data);
@@ -312,22 +312,18 @@ ecore_timer_thaw(Ecore_Timer *timer)
 void
 _ecore_timer_shutdown(void)
 {
-   while (timers)
-     {
-	Ecore_Timer *timer;
+   Ecore_Timer *timer;
 
-	timer = timers;
-	timers = _ecore_list2_remove(timers, timer);
+   while ((timer = timers))
+     {
+	timers = (Ecore_Timer *) eina_inlist_remove(EINA_INLIST_GET(timers), EINA_INLIST_GET(timers));
 	ECORE_MAGIC_SET(timer, ECORE_MAGIC_NONE);
 	free(timer);
      }
 
-   while (suspended)
+   while ((timer = suspended))
      {
-        Ecore_Timer *timer;
-
-        timer = suspended;
-        suspended = _ecore_list2_remove(suspended, timer);
+        suspended = (Ecore_Timer *) eina_inlist_remove(EINA_INLIST_GET(suspended), EINA_INLIST_GET(suspended));
         ECORE_MAGIC_SET(timer, ECORE_MAGIC_NONE);
         free(timer);
      }
@@ -336,33 +332,31 @@ _ecore_timer_shutdown(void)
 void
 _ecore_timer_cleanup(void)
 {
-   Ecore_List2 *l;
+   Ecore_Timer *l;
 
    if (!timers_delete_me) return;
-   for (l = (Ecore_List2 *)timers; l;)
+   for (l = timers; l;)
      {
-	Ecore_Timer *timer;
+	Ecore_Timer *timer = l;
 
-	timer = (Ecore_Timer *)l;
-	l = l->next;
+	l = (Ecore_Timer *) EINA_INLIST_GET(l)->next;
 	if (timer->delete_me)
 	  {
-	     timers = _ecore_list2_remove(timers, timer);
+	     timers = (Ecore_Timer *) eina_inlist_remove(EINA_INLIST_GET(timers), EINA_INLIST_GET(timer));
 	     ECORE_MAGIC_SET(timer, ECORE_MAGIC_NONE);
 	     free(timer);
 	     timers_delete_me--;
 	     if (timers_delete_me == 0) return;
 	  }
      }
-   for (l = (Ecore_List2 *)suspended; l;)
+   for (l = suspended; l;)
      {
-	Ecore_Timer *timer;
+	Ecore_Timer *timer = l;
 
-	timer = (Ecore_Timer *)l;
-	l = l->next;
+	l = (Ecore_Timer *) EINA_INLIST_GET(l)->next;
 	if (timer->delete_me)
 	  {
-	     suspended = _ecore_list2_remove(suspended, timer);
+	     suspended = (Ecore_Timer *) eina_inlist_remove(EINA_INLIST_GET(suspended), EINA_INLIST_GET(timer));
 	     ECORE_MAGIC_SET(timer, ECORE_MAGIC_NONE);
 	     free(timer);
 	     timers_delete_me--;
@@ -375,26 +369,21 @@ _ecore_timer_cleanup(void)
 void
 _ecore_timer_enable_new(void)
 {
-   Ecore_List2 *l;
+   Ecore_Timer *timer;
 
    if (!timers_added) return;
    timers_added = 0;
-   for (l = (Ecore_List2 *)timers; l; l = l->next)
-     {
-	Ecore_Timer *timer;
-
-	timer = (Ecore_Timer *)l;
+   EINA_INLIST_FOREACH(timers, timer)
 	timer->just_added = 0;
-     }
 }
 
 static inline Ecore_Timer *
 _ecore_timer_first_get(void)
 {
-   Ecore_Timer *timer = (Ecore_Timer *)timers;
+   Ecore_Timer *timer = timers;
 
    while ((timer) && ((timer->delete_me) || (timer->just_added)))
-     timer = (Ecore_Timer *)((Ecore_List2 *)timer)->next;
+     timer = (Ecore_Timer *) EINA_INLIST_GET(timer)->next;
 
    return timer;
 }
@@ -402,11 +391,11 @@ _ecore_timer_first_get(void)
 static inline Ecore_Timer *
 _ecore_timer_after_get(Ecore_Timer *base)
 {
-   Ecore_Timer *timer = (Ecore_Timer *)((Ecore_List2 *)base)->next;
+   Ecore_Timer *timer = (Ecore_Timer *) EINA_INLIST_GET(base)->next;
    double maxtime = base->at + precision;
 
    while ((timer) && ((timer->delete_me) || (timer->just_added)) && (timer->at <= maxtime))
-     timer = (Ecore_Timer *)((Ecore_List2 *)timer)->next;
+     timer = (Ecore_Timer *) EINA_INLIST_GET(timer)->next;
 
    if ((!timer) || (timer->at > maxtime))
      return NULL;
@@ -437,28 +426,25 @@ _ecore_timer_next_get(void)
 int
 _ecore_timer_call(double when)
 {
-   Ecore_List2 *l;
-   Ecore_Timer *timer;
+   Ecore_Timer *timer, *l;
 
    if (!timers) return 0;
    if (last_check > when)
      {
 	/* User set time backwards */
-	for (l = (Ecore_List2 *)timers; l; l = l->next)
-	  {
-	     timer = (Ecore_Timer *)l;
+	EINA_INLIST_FOREACH(timers, timer)
 	     timer->at -= (last_check - when);
-	  }
      }
    last_check = when;
-   for (l = (Ecore_List2 *)timers; l; l = l->next)
+   for (l = timers; l;)
      {
-	timer = (Ecore_Timer *)l;
+	timer = l;
+	l = (Ecore_Timer *) EINA_INLIST_GET(l)->next;
 	if ((timer->at <= when) &&
 	    (timer->just_added == 0) &&
 	    (timer->delete_me == 0))
 	  {
-	     timers = _ecore_list2_remove(timers, timer);
+	     timers = (Ecore_Timer *) eina_inlist_remove(EINA_INLIST_GET(timers), EINA_INLIST_GET(timer));
 	     _ecore_timer_call(when);
 	     if ((!timer->delete_me) && (timer->func(timer->data)))
 	       {
@@ -492,7 +478,7 @@ _ecore_timer_call(double when)
 static void
 _ecore_timer_set(Ecore_Timer *timer, double at, double in, int (*func) (void *data), void *data)
 {
-   Ecore_List2 *l;
+   Ecore_Timer *t2;
 
    timers_added = 1;
    timer->at = at;
@@ -504,17 +490,14 @@ _ecore_timer_set(Ecore_Timer *timer, double at, double in, int (*func) (void *da
    timer->pending = 0.0;
    if (timers)
      {
-	for (l = ((Ecore_List2 *)(timers))->last; l; l = l->prev)
+	EINA_INLIST_REVERSE_FOREACH(EINA_INLIST_GET(timers), t2)
 	  {
-	     Ecore_Timer *t2;
-
-	     t2 = (Ecore_Timer *)l;
 	     if (timer->at > t2->at)
 	       {
-		  timers = _ecore_list2_append_relative(timers, timer, t2);
+		  timers = (Ecore_Timer *) eina_inlist_append_relative(EINA_INLIST_GET(timers), EINA_INLIST_GET(timer), EINA_INLIST_GET(t2));
 		  return;
 	       }
 	  }
      }
-   timers = _ecore_list2_prepend(timers, timer);
+   timers = (Ecore_Timer *) eina_inlist_prepend(EINA_INLIST_GET(timers), EINA_INLIST_GET(timer));
 }
diff --git a/src/lib/ecore_con/ecore_con_dns.c b/src/lib/ecore_con/ecore_con_dns.c
index 4ae6f7c..e1938a9 100644
--- a/src/lib/ecore_con/ecore_con_dns.c
+++ b/src/lib/ecore_con/ecore_con_dns.c
@@ -51,7 +51,7 @@ typedef struct _CB_Data CB_Data;
 
 struct _CB_Data
 {
-   Ecore_List2 __list_data;
+   EINA_INLIST;
    void (*cb_done) (void *data, struct hostent *hostent);
    void *data;
    Ecore_Fd_Handler *fdh;
@@ -66,7 +66,7 @@ static int _ecore_con_dns_data_handler(void *data, Ecore_Fd_Handler *fd_handler)
 static int _ecore_con_dns_exit_handler(void *data, int type __UNUSED__, void *event);
 
 static int dns_init = 0;
-static Ecore_List2 *dns_slaves = NULL;
+static CB_Data *dns_slaves = NULL;
 
 int
 ecore_con_dns_init(void)
@@ -81,7 +81,7 @@ ecore_con_dns_shutdown(void)
    dns_init--;
    if (dns_init == 0)
      {
-	while (dns_slaves) _ecore_con_dns_slave_free((CB_Data *)dns_slaves);
+	while (dns_slaves) _ecore_con_dns_slave_free(dns_slaves);
      }
    return dns_init;
 }
@@ -151,7 +151,7 @@ ecore_con_dns_lookup(const char *name,
 	close(fd[0]);
 	return 0;
      }
-   dns_slaves = _ecore_list2_append(dns_slaves, cbdata);
+   dns_slaves = (CB_Data *) eina_inlist_append(EINA_INLIST_GET(dns_slaves), EINA_INLIST_GET(cbdata));
    return 1;
 }
 
@@ -181,7 +181,7 @@ _ecore_con_dns_readdata(CB_Data *cbdata)
 static void
 _ecore_con_dns_slave_free(CB_Data *cbdata)
 {
-   dns_slaves = _ecore_list2_remove(dns_slaves, cbdata);
+   dns_slaves = (CB_Data *) eina_inlist_remove(EINA_INLIST_GET(dns_slaves), EINA_INLIST_GET(cbdata));
    close(ecore_main_fd_handler_fd_get(cbdata->fdh));
    ecore_main_fd_handler_del(cbdata->fdh);
    ecore_event_handler_del(cbdata->handler);
diff --git a/src/lib/ecore_con/ecore_con_info.c b/src/lib/ecore_con/ecore_con_info.c
index 0c33d74..837a097 100644
--- a/src/lib/ecore_con/ecore_con_info.c
+++ b/src/lib/ecore_con/ecore_con_info.c
@@ -32,7 +32,7 @@ typedef struct _CB_Data CB_Data;
 
 struct _CB_Data
 {
-   Ecore_List2 __list_data;
+   EINA_INLIST;
    Ecore_Con_Info_Cb cb_done;
    void *data;
    Ecore_Fd_Handler *fdh;
@@ -48,7 +48,7 @@ static int _ecore_con_info_data_handler(void *data, Ecore_Fd_Handler *fd_handler
 static int _ecore_con_info_exit_handler(void *data, int type __UNUSED__, void *event);
 
 static int info_init = 0;
-static Ecore_List2 *info_slaves = NULL;
+static CB_Data *info_slaves = NULL;
 
 EAPI int
 ecore_con_info_init(void)
@@ -63,7 +63,7 @@ ecore_con_info_shutdown(void)
    info_init--;
    if (info_init == 0)
      {
-	while (info_slaves) _ecore_con_info_slave_free((CB_Data *)info_slaves);
+	while (info_slaves) _ecore_con_info_slave_free(info_slaves);
      }
    return info_init;
 }
@@ -259,7 +259,7 @@ on_error:
 	close(fd[0]);
 	return 0;
      }
-   info_slaves = _ecore_list2_append(info_slaves, cbdata);
+   info_slaves = (CB_Data *) eina_inlist_append(EINA_INLIST_GET(info_slaves), EINA_INLIST_GET(cbdata));
    return 1;
 }
 
@@ -310,7 +310,7 @@ _ecore_con_info_readdata(CB_Data *cbdata)
 static void
 _ecore_con_info_slave_free(CB_Data *cbdata)
 {
-   info_slaves = _ecore_list2_remove(info_slaves, cbdata);
+   info_slaves = (CB_Data *) eina_inlist_remove(EINA_INLIST_GET(info_slaves), EINA_INLIST_GET(cbdata));
    close(ecore_main_fd_handler_fd_get(cbdata->fdh));
    ecore_main_fd_handler_del(cbdata->fdh);
    ecore_event_handler_del(cbdata->handler);
diff --git a/src/lib/ecore_evas/Ecore_Evas.h b/src/lib/ecore_evas/Ecore_Evas.h
index ccff83c..5222f09 100644
--- a/src/lib/ecore_evas/Ecore_Evas.h
+++ b/src/lib/ecore_evas/Ecore_Evas.h
@@ -71,7 +71,7 @@ extern "C" {
 typedef enum _Ecore_Evas_Engine_Type
 {
    ECORE_EVAS_ENGINE_SOFTWARE_BUFFER,
-   ECORE_EVAS_ENGINE_SOFTWARE_X11,
+   ECORE_EVAS_ENGINE_SOFTWARE_XLIB,
    ECORE_EVAS_ENGINE_XRENDER_X11,
    ECORE_EVAS_ENGINE_OPENGL_X11,
    ECORE_EVAS_ENGINE_SOFTWARE_XCB,
diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c
index 8acdef3..47617c3 100644
--- a/src/lib/ecore_evas/ecore_evas.c
+++ b/src/lib/ecore_evas/ecore_evas.c
@@ -38,8 +38,8 @@ ecore_evas_engine_type_supported_get(Ecore_Evas_Engine_Type engine)
 #else
 	return 0;
 #endif
-      case ECORE_EVAS_ENGINE_SOFTWARE_X11:
-#ifdef BUILD_ECORE_EVAS_SOFTWARE_X11
+      case ECORE_EVAS_ENGINE_SOFTWARE_XLIB:
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_XLIB
 	return 1;
 #else
 	return 0;
@@ -507,9 +507,6 @@ static const struct ecore_evas_engine _engines[] = {
 #ifdef BUILD_ECORE_EVAS_OPENGL_X11
   {"opengl_x11", _ecore_evas_constructor_opengl_x11},
 #endif
-#ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
-  {"software_xcb", _ecore_evas_constructor_software_x11},
-#endif
 #ifdef BUILD_ECORE_EVAS_XRENDER_XCB
   {"xrender_xcb", _ecore_evas_constructor_xrender_x11},
 #endif
diff --git a/src/lib/ecore_evas/ecore_evas_buffer.c b/src/lib/ecore_evas/ecore_evas_buffer.c
index dd43569..b3f7da0 100644
--- a/src/lib/ecore_evas/ecore_evas_buffer.c
+++ b/src/lib/ecore_evas/ecore_evas_buffer.c
@@ -29,8 +29,6 @@ _ecore_evas_buffer_init(void)
 static void
 _ecore_evas_buffer_free(Ecore_Evas *ee)
 {
-   ecore_evases = _ecore_list2_remove(ecore_evases, ee);
-   _ecore_evas_buffer_shutdown();
    if (ee->engine.buffer.image)
      {
 	Ecore_Evas *ee2;
@@ -40,7 +38,12 @@ _ecore_evas_buffer_free(Ecore_Evas *ee)
 	ee2->sub_ecore_evas = eina_list_remove(ee2->sub_ecore_evas, ee);
      }
    else
-     free(ee->engine.buffer.pixels);
+     {
+	ecore_evases = (Ecore_Evas *) eina_inlist_remove(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
+
+	free(ee->engine.buffer.pixels);
+     }
+   _ecore_evas_buffer_shutdown();
 }
 
 static void
@@ -90,7 +93,7 @@ _ecore_evas_buffer_shutdown(void)
      {
 	while (ecore_evases)
 	  {
-	     _ecore_evas_free((Ecore_Evas *)ecore_evases);
+	     _ecore_evas_free(ecore_evases);
 	  }
 	if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_shutdown();
      }
@@ -121,7 +124,7 @@ _ecore_evas_buffer_render(Ecore_Evas *ee)
    updates = evas_render_updates(ee->evas);
    if (ee->engine.buffer.image)
      {
-        Evas_Rectangle *r;
+        Eina_Rectangle *r;
 
 	EINA_LIST_FOREACH(updates, l, r)
 	  if (ee->engine.buffer.image)
@@ -496,7 +499,7 @@ ecore_evas_buffer_new(int w, int h)
 
    evas_event_feed_mouse_in(ee->evas, 0, NULL);
 
-   ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
+   ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
    return ee;
 #else
    return NULL;
diff --git a/src/lib/ecore_evas/ecore_evas_directfb.c b/src/lib/ecore_evas/ecore_evas_directfb.c
index 82d0ee4..02e59fc 100644
--- a/src/lib/ecore_evas/ecore_evas_directfb.c
+++ b/src/lib/ecore_evas/ecore_evas_directfb.c
@@ -54,7 +54,7 @@ _ecore_evas_directfb_render(Ecore_Evas *ee)
 static int
 _ecore_evas_directfb_idle_enter(void *data __UNUSED__)
 {
-   Ecore_List2 *l;
+   Ecore_Evas *ee;
    double t1 = 0.0;
    double t2 = 0.0;
 
@@ -63,13 +63,8 @@ _ecore_evas_directfb_idle_enter(void *data __UNUSED__)
      {
 	t1 = ecore_time_get();
      }
-   for (l = (Ecore_List2 *)ecore_evases; l; l = l->next)
-     {
-	Ecore_Evas *ee;
-
-	ee = (Ecore_Evas *)l;
+   EINA_INLIST_FOREACH(ecore_evases, ee)
 	_ecore_evas_directfb_render(ee);
-     }
    if (_ecore_evas_fps_debug)
      {
 	t2 = ecore_time_get();
@@ -312,7 +307,7 @@ _ecore_evas_directfb_free(Ecore_Evas *ee)
 {
    eina_hash_del(ecore_evases_hash, _ecore_evas_directfb_winid_str_get(ee->engine.directfb.window->id), ee);
    ecore_directfb_window_free(ee->engine.directfb.window);
-   ecore_evases = _ecore_list2_remove(ecore_evases, ee);
+   ecore_evases = (Ecore_Evas *) eina_inlist_remove(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
    _ecore_evas_directfb_shutdown();
    ecore_directfb_shutdown();
 }
@@ -577,7 +572,7 @@ ecore_evas_directfb_new(const char *disp_name, int windowed, int x, int y, int w
 	einfo->info.surface = window->surface;
 	evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
      }
-   ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
+   ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
    if (!ecore_evases_hash)
      ecore_evases_hash = eina_hash_string_superfast_new(NULL);
    eina_hash_add(ecore_evases_hash, _ecore_evas_directfb_winid_str_get(ee->engine.directfb.window->id), ee);
diff --git a/src/lib/ecore_evas/ecore_evas_fb.c b/src/lib/ecore_evas/ecore_evas_fb.c
index 8a712c9..561ff2f 100644
--- a/src/lib/ecore_evas/ecore_evas_fb.c
+++ b/src/lib/ecore_evas/ecore_evas_fb.c
@@ -76,17 +76,12 @@ _ecore_evas_fb_match(void)
 static void
 _ecore_evas_fb_lose(void *data __UNUSED__)
 {
-   Ecore_List2 *l;
+   Ecore_Evas *ee;
    Eina_List *ll;
    Ecore_Fb_Input_Device *dev;
 
-   for (l = (Ecore_List2 *)ecore_evases; l; l = l->next)
-     {
-	Ecore_Evas *ee;
-
-	ee = (Ecore_Evas *)l;
+   EINA_INLIST_FOREACH(ecore_evases, ee)
 	ee->visible = 0;
-     }
 
    EINA_LIST_FOREACH(ecore_evas_input_devices, ll, dev)
      ecore_fb_input_device_listen(dev, 0);
@@ -95,15 +90,12 @@ _ecore_evas_fb_lose(void *data __UNUSED__)
 static void
 _ecore_evas_fb_gain(void *data __UNUSED__)
 {
-   Ecore_List2 *l;
+   Ecore_Evas *ee;
    Eina_List *ll;
    Ecore_Fb_Input_Device *dev;
 
-   for (l = (Ecore_List2 *)ecore_evases; l; l = l->next)
+   EINA_INLIST_FOREACH(ecore_evases,ee)
      {
-	Ecore_Evas *ee;
-
-	ee = (Ecore_Evas *)l;
 	ee->visible = 1;
 	if ((ee->rotation == 90) || (ee->rotation == 270))
 	  evas_damage_rectangle_add(ee->evas, 0, 0, ee->h, ee->w);
@@ -201,7 +193,7 @@ _ecore_evas_event_mouse_wheel(void *data __UNUSED__, int type __UNUSED__, void *
 static int
 _ecore_evas_idle_enter(void *data __UNUSED__)
 {
-   Ecore_List2 *l;
+   Ecore_Evas *ee;
    double t1 = 0.0;
    double t2 = 0.0;
 
@@ -210,11 +202,8 @@ _ecore_evas_idle_enter(void *data __UNUSED__)
      {
 	t1 = ecore_time_get();
      }
-   for (l = (Ecore_List2 *)ecore_evases; l; l = l->next)
+   EINA_INLIST_FOREACH(ecore_evases, ee)
      {
-	Ecore_Evas *ee;
-
-	ee = (Ecore_Evas *)l;
 	if (ee->visible)
 	  {
 	     Eina_List *updates;
@@ -333,7 +322,7 @@ _ecore_evas_fb_init(int w, int h)
 static void
 _ecore_evas_fb_free(Ecore_Evas *ee)
 {
-   ecore_evases = _ecore_list2_remove(ecore_evases, ee);
+   ecore_evases = (Ecore_Evas *) eina_inlist_remove(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
    _ecore_evas_fb_shutdown();
    ecore_fb_shutdown();
 }
@@ -685,7 +674,7 @@ ecore_evas_fb_new(const char *disp_name, int rotation, int w, int h)
 
    evas_event_feed_mouse_in(ee->evas, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff), NULL);
 
-   ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
+   ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
    return ee;
 }
 #else
diff --git a/src/lib/ecore_evas/ecore_evas_private.h b/src/lib/ecore_evas/ecore_evas_private.h
index f2c9e6f..199a43b 100644
--- a/src/lib/ecore_evas/ecore_evas_private.h
+++ b/src/lib/ecore_evas/ecore_evas_private.h
@@ -42,7 +42,7 @@
 # ifdef HAVE_ECORE_X_XLIB
 #  include <X11/Xlib.h>
 #  include <X11/Xutil.h>
-#  ifdef BUILD_ECORE_EVAS_SOFTWARE_X11
+#  ifdef BUILD_ECORE_EVAS_SOFTWARE_XLIB
 #   include <Evas_Engine_Software_X11.h>
 #  endif
 #  ifdef BUILD_ECORE_EVAS_XRENDER_X11
@@ -157,7 +157,7 @@ struct _Ecore_Evas_Engine
 {
    Ecore_Evas_Engine_Func *func;
 
-#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_X11
    struct {
       Ecore_X_Window win_root;
       Eina_List     *win_extra;
@@ -222,7 +222,7 @@ struct _Ecore_Evas_Engine
 
 struct _Ecore_Evas
 {
-   Ecore_List  __list_data;
+   EINA_INLIST;
    ECORE_MAGIC;
    Evas       *evas;
    const char *driver;
diff --git a/src/lib/ecore_evas/ecore_evas_quartz.c b/src/lib/ecore_evas/ecore_evas_quartz.c
index 07231f4..cea117c 100644
--- a/src/lib/ecore_evas/ecore_evas_quartz.c
+++ b/src/lib/ecore_evas/ecore_evas_quartz.c
@@ -56,13 +56,10 @@ static NSWindow * main_window;
 {
    if(ctx != NULL)
    {
-      Ecore_List2  *l;
+      Ecore_evas  *ee;
 
-      for (l = (Ecore_List2 *)ecore_evases; l; l = l->next)
+      EINA_INLIST_FOREACH(ecore_evases, ee)
       {
-         Ecore_Evas *ee;
-
-         ee = (Ecore_Evas *)l;
          if (ee->visible)
             evas_damage_rectangle_add(ee->evas, 0, 0, 400, 400);
       }
@@ -146,14 +143,12 @@ _ecore_evas_quartz_event_video_expose(void *data __UNUSED__, int type __UNUSED__
 static int
 _ecore_evas_idle_enter(void *data __UNUSED__)
 {
-   Ecore_List2  *l;
+   Ecore_Evas  *ee;
    double       t1 = 0.;
    double       t2 = 0.;
 
-   for (l = (Ecore_List2 *)ecore_evases; l; l = l->next)
+   EINA_INLIST_FOREACH(ecore_evases, ee)
    {
-      Ecore_Evas *ee = (Ecore_Evas *)l;
-
       if (ee->visible)
          evas_render(ee->evas);
       else
@@ -214,7 +209,7 @@ _ecore_evas_quartz_shutdown(void)
 static void
 _ecore_evas_quartz_free(Ecore_Evas *ee)
 {
-   ecore_evases = _ecore_list2_remove(ecore_evases, ee);
+   ecore_evases = (Ecore_Evas *) eina_inlist_remove(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
    ecore_event_window_unregister(0);
    _ecore_evas_quartz_shutdown();
    ecore_quartz_shutdown();
@@ -435,7 +430,7 @@ ecore_evas_quartz_new(const char* name, int w, int h)
 
    evas_event_feed_mouse_in(ee->evas, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff), NULL);
 
-   ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
+   ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
    return ee;
 
  free_window:
@@ -452,7 +447,7 @@ ecore_evas_quartz_new(const char* name, int w, int h)
 
    return NULL;
 #else
-   fprintf(stderr, "OUTCH !\n");
+   fprintf(stderr, "OUTCH name='%s' size=%dx%d!\n", name ? name : "", w, h);
    return NULL;
 #endif
 }
diff --git a/src/lib/ecore_evas/ecore_evas_sdl.c b/src/lib/ecore_evas/ecore_evas_sdl.c
index 40adc6b..e45216e 100644
--- a/src/lib/ecore_evas/ecore_evas_sdl.c
+++ b/src/lib/ecore_evas/ecore_evas_sdl.c
@@ -115,7 +115,7 @@ _ecore_evas_render(Ecore_Evas *ee)
 static int
 _ecore_evas_idle_enter(void *data __UNUSED__)
 {
-   Ecore_List2  *l;
+   Ecore_Evas  *ee;
    double       t1 = 0.0;
    double       t2 = 0.0;
 
@@ -126,17 +126,12 @@ _ecore_evas_idle_enter(void *data __UNUSED__)
 	t1 = ecore_time_get();
      }
 #endif /* _WIN32 */
-   for (l = (Ecore_List2 *)ecore_evases; l; l = l->next)
+   EINA_INLIST_FOREACH(ecore_evases, ee)
      {
-	Ecore_Evas *ee;
 #ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER
 	Eina_List *ll;
 	Ecore_Evas *ee2;
-#endif
-
-	ee = (Ecore_Evas *)l;
 
-#ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER
 	EINA_LIST_FOREACH(ee->sub_ecore_evas, ll, ee2)
 	  {
 	     if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2);
@@ -229,7 +224,7 @@ _ecore_evas_sdl_shutdown(void)
 static void
 _ecore_evas_sdl_free(Ecore_Evas *ee)
 {
-   ecore_evases = _ecore_list2_remove(ecore_evases, ee);
+   ecore_evases = (Ecore_Evas *) eina_inlist_remove(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
    ecore_event_window_unregister(0);
    _ecore_evas_sdl_shutdown();
    ecore_sdl_shutdown();
@@ -422,13 +417,13 @@ _ecore_evas_internal_sdl_new(int rmethod, const char* name, int w, int h, int fu
 
    _ecore_evas_sdl_init(w, h);
 
-   ecore_event_window_register(0, ee, ee->evas, _ecore_evas_mouse_move_process);
+   ecore_event_window_register(0, ee, ee->evas, (Ecore_Event_Mouse_Move_Cb) _ecore_evas_mouse_move_process);
 
    evas_event_feed_mouse_in(ee->evas, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff), NULL);
 
    SDL_ShowCursor(SDL_DISABLE);
 
-   ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
+   ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
    return ee;
 }
 #endif
diff --git a/src/lib/ecore_evas/ecore_evas_win32.c b/src/lib/ecore_evas/ecore_evas_win32.c
index 3497948..168267b 100644
--- a/src/lib/ecore_evas/ecore_evas_win32.c
+++ b/src/lib/ecore_evas/ecore_evas_win32.c
@@ -95,7 +95,7 @@ _ecore_evas_win32_render(Ecore_Evas *ee)
 static int
 _ecore_evas_win32_idle_enter(void *data __UNUSED__)
 {
-   Ecore_List2 *l;
+   Ecore_Evas *ee;
    double       t1 = 0.0;
    double       t2 = 0.0;
 
@@ -104,14 +104,10 @@ _ecore_evas_win32_idle_enter(void *data __UNUSED__)
      {
         t1 = ecore_time_get();
      }
-   for (l = (Ecore_List2 *)ecore_evases; l; l = l->next)
-     {
-        Ecore_Evas *ee;
-
-        ee = (Ecore_Evas *)l;
+   EINA_INLIST_FOREACH(ecore_evases, ee)
         _ecore_evas_win32_render(ee);
-     }
-/*    ecore_x_flush(); */
+
+   /*    ecore_x_flush(); */
    if (_ecore_evas_fps_debug)
      {
         t2 = ecore_time_get();
@@ -406,7 +402,7 @@ _ecore_evas_win32_free(Ecore_Evas *ee)
 
    ecore_win32_window_free(ee->prop.window);
    ecore_event_window_unregister(ee->prop.window);
-   ecore_evases = _ecore_list2_remove(ecore_evases, ee);
+   ecore_evases = (Ecore_Evas *) eina_inlist_remove(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
    _ecore_evas_win32_shutdown();
    ecore_win32_shutdown();
 }
@@ -1098,7 +1094,7 @@ _ecore_evas_win32_new_internal(int (*_ecore_evas_engine_init)(Ecore_Evas *ee),
         return NULL;
      }
 
-   ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
+   ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
    ecore_event_window_register(ee->prop.window, ee, ee->evas, _ecore_evas_mouse_move_process);
 
    return ee;
diff --git a/src/lib/ecore_evas/ecore_evas_wince.c b/src/lib/ecore_evas/ecore_evas_wince.c
index 66d6a60..bc9c420 100644
--- a/src/lib/ecore_evas/ecore_evas_wince.c
+++ b/src/lib/ecore_evas/ecore_evas_wince.c
@@ -93,7 +93,7 @@ _ecore_evas_wince_render(Ecore_Evas *ee)
 static int
 _ecore_evas_wince_idle_enter(void *data __UNUSED__)
 {
-   Ecore_List2 *l;
+   Ecore_Evas *ee;
    double       t1 = 0.0;
    double       t2 = 0.0;
 
@@ -102,13 +102,9 @@ _ecore_evas_wince_idle_enter(void *data __UNUSED__)
      {
 	t1 = ecore_time_get();
      }
-   for (l = (Ecore_List2 *)ecore_evases; l; l = l->next)
-     {
-	Ecore_Evas *ee;
-
-	ee = (Ecore_Evas *)l;
+   EINA_INLIST_FOREACH(ecore_evases, ee)
 	_ecore_evas_wince_render(ee);
-     }
+
    if (_ecore_evas_fps_debug)
      {
 	t2 = ecore_time_get();
@@ -342,7 +338,7 @@ _ecore_evas_wince_free(Ecore_Evas *ee)
 
    ecore_wince_window_free((Ecore_WinCE_Window *)ee->prop.window);
    ecore_event_window_unregister(ee->prop.window);
-   ecore_evases = _ecore_list2_remove(ecore_evases, ee);
+   ecore_evases = (Ecore_Evas *) eina_inlist_remove(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
    _ecore_evas_wince_shutdown();
    ecore_wince_shutdown();
 }
@@ -853,7 +849,7 @@ ecore_evas_software_wince_new_internal(int                 backend,
         ecore_wince_window_resume_set((Ecore_WinCE_Window *)ee->prop.window, einfo->func.resume);
      }
 
-   ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
+   ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
    ecore_event_window_register(ee->prop.window, ee, ee->evas, (Ecore_Event_Mouse_Move_Cb)_ecore_evas_mouse_move_process);
 
    return ee;
diff --git a/src/lib/ecore_evas/ecore_evas_x.c b/src/lib/ecore_evas/ecore_evas_x.c
index 7fe922c..f0ee394 100644
--- a/src/lib/ecore_evas/ecore_evas_x.c
+++ b/src/lib/ecore_evas/ecore_evas_x.c
@@ -141,7 +141,7 @@ _ecore_evas_x_gl_window_new(Ecore_Evas *ee, Ecore_X_Window parent, int x, int y,
 static int
 _ecore_evas_x_render(Ecore_Evas *ee)
 {
-   Evas_Rectangle *r;
+   Eina_Rectangle *r;
    Eina_List *updates, *l;
    int rend = 0;
 #ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER
@@ -315,7 +315,7 @@ _ecore_evas_x_resize_shape(Ecore_Evas *ee)
 {
    if (!strcmp(ee->driver, "software_x11"))
      {
-#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_X11
 	Evas_Engine_Info_Software_X11 *einfo;
 
 	einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas);
@@ -337,7 +337,7 @@ _ecore_evas_x_resize_shape(Ecore_Evas *ee)
 	     evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
 	     evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
 	  }
-#endif /* BUILD_ECORE_EVAS_SOFTWARE_X11 || BUILD_ECORE_EVAS_SOFTWARE_XCB */
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_X11 */
      }
    else if (!strcmp(ee->driver, "xrender_x11"))
      {
@@ -353,9 +353,9 @@ _ecore_evas_x_resize_shape(Ecore_Evas *ee)
 	     if (ee->engine.x.mask) ecore_x_pixmap_free(ee->engine.x.mask);
 	     ee->engine.x.mask = ecore_x_pixmap_new(ee->prop.window, ee->w, ee->h, 1);
              foreground = 0;
-             ecore_x_gc_new(ee->engine.x.mask,
-                            ECORE_X_GC_VALUE_MASK_FOREGROUND,
-                            &foreground);
+             gc = ecore_x_gc_new(ee->engine.x.mask,
+				 ECORE_X_GC_VALUE_MASK_FOREGROUND,
+				 &foreground);
              ecore_x_drawable_rectangle_fill(ee->engine.x.mask, gc,
                                              0, 0, ee->w, ee->h);
              ecore_x_gc_free(gc);
@@ -375,9 +375,6 @@ _ecore_evas_x_resize_shape(Ecore_Evas *ee)
 	einfo = (Evas_Engine_Info_Software_16_X11 *)evas_engine_info_get(ee->evas);
 	if (einfo)
 	  {
-	     GC gc;
-	     XGCValues gcv;
-
 	     if (ee->engine.x.mask) ecore_x_pixmap_free(ee->engine.x.mask);
 	     ee->engine.x.mask = ecore_x_pixmap_new(ee->prop.window, ee->w, ee->h, 1);
 	     einfo->info.mask = ee->engine.x.mask;
@@ -998,7 +995,7 @@ _ecore_evas_x_layer_update(Ecore_Evas *ee)
 static int
 _ecore_evas_x_idle_enter(void *data __UNUSED__)
 {
-   Ecore_List2 *l;
+   Ecore_Evas *ee;
    double t1 = 0.0;
    double t2 = 0.0;
    int rend = 0;
@@ -1008,13 +1005,8 @@ _ecore_evas_x_idle_enter(void *data __UNUSED__)
      {
 	t1 = ecore_time_get();
      }
-   for (l = (Ecore_List2 *)ecore_evases; l; l = l->next)
-     {
-	Ecore_Evas *ee;
-
-	ee = (Ecore_Evas *)l;
+   EINA_INLIST_FOREACH(ecore_evases, ee)
 	rend |= _ecore_evas_x_render(ee);
-     }
    ecore_x_flush();
    if (_ecore_evas_fps_debug)
      {
@@ -1071,7 +1063,7 @@ _ecore_evas_x_free(Ecore_Evas *ee)
 	ecore_event_window_unregister(*winp);
 	free(winp);
      }
-   ecore_evases = _ecore_list2_remove(ecore_evases, ee);
+   ecore_evases = (Ecore_Evas *) eina_inlist_remove(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
    _ecore_evas_x_shutdown();
    ecore_x_shutdown();
 }
@@ -1321,7 +1313,7 @@ _ecore_evas_x_rotation_set(Ecore_Evas *ee, int rotation)
    if (!strcmp(ee->driver, "xrender_x11")) return;
    if (!strcmp(ee->driver, "software_x11"))
      {
-#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_X11
 	Evas_Engine_Info_Software_X11 *einfo;
 
 	einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas);
@@ -1329,7 +1321,7 @@ _ecore_evas_x_rotation_set(Ecore_Evas *ee, int rotation)
 	einfo->info.rotation = rotation;
 	_ecore_evas_x_rotation_set_internal
 	  (ee, rotation, (Evas_Engine_Info *)einfo);
-#endif /* BUILD_ECORE_EVAS_SOFTWARE_X11 || BUILD_ECORE_EVAS_SOFTWARE_XCB */
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_X11 */
      }
    else if (!strcmp(ee->driver,  "software_16_x11"))
      {
@@ -1353,7 +1345,7 @@ _ecore_evas_x_shaped_set(Ecore_Evas *ee, int shaped)
    if (!strcmp(ee->driver, "opengl_x11")) return;
    if (!strcmp(ee->driver, "software_x11"))
      {
-#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_X11
 	Evas_Engine_Info_Software_X11 *einfo;
 
 	einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas);
@@ -1389,7 +1381,7 @@ _ecore_evas_x_shaped_set(Ecore_Evas *ee, int shaped)
 		  ecore_x_window_shape_input_mask_set(ee->prop.window, 0);
 	       }
 	  }
-#endif /* BUILD_ECORE_EVAS_SOFTWARE_X11 || BUILD_ECORE_EVAS_SOFTWARE_XCB */
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_X11 */
      }
    else if (!strcmp(ee->driver, "xrender_x11"))
      {
@@ -1484,7 +1476,7 @@ _ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha)
 
    if (!strcmp(ee->driver, "software_x11"))
      {
-#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_X11
 	Evas_Engine_Info_Software_X11 *einfo;
 
 	einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas);
@@ -1553,7 +1545,7 @@ _ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha)
 	     ecore_x_icccm_title_set(ee->prop.window, ee->prop.title);
 	     ecore_x_netwm_name_set(ee->prop.window, ee->prop.title);
 	  }
-#endif /* BUILD_ECORE_EVAS_SOFTWARE_X11 || BUILD_ECORE_EVAS_SOFTWARE_XCB */
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_X11 */
      }
    else if (!strcmp(ee->driver, "xrender_x11"))
      {
@@ -2055,7 +2047,7 @@ _ecore_evas_x_avoid_damage_set(Ecore_Evas *ee, int on)
 
    if (!strcmp(ee->driver, "software_x11"))
      {
-#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_X11
 	Evas_Engine_Info_Software_X11 *einfo;
 
 	ee->prop.avoid_damage = on;
@@ -2102,7 +2094,7 @@ _ecore_evas_x_avoid_damage_set(Ecore_Evas *ee, int on)
 		  evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
 	       }
 	  }
-#endif /* BUILD_ECORE_EVAS_SOFTWARE_X11 || BUILD_ECORE_EVAS_SOFTWARE_XCB */
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_X11 */
      }
    else if (!strcmp(ee->driver, "software_16_x11"))
      {
@@ -2156,7 +2148,7 @@ _ecore_evas_x_shutdown(void)
    _ecore_evas_init_count--;
    if (_ecore_evas_init_count == 0)
      {
-	int i;
+	unsigned int i;
 
 	while (ecore_evases) _ecore_evas_free(ecore_evases);
 	for (i = 0; i < sizeof(ecore_evas_event_handlers) / sizeof(Ecore_Event_Handler*); i++)
@@ -2230,7 +2222,7 @@ static const Ecore_Evas_Engine_Func _ecore_x_engine_func =
  *
  * FIXME: To be fixed.
  */
-#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_X11
 EAPI Ecore_Evas *
 ecore_evas_software_x11_new(const char *disp_name, Ecore_X_Window parent,
 			    int x, int y, int w, int h)
@@ -2387,11 +2379,11 @@ ecore_evas_software_x11_new(const char *disp_name, Ecore_X_Window parent,
 	       redraw_debug = 0;
 	  }
 # ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
-        einfo->info.backend = 1;
+        einfo->info.backend = EVAS_ENGINE_INFO_SOFTWARE_X11_BACKEND_XCB;
 	einfo->info.connection = ecore_x_connection_get();
 	einfo->info.screen = screen;
 # else
-        einfo->info.backend = 0;
+        einfo->info.backend = EVAS_ENGINE_INFO_SOFTWARE_X11_BACKEND_XLIB;
 	einfo->info.connection = ecore_x_display_get();
 	einfo->info.screen = NULL;
 # endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
@@ -2453,7 +2445,7 @@ ecore_evas_software_x11_new(const char *disp_name, Ecore_X_Window parent,
 	evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
      }
 
-   ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
+   ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
    ecore_event_window_register(ee->prop.window, ee, ee->evas, (Ecore_Event_Mouse_Move_Cb) _ecore_evas_mouse_move_process);
    return ee;
 }
@@ -2471,7 +2463,7 @@ ecore_evas_software_x11_new(const char *disp_name __UNUSED__, Ecore_X_Window par
  *
  * FIXME: To be fixed.
  */
-#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_X11
 EAPI Ecore_X_Window
 ecore_evas_software_x11_window_get(const Ecore_Evas *ee)
 {
@@ -2490,7 +2482,7 @@ ecore_evas_software_x11_window_get(const Ecore_Evas *ee __UNUSED__)
  *
  * FIXME: To be fixed.
  */
-#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_X11
 EAPI void
 ecore_evas_software_x11_direct_resize_set(Ecore_Evas *ee, int on)
 {
@@ -2526,7 +2518,7 @@ ecore_evas_software_x11_direct_resize_set(Ecore_Evas *ee __UNUSED__, int on __UN
  *
  * FIXME: To be fixed.
  */
-#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_X11
 EAPI int
 ecore_evas_software_x11_direct_resize_get(const Ecore_Evas *ee)
 {
@@ -2545,7 +2537,7 @@ ecore_evas_software_x11_direct_resize_get(const Ecore_Evas *ee __UNUSED__)
  *
  * FIXME: To be fixed.
  */
-#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_X11
 EAPI void
 ecore_evas_software_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win)
 {
@@ -2579,7 +2571,6 @@ ecore_evas_gl_x11_new(const char *disp_name, Ecore_X_Window parent,
 # ifdef HAVE_ECORE_X_XCB
    Ecore_Evas *ee = NULL;
 # else
-   Evas_Engine_Info_GL_X11 *einfo;
    Ecore_Evas *ee;
    int rmethod;
 
@@ -2621,12 +2612,9 @@ ecore_evas_gl_x11_new(const char *disp_name, Ecore_X_Window parent,
 
    if (parent == 0) parent = DefaultRootWindow(ecore_x_display_get());
    ee->engine.x.win_root = parent;
-   einfo = (Evas_Engine_Info_GL_X11 *)evas_engine_info_get(ee->evas);
-   if (einfo)
-     {
-	ee->prop.window = _ecore_evas_x_gl_window_new(ee, ee->engine.x.win_root, x, y, w, h, 0);
-	evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
-     }
+
+   ee->prop.window = _ecore_evas_x_gl_window_new(ee, ee->engine.x.win_root, x, y, w, h, 0);
+
    if (getenv("DESKTOP_STARTUP_ID"))
      {
 	ecore_x_netwm_startup_id_set(ee->prop.window,
@@ -2637,7 +2625,7 @@ ecore_evas_gl_x11_new(const char *disp_name, Ecore_X_Window parent,
 //	putenv((char*)"DESKTOP_STARTUP_ID=");
      }
 
-   ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
+   ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
    ecore_event_window_register(ee->prop.window, ee, ee->evas, (Ecore_Event_Mouse_Move_Cb) _ecore_evas_mouse_move_process);
 # endif /* HAVE_ECORE_X_XCB */
 
@@ -2876,7 +2864,7 @@ ecore_evas_xrender_x11_new(const char *disp_name, Ecore_X_Window parent,
 	evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
      }
 
-   ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
+   ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
    ecore_event_window_register(ee->prop.window, ee, ee->evas, (Ecore_Event_Mouse_Move_Cb) _ecore_evas_mouse_move_process);
    return ee;
 }
@@ -3085,7 +3073,7 @@ ecore_evas_software_x11_16_new(const char *disp_name, Ecore_X_Window parent,
 	evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
      }
 
-   ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
+   ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
    ecore_event_window_register(ee->prop.window, ee, ee->evas, (Ecore_Event_Mouse_Move_Cb) _ecore_evas_mouse_move_process);
    return ee;
 }
diff --git a/src/lib/ecore_file/ecore_file_monitor_inotify.c b/src/lib/ecore_file/ecore_file_monitor_inotify.c
index a505ef3..af68cf7 100644
--- a/src/lib/ecore_file/ecore_file_monitor_inotify.c
+++ b/src/lib/ecore_file/ecore_file_monitor_inotify.c
@@ -47,7 +47,7 @@ struct _Ecore_File_Monitor_Inotify
 };
 
 static Ecore_Fd_Handler *_fdh = NULL;
-static Ecore_List2    *_monitors = NULL;
+static Ecore_File_Monitor    *_monitors = NULL;
 
 static int                 _ecore_file_monitor_inotify_handler(void *data, Ecore_Fd_Handler *fdh);
 static Ecore_File_Monitor *_ecore_file_monitor_inotify_monitor_find(int wd);
@@ -81,16 +81,9 @@ int
 ecore_file_monitor_inotify_shutdown(void)
 {
    int fd;
-   Ecore_List2 *l;
 
-   for (l = _monitors; l;)
-     {
-	Ecore_File_Monitor *em;
-
-	em = ECORE_FILE_MONITOR(l);
-	l = l->next;
-	ecore_file_monitor_inotify_del(em);
-     }
+   while(_monitors)
+	ecore_file_monitor_inotify_del(_monitors);
 
    if (_fdh)
      {
@@ -122,7 +115,7 @@ ecore_file_monitor_inotify_add(const char *path,
    if (em->path[len - 1] == '/' && strcmp(em->path, "/"))
      em->path[len - 1] = 0;
 
-   _monitors = _ecore_list2_append(_monitors, em);
+   _monitors = ECORE_FILE_MONITOR(eina_inlist_append(EINA_INLIST_GET(_monitors), EINA_INLIST_GET(em)));
 
    if (ecore_file_exists(em->path))
      {
@@ -143,7 +136,7 @@ ecore_file_monitor_inotify_del(Ecore_File_Monitor *em)
 {
    int fd;
 
-   _monitors = _ecore_list2_remove(_monitors, em);
+   _monitors = ECORE_FILE_MONITOR(eina_inlist_remove(EINA_INLIST_GET(_monitors), EINA_INLIST_GET(em)));
 
    fd = ecore_main_fd_handler_fd_get(_fdh);
    if (ECORE_FILE_MONITOR_INOTIFY(em)->wd)
@@ -181,16 +174,12 @@ _ecore_file_monitor_inotify_handler(void *data __UNUSED__, Ecore_Fd_Handler *fdh
 static Ecore_File_Monitor *
 _ecore_file_monitor_inotify_monitor_find(int wd)
 {
-   Ecore_List2 *l;
+   Ecore_File_Monitor *l;
 
-   for (l = _monitors; l; l = l->next)
+   EINA_INLIST_FOREACH(_monitors, l)
      {
-	Ecore_File_Monitor *em;
-
-	em = ECORE_FILE_MONITOR(l);
-
-	if (ECORE_FILE_MONITOR_INOTIFY(em)->wd == wd)
-	  return em;
+	if (ECORE_FILE_MONITOR_INOTIFY(l)->wd == wd)
+	  return l;
      }
    return NULL;
 }
diff --git a/src/lib/ecore_file/ecore_file_monitor_poll.c b/src/lib/ecore_file/ecore_file_monitor_poll.c
index 76bdc70..7f2912c 100644
--- a/src/lib/ecore_file/ecore_file_monitor_poll.c
+++ b/src/lib/ecore_file/ecore_file_monitor_poll.c
@@ -22,7 +22,6 @@
  */
 
 typedef struct _Ecore_File_Monitor_Poll Ecore_File_Monitor_Poll;
-typedef struct _Ecore_File              Ecore_File;
 
 #define ECORE_FILE_MONITOR_POLL(x) ((Ecore_File_Monitor_Poll *)(x))
 
@@ -33,21 +32,13 @@ struct _Ecore_File_Monitor_Poll
    unsigned char       deleted;
 };
 
-struct _Ecore_File
-{
-   Ecore_List2  __list_data;
-   char          *name;
-   int            mtime;
-   unsigned char  is_dir;
-};
-
 #define ECORE_FILE_INTERVAL_MIN  1.0
 #define ECORE_FILE_INTERVAL_STEP 0.5
 #define ECORE_FILE_INTERVAL_MAX  5.0
 
 static double         _interval = ECORE_FILE_INTERVAL_MIN;
 static Ecore_Timer   *_timer = NULL;
-static Ecore_List2 *_monitors = NULL;
+static Ecore_File_Monitor *_monitors = NULL;
 static int          _lock = 0;
 
 static int         _ecore_file_monitor_poll_handler(void *data);
@@ -63,16 +54,8 @@ ecore_file_monitor_poll_init(void)
 int
 ecore_file_monitor_poll_shutdown(void)
 {
-   Ecore_List2 *l;
-
-   for (l = _monitors; l;)
-     {
-	Ecore_File_Monitor *em;
-
-	em = ECORE_FILE_MONITOR(l);
-	l = l->next;
-	ecore_file_monitor_poll_del(em);
-     }
+   while(_monitors)
+	ecore_file_monitor_poll_del(_monitors);
 
    if (_timer)
      {
@@ -97,7 +80,7 @@ ecore_file_monitor_poll_add(const char *path,
 
    em = calloc(1, sizeof(Ecore_File_Monitor_Poll));
    if (!em) return NULL;
-   
+
    if (!_timer)
      _timer = ecore_timer_add(_interval, _ecore_file_monitor_poll_handler, NULL);
    else
@@ -134,10 +117,10 @@ ecore_file_monitor_poll_add(const char *path,
 		    }
 
 		       snprintf(buf, sizeof(buf), "%s/%s", em->path, file);
-		  f->name = file;
+		       f->name = file;
 		       f->mtime = ecore_file_mod_time(buf);
 		       f->is_dir = ecore_file_is_dir(buf);
-		       em->files = _ecore_list2_append(em->files, f);
+		       em->files = (Ecore_File *) eina_inlist_append(EINA_INLIST_GET(em->files), EINA_INLIST_GET(f));
 		    }
 	  }
      }
@@ -147,7 +130,7 @@ ecore_file_monitor_poll_add(const char *path,
 	return NULL;
      }
 
-   _monitors = _ecore_list2_append(_monitors, em);
+   _monitors = ECORE_FILE_MONITOR(eina_inlist_append(EINA_INLIST_GET(_monitors), EINA_INLIST_GET(em)));
 
    return em;
 }
@@ -155,7 +138,7 @@ ecore_file_monitor_poll_add(const char *path,
 void
 ecore_file_monitor_poll_del(Ecore_File_Monitor *em)
 {
-   Ecore_List2 *l;
+   Ecore_File *l;
 
    if (_lock)
      {
@@ -169,20 +152,19 @@ ecore_file_monitor_poll_del(Ecore_File_Monitor *em)
      {
 	for (l = em->files; l;)
 	  {
-	     Ecore_File *file;
-	     
-	     file = (Ecore_File *)l;
-	     l = l->next;
+	     Ecore_File *file = l;
+
+	     l = (Ecore_File *) EINA_INLIST_GET(l)->next;
 	     free(file->name);
 	     free(file);
 	  }
      }
-   
-   _monitors = _ecore_list2_remove(_monitors, em);
-   
+
+   _monitors = ECORE_FILE_MONITOR(eina_inlist_remove(EINA_INLIST_GET(_monitors), EINA_INLIST_GET(em)));
+
    free(em->path);
    free(em);
-   
+
    if (_timer)
      {
 	if (!_monitors)
@@ -198,18 +180,13 @@ ecore_file_monitor_poll_del(Ecore_File_Monitor *em)
 static int
 _ecore_file_monitor_poll_handler(void *data __UNUSED__)
 {
-   Ecore_List2 *l;
+   Ecore_File_Monitor *l;
 
    _interval += ECORE_FILE_INTERVAL_STEP;
 
    _lock = 1;
-   for (l = _monitors; l; l = l->next)
-     {
-	Ecore_File_Monitor *em;
-
-	em = ECORE_FILE_MONITOR(l);
-	_ecore_file_monitor_poll_check(em);
-     }
+   EINA_INLIST_FOREACH(_monitors, l)
+	_ecore_file_monitor_poll_check(l);
    _lock = 0;
 
    if (_interval > ECORE_FILE_INTERVAL_MAX)
@@ -218,10 +195,9 @@ _ecore_file_monitor_poll_handler(void *data __UNUSED__)
 
    for (l = _monitors; l;)
      {
-	Ecore_File_Monitor *em;
+	Ecore_File_Monitor *em = l;
 
-	em = ECORE_FILE_MONITOR(l);
-	l = l->next;
+	l = ECORE_FILE_MONITOR(EINA_INLIST_GET(l)->next);
 	if (ECORE_FILE_MONITOR_POLL(em)->deleted)
 	  ecore_file_monitor_del(em);
      }
@@ -238,17 +214,16 @@ _ecore_file_monitor_poll_check(Ecore_File_Monitor *em)
    is_dir = ecore_file_is_dir(em->path);
    if (mtime < ECORE_FILE_MONITOR_POLL(em)->mtime)
      {
-	Ecore_List2 *l;
+	Ecore_File *l;
 	Ecore_File_Event event;
-	
+
 	/* Notify all files deleted */
 	for (l = em->files; l;)
 	  {
-	     Ecore_File *f;
+	     Ecore_File *f = l;
 	     char buf[PATH_MAX];
-	     
-	     f = (Ecore_File *)l;
-	     l = l->next;
+
+	     l = (Ecore_File *) EINA_INLIST_GET(l)->next;
 
 	     snprintf(buf, sizeof(buf), "%s/%s", em->path, f->name);
 	     if (f->is_dir)
@@ -265,18 +240,17 @@ _ecore_file_monitor_poll_check(Ecore_File_Monitor *em)
      }
    else
      {
-	Ecore_List2 *l;
+	Ecore_File *l;
 
 	/* Check for changed files */
 	for (l = em->files; l;)
 	  {
-	     Ecore_File *f;
+	     Ecore_File *f = l;
 	     char buf[PATH_MAX];
 	     int mtime;
 	     Ecore_File_Event event;
 
-	     f = (Ecore_File *)l;
-	     l = l->next;
+	     l = (Ecore_File *) EINA_INLIST_GET(l)->next;
 
 	     snprintf(buf, sizeof(buf), "%s/%s", em->path, f->name);
 	     mtime = ecore_file_mod_time(buf);
@@ -288,7 +262,7 @@ _ecore_file_monitor_poll_check(Ecore_File_Monitor *em)
 		    event = ECORE_FILE_EVENT_DELETED_FILE;
 
 		  em->func(em->data, em, event, buf);
-		  em->files = _ecore_list2_remove(em->files, f);
+		  em->files = (Ecore_File *) eina_inlist_remove(EINA_INLIST_GET(em->files), EINA_INLIST_GET(f));
 		  free(f->name);
 		  free(f);
 		  _interval = ECORE_FILE_INTERVAL_MIN;
@@ -313,22 +287,22 @@ _ecore_file_monitor_poll_check(Ecore_File_Monitor *em)
 	     /* Files have been added or removed */
 	     files = ecore_file_ls(em->path);
 	     if (files)
-	       { 
+	       {
 		  /* Are we a directory? We should check first, rather than rely on null here*/
 		  EINA_LIST_FOREACH(files, l, file)
 		    {
 		       Ecore_File *f;
 		       char buf[PATH_MAX];
 		       Ecore_File_Event event;
-		       
+
 		       if (_ecore_file_monitor_poll_checking(em, file))
 			 continue;
-		       
+
 		       snprintf(buf, sizeof(buf), "%s/%s", em->path, file);
 		       f = calloc(1, sizeof(Ecore_File));
 		       if (!f)
 			 continue;
-		       
+
 		       f->name = strdup(file);
 		       f->mtime = ecore_file_mod_time(buf);
 		       f->is_dir = ecore_file_mod_time(buf);
@@ -337,7 +311,7 @@ _ecore_file_monitor_poll_check(Ecore_File_Monitor *em)
 		       else
 			 event = ECORE_FILE_EVENT_CREATED_FILE;
 		       em->func(em->data, em, event, buf);
-		       em->files = _ecore_list2_append(em->files, f);
+		       em->files = (Ecore_File *) eina_inlist_append(EINA_INLIST_GET(em->files), EINA_INLIST_GET(f));
 		    }
 		  while (files)
 		    {
@@ -346,7 +320,7 @@ _ecore_file_monitor_poll_check(Ecore_File_Monitor *em)
 		       files = eina_list_remove_list(files, files);
 		    }
 	       }
-	     
+
 	     if (!ecore_file_is_dir(em->path))
 	       em->func(em->data, em, ECORE_FILE_EVENT_MODIFIED, em->path);
 	     _interval = ECORE_FILE_INTERVAL_MIN;
@@ -358,14 +332,11 @@ _ecore_file_monitor_poll_check(Ecore_File_Monitor *em)
 static int
 _ecore_file_monitor_poll_checking(Ecore_File_Monitor *em, char *name)
 {
-   Ecore_List2 *l;
+   Ecore_File *l;
 
-   for (l = em->files; l; l = l->next)
+   EINA_INLIST_FOREACH(em->files, l)
      {
-	Ecore_File *f;
-
-	f = (Ecore_File *)l;
-	if (!strcmp(f->name, name))
+	if (!strcmp(l->name, name))
 	  return 1;
      }
    return 0;
diff --git a/src/lib/ecore_file/ecore_file_private.h b/src/lib/ecore_file/ecore_file_private.h
index 0c642ae..22d3b30 100644
--- a/src/lib/ecore_file/ecore_file_private.h
+++ b/src/lib/ecore_file/ecore_file_private.h
@@ -21,9 +21,18 @@ int ecore_file_monitor_shutdown(void);
 
 #define ECORE_FILE_MONITOR(x) ((Ecore_File_Monitor *)(x))
 
+typedef struct _Ecore_File Ecore_File;
+struct _Ecore_File
+{
+   EINA_INLIST;
+   char          *name;
+   int            mtime;
+   unsigned char  is_dir;
+};
+
 struct _Ecore_File_Monitor
 {
-   Ecore_List2 __list_data;
+   EINA_INLIST;
    void (*func) (void *data,
 		 Ecore_File_Monitor *ecore_file_monitor,
 		 Ecore_File_Event event,
@@ -31,7 +40,7 @@ struct _Ecore_File_Monitor
 
    char               *path;
    void               *data;
-   Ecore_List2        *files;
+   Ecore_File         *files;
 };
 
 #ifdef HAVE_INOTIFY
diff --git a/src/lib/ecore_x/Ecore_X.h b/src/lib/ecore_x/Ecore_X.h
index 1500b18..b3a0164 100644
--- a/src/lib/ecore_x/Ecore_X.h
+++ b/src/lib/ecore_x/Ecore_X.h
@@ -1301,7 +1301,10 @@ EAPI void            ecore_x_atom_get_prefetch(const char *name);
 EAPI void            ecore_x_atom_get_fetch(void);
 EAPI Ecore_X_Atom    ecore_x_atom_get(const char *name);
 EAPI void            ecore_x_atoms_get(const char **names, int num, Ecore_X_Atom *atoms);
-       
+EAPI void            ecore_x_get_atom_name_prefetch(Ecore_X_Atom atom);
+EAPI void            ecore_x_get_atom_name_fetch(void);
+EAPI char           *ecore_x_atom_name_get(Ecore_X_Atom atom);
+
 
 
 EAPI void            ecore_x_icccm_init(void);
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_atom.c b/src/lib/ecore_x/xcb/ecore_xcb_atom.c
index ac087e8..fa5bf24 100644
--- a/src/lib/ecore_x/xcb/ecore_xcb_atom.c
+++ b/src/lib/ecore_x/xcb/ecore_xcb_atom.c
@@ -421,3 +421,63 @@ ecore_x_atom_get(const char *name __UNUSED__)
 
    return reply->atom;
 }
+
+
+/**
+ * Sends the GetAtomName request.
+ * @param atom Atom to get the name from.
+ * @ingroup Ecore_X_Atom_Group
+ */
+EAPI void
+ecore_x_get_atom_name_prefetch(Ecore_X_Atom atom)
+{
+   xcb_get_atom_name_cookie_t cookie;
+
+   cookie = xcb_get_atom_name_unchecked(_ecore_xcb_conn, atom);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetAtomName request sent by ecore_x_get_atom_name_prefetch().
+ * @ingroup Ecore_X_Atom_Group
+ */
+EAPI void
+ecore_x_get_atom_name_fetch(void)
+{
+   xcb_get_atom_name_cookie_t cookie;
+   xcb_get_atom_name_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_atom_name_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Retrieves the name of the given atom.
+ * @param  atom Unused.
+ * @return      The name of the atom.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_get_atom_name_prefetch(), which sends the GetAtomName request,
+ * then ecore_x_get_atom_name_fetch(), which gets the reply.
+ * @ingroup Ecore_X_Atom_Group
+ */
+EAPI char *
+ecore_x_atom_name_get(Ecore_X_Atom atom)
+{
+   xcb_get_atom_name_reply_t *reply;
+   char                      *name;
+   int                        length;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return NULL;
+
+   length = xcb_get_atom_name_name_length(reply);
+   name = (char *)malloc(sizeof(char) * (length + 1));
+   if (!name) return NULL;
+
+   memcpy(name, xcb_get_atom_name_name(reply), length);
+   name[length] = '\0';
+
+   return name;
+}
diff --git a/src/lib/ecore_x/xlib/ecore_x.c b/src/lib/ecore_x/xlib/ecore_x.c
index 3b033e3..f9f9b79 100644
--- a/src/lib/ecore_x/xlib/ecore_x.c
+++ b/src/lib/ecore_x/xlib/ecore_x.c
@@ -1022,31 +1022,6 @@ ecore_x_window_client_sniff(Ecore_X_Window win)
    XShapeSelectInput(_ecore_x_disp, win, ShapeNotifyMask);
 }
 
-/**
- * Retrieves the atom value associated with the given name.
- * @param  name The given name.
- * @return Associated atom value.
- */
-EAPI Ecore_X_Atom    
-ecore_x_atom_get(const char *name)
-{
-   if (!_ecore_x_disp) return 0;
-   return XInternAtom(_ecore_x_disp, name, False);
-}
-
-EAPI void
-ecore_x_atoms_get(const char **names, int num, Ecore_X_Atom *atoms)
-{
-   Atom *atoms_int;
-   int i;
-   
-   if (!_ecore_x_disp) return;
-   atoms_int = alloca(num * sizeof(Atom));
-   XInternAtoms(_ecore_x_disp, (char **)names, num, False, atoms_int);
-   for (i = 0; i < num; i++)
-     atoms[i] = atoms_int[i];
-}
-
 
 
 
diff --git a/src/lib/ecore_x/xlib/ecore_x_atoms.c b/src/lib/ecore_x/xlib/ecore_x_atoms.c
index e8fda29..a938e4b 100644
--- a/src/lib/ecore_x/xlib/ecore_x_atoms.c
+++ b/src/lib/ecore_x/xlib/ecore_x_atoms.c
@@ -223,3 +223,45 @@ _ecore_x_atoms_init(void)
    XInternAtoms(_ecore_x_disp, names, num, False, atoms);
    for (i = 0; i < num; i++) *(items[i].atom) = atoms[i];
 }
+
+/**
+ * Retrieves the atom value associated with the given name.
+ * @param  name The given name.
+ * @return Associated atom value.
+ */
+EAPI Ecore_X_Atom
+ecore_x_atom_get(const char *name)
+{
+   if (!_ecore_x_disp) return 0;
+   return XInternAtom(_ecore_x_disp, name, False);
+}
+
+EAPI void
+ecore_x_atoms_get(const char **names, int num, Ecore_X_Atom *atoms)
+{
+   Atom *atoms_int;
+   int i;
+
+   if (!_ecore_x_disp) return;
+   atoms_int = alloca(num * sizeof(Atom));
+   XInternAtoms(_ecore_x_disp, (char **)names, num, False, atoms_int);
+   for (i = 0; i < num; i++)
+     atoms[i] = atoms_int[i];
+}
+
+EAPI char *
+ecore_x_atom_name_get(Ecore_X_Atom atom)
+{
+   char *name;
+   char *xname;
+
+   if (!_ecore_x_disp) return NULL;
+
+   xname = XGetAtomName(_ecore_x_disp, atom);
+   if (!xname) return NULL;
+
+   name = strdup(xname);
+   XFree(xname);
+
+   return name;
+}
diff --git a/src/lib/ecore_x/xlib/ecore_x_window.c b/src/lib/ecore_x/xlib/ecore_x_window.c
index 97129ff..3877b91 100644
--- a/src/lib/ecore_x/xlib/ecore_x_window.c
+++ b/src/lib/ecore_x/xlib/ecore_x_window.c
@@ -494,7 +494,8 @@ ecore_x_window_focus(Ecore_X_Window win)
 {
    if (win == 0) win = DefaultRootWindow(_ecore_x_disp);   
 //   XSetInputFocus(_ecore_x_disp, win, RevertToNone, CurrentTime);
-   XSetInputFocus(_ecore_x_disp, win, RevertToPointerRoot, CurrentTime);
+//   XSetInputFocus(_ecore_x_disp, win, RevertToPointerRoot, CurrentTime);
+   XSetInputFocus(_ecore_x_disp, win, RevertToParent, CurrentTime);
 }
 
 /**
@@ -508,7 +509,8 @@ ecore_x_window_focus_at_time(Ecore_X_Window win, Ecore_X_Time t)
 {
    if (win == 0) win = DefaultRootWindow(_ecore_x_disp);   
 //   XSetInputFocus(_ecore_x_disp, win, RevertToNone, t);
-   XSetInputFocus(_ecore_x_disp, win, PointerRoot, t);
+//   XSetInputFocus(_ecore_x_disp, win, PointerRoot, t);
+   XSetInputFocus(_ecore_x_disp, win, RevertToParent, t);
 }
 
 /**
@@ -789,6 +791,7 @@ _ecore_x_window_tree_walk(Window win)
 	       }
 	  }
      }
+   if (list) XFree(list);
    return s;
 }
 
diff --git a/src/lib/ecore_x/xlib/ecore_x_window_prop.c b/src/lib/ecore_x/xlib/ecore_x_window_prop.c
index 225b8bf..a091328 100644
--- a/src/lib/ecore_x/xlib/ecore_x_window_prop.c
+++ b/src/lib/ecore_x/xlib/ecore_x_window_prop.c
@@ -63,23 +63,27 @@ ecore_x_window_prop_card32_get(Ecore_X_Window win, Ecore_X_Atom atom,
    int                 num;
 
    prop_ret = NULL;
-   XGetWindowProperty(_ecore_x_disp, win, atom, 0, 0x7fffffff, False,
-		      XA_CARDINAL, &type_ret, &format_ret, &num_ret,
-		      &bytes_after, &prop_ret);
-   if (prop_ret && type_ret == XA_CARDINAL && format_ret == 32)
+   if (XGetWindowProperty(_ecore_x_disp, win, atom, 0, 0x7fffffff, False,
+			  XA_CARDINAL, &type_ret, &format_ret, &num_ret,
+			  &bytes_after, &prop_ret) != Success)
+      return -1;
+
+   if (type_ret != XA_CARDINAL || format_ret != 32)
+     {
+	num = -1;
+     }
+   else if (num_ret == 0 || !prop_ret)
+     {
+	num = 0;
+     }
+   else
      {
 	if (num_ret < len)
 	   len = num_ret;
-
 	for (i = 0; i < len; i++)
-	   val[i] = ((unsigned long*)prop_ret)[i];
-	
+	   val[i] = ((unsigned long *)prop_ret)[i];
 	num = len;
      }
-   else
-     {
-	num = -1;
-     }
    if (prop_ret)
       XFree(prop_ret);
 
@@ -104,18 +108,22 @@ ecore_x_window_prop_card32_list_get(Ecore_X_Window win, Ecore_X_Atom atom,
    unsigned int        i, *val;
    int                 num;
 
+   *plst = NULL;
    prop_ret = NULL;
    if (XGetWindowProperty(_ecore_x_disp, win, atom, 0, 0x7fffffff, False,
 			  XA_CARDINAL, &type_ret, &format_ret, &num_ret,
 			  &bytes_after, &prop_ret) != Success)
       return -1;
 
-   if (type_ret == None || num_ret == 0)
+   if (type_ret != XA_CARDINAL || format_ret != 32)
+     {
+	num = -1;
+     }
+   else if (num_ret == 0 || !prop_ret)
      {
 	num = 0;
-	*plst = NULL;
      }
-   else if (prop_ret && type_ret == XA_CARDINAL && format_ret == 32)
+   else
      {
 	val = malloc(num_ret * sizeof(unsigned int));
 	for (i = 0; i < num_ret; i++)
@@ -123,11 +131,6 @@ ecore_x_window_prop_card32_list_get(Ecore_X_Window win, Ecore_X_Atom atom,
 	num = num_ret;
 	*plst = val;
      }
-   else
-     {
-	num = -1;
-	*plst = NULL;
-     }
    if (prop_ret)
       XFree(prop_ret);
 
@@ -186,11 +189,15 @@ ecore_x_window_prop_xid_get(Ecore_X_Window win, Ecore_X_Atom atom,
 			  &bytes_after, &prop_ret) != Success)
       return -1;
 
-   if (type_ret == None)
+   if (type_ret != type || format_ret != 32)
+     {
+	num = -1;
+     }
+   else if (num_ret == 0 || !prop_ret)
      {
 	num = 0;
      }
-   else if (prop_ret && type_ret == type && format_ret == 32)
+   else
      {
 	if (num_ret < len)
 	   len = num_ret;
@@ -198,10 +205,6 @@ ecore_x_window_prop_xid_get(Ecore_X_Window win, Ecore_X_Atom atom,
 	   lst[i] = ((unsigned long *)prop_ret)[i];
 	num = len;
      }
-   else
-     {
-	num = -1;
-     }
    if (prop_ret)
       XFree(prop_ret);
 
@@ -235,21 +238,21 @@ ecore_x_window_prop_xid_list_get(Ecore_X_Window win, Ecore_X_Atom atom,
 			  &bytes_after, &prop_ret) != Success)
       return -1;
 
-   if (type_ret == None || num_ret == 0)
+   if (type_ret != type || format_ret != 32)
+     {
+	num = -1;
+     }
+   else if (num_ret == 0 || !prop_ret)
      {
 	num = 0;
      }
-   else if (prop_ret && type_ret == type && format_ret == 32)
+   else
      {
 	alst = malloc(num_ret * sizeof(Ecore_X_ID));
 	for (i = 0; i < num_ret; i++)
 	   alst[i] = ((unsigned long *)prop_ret)[i];
-	*val = alst;
 	num = num_ret;
-     }
-   else
-     {
-	num = -1;
+	*val = alst;
      }
    if (prop_ret)
       XFree(prop_ret);

-- 
Core abstraction layer for enlightenment DR 0.17



More information about the Pkg-e-commits mailing list