diff --git a/legacy/ecore/autogen.sh b/legacy/ecore/autogen.sh index 322c91908f..88ee7f3a0e 100755 --- a/legacy/ecore/autogen.sh +++ b/legacy/ecore/autogen.sh @@ -1,147 +1,13 @@ #!/bin/sh -# Run this to generate all the initial makefiles, etc. -srcdir=`dirname $0` -PKG_NAME="libecore" +rm -rf autom4te.cache +rm -f aclocal.m4 -DIE=0 +echo "Running aclocal..."; aclocal $ACLOCAL_FLAGS -I m4 \ +&& echo "Running autoheader..."; autoheader \ +&& echo "Running autoconf..."; autoconf \ +&& echo "Running libtoolize..."; libtoolize --automake \ +&& echo "Running automake..."; automake --add-missing --copy --gnu -(autoconf --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`autoconf' installed to." - echo "Download the appropriate package for your distribution," - echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" - DIE=1 -} - -(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && { - (libtoolize --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`libtool' installed." - echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2d.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - } -} - -grep "^AM_GNU_GETTEXT" $srcdir/configure.in >/dev/null && { - grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \ - (gettext --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`gettext' installed." - echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - } -} - -grep "^AM_GNOME_GETTEXT" $srcdir/configure.in >/dev/null && { - grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \ - (gettext --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`gettext' installed." - echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - } -} - -(automake --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`automake' installed." - echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - NO_AUTOMAKE=yes -} - - -# if no automake, don't bother testing for aclocal -test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: Missing \`aclocal'. The version of \`automake'" - echo "installed doesn't appear recent enough." - echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 -} - -if test "$DIE" -eq 1; then - exit 1 -fi - -if test -z "$*"; then - echo "**Warning**: I am going to run \`configure' with no arguments." - echo "If you wish to pass any to it, please specify them on the" - echo \`$0\'" command line." - echo -fi - -case $CC in -xlc ) - am_opt=--include-deps;; -esac - -for coin in `find $srcdir -name configure.in -print` -do - dr=`dirname $coin` - if test -f $dr/NO-AUTO-GEN; then - echo skipping $dr -- flagged as no auto-gen - else - echo processing $dr - macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < $coin` - ( cd $dr - aclocalinclude="$ACLOCAL_FLAGS" - for k in $macrodirs; do - if test -d $k; then - aclocalinclude="$aclocalinclude -I $k" - ##else - ## echo "**Warning**: No such directory \`$k'. Ignored." - fi - done - if grep "^AM_GNU_GETTEXT" configure.in >/dev/null; then - if grep "sed.*POTFILES" configure.in >/dev/null; then - : do nothing -- we still have an old unmodified configure.in - else - echo "Creating $dr/aclocal.m4 ..." - test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 - echo "Running gettextize... Ignore non-fatal messages." - echo "no" | gettextize --force --copy - echo "Making $dr/aclocal.m4 writable ..." - test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 - fi - fi - if grep "^AM_GNOME_GETTEXT" configure.in >/dev/null; then - echo "Creating $dr/aclocal.m4 ..." - test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 - echo "Running gettextize... Ignore non-fatal messages." - echo "no" | gettextize --force --copy - echo "Making $dr/aclocal.m4 writable ..." - test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 - fi - if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then - echo "Running libtoolize..." - libtoolize --force --copy - fi - echo "Running aclocal $aclocalinclude ..." - aclocal $aclocalinclude - if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then - echo "Running autoheader..." - autoheader - fi - echo "Running automake --gnu $am_opt ..." - automake --add-missing --gnu $am_opt - echo "Running autoconf ..." - autoconf - ) - fi -done - -#conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c - -if test x$NOCONFIGURE = x; then - echo Running $srcdir/configure $conf_flags "$@" ... - $srcdir/configure $conf_flags "$@" -else - echo Skipping configure process. -fi +### If you want this, uncomment it. +./configure "$@" diff --git a/legacy/ecore/m4/ac_expand_dir.m4 b/legacy/ecore/m4/ac_expand_dir.m4 new file mode 100644 index 0000000000..b5599a074d --- /dev/null +++ b/legacy/ecore/m4/ac_expand_dir.m4 @@ -0,0 +1,14 @@ +dnl AC_EXPAND_DIR(VARNAME, DIR) +dnl expands occurrences of ${prefix} and ${exec_prefix} in the given DIR, +dnl and assigns the resulting string to VARNAME +dnl example: AC_DEFINE_DIR(DATADIR, "$datadir") +dnl by Alexandre Oliva +AC_DEFUN([AC_EXPAND_DIR], [ + $1=$2 + $1=`( + test "x$prefix" = xNONE && prefix="$ac_default_prefix" + test "x$exec_prefix" = xNONE && exec_prefix="${prefix}" + eval echo \""[$]$1"\" + )` +]) + diff --git a/legacy/ecore/m4/ac_path_generic.m4 b/legacy/ecore/m4/ac_path_generic.m4 new file mode 100644 index 0000000000..27b55b3ff4 --- /dev/null +++ b/legacy/ecore/m4/ac_path_generic.m4 @@ -0,0 +1,136 @@ +dnl @synopsis AC_PATH_GENERIC(LIBRARY [, MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl +dnl Runs a LIBRARY-config script and defines LIBRARY_CFLAGS and LIBRARY_LIBS +dnl +dnl The script must support `--cflags' and `--libs' args. +dnl If MINIMUM-VERSION is specified, the script must also support the +dnl `--version' arg. +dnl If the `--with-library-[exec-]prefix' arguments to ./configure are given, +dnl it must also support `--prefix' and `--exec-prefix'. +dnl (In other words, it must be like gtk-config.) +dnl +dnl For example: +dnl +dnl AC_PATH_GENERIC(Foo, 1.0.0) +dnl +dnl would run `foo-config --version' and check that it is at least 1.0.0 +dnl +dnl If so, the following would then be defined: +dnl +dnl FOO_CFLAGS to `foo-config --cflags` +dnl FOO_LIBS to `foo-config --libs` +dnl +dnl At present there is no support for additional "MODULES" (see AM_PATH_GTK) +dnl (shamelessly stolen from gtk.m4 and then hacked around a fair amount) +dnl +dnl @author Angus Lees + +AC_DEFUN([AC_PATH_GENERIC], +[dnl +dnl we're going to need uppercase, lowercase and user-friendly versions of the +dnl string `LIBRARY' +pushdef([UP], translit([$1], [a-z], [A-Z]))dnl +pushdef([DOWN], translit([$1], [A-Z], [a-z]))dnl + +dnl +dnl Get the cflags and libraries from the LIBRARY-config script +dnl +AC_ARG_WITH(DOWN-prefix,[ --with-]DOWN[-prefix=PFX Prefix where $1 is installed (optional)], + DOWN[]_config_prefix="$withval", DOWN[]_config_prefix="") +AC_ARG_WITH(DOWN-exec-prefix,[ --with-]DOWN[-exec-prefix=PFX Exec prefix where $1 is installed (optional)], + DOWN[]_config_exec_prefix="$withval", DOWN[]_config_exec_prefix="") + + if test x$DOWN[]_config_exec_prefix != x ; then + DOWN[]_config_args="$DOWN[]_config_args --exec-prefix=$DOWN[]_config_exec_prefix" + if test x${UP[]_CONFIG+set} != xset ; then + UP[]_CONFIG=$DOWN[]_config_exec_prefix/bin/DOWN-config + fi + fi + if test x$DOWN[]_config_prefix != x ; then + DOWN[]_config_args="$DOWN[]_config_args --prefix=$DOWN[]_config_prefix" + if test x${UP[]_CONFIG+set} != xset ; then + UP[]_CONFIG=$DOWN[]_config_prefix/bin/DOWN-config + fi + fi + + AC_PATH_PROG(UP[]_CONFIG, DOWN-config, no) + ifelse([$2], , + AC_MSG_CHECKING(for $1), + AC_MSG_CHECKING(for $1 - version >= $2) + ) + no_[]DOWN="" + if test "$UP[]_CONFIG" = "no" ; then + no_[]DOWN=yes + else + UP[]_CFLAGS="`$UP[]_CONFIG $DOWN[]_config_args --cflags`" + UP[]_LIBS="`$UP[]_CONFIG $DOWN[]_config_args --libs`" + ifelse([$2], , ,[ + DOWN[]_config_major_version=`$UP[]_CONFIG $DOWN[]_config_args \ + --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + DOWN[]_config_minor_version=`$UP[]_CONFIG $DOWN[]_config_args \ + --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + DOWN[]_config_micro_version=`$UP[]_CONFIG $DOWN[]_config_args \ + --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + DOWN[]_wanted_major_version="regexp($2, [\<\([0-9]*\)], [\1])" + DOWN[]_wanted_minor_version="regexp($2, [\<\([0-9]*\)\.\([0-9]*\)], [\2])" + DOWN[]_wanted_micro_version="regexp($2, [\<\([0-9]*\).\([0-9]*\).\([0-9]*\)], [\3])" + + # Compare wanted version to what config script returned. + # If I knew what library was being run, i'd probably also compile + # a test program at this point (which also extracted and tested + # the version in some library-specific way) + if test "$DOWN[]_config_major_version" -lt \ + "$DOWN[]_wanted_major_version" \ + -o \( "$DOWN[]_config_major_version" -eq \ + "$DOWN[]_wanted_major_version" \ + -a "$DOWN[]_config_minor_version" -lt \ + "$DOWN[]_wanted_minor_version" \) \ + -o \( "$DOWN[]_config_major_version" -eq \ + "$DOWN[]_wanted_major_version" \ + -a "$DOWN[]_config_minor_version" -eq \ + "$DOWN[]_wanted_minor_version" \ + -a "$DOWN[]_config_micro_version" -lt \ + "$DOWN[]_wanted_micro_version" \) ; then + # older version found + no_[]DOWN=yes + echo -n "*** An old version of $1 " + echo -n "($DOWN[]_config_major_version" + echo -n ".$DOWN[]_config_minor_version" + echo ".$DOWN[]_config_micro_version) was found." + echo -n "*** You need a version of $1 newer than " + echo -n "$DOWN[]_wanted_major_version" + echo -n ".$DOWN[]_wanted_minor_version" + echo ".$DOWN[]_wanted_micro_version." + echo "***" + echo "*** If you have already installed a sufficiently new version, this error" + echo "*** probably means that the wrong copy of the DOWN-config shell script is" + echo "*** being found. The easiest way to fix this is to remove the old version" + echo "*** of $1, but you can also set the UP[]_CONFIG environment to point to the" + echo "*** correct copy of DOWN-config. (In this case, you will have to" + echo "*** modify your LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf" + echo "*** so that the correct libraries are found at run-time)" + fi + ]) + fi + if test "x$no_[]DOWN" = x ; then + AC_MSG_RESULT(yes) + ifelse([$3], , :, [$3]) + else + AC_MSG_RESULT(no) + if test "$UP[]_CONFIG" = "no" ; then + echo "*** The DOWN-config script installed by $1 could not be found" + echo "*** If $1 was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the UP[]_CONFIG environment variable to the" + echo "*** full path to DOWN-config." + fi + UP[]_CFLAGS="" + UP[]_LIBS="" + ifelse([$4], , :, [$4]) + fi + AC_SUBST(UP[]_CFLAGS) + AC_SUBST(UP[]_LIBS) + + popdef([UP]) + popdef([DOWN]) +]) + diff --git a/legacy/edje/src/lib/Makefile.am b/legacy/edje/src/lib/Makefile.am index e7815cdf98..c83f8b8cee 100644 --- a/legacy/edje/src/lib/Makefile.am +++ b/legacy/edje/src/lib/Makefile.am @@ -37,6 +37,7 @@ edje_smart.c \ edje_text.c \ edje_util.c \ edje_var.c \ +edje_container.c \ edje_private.h libedje_la_LIBADD = $(LDFLAGS) -lm @evas_libs@ @ecore_libs@ @eet_libs@ @embryo_libs@ diff --git a/legacy/edje/src/lib/edje_container.c b/legacy/edje/src/lib/edje_container.c new file mode 100644 index 0000000000..5a07a1d677 --- /dev/null +++ b/legacy/edje/src/lib/edje_container.c @@ -0,0 +1,281 @@ +#include "Edje.h" +#include "edje_private.h" + +#define E_SMART_OBJ_GET(smart, o, type) \ + { \ + char *_e_smart_str; \ + \ + if (!o) return; \ + smart = evas_object_smart_data_get(o); \ + if (!smart) return; \ + _e_smart_str = (char *)evas_object_type_get(o); \ + if (!_e_smart_str) return; \ + if (strcmp(_e_smart_str, type)) return; \ + } + +#define E_SMART_OBJ_GET_RETURN(smart, o, type, ret) \ + { \ + char *_e_smart_str; \ + \ + if (!o) return ret; \ + smart = evas_object_smart_data_get(o); \ + if (!smart) return ret; \ + _e_smart_str = (char *)evas_object_type_get(o); \ + if (!_e_smart_str) return ret; \ + if (strcmp(_e_smart_str, type)) return ret; \ + } + +#define E_OBJ_NAME "edje_container_object" + +typedef struct _Smart_Data Smart_Data; +typedef struct _Smart_Item Smart_Item; +typedef struct _Smart_Column Smart_Column; + +struct _Smart_Data +{ + int layout; + Evas_List *children; + struct { + int w, h; + } min, max; +}; + +struct _Smart_Item +{ + Evas_Object *container; + Evas_Object *obj; +}; + +struct _Smart_Column +{ + int min, max; +}; + +#define EDJE_LAYOUT_NONE 0 + +/* the following are "linear" layout systems */ + +/* H & V LIST pack all items at their minimum size - no expanding in the lists + * direction (lets say height), BUT all items are expanded to fill the "width" + * of the list. if an item is too small to fit the width, the list object will + * call a "min_size_change" callback indicating to the parent/swallower that + * the parent should revise its use/view of this object. this is intended for + * large lists of items - like a list of files, or titles etc. this allows + * for each item to have multiple columns. each column may be any size, with + * the minimu size being the sum of all minimum column widths. as more items + * are added column widths may be adjusted and all items told of this + * adjustment + */ +#define EDJE_LAYOUT_VLIST 2 +#define EDJE_LAYOUT_HLIST 1 +/* H & V BOX pack items and may or may not expand an item in any direction and + * may align an item smaller than its allocated space in a certain way. they + * dont know about columns etc. like lists. + */ +#define EDJE_LAYOUT_VBOX 4 +#define EDJE_LAYOUT_HBOX 3 +/* H & V flow are like "file manager" views you see in explorer etc. wehere + * items "line wrap" as they go along horizontally (or vertizally) as needed + */ +#define EDJE_LAYOUT_VFLOW 6 +#define EDJE_LAYOUT_HFLOW 5 + +/* the following are "2 dimensional" layout systems */ + +/* tables are full 2-dimensional layouts which dont really have append and + * prepend semantics... this will need working on later for 2d layouts + */ +#define EDJE_LAYOUT_TABLE 7 +#define EDJE_LAYOUT_COUNT 8 + +static void _smart_init(void); +static void _smart_add(Evas_Object * obj); +static void _smart_del(Evas_Object * obj); +static void _smart_layer_set(Evas_Object * obj, int layer); +static void _smart_raise(Evas_Object * obj); +static void _smart_lower(Evas_Object * obj); +static void _smart_stack_above(Evas_Object * obj, Evas_Object * above); +static void _smart_stack_below(Evas_Object * obj, Evas_Object * below); +static void _smart_move(Evas_Object * obj, Evas_Coord x, Evas_Coord y); +static void _smart_resize(Evas_Object * obj, Evas_Coord w, Evas_Coord h); +static void _smart_show(Evas_Object * obj); +static void _smart_hide(Evas_Object * obj); +static void _smart_color_set(Evas_Object * obj, int r, int g, int b, int a); +static void _smart_clip_set(Evas_Object * obj, Evas_Object * clip); +static void _smart_clip_unset(Evas_Object * obj); + +static Evas_Smart *smart = NULL; + +Evas_Object * +_edje_container_object_add(Evas *evas) +{ + _smart_init(); + return evas_object_smart_add(evas, smart); +} + +/*******************************************/ +/* Internal smart object required routines */ +/*******************************************/ +static void +_smart_init(void) +{ + if (smart) return; + smart = evas_smart_new(E_OBJ_NAME, + _smart_add, + _smart_del, + _smart_layer_set, + _smart_raise, + _smart_lower, + _smart_stack_above, + _smart_stack_below, + _smart_move, + _smart_resize, + _smart_show, + _smart_hide, + _smart_color_set, + _smart_clip_set, + _smart_clip_unset, + NULL); +} + +static void +_smart_add(Evas_Object *obj) +{ + Smart_Data *sd; + + sd = calloc(1, sizeof(Smart_Data)); + if (!sd) return; +// evas_object_smart_member_add(sd->obj, obj); + evas_object_smart_data_set(obj, sd); +} + +static void +_smart_del(Evas_Object *obj) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +// evas_object_del(sd->obj); + free(sd); +} + +static void +_smart_layer_set(Evas_Object *obj, int layer) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +// evas_object_layer_set(sd->obj, layer); +} + +static void +_smart_raise(Evas_Object *obj) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +// evas_object_raise(sd->obj); +} + +static void +_smart_lower(Evas_Object *obj) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +// evas_object_lower(sd->obj); +} + +static void +_smart_stack_above(Evas_Object *obj, Evas_Object *above) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +// evas_object_stack_above(sd->obj, above); +} + +static void +_smart_stack_below(Evas_Object *obj, Evas_Object *below) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +// evas_object_stack_below(sd->obj, below); +} + +static void +_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +// evas_object_move(sd->obj, x, y); +} + +static void +_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +// evas_object_resize(sd->obj, w, h); +} + +static void +_smart_show(Evas_Object *obj) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +// evas_object_show(sd->obj); +} + +static void +_smart_hide(Evas_Object *obj) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +// evas_object_hide(sd->obj); +} + +static void +_smart_color_set(Evas_Object *obj, int r, int g, int b, int a) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +// evas_object_color_set(sd->obj, r, g, b, a); +} + +static void +_smart_clip_set(Evas_Object *obj, Evas_Object *clip) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +// evas_object_clip_set(sd->obj, clip); +} + +static void +_smart_clip_unset(Evas_Object *obj) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +// evas_object_clip_unset(sd->obj); +} diff --git a/legacy/emotion/autogen.sh b/legacy/emotion/autogen.sh index 778fc5b1d9..88ee7f3a0e 100755 --- a/legacy/emotion/autogen.sh +++ b/legacy/emotion/autogen.sh @@ -1,137 +1,13 @@ #!/bin/sh -# Run this to generate all the initial makefiles, etc. -srcdir=`dirname $0` -PKG_NAME="the package." +rm -rf autom4te.cache +rm -f aclocal.m4 -DIE=0 +echo "Running aclocal..."; aclocal $ACLOCAL_FLAGS -I m4 \ +&& echo "Running autoheader..."; autoheader \ +&& echo "Running autoconf..."; autoconf \ +&& echo "Running libtoolize..."; libtoolize --automake \ +&& echo "Running automake..."; automake --add-missing --copy --gnu -(autoconf --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`autoconf' installed to." - echo "Download the appropriate package for your distribution," - echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" - DIE=1 -} - -(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && { - (libtoolize --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`libtool' installed." - echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2d.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - } -} - -grep "^AM_GNU_GETTEXT" $srcdir/configure.in >/dev/null && { - grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \ - (gettext --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`gettext' installed." - echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - } -} - -(automake --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`automake' installed." - echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - NO_AUTOMAKE=yes -} - - -# if no automake, don't bother testing for aclocal -test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: Missing \`aclocal'. The version of \`automake'" - echo "installed doesn't appear recent enough." - echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 -} - -if test "$DIE" -eq 1; then - exit 1 -fi - -if test -z "$*"; then - echo "**Warning**: I am going to run \`configure' with no arguments." - echo "If you wish to pass any to it, please specify them on the" - echo \`$0\'" command line." - echo -fi - -case $CC in -xlc ) - am_opt=--include-deps;; -esac - -for coin in `find $srcdir -name configure.in -print` -do - dr=`dirname $coin` - if test -f $dr/NO-AUTO-GEN; then - echo skipping $dr -- flagged as no auto-gen - else - echo processing $dr - macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < $coin` - ( cd $dr - aclocalinclude="$ACLOCAL_FLAGS" - for k in $macrodirs; do - if test -d $k; then - aclocalinclude="$aclocalinclude -I $k" - ##else - ## echo "**Warning**: No such directory \`$k'. Ignored." - fi - done - if grep "^AM_GNU_GETTEXT" configure.in >/dev/null; then - if grep "sed.*POTFILES" configure.in >/dev/null; then - : do nothing -- we still have an old unmodified configure.in - else - echo "Creating $dr/aclocal.m4 ..." - test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 - echo "Running gettextize... Ignore non-fatal messages." - echo "no" | gettextize --force --copy - echo "Making $dr/aclocal.m4 writable ..." - test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 - fi - fi - if grep "^AM_GNOME_GETTEXT" configure.in >/dev/null; then - echo "Creating $dr/aclocal.m4 ..." - test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 - echo "Running gettextize... Ignore non-fatal messages." - echo "no" | gettextize --force --copy - echo "Making $dr/aclocal.m4 writable ..." - test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 - fi - if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then - echo "Running libtoolize..." - libtoolize --force --copy - fi - echo "Running aclocal $aclocalinclude ..." - aclocal $aclocalinclude - if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then - echo "Running autoheader..." - autoheader - fi - echo "Running automake --gnu $am_opt ..." - automake --add-missing --gnu $am_opt - echo "Running autoconf ..." - autoconf - ) - fi -done - -#conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c - -if test x$NOCONFIGURE = x; then - echo Running $srcdir/configure $conf_flags "$@" ... - $srcdir/configure $conf_flags "$@" \ - && echo Now type \`make\' to compile $PKG_NAME -else - echo Skipping configure process. -fi +### If you want this, uncomment it. +./configure "$@" diff --git a/legacy/emotion/m4/ac_expand_dir.m4 b/legacy/emotion/m4/ac_expand_dir.m4 new file mode 100644 index 0000000000..b5599a074d --- /dev/null +++ b/legacy/emotion/m4/ac_expand_dir.m4 @@ -0,0 +1,14 @@ +dnl AC_EXPAND_DIR(VARNAME, DIR) +dnl expands occurrences of ${prefix} and ${exec_prefix} in the given DIR, +dnl and assigns the resulting string to VARNAME +dnl example: AC_DEFINE_DIR(DATADIR, "$datadir") +dnl by Alexandre Oliva +AC_DEFUN([AC_EXPAND_DIR], [ + $1=$2 + $1=`( + test "x$prefix" = xNONE && prefix="$ac_default_prefix" + test "x$exec_prefix" = xNONE && exec_prefix="${prefix}" + eval echo \""[$]$1"\" + )` +]) + diff --git a/legacy/emotion/m4/ac_path_generic.m4 b/legacy/emotion/m4/ac_path_generic.m4 new file mode 100644 index 0000000000..27b55b3ff4 --- /dev/null +++ b/legacy/emotion/m4/ac_path_generic.m4 @@ -0,0 +1,136 @@ +dnl @synopsis AC_PATH_GENERIC(LIBRARY [, MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl +dnl Runs a LIBRARY-config script and defines LIBRARY_CFLAGS and LIBRARY_LIBS +dnl +dnl The script must support `--cflags' and `--libs' args. +dnl If MINIMUM-VERSION is specified, the script must also support the +dnl `--version' arg. +dnl If the `--with-library-[exec-]prefix' arguments to ./configure are given, +dnl it must also support `--prefix' and `--exec-prefix'. +dnl (In other words, it must be like gtk-config.) +dnl +dnl For example: +dnl +dnl AC_PATH_GENERIC(Foo, 1.0.0) +dnl +dnl would run `foo-config --version' and check that it is at least 1.0.0 +dnl +dnl If so, the following would then be defined: +dnl +dnl FOO_CFLAGS to `foo-config --cflags` +dnl FOO_LIBS to `foo-config --libs` +dnl +dnl At present there is no support for additional "MODULES" (see AM_PATH_GTK) +dnl (shamelessly stolen from gtk.m4 and then hacked around a fair amount) +dnl +dnl @author Angus Lees + +AC_DEFUN([AC_PATH_GENERIC], +[dnl +dnl we're going to need uppercase, lowercase and user-friendly versions of the +dnl string `LIBRARY' +pushdef([UP], translit([$1], [a-z], [A-Z]))dnl +pushdef([DOWN], translit([$1], [A-Z], [a-z]))dnl + +dnl +dnl Get the cflags and libraries from the LIBRARY-config script +dnl +AC_ARG_WITH(DOWN-prefix,[ --with-]DOWN[-prefix=PFX Prefix where $1 is installed (optional)], + DOWN[]_config_prefix="$withval", DOWN[]_config_prefix="") +AC_ARG_WITH(DOWN-exec-prefix,[ --with-]DOWN[-exec-prefix=PFX Exec prefix where $1 is installed (optional)], + DOWN[]_config_exec_prefix="$withval", DOWN[]_config_exec_prefix="") + + if test x$DOWN[]_config_exec_prefix != x ; then + DOWN[]_config_args="$DOWN[]_config_args --exec-prefix=$DOWN[]_config_exec_prefix" + if test x${UP[]_CONFIG+set} != xset ; then + UP[]_CONFIG=$DOWN[]_config_exec_prefix/bin/DOWN-config + fi + fi + if test x$DOWN[]_config_prefix != x ; then + DOWN[]_config_args="$DOWN[]_config_args --prefix=$DOWN[]_config_prefix" + if test x${UP[]_CONFIG+set} != xset ; then + UP[]_CONFIG=$DOWN[]_config_prefix/bin/DOWN-config + fi + fi + + AC_PATH_PROG(UP[]_CONFIG, DOWN-config, no) + ifelse([$2], , + AC_MSG_CHECKING(for $1), + AC_MSG_CHECKING(for $1 - version >= $2) + ) + no_[]DOWN="" + if test "$UP[]_CONFIG" = "no" ; then + no_[]DOWN=yes + else + UP[]_CFLAGS="`$UP[]_CONFIG $DOWN[]_config_args --cflags`" + UP[]_LIBS="`$UP[]_CONFIG $DOWN[]_config_args --libs`" + ifelse([$2], , ,[ + DOWN[]_config_major_version=`$UP[]_CONFIG $DOWN[]_config_args \ + --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + DOWN[]_config_minor_version=`$UP[]_CONFIG $DOWN[]_config_args \ + --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + DOWN[]_config_micro_version=`$UP[]_CONFIG $DOWN[]_config_args \ + --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + DOWN[]_wanted_major_version="regexp($2, [\<\([0-9]*\)], [\1])" + DOWN[]_wanted_minor_version="regexp($2, [\<\([0-9]*\)\.\([0-9]*\)], [\2])" + DOWN[]_wanted_micro_version="regexp($2, [\<\([0-9]*\).\([0-9]*\).\([0-9]*\)], [\3])" + + # Compare wanted version to what config script returned. + # If I knew what library was being run, i'd probably also compile + # a test program at this point (which also extracted and tested + # the version in some library-specific way) + if test "$DOWN[]_config_major_version" -lt \ + "$DOWN[]_wanted_major_version" \ + -o \( "$DOWN[]_config_major_version" -eq \ + "$DOWN[]_wanted_major_version" \ + -a "$DOWN[]_config_minor_version" -lt \ + "$DOWN[]_wanted_minor_version" \) \ + -o \( "$DOWN[]_config_major_version" -eq \ + "$DOWN[]_wanted_major_version" \ + -a "$DOWN[]_config_minor_version" -eq \ + "$DOWN[]_wanted_minor_version" \ + -a "$DOWN[]_config_micro_version" -lt \ + "$DOWN[]_wanted_micro_version" \) ; then + # older version found + no_[]DOWN=yes + echo -n "*** An old version of $1 " + echo -n "($DOWN[]_config_major_version" + echo -n ".$DOWN[]_config_minor_version" + echo ".$DOWN[]_config_micro_version) was found." + echo -n "*** You need a version of $1 newer than " + echo -n "$DOWN[]_wanted_major_version" + echo -n ".$DOWN[]_wanted_minor_version" + echo ".$DOWN[]_wanted_micro_version." + echo "***" + echo "*** If you have already installed a sufficiently new version, this error" + echo "*** probably means that the wrong copy of the DOWN-config shell script is" + echo "*** being found. The easiest way to fix this is to remove the old version" + echo "*** of $1, but you can also set the UP[]_CONFIG environment to point to the" + echo "*** correct copy of DOWN-config. (In this case, you will have to" + echo "*** modify your LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf" + echo "*** so that the correct libraries are found at run-time)" + fi + ]) + fi + if test "x$no_[]DOWN" = x ; then + AC_MSG_RESULT(yes) + ifelse([$3], , :, [$3]) + else + AC_MSG_RESULT(no) + if test "$UP[]_CONFIG" = "no" ; then + echo "*** The DOWN-config script installed by $1 could not be found" + echo "*** If $1 was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the UP[]_CONFIG environment variable to the" + echo "*** full path to DOWN-config." + fi + UP[]_CFLAGS="" + UP[]_LIBS="" + ifelse([$4], , :, [$4]) + fi + AC_SUBST(UP[]_CFLAGS) + AC_SUBST(UP[]_LIBS) + + popdef([UP]) + popdef([DOWN]) +]) + diff --git a/legacy/emotion/src/lib/Emotion.h b/legacy/emotion/src/lib/Emotion.h index c621554581..94043103c7 100644 --- a/legacy/emotion/src/lib/Emotion.h +++ b/legacy/emotion/src/lib/Emotion.h @@ -6,13 +6,13 @@ enum _Emotion_Event { - EMOTION_EVENT_MENU1, - EMOTION_EVENT_MENU2, - EMOTION_EVENT_MENU3, - EMOTION_EVENT_MENU4, - EMOTION_EVENT_MENU5, - EMOTION_EVENT_MENU6, - EMOTION_EVENT_MENU7, + EMOTION_EVENT_MENU1, // Escape Menu + EMOTION_EVENT_MENU2, // Title Menu + EMOTION_EVENT_MENU3, // Root Menu + EMOTION_EVENT_MENU4, // Subpicture Menu + EMOTION_EVENT_MENU5, // Audio Menu + EMOTION_EVENT_MENU6, // Angle Menu + EMOTION_EVENT_MENU7, // Part Menu EMOTION_EVENT_UP, EMOTION_EVENT_DOWN, EMOTION_EVENT_LEFT, diff --git a/legacy/emotion/src/modules/Makefile.am b/legacy/emotion/src/modules/Makefile.am index e5ee9f85c8..9403be3b1f 100644 --- a/legacy/emotion/src/modules/Makefile.am +++ b/legacy/emotion/src/modules/Makefile.am @@ -2,7 +2,7 @@ SUBDIRS = xine -AUTOMAKE_OPTIONS = 1.4 foreign +#AUTOMAKE_OPTIONS = 1.4 foreign MAINTAINERCLEANFILES = Makefile.in @@ -22,6 +22,6 @@ emotion_xine.h emotion_decoder_xine_la_LIBADD = @my_libs@ @xine_libs@ emotion_decoder_xine_la_LDFLAGS = \ $(LDFLAGS) \ --no-undefined -module -avoid-version \ +-module -avoid-version \ -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs emotion_decoder_xine_la_DEPENDENCIES = $(top_builddir)/config.h diff --git a/legacy/emotion/src/modules/emotion_xine.c b/legacy/emotion/src/modules/emotion_xine.c index f3b2f08cdf..4044ef531c 100644 --- a/legacy/emotion/src/modules/emotion_xine.c +++ b/legacy/emotion/src/modules/emotion_xine.c @@ -10,6 +10,9 @@ static int init_count = 0; static int fd_read = -1; static int fd_write = -1; Ecore_Fd_Handler *fd_handler = NULL; +static int fd_ev_read = -1; +static int fd_ev_write = -1; +Ecore_Fd_Handler *fd_ev_handler = NULL; static xine_t *decoder = NULL; static int em_init(void); @@ -59,9 +62,11 @@ static void em_speed_set(void *ef, double speed); static double em_speed_get(void *ef); static int em_eject(void *ef); -static void *_em_seek (void *par); -static int _em_fd_active(void *data, Ecore_Fd_Handler *fdh); -static int _em_timer (void *data); +static void *_em_seek (void *par); +static int _em_fd_active (void *data, Ecore_Fd_Handler *fdh); +static void _em_event (void *data, const xine_event_t *event); +static int _em_fd_ev_active(void *data, Ecore_Fd_Handler *fdh); +static int _em_timer (void *data); static int em_init(void) @@ -100,6 +105,23 @@ em_init(void) ecore_main_fd_handler_active_set(fd_handler, ECORE_FD_READ); } } + { + int fds[2]; + + if (pipe(fds) == 0) + { + fd_ev_read = fds[0]; + fd_ev_write = fds[1]; + fcntl(fd_ev_read, F_SETFL, O_NONBLOCK); + fd_ev_handler = ecore_main_fd_handler_add(fd_ev_read, + ECORE_FD_READ, + _em_fd_ev_active, + decoder, + NULL, + NULL); + ecore_main_fd_handler_active_set(fd_ev_handler, ECORE_FD_READ); + } + } } return init_count; } @@ -115,11 +137,17 @@ em_shutdown(void) ecore_main_fd_handler_del(fd_handler); close(fd_write); close(fd_read); + ecore_main_fd_handler_del(fd_ev_handler); + close(fd_ev_write); + close(fd_ev_read); decoder = NULL; fd_handler = NULL; fd_read = -1; fd_write = -1; + fd_ev_handler = NULL; + fd_ev_read = -1; + fd_ev_write = -1; } return 0; } @@ -216,12 +244,31 @@ em_file_open(const char *file, Evas_Object *obj) xine_config_update_entry(decoder, &cf); } } + if (1) + { + xine_mrl_t **mrls; + int mrls_num; + + mrls = xine_get_browse_mrls(decoder, "dvd", "dvd://", &mrls_num); + printf("mrls = %p\n", mrls); + if (mrls) + { + int i; + + for (i = 0; i < mrls_num; i++) + { + printf("MRL: origin \"%s\" mrl \"%s\" link \"%s\" type %x size %i\n", + mrls[i]->origin, mrls[i]->mrl, mrls[i]->link, + (int)mrls[i]->type, (int)mrls[i]->size); + } + } + } if (1) { char **auto_play_mrls; int auto_play_num; - auto_play_mrls = xine_get_autoplay_mrls(decoder, "cdda", &auto_play_num); + auto_play_mrls = xine_get_autoplay_mrls(decoder, "dvd", &auto_play_num); printf("auto_play_mrls = %p\n", auto_play_mrls); if (auto_play_mrls) { @@ -232,13 +279,19 @@ em_file_open(const char *file, Evas_Object *obj) } } ev->video = xine_open_video_driver(decoder, "emotion", XINE_VISUAL_TYPE_NONE, ev); - ev->audio = xine_open_audio_driver(decoder, "oss", ev); + ev->audio = xine_open_audio_driver(decoder, "oss", ev); +// ev->audio = xine_open_audio_driver(decoder, "alsa", ev); +// ev->audio = xine_open_audio_driver(decoder, "arts", ev); +// ev->audio = xine_open_audio_driver(decoder, "esd", ev); ev->stream = xine_stream_new(decoder, ev->audio, ev->video); + ev->queue = xine_event_new_queue(ev->stream); + xine_event_create_listener_thread(ev->queue, _em_event, ev); if (!xine_open(ev->stream, file)) { xine_dispose(ev->stream); if (ev->video) xine_close_video_driver(decoder, ev->video); if (ev->audio) xine_close_audio_driver(decoder, ev->audio); + xine_event_dispose_queue(ev->queue); free(ev); return NULL; } @@ -270,6 +323,7 @@ em_file_close(void *ef) xine_stop(ev->stream); xine_close(ev->stream); xine_dispose(ev->stream); + xine_event_dispose_queue(ev->queue); if (ev->video) xine_close_video_driver(decoder, ev->video); if (ev->audio) xine_close_audio_driver(decoder, ev->audio); if (ev->timer) ecore_timer_del(ev->timer); @@ -906,9 +960,9 @@ _em_fd_active(void *data, Ecore_Fd_Handler *fdh) int length_time = 0; fd = ecore_main_fd_handler_fd_get(fdh); - while ((len = read(fd, &buf, sizeof(void *))) > 0) + while ((len = read(fd, &buf, sizeof(buf))) > 0) { - if (len == sizeof(void *)) + if (len == sizeof(buf)) { fr = buf; ev = _emotion_video_get(fr->obj); @@ -948,6 +1002,149 @@ _em_fd_active(void *data, Ecore_Fd_Handler *fdh) } } +static void +_em_event(void *data, const xine_event_t *event) +{ + void *buf[2]; + Emotion_Xine_Event *new_ev; + + new_ev = calloc(1, sizeof(Emotion_Xine_Event)); + if (!new_ev) return; + new_ev->type = event->type; + if (event->data) + { + new_ev->xine_event = malloc(event->data_length); + if (!new_ev->xine_event) + { + free(new_ev); + return; + } + memcpy(new_ev->xine_event, event->data, event->data_length); + } + buf[0] = data; + buf[1] = new_ev; + write(fd_ev_write, buf, sizeof(buf)); +} + +static int +_em_fd_ev_active(void *data, Ecore_Fd_Handler *fdh) +{ + int fd, len; + void *buf[2]; + + fd = ecore_main_fd_handler_fd_get(fdh); + while ((len = read(fd, buf, sizeof(buf))) > 0) + { + if (len == sizeof(buf)) + { + Emotion_Xine_Video *ev; + Emotion_Xine_Event *eev; + + printf("event from xine...\n"); + ev = buf[0]; + eev = buf[1]; + switch (eev->type) + { + case XINE_EVENT_UI_PLAYBACK_FINISHED: + { + printf("EV: Playback finished\n"); + /* no data in this event */ + } + break; + case XINE_EVENT_UI_CHANNELS_CHANGED: + { + printf("EV: Channels changed\n"); + /* no data in this event */ + } + break; + case XINE_EVENT_UI_SET_TITLE: + { + xine_ui_data_t *ev; + + ev = eev->xine_event; + printf("EV: New Title \"%s\"\n", ev->str); + // title is ev->str + } + break; + case XINE_EVENT_UI_MESSAGE: + { + xine_ui_message_data_t *ev; + + ev = eev->xine_event; + printf("EV: UI Message\n"); + // ev->type = error type(XINE_MSG_NO_ERROR, XINE_MSG_GENERAL_WARNING, XINE_MSG_UNKNOWN_HOST etc.) + // ev->messages is a list of messages DOUBLE null terminated + } + break; + case XINE_EVENT_AUDIO_LEVEL: + { + xine_audio_level_data_t *ev; + + ev = eev->xine_event; + printf("EV: Audio Level\n"); + // ev->left (0->100) + // ev->right + // ev->mute + } + break; + case XINE_EVENT_PROGRESS: + { + xine_progress_data_t *ev; + + ev = eev->xine_event; + printf("EV: Progress \"%s\" %i%%\n", ev->description, ev->percent); + // ev->description is text + // ev->percent is a percentage marker (0-100) + } + break; + case XINE_EVENT_MRL_REFERENCE: + { + xine_mrl_reference_data_t *ev; + + ev = eev->xine_event; + printf("EV: MRL Ref to \"%s\"\n", ev->mrl); + // ev->alternative alternative playlist no + // ev->mrl is the mrl + } + break; + case XINE_EVENT_UI_NUM_BUTTONS: + { + xine_ui_data_t *ev; + + ev = eev->xine_event; + printf("EV: Num buttons %i\n", ev->num_buttons); + // ev->num_buttons indicates how many buttons in the spu + } + break; + case XINE_EVENT_SPU_BUTTON: + { + xine_spu_button_t *ev; + + ev = eev->xine_event; + printf("EV: Button enter? [%i] %i\n", ev->direction, ev->button); + // ev->direction 1 = enter, 0 = leave + // ev->button button number entered/left + } + break; + case XINE_EVENT_DROPPED_FRAMES: + { + xine_dropped_frames_t *ev; + + ev = eev->xine_event; + printf("EV: Dropped Frames (skipped %i) (discarded %i)\n", ev->skipped_frames, ev->discarded_frames); + // ev->skipped_frames = % frames skipped * 10 + // ev->discarded_frames = % frames skipped * 10 + } + break; + default: + return; + } + if (eev->xine_event) free(eev->xine_event); + free(eev); + } + } +} + static int _em_timer(void *data) { diff --git a/legacy/emotion/src/modules/emotion_xine.h b/legacy/emotion/src/modules/emotion_xine.h index 0a819fc9b5..e7ff00e89d 100644 --- a/legacy/emotion/src/modules/emotion_xine.h +++ b/legacy/emotion/src/modules/emotion_xine.h @@ -5,12 +5,14 @@ typedef struct _Emotion_Xine_Video Emotion_Xine_Video; typedef struct _Emotion_Xine_Video_Frame Emotion_Xine_Video_Frame; +typedef struct _Emotion_Xine_Event Emotion_Xine_Event; struct _Emotion_Xine_Video { xine_video_port_t *video; xine_audio_port_t *audio; xine_stream_t *stream; + xine_event_queue_t *queue; int fd; double len; double pos; @@ -42,6 +44,12 @@ struct _Emotion_Xine_Video_Frame void *frame; }; +struct _Emotion_Xine_Event +{ + int type; + char *xine_event; +}; + Emotion_Video_Module *module_open (void); void module_close(Emotion_Video_Module *module); diff --git a/legacy/emotion/src/modules/xine/Makefile.am b/legacy/emotion/src/modules/xine/Makefile.am index 9edd65b333..d249514df4 100644 --- a/legacy/emotion/src/modules/xine/Makefile.am +++ b/legacy/emotion/src/modules/xine/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to produce Makefile.in -AUTOMAKE_OPTIONS = 1.4 foreign +#AUTOMAKE_OPTIONS = 1.4 foreign MAINTAINERCLEANFILES = Makefile.in @@ -20,6 +20,6 @@ emotion_xine_vo_out.c xineplug_vo_out_emotion_la_LIBADD = @xine_libs@ xineplug_vo_out_emotion_la_LDFLAGS = \ $(LDFLAGS) \ --no-undefined -module -avoid-version \ +-module -avoid-version \ -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs xineplug_vo_out_emotion_la_DEPENDENCIES = $(top_builddir)/config.h