parent
303222d682
commit
cddaadb447
|
@ -1,30 +0,0 @@
|
||||||
ecore-config
|
|
||||||
*.lo
|
|
||||||
*.la
|
|
||||||
.deps
|
|
||||||
.libs
|
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
aclocal.m4
|
|
||||||
confdefs.h
|
|
||||||
config.cache
|
|
||||||
config.guess
|
|
||||||
config.h
|
|
||||||
config.h.in
|
|
||||||
config.log
|
|
||||||
config.status
|
|
||||||
config.sub
|
|
||||||
configure
|
|
||||||
install-sh
|
|
||||||
libtool
|
|
||||||
ltconfig
|
|
||||||
ltmain.sh
|
|
||||||
missing
|
|
||||||
mkinstalldirs
|
|
||||||
stamp-h
|
|
||||||
stamp-h.in
|
|
||||||
*.tar.gz
|
|
||||||
macros
|
|
||||||
*~
|
|
||||||
*.spec
|
|
||||||
.icons
|
|
|
@ -1,5 +0,0 @@
|
||||||
The Rasterman <raster@rasterman.com>
|
|
||||||
Tom Gilbert <tom@linuxbrit.co.uk>
|
|
||||||
Burra <burra@colorado.edu>
|
|
||||||
Chris Ross <chris@darkrock.co.uk>
|
|
||||||
Term <term@twistedpath.org>
|
|
|
@ -1,20 +0,0 @@
|
||||||
Copyright (C) 2000 Carsten Haitzler and various contributors (see AUTHORS)
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to
|
|
||||||
deal in the Software without restriction, including without limitation the
|
|
||||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
||||||
sell copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies of the Software, its documentation and marketing & publicity
|
|
||||||
materials, and acknowledgment shall be given in the documentation, materials
|
|
||||||
and software packages that this Software was used.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
@ -1,37 +0,0 @@
|
||||||
## Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
SUBDIRS = src debian doc
|
|
||||||
|
|
||||||
MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.guess \
|
|
||||||
config.h.in config.sub configure install-sh \
|
|
||||||
ltconfig ltmain.sh missing mkinstalldirs \
|
|
||||||
stamp-h.in
|
|
||||||
|
|
||||||
dist-hook:
|
|
||||||
if test -d data; then \
|
|
||||||
mkdir $(distdir)/data; \
|
|
||||||
for file in data/*; do \
|
|
||||||
if test -f $$file; then \
|
|
||||||
cp -p $$file $(distdir)/data; \
|
|
||||||
fi \
|
|
||||||
done \
|
|
||||||
fi
|
|
||||||
|
|
||||||
bin_SCRIPTS = ecore-config
|
|
||||||
|
|
||||||
EXTRA_DIST = README AUTHORS COPYING ecore.m4 ecore.spec ecore.pc
|
|
||||||
|
|
||||||
m4datadir = $(datadir)/aclocal
|
|
||||||
m4data_DATA = ecore.m4
|
|
||||||
|
|
||||||
pkgconfigdir = $(libdir)/pkgconfig
|
|
||||||
pkgconfig_DATA = ecore.pc
|
|
||||||
|
|
||||||
docs:
|
|
||||||
$(MAKE) -C $(top_srcdir)/doc docs
|
|
||||||
|
|
||||||
if HAVE_JADE
|
|
||||||
html-docs:
|
|
||||||
$(MAKE) -C $(top_srcdir)/doc html-docs
|
|
||||||
endif
|
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
E C O R E - 0 . 0 . 1
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
Fast:
|
|
||||||
How ot build and install Ecore from this tarball?
|
|
||||||
./configure
|
|
||||||
make
|
|
||||||
su
|
|
||||||
<as root do:>
|
|
||||||
make install
|
|
||||||
|
|
||||||
from CVS:
|
|
||||||
./autogen.sh
|
|
||||||
make
|
|
||||||
su
|
|
||||||
<as root do:>
|
|
||||||
make install
|
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
What is Ecore? It is the core event abstraction layer and X abstraction
|
|
||||||
layer that makes doing selections, Xdnd, general X stuff, and event loops,
|
|
||||||
timeouts and idle handlers fast, optimised, and convenient. it's a separate
|
|
||||||
librayr so anyone can make use of the work put into Ecore to make this job
|
|
||||||
easy for applications.
|
|
|
@ -1,4 +0,0 @@
|
||||||
#undef PACKAGE_LOCALE_DIR
|
|
||||||
#undef PACKAGE_DATA_DIR
|
|
||||||
#undef PACKAGE_SOURCE_DIR
|
|
||||||
#undef HAVE_RENDER
|
|
|
@ -1,153 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# Run this to generate all the initial makefiles, etc.
|
|
||||||
|
|
||||||
abort () {
|
|
||||||
echo "$1 not found or command failed. Aborting!"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
srcdir=`dirname $0`
|
|
||||||
PKG_NAME="libecore"
|
|
||||||
|
|
||||||
DIE=0
|
|
||||||
|
|
||||||
(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) && {
|
|
||||||
(libtool --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 || abort "gettextize"
|
|
||||||
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 || abort "gettextize"
|
|
||||||
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 || abort "libtoolize"
|
|
||||||
fi
|
|
||||||
echo "Running aclocal $aclocalinclude ..."
|
|
||||||
aclocal $aclocalinclude || abort "aclocal"
|
|
||||||
if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then
|
|
||||||
echo "Running autoheader..."
|
|
||||||
autoheader || abort "autoheader"
|
|
||||||
fi
|
|
||||||
echo "Running automake --gnu $am_opt ..."
|
|
||||||
automake --add-missing --gnu $am_opt || abort "automake"
|
|
||||||
echo "Running autoconf ..."
|
|
||||||
autoconf || abort "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 || abort "configure"
|
|
||||||
else
|
|
||||||
echo Skipping configure process.
|
|
||||||
fi
|
|
|
@ -1,111 +0,0 @@
|
||||||
dnl Process this file with autoconf to produce a configure script.
|
|
||||||
|
|
||||||
AC_INIT
|
|
||||||
AC_CONFIG_SRCDIR([configure.in])
|
|
||||||
AM_INIT_AUTOMAKE(ecore, 0.0.2)
|
|
||||||
AM_CONFIG_HEADER(config.h)
|
|
||||||
|
|
||||||
AC_ISC_POSIX
|
|
||||||
AC_PROG_CC
|
|
||||||
AM_PROG_CC_STDC
|
|
||||||
AC_HEADER_STDC
|
|
||||||
AM_PROG_LIBTOOL
|
|
||||||
|
|
||||||
AM_WITH_DMALLOC
|
|
||||||
|
|
||||||
dnl Set PACKAGE_LOCALE_DIR in config.h.
|
|
||||||
if test "x${prefix}" = "xNONE"; then
|
|
||||||
AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${ac_default_prefix}/${DATADIRNAME}/locale")
|
|
||||||
else
|
|
||||||
AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${prefix}/${DATADIRNAME}/locale")
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl Set PACKAGE_DATA_DIR in config.h.
|
|
||||||
if test "x${datadir}" = 'x${prefix}/share'; then
|
|
||||||
if test "x${prefix}" = "xNONE"; then
|
|
||||||
AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${ac_default_prefix}/share/${PACKAGE}")
|
|
||||||
else
|
|
||||||
AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${prefix}/share/${PACKAGE}")
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${datadir}/${PACKAGE}")
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl Set PACKAGE_SOURCE_DIR in config.h.
|
|
||||||
packagesrcdir=`cd $srcdir && pwd`
|
|
||||||
AC_DEFINE_UNQUOTED(PACKAGE_SOURCE_DIR, "${packagesrcdir}")
|
|
||||||
|
|
||||||
dnl Use -Wall if we have gcc.
|
|
||||||
changequote(,)dnl
|
|
||||||
if test "x$GCC" = "xyes"; then
|
|
||||||
case " $CFLAGS " in
|
|
||||||
*[\ \ ]-Wall[\ \ ]*) ;;
|
|
||||||
*) CFLAGS="$CFLAGS -Wall" ;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
changequote([,])dnl
|
|
||||||
|
|
||||||
AC_PATH_XTRA
|
|
||||||
|
|
||||||
if test "x$x_includes" = "x"; then
|
|
||||||
x_includes="/usr/include"
|
|
||||||
fi
|
|
||||||
|
|
||||||
x_cflags="$X_CFLAGS"
|
|
||||||
x_ldflags="$X_LDFLAGS"
|
|
||||||
x_libs="$X_LIBS $X_EXTRA_LIBS"
|
|
||||||
|
|
||||||
AC_CHECK_LIB(X11, XOpenDisplay, x_libs="$x_libs",
|
|
||||||
AC_MSG_ERROR([ERROR: libX11 not found.]); exit,
|
|
||||||
$X_LDFLAGS $X_EXTRA_LIBS $X_LIBS)
|
|
||||||
AC_CHECK_LIB(Xext, XShmAttach, x_libs="-lXext $x_libs",
|
|
||||||
AC_CHECK_LIB(XextSam, XShmAttach,
|
|
||||||
x_libs="-lXextSam -lXext $x_libs",
|
|
||||||
AC_MSG_ERROR([ERROR: XShm not found.]); exit,
|
|
||||||
$x_libs),
|
|
||||||
$x_libs)
|
|
||||||
AC_CHECK_LIB(Xext, XShapeCombineMask, x_libs="-lXext $x_libs",
|
|
||||||
AC_MSG_ERROR([ERROR: XShape not found.]); exit,
|
|
||||||
$x_libs)
|
|
||||||
AC_CHECK_LIB(Xrender, XRenderCreatePicture,
|
|
||||||
[ x_libs=" -lXrender -lXext $x_libs";
|
|
||||||
AC_DEFINE(HAVE_RENDER)
|
|
||||||
],
|
|
||||||
[],
|
|
||||||
$x_libs)
|
|
||||||
|
|
||||||
AC_SUBST(x_cflags)
|
|
||||||
AC_SUBST(x_includes)
|
|
||||||
AC_SUBST(x_ldflags)
|
|
||||||
AC_SUBST(x_libs)
|
|
||||||
|
|
||||||
dnl Checking for Perl:
|
|
||||||
AC_PATH_PROG(PERL,perl,0)
|
|
||||||
AC_SUBST(PERL)
|
|
||||||
|
|
||||||
|
|
||||||
dnl Look for jade for sgml translations.
|
|
||||||
AC_ARG_WITH(dbsheets,
|
|
||||||
[ --with-dbsheets=DIR use DIR to specify your DocBook stylesheets installation path.],
|
|
||||||
DB_STYLESHEETS="$withval", DB_STYLESHEETS="/usr/lib/sgml/stylesheet/dsssl/docbook/nwalsh")
|
|
||||||
AC_SUBST(DB_STYLESHEETS)
|
|
||||||
AC_PATH_PROG(JADE, jade)
|
|
||||||
AM_CONDITIONAL(HAVE_JADE, test "x$JADE" != "x" && test -d "$DB_STYLESHEETS")
|
|
||||||
|
|
||||||
|
|
||||||
AC_CONFIG_FILES([
|
|
||||||
Makefile
|
|
||||||
ecore.pc
|
|
||||||
ecore-config
|
|
||||||
src/Makefile
|
|
||||||
debian/Makefile
|
|
||||||
doc/Makefile
|
|
||||||
doc/kernel-doc
|
|
||||||
doc/html-customizations.dsl
|
|
||||||
])
|
|
||||||
AC_CONFIG_COMMANDS([default],[[
|
|
||||||
chmod +x ecore-config
|
|
||||||
chmod +x doc/kernel-doc
|
|
||||||
|
|
||||||
]],[[]])
|
|
||||||
AC_OUTPUT
|
|
|
@ -1,108 +0,0 @@
|
||||||
dnl Process this file with autoconf to produce a configure script.
|
|
||||||
|
|
||||||
AC_INIT(configure.in)
|
|
||||||
AM_INIT_AUTOMAKE(ecore, 0.0.2)
|
|
||||||
AM_CONFIG_HEADER(config.h)
|
|
||||||
|
|
||||||
AC_ISC_POSIX
|
|
||||||
AC_PROG_CC
|
|
||||||
AM_PROG_CC_STDC
|
|
||||||
AC_HEADER_STDC
|
|
||||||
AM_PROG_LIBTOOL
|
|
||||||
|
|
||||||
AM_WITH_DMALLOC
|
|
||||||
|
|
||||||
dnl Set PACKAGE_LOCALE_DIR in config.h.
|
|
||||||
if test "x${prefix}" = "xNONE"; then
|
|
||||||
AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${ac_default_prefix}/${DATADIRNAME}/locale")
|
|
||||||
else
|
|
||||||
AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${prefix}/${DATADIRNAME}/locale")
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl Set PACKAGE_DATA_DIR in config.h.
|
|
||||||
if test "x${datadir}" = 'x${prefix}/share'; then
|
|
||||||
if test "x${prefix}" = "xNONE"; then
|
|
||||||
AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${ac_default_prefix}/share/${PACKAGE}")
|
|
||||||
else
|
|
||||||
AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${prefix}/share/${PACKAGE}")
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${datadir}/${PACKAGE}")
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl Set PACKAGE_SOURCE_DIR in config.h.
|
|
||||||
packagesrcdir=`cd $srcdir && pwd`
|
|
||||||
AC_DEFINE_UNQUOTED(PACKAGE_SOURCE_DIR, "${packagesrcdir}")
|
|
||||||
|
|
||||||
dnl Use -Wall if we have gcc.
|
|
||||||
changequote(,)dnl
|
|
||||||
if test "x$GCC" = "xyes"; then
|
|
||||||
case " $CFLAGS " in
|
|
||||||
*[\ \ ]-Wall[\ \ ]*) ;;
|
|
||||||
*) CFLAGS="$CFLAGS -Wall" ;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
changequote([,])dnl
|
|
||||||
|
|
||||||
AC_PATH_XTRA
|
|
||||||
|
|
||||||
if test "x$x_includes" = "x"; then
|
|
||||||
x_includes="/usr/include"
|
|
||||||
fi
|
|
||||||
|
|
||||||
x_cflags="$X_CFLAGS"
|
|
||||||
x_ldflags="$X_LDFLAGS"
|
|
||||||
x_libs="$X_LIBS $X_EXTRA_LIBS"
|
|
||||||
|
|
||||||
AC_CHECK_LIB(X11, XOpenDisplay, x_libs="$x_libs",
|
|
||||||
AC_MSG_ERROR([ERROR: libX11 not found.]); exit,
|
|
||||||
$X_LDFLAGS $X_EXTRA_LIBS $X_LIBS)
|
|
||||||
AC_CHECK_LIB(Xext, XShmAttach, x_libs="-lXext $x_libs",
|
|
||||||
AC_CHECK_LIB(XextSam, XShmAttach,
|
|
||||||
x_libs="-lXextSam -lXext $x_libs",
|
|
||||||
AC_MSG_ERROR([ERROR: XShm not found.]); exit,
|
|
||||||
$x_libs),
|
|
||||||
$x_libs)
|
|
||||||
AC_CHECK_LIB(Xext, XShapeCombineMask, x_libs="-lXext $x_libs",
|
|
||||||
AC_MSG_ERROR([ERROR: XShape not found.]); exit,
|
|
||||||
$x_libs)
|
|
||||||
AC_CHECK_LIB(Xrender, XRenderCreatePicture,
|
|
||||||
[ x_libs=" -lXrender -lXext $x_libs";
|
|
||||||
AC_DEFINE(HAVE_RENDER)
|
|
||||||
],
|
|
||||||
[],
|
|
||||||
$x_libs)
|
|
||||||
|
|
||||||
AC_SUBST(x_cflags)
|
|
||||||
AC_SUBST(x_includes)
|
|
||||||
AC_SUBST(x_ldflags)
|
|
||||||
AC_SUBST(x_libs)
|
|
||||||
|
|
||||||
dnl Checking for Perl:
|
|
||||||
AC_PATH_PROG(PERL,perl,0)
|
|
||||||
AC_SUBST(PERL)
|
|
||||||
|
|
||||||
|
|
||||||
dnl Look for jade for sgml translations.
|
|
||||||
AC_ARG_WITH(dbsheets,
|
|
||||||
[ --with-dbsheets=DIR use DIR to specify your DocBook stylesheets installation path.],
|
|
||||||
DB_STYLESHEETS="$withval", DB_STYLESHEETS="/usr/lib/sgml/stylesheet/dsssl/docbook/nwalsh")
|
|
||||||
AC_SUBST(DB_STYLESHEETS)
|
|
||||||
AC_PATH_PROG(JADE, jade)
|
|
||||||
AM_CONDITIONAL(HAVE_JADE, test "x$JADE" != "x" && test -d "$DB_STYLESHEETS")
|
|
||||||
|
|
||||||
|
|
||||||
AC_OUTPUT([
|
|
||||||
Makefile
|
|
||||||
ecore-config
|
|
||||||
ecore.pc
|
|
||||||
src/Makefile
|
|
||||||
debian/Makefile
|
|
||||||
doc/Makefile
|
|
||||||
doc/kernel-doc
|
|
||||||
doc/html-customizations.dsl
|
|
||||||
], [
|
|
||||||
chmod +x ecore-config
|
|
||||||
chmod +x doc/kernel-doc
|
|
||||||
]
|
|
||||||
)
|
|
|
@ -1,2 +0,0 @@
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
|
@ -1,7 +0,0 @@
|
||||||
EXTRA_DIST = \
|
|
||||||
changelog \
|
|
||||||
control \
|
|
||||||
copyright \
|
|
||||||
libecore0.files \
|
|
||||||
libecore0-dev.files \
|
|
||||||
rules
|
|
|
@ -1,5 +0,0 @@
|
||||||
ecore (0.0.2-0cvs20030904) unstable; urgency=low
|
|
||||||
|
|
||||||
* a CVS release
|
|
||||||
|
|
||||||
-- Sytse Wielinga <s.b.wielinga@student.utwente.nl> Thu, 4 Sep 2003 21:35:12 +0200
|
|
|
@ -1,21 +0,0 @@
|
||||||
Source: ecore
|
|
||||||
Section: libs
|
|
||||||
Priority: optional
|
|
||||||
Maintainer: Sytse Wielinga <s.b.wielinga@student.utwente.nl>
|
|
||||||
Build-Depends: debhelper (>> 3.0.0)
|
|
||||||
Standards-Version: 3.6.1.0
|
|
||||||
|
|
||||||
Package: libecore0
|
|
||||||
Architecture: any
|
|
||||||
Section: libs
|
|
||||||
Depends: ${shlibs:Depends}
|
|
||||||
Description: libecore0 description
|
|
||||||
libecore0 extended description
|
|
||||||
|
|
||||||
Package: libecore0-dev
|
|
||||||
Architecture: any
|
|
||||||
Section: devel
|
|
||||||
Architecture: any
|
|
||||||
Depends: libecore0 (= ${Source-Version}), libc6-dev
|
|
||||||
Description: libecore0 headers, static libraries and documentation
|
|
||||||
Headers, static libraries and documentation for Imlib2.
|
|
|
@ -1,32 +0,0 @@
|
||||||
This package was debianized by Laurence J. Lane <ljlane@debian.org> on
|
|
||||||
Sat, 28 Oct 2000 17:56:46 -0400.
|
|
||||||
|
|
||||||
The source code is from the e17/libs/ecore module of the enlightenment CVS
|
|
||||||
tree. For more information, see:
|
|
||||||
|
|
||||||
http://www.enlightenment.org/cvs.html
|
|
||||||
|
|
||||||
Upstream Author: Carsten Haitzler <raster@rasterman.com>
|
|
||||||
|
|
||||||
Copyright:
|
|
||||||
|
|
||||||
Copyright (C) 2000 Carsten Haitzler and various contributors (see AUTHORS)
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to
|
|
||||||
deal in the Software without restriction, including without limitation the
|
|
||||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
||||||
sell copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies of the Software, its documentation and marketing & publicity
|
|
||||||
materials, and acknowledgment shall be given in the documentation, materials
|
|
||||||
and software packages that this Software was used.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
@ -1,7 +0,0 @@
|
||||||
usr/include/*
|
|
||||||
usr/lib/lib*.a
|
|
||||||
usr/lib/lib*.so
|
|
||||||
usr/lib/pkgconfig/*
|
|
||||||
usr/lib/*.la
|
|
||||||
usr/share/aclocal/*
|
|
||||||
usr/bin/*-config
|
|
|
@ -1 +0,0 @@
|
||||||
usr/lib/lib*.so.*
|
|
|
@ -1,88 +0,0 @@
|
||||||
#!/usr/bin/make -f
|
|
||||||
# Sample debian/rules that uses debhelper.
|
|
||||||
# GNU copyright 1997 to 1999 by Joey Hess.
|
|
||||||
|
|
||||||
# Uncomment this to turn on verbose mode.
|
|
||||||
#export DH_VERBOSE=1
|
|
||||||
|
|
||||||
|
|
||||||
# This is the debhelper compatability version to use.
|
|
||||||
export DH_COMPAT=4
|
|
||||||
|
|
||||||
|
|
||||||
CFLAGS ?= -Wall -g
|
|
||||||
|
|
||||||
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
|
|
||||||
CFLAGS += -O0
|
|
||||||
else
|
|
||||||
CFLAGS += -O2
|
|
||||||
endif
|
|
||||||
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
|
|
||||||
INSTALL_PROGRAM += -s
|
|
||||||
endif
|
|
||||||
|
|
||||||
# These are used for cross-compiling and for saving the configure script
|
|
||||||
# from having to guess our platform (since we know it already)
|
|
||||||
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
|
|
||||||
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
|
|
||||||
|
|
||||||
INSTALL=/usr/bin/install -p
|
|
||||||
CONFIGUREOPTS = --prefix=/usr --enable-ecore-x --enable-ecore-job --enable-ecore-evas --enable-ecore-con --enable-ecore-ipc --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE)
|
|
||||||
package=libecore1
|
|
||||||
|
|
||||||
configure: configure-stamp
|
|
||||||
configure-stamp:
|
|
||||||
dh_testdir
|
|
||||||
|
|
||||||
test -x autogen.sh && ./autogen.sh $(CONFIGUREOPTS) || ./configure $(CONFIGUREOPTS)
|
|
||||||
|
|
||||||
touch configure-stamp
|
|
||||||
|
|
||||||
build: configure build-stamp
|
|
||||||
build-stamp:
|
|
||||||
dh_testdir
|
|
||||||
|
|
||||||
$(MAKE)
|
|
||||||
|
|
||||||
touch build-stamp
|
|
||||||
|
|
||||||
clean:
|
|
||||||
dh_testdir
|
|
||||||
rm -f build-stamp configure-stamp
|
|
||||||
|
|
||||||
-$(MAKE) distclean
|
|
||||||
-rm -f configure-stamp build-stamp
|
|
||||||
|
|
||||||
dh_clean
|
|
||||||
|
|
||||||
install: build
|
|
||||||
dh_testdir
|
|
||||||
dh_testroot
|
|
||||||
dh_clean -k
|
|
||||||
dh_installdirs
|
|
||||||
|
|
||||||
$(MAKE) install DESTDIR=$(CURDIR)/debian/tmp/
|
|
||||||
|
|
||||||
# Build architecture-independent files here.
|
|
||||||
binary-indep: build install
|
|
||||||
# We have nothing to do by default.
|
|
||||||
|
|
||||||
# Build architecture-dependent files here.
|
|
||||||
binary-arch: build install
|
|
||||||
dh_testdir
|
|
||||||
dh_testroot
|
|
||||||
dh_installdocs AUTHORS README
|
|
||||||
dh_installchangelogs
|
|
||||||
dh_movefiles
|
|
||||||
dh_strip
|
|
||||||
dh_compress
|
|
||||||
dh_fixperms
|
|
||||||
dh_installdeb
|
|
||||||
dh_makeshlibs
|
|
||||||
dh_shlibdeps
|
|
||||||
dh_gencontrol
|
|
||||||
dh_md5sums
|
|
||||||
dh_builddeb
|
|
||||||
|
|
||||||
binary: binary-indep binary-arch
|
|
||||||
.PHONY: build clean binary-indep binary-arch binary install configure
|
|
|
@ -1,41 +0,0 @@
|
||||||
## Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
MAINTAINERCLEANFILES = Makefile.in
|
|
||||||
|
|
||||||
EXTRA_DIST = \
|
|
||||||
manual.raw \
|
|
||||||
kernel-doc.in \
|
|
||||||
stylesheet.css \
|
|
||||||
figures/*.gif # Add any images you create here
|
|
||||||
|
|
||||||
|
|
||||||
## Fill in all source files that you documented
|
|
||||||
## with extractable comments here:
|
|
||||||
##
|
|
||||||
SOURCEDOC = $(top_srcdir)/src/Ecore.h
|
|
||||||
|
|
||||||
## For details on what can be specified in the
|
|
||||||
## comments, see the beginning of kernel-doc
|
|
||||||
## in this directory! -- cK.
|
|
||||||
|
|
||||||
|
|
||||||
SGMLFILE = $(PACKAGE)-manual.sgml
|
|
||||||
|
|
||||||
docs: manual.raw $(SOURCEDOC)
|
|
||||||
./kernel-doc -docbook <manual.raw >$(SGMLFILE)
|
|
||||||
|
|
||||||
if HAVE_JADE
|
|
||||||
|
|
||||||
FULLNAME = $(PACKAGE)-manual-$(VERSION)
|
|
||||||
|
|
||||||
html-docs: docs html-customizations.dsl
|
|
||||||
$(mkinstalldirs) ./$(FULLNAME)/figures
|
|
||||||
cd $(FULLNAME) && @JADE@ -t sgml -d ../html-customizations.dsl ../$(SGMLFILE)
|
|
||||||
- cd figures && cp -f *.gif ../$(FULLNAME)/figures
|
|
||||||
- cd figures && cp -f *.png ../$(FULLNAME)/figures
|
|
||||||
- cd figures && cp -f *.jpg ../$(FULLNAME)/figures
|
|
||||||
cp -f stylesheet.css $(FULLNAME)/stylesheet.css
|
|
||||||
tar cfvz $(FULLNAME).tar.gz $(FULLNAME)
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 6.3 KiB |
Binary file not shown.
Before Width: | Height: | Size: 1.0 KiB |
Binary file not shown.
Before Width: | Height: | Size: 1.0 KiB |
Binary file not shown.
Before Width: | Height: | Size: 1.0 KiB |
|
@ -1,61 +0,0 @@
|
||||||
<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" [
|
|
||||||
<!ENTITY dbstyle SYSTEM "@DB_STYLESHEETS@/html/docbook.dsl" CDATA DSSSL>
|
|
||||||
]>
|
|
||||||
|
|
||||||
<style-sheet>
|
|
||||||
<style-specification use="docbook">
|
|
||||||
<style-specification-body>
|
|
||||||
|
|
||||||
;; my own customizations for HTML output:
|
|
||||||
|
|
||||||
(define %admon-graphics-path%
|
|
||||||
;; Path to admonition graphics
|
|
||||||
"figures/")
|
|
||||||
|
|
||||||
(define %admon-graphics%
|
|
||||||
;; Use graphics in admonitions?
|
|
||||||
#t)
|
|
||||||
|
|
||||||
(define %indent-programlisting-lines%
|
|
||||||
;; Indent lines in a 'ProgramListing'?
|
|
||||||
" ")
|
|
||||||
|
|
||||||
(define %shade-verbatim%
|
|
||||||
;; Should verbatim environments be shaded?
|
|
||||||
#t)
|
|
||||||
|
|
||||||
(define ($shade-verbatim-attr$)
|
|
||||||
;; Attributes used to create a shaded verbatim environment.
|
|
||||||
(list
|
|
||||||
(list "BORDER" "0")
|
|
||||||
(list "BGCOLOR" "#f0f0f0")))
|
|
||||||
|
|
||||||
(define %root-filename%
|
|
||||||
;; Name for the root HTML document
|
|
||||||
"index")
|
|
||||||
|
|
||||||
(define %body-attr%
|
|
||||||
;; What attributes should be hung off of BODY?
|
|
||||||
(list
|
|
||||||
(list "BGCOLOR" "#FFFFFF")
|
|
||||||
(list "TEXT" "#0000A0")
|
|
||||||
(list "LINK" "#2020D0")
|
|
||||||
(list "VLINK" "#000060")
|
|
||||||
(list "ALINK" "#5050F0")))
|
|
||||||
|
|
||||||
(define %css-decoration%
|
|
||||||
;; Enable CSS decoration of elements
|
|
||||||
#t)
|
|
||||||
|
|
||||||
(define %stylesheet%
|
|
||||||
;; Name of the stylesheet to use
|
|
||||||
"stylesheet.css")
|
|
||||||
|
|
||||||
(define biblio-number
|
|
||||||
;; Enumerate bibliography entries
|
|
||||||
#t)
|
|
||||||
|
|
||||||
</style-specification-body>
|
|
||||||
</style-specification>
|
|
||||||
<external-specification id="docbook" document="dbstyle">
|
|
||||||
</style-sheet>
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,283 +0,0 @@
|
||||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
|
|
||||||
<!ENTITY efsd "<function>efsd</function>">
|
|
||||||
]>
|
|
||||||
|
|
||||||
|
|
||||||
<book id="efsd-documentation-howto">
|
|
||||||
<bookinfo>
|
|
||||||
<title>Enlightenment Documentation Howto</title>
|
|
||||||
|
|
||||||
<authorgroup>
|
|
||||||
<author>
|
|
||||||
<firstname>FIRSTNAME</firstname>
|
|
||||||
<othername>OTHER</othername>
|
|
||||||
<surname>LASTNAME</surname>
|
|
||||||
<affiliation>
|
|
||||||
<address>
|
|
||||||
<email>EMAIL</email>
|
|
||||||
</address>
|
|
||||||
</affiliation>
|
|
||||||
</author>
|
|
||||||
</authorgroup>
|
|
||||||
|
|
||||||
<copyright>
|
|
||||||
<year>2001</year>
|
|
||||||
<holder>Christian Kreibich</holder>
|
|
||||||
</copyright>
|
|
||||||
|
|
||||||
<legalnotice>
|
|
||||||
<para>
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to
|
|
||||||
deal in the Software without restriction, including without limitation the
|
|
||||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
||||||
sell copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies of the Software and its documentation and acknowledgment shall be
|
|
||||||
given in the documentation and software packages that this Software was
|
|
||||||
used.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
</para>
|
|
||||||
</legalnotice>
|
|
||||||
|
|
||||||
<releaseinfo>
|
|
||||||
This is document is nowhere near being finished. Be patient.
|
|
||||||
</releaseinfo>
|
|
||||||
|
|
||||||
</bookinfo>
|
|
||||||
|
|
||||||
<toc></toc>
|
|
||||||
|
|
||||||
<chapter id="introduction">
|
|
||||||
<title>Introduction</title>
|
|
||||||
<para>
|
|
||||||
This is some sample documentation for you project. You'll need to be
|
|
||||||
familiar with <ulink url="http://docbook.org">DocBook</ulink>
|
|
||||||
to make best use of Enlightenment's documentation scheme.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
See <link linkend="files" endterm="files.title"></link>
|
|
||||||
for an explanation of the documentation setup in you project.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
<link linkend="comments" endterm="comments.title"></link> explains
|
|
||||||
the way you have to structure your comments so that they can be
|
|
||||||
extracted.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
<link linkend="samples" endterm="samples.title"></link> contains a few
|
|
||||||
layout and markup examples to get you up to speed quickly.
|
|
||||||
</para>
|
|
||||||
</chapter>
|
|
||||||
|
|
||||||
<chapter id="files">
|
|
||||||
<title id="files.title">Documentation File Structure</title>
|
|
||||||
<para>
|
|
||||||
The entire documentation setup lives in the <filename>doc</filename>
|
|
||||||
directory. The file you need to edit is called <filename>manual.raw</filename>.
|
|
||||||
When you enter <command>make docs</command> in the toplevel directory,
|
|
||||||
it gets translated into a standard SGML file using a Perl script.
|
|
||||||
The script scans the file for any lines starting directly with the
|
|
||||||
string <command>!I<filename></command>. Here,
|
|
||||||
<filename>filename</filename> is the name of a code
|
|
||||||
file in which you have put extractable comments. The Perl script will
|
|
||||||
then analyze the file and generate SGML DocBook statements for those
|
|
||||||
comments right into the output file.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
The resulting file of that step is called <filename>$PACKAGE-manual-$VERSION.sgml</filename>
|
|
||||||
where PACKAGE and VERSION are automatically set during the build process.
|
|
||||||
This sgml file can be postprocessed with any SGML processor to generate
|
|
||||||
for example HTML, TeX or PDF output.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
Suppport for HTML generation is included already through the
|
|
||||||
<command>make html-docs</command> target. In order to be able to use
|
|
||||||
that, you'll need to have <command>jade</command> installed, and appropriate
|
|
||||||
DocBook stylesheets. If the <command>configure</command> script doesn't automatically find
|
|
||||||
you stylesheets (on a Debian system it should), you can specify them when
|
|
||||||
calling <command>configure</command> or <command>autogen.sh</command> using
|
|
||||||
the <command>--with-dbsheets=DIR</command> option.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
If everything worked out fine, you'll get a tarball of the HTML version
|
|
||||||
of your documentation and the extracted version in the docs directory,
|
|
||||||
named similarly to the SGML file.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
</chapter>
|
|
||||||
|
|
||||||
<chapter id="comments">
|
|
||||||
<title id="comments.title">Writing Extractable Comments</title>
|
|
||||||
<para>
|
|
||||||
I'll simply give an example of a commented function here:
|
|
||||||
|
|
||||||
<programlisting>
|
|
||||||
|
|
||||||
/**
|
|
||||||
* efsd_wait_event - blocking wait for next Efsd event.
|
|
||||||
* @ec: The Efsd connection
|
|
||||||
* @ev: Pointer to an allocated EfsdEvent.
|
|
||||||
*
|
|
||||||
* Blocks until an efsd event arrives, then returns it by filling
|
|
||||||
* in the @ev structure. Returns -1 when there was an error,
|
|
||||||
* >= 0 otherwise.
|
|
||||||
*/
|
|
||||||
int efsd_wait_event(EfsdConnection *ec, EfsdEvent *ev);
|
|
||||||
</programlisting>
|
|
||||||
As you can see, it's not hard -- just use two asterisks
|
|
||||||
to signal the start of an extractable comment. In the first
|
|
||||||
line, begin with the function name and a one-liner description.
|
|
||||||
Then, put each parameter in the following lines. Add an empty
|
|
||||||
line, and then a more verbose description. That's basically
|
|
||||||
it, you can also markup items differently as follows:
|
|
||||||
|
|
||||||
<itemizedlist mark="opencircle">
|
|
||||||
<listitem>
|
|
||||||
<para><command>funcname()</command> for function names</para>
|
|
||||||
</listitem>
|
|
||||||
<listitem>
|
|
||||||
<para><command>$ENVVAR</command> for environment variables</para>
|
|
||||||
</listitem>
|
|
||||||
<listitem>
|
|
||||||
<para><command>&struct_name</command> for structures</para>
|
|
||||||
</listitem>
|
|
||||||
<listitem>
|
|
||||||
<para><command>%CONST</command> for constants/para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
</para>
|
|
||||||
</chapter>
|
|
||||||
|
|
||||||
<chapter id="samples">
|
|
||||||
<title id="samples.title">DocBook Examples</title>
|
|
||||||
<section>
|
|
||||||
<title>Lists</title>
|
|
||||||
<para>
|
|
||||||
<itemizedlist mark="opencircle">
|
|
||||||
<listitem>
|
|
||||||
<para>This</para>
|
|
||||||
</listitem>
|
|
||||||
<listitem>
|
|
||||||
<para>is</para>
|
|
||||||
</listitem>
|
|
||||||
<listitem>
|
|
||||||
<para>a</para>
|
|
||||||
</listitem>
|
|
||||||
<listitem>
|
|
||||||
<para>list</para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
</para>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<title>Code</title>
|
|
||||||
<para>
|
|
||||||
<programlisting>
|
|
||||||
|
|
||||||
EfsdConnection *ec;
|
|
||||||
|
|
||||||
if ( (ec = efsd_open()) == NULL)
|
|
||||||
{
|
|
||||||
/* Oops. Couldn't establish connection.
|
|
||||||
* Is Efsd really running ?
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ... various efsd commands ... */
|
|
||||||
|
|
||||||
if (efsd_close(ec) < 0)
|
|
||||||
{
|
|
||||||
/* Ouch. Error when closing connection. */
|
|
||||||
}
|
|
||||||
</programlisting>
|
|
||||||
</para>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<title>Images</title>
|
|
||||||
<para>
|
|
||||||
|
|
||||||
<mediaobject>
|
|
||||||
<imageobject>
|
|
||||||
<imagedata fileref="figures/sampleimage.eps" format="eps">
|
|
||||||
</imageobject>
|
|
||||||
<imageobject>
|
|
||||||
<imagedata fileref="figures/sampleimage.gif" format="gif">
|
|
||||||
</imageobject>
|
|
||||||
<textobject>
|
|
||||||
<phrase>Sample image</phrase>
|
|
||||||
</textobject>
|
|
||||||
<caption>
|
|
||||||
<para>This is how you display images.</para>
|
|
||||||
</caption>
|
|
||||||
</mediaobject>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<title>Warnings, Notes</title>
|
|
||||||
<para>
|
|
||||||
<note>
|
|
||||||
<title>This is an example of a note.</title>
|
|
||||||
<para>
|
|
||||||
It's really simple to use.
|
|
||||||
</para>
|
|
||||||
</note
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
<caution>
|
|
||||||
<title>This is a warning.</title>
|
|
||||||
<para>
|
|
||||||
It's used just like a note.
|
|
||||||
</para>
|
|
||||||
</caution>
|
|
||||||
</para>
|
|
||||||
</section>
|
|
||||||
</chapter>
|
|
||||||
|
|
||||||
<bibliography>
|
|
||||||
|
|
||||||
<biblioentry id="bib-unp">
|
|
||||||
<bookbiblio>
|
|
||||||
<author>
|
|
||||||
<firstname>W. R.</firstname>
|
|
||||||
<surname>Stevens</surname>
|
|
||||||
</author>
|
|
||||||
<title>UNIX Network Programming</title>
|
|
||||||
<edition>Second Edition</edition>
|
|
||||||
<volumenum>Volume 1</volumenum>
|
|
||||||
<publisher>
|
|
||||||
<publishername>Prentice-Hall</publishername>
|
|
||||||
</publisher>
|
|
||||||
<date>1998</date>
|
|
||||||
</bookbiblio>
|
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
<biblioentry id="bib-apue">
|
|
||||||
<bookbiblio>
|
|
||||||
<author>
|
|
||||||
<firstname>W. R.</firstname>
|
|
||||||
<surname>Stevens</surname>
|
|
||||||
</author>
|
|
||||||
<title>Advanced Programming in the UNIX Environment</title>
|
|
||||||
<publisher>
|
|
||||||
<publishername>Addison-Wesley</publishername>
|
|
||||||
</publisher>
|
|
||||||
<date>1992</date>
|
|
||||||
</bookbiblio>
|
|
||||||
</biblioentry>
|
|
||||||
|
|
||||||
</bibliography>
|
|
||||||
|
|
||||||
</book>
|
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
body { margin-left:10px;
|
|
||||||
margin-right:10px;
|
|
||||||
margin-top:10px;
|
|
||||||
margin-bottom:10px;
|
|
||||||
color:#0000a0;
|
|
||||||
font-size:12pt;
|
|
||||||
background-image:url(figures/background.gif);
|
|
||||||
background-repeat:no-repeat;
|
|
||||||
}
|
|
||||||
|
|
||||||
th {
|
|
||||||
font-size:14pt;
|
|
||||||
}
|
|
||||||
|
|
||||||
td {
|
|
||||||
font-size:12pt;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.mediaobject { align:center; }
|
|
||||||
div.caption { align:center; }
|
|
|
@ -1,59 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
prefix=@prefix@
|
|
||||||
exec_prefix=@exec_prefix@
|
|
||||||
exec_prefix_set=no
|
|
||||||
|
|
||||||
usage="\
|
|
||||||
Usage: ecore-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--libs] [--cflags]"
|
|
||||||
|
|
||||||
if test $# -eq 0; then
|
|
||||||
echo "${usage}" 1>&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
while test $# -gt 0; do
|
|
||||||
case "$1" in
|
|
||||||
-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
|
|
||||||
*) optarg= ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
--prefix=*)
|
|
||||||
prefix=$optarg
|
|
||||||
if test $exec_prefix_set = no ; then
|
|
||||||
exec_prefix=$optarg
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
--prefix)
|
|
||||||
echo $prefix
|
|
||||||
;;
|
|
||||||
--exec-prefix=*)
|
|
||||||
exec_prefix=$optarg
|
|
||||||
exec_prefix_set=yes
|
|
||||||
;;
|
|
||||||
--exec-prefix)
|
|
||||||
echo $exec_prefix
|
|
||||||
;;
|
|
||||||
--version)
|
|
||||||
echo @VERSION@
|
|
||||||
;;
|
|
||||||
--cflags)
|
|
||||||
if test @includedir@ != /usr/include ; then
|
|
||||||
includes=-I@includedir@
|
|
||||||
fi
|
|
||||||
echo $includes @x_cflags@
|
|
||||||
;;
|
|
||||||
--libs)
|
|
||||||
libdirs=-L@libdir@
|
|
||||||
echo $libdirs -lecore @x_libs@ -lm
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "${usage}" 1>&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
exit 0
|
|
|
@ -1,198 +0,0 @@
|
||||||
# Configure paths for Ecore
|
|
||||||
# Conrad Parker 2001-01-24
|
|
||||||
# blatantly ripped from gtk.m4, Owen Taylor 97-11-3
|
|
||||||
|
|
||||||
dnl AM_PATH_ECORE([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
|
|
||||||
dnl Test for Ecore, and define ECORE_CFLAGS and ECORE_LIBS
|
|
||||||
dnl
|
|
||||||
AC_DEFUN(AM_PATH_ECORE,
|
|
||||||
[dnl
|
|
||||||
dnl Get the cflags and libraries from the ecore-config script
|
|
||||||
dnl
|
|
||||||
AC_ARG_WITH(ecore-prefix,[ --with-ecore-prefix=PFX Prefix where Ecore is installed (optional)],
|
|
||||||
ecore_config_prefix="$withval", ecore_config_prefix="")
|
|
||||||
AC_ARG_WITH(ecore-exec-prefix,[ --with-ecore-exec-prefix=PFX Exec prefix where Ecore is installed (optional)],
|
|
||||||
ecore_config_exec_prefix="$withval", ecore_config_exec_prefix="")
|
|
||||||
AC_ARG_ENABLE(ecoretest, [ --disable-ecoretest Do not try to compile and run a test Ecore program],
|
|
||||||
, enable_ecoretest=yes)
|
|
||||||
|
|
||||||
if test x$ecore_config_exec_prefix != x ; then
|
|
||||||
ecore_config_args="$ecore_config_args --exec-prefix=$ecore_config_exec_prefix"
|
|
||||||
if test x${ECORE_CONFIG+set} != xset ; then
|
|
||||||
ECORE_CONFIG=$ecore_config_exec_prefix/bin/ecore-config
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test x$ecore_config_prefix != x ; then
|
|
||||||
ecore_config_args="$ecore_config_args --prefix=$ecore_config_prefix"
|
|
||||||
if test x${ECORE_CONFIG+set} != xset ; then
|
|
||||||
ECORE_CONFIG=$ecore_config_prefix/bin/ecore-config
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_PATH_PROG(ECORE_CONFIG, ecore-config, no)
|
|
||||||
min_ecore_version=ifelse([$1], ,0.0.0,$1)
|
|
||||||
AC_MSG_CHECKING(for Ecore - version >= $min_ecore_version)
|
|
||||||
no_ecore=""
|
|
||||||
if test "$ECORE_CONFIG" = "no" ; then
|
|
||||||
no_ecore=yes
|
|
||||||
else
|
|
||||||
ECORE_CFLAGS=`$ECORE_CONFIG $ecore_config_args --cflags`
|
|
||||||
ECORE_LIBS=`$ECORE_CONFIG $ecore_config_args --libs`
|
|
||||||
ecore_config_major_version=`$ECORE_CONFIG $ecore_config_args --version | \
|
|
||||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
|
|
||||||
ecore_config_minor_version=`$ECORE_CONFIG $ecore_config_args --version | \
|
|
||||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
|
|
||||||
ecore_config_micro_version=`$ECORE_CONFIG $ecore_config_args --version | \
|
|
||||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
|
|
||||||
|
|
||||||
dnl **********************************************************************
|
|
||||||
dnl Ecore cannot currently report its own version ; version info is not
|
|
||||||
dnl given in Ecore.h
|
|
||||||
dnl Thus, the "enable_ecoretest" stuff is currently disabled, enable once
|
|
||||||
dnl you can determine the currently installed version by querying Ecore[.h]
|
|
||||||
dnl
|
|
||||||
dnl K. 2001-01-24
|
|
||||||
dnl **********************************************************************
|
|
||||||
|
|
||||||
dnl if test "x$enable_ecoretest" = "xyes" ; then
|
|
||||||
dnl ac_save_CFLAGS="$CFLAGS"
|
|
||||||
dnl ac_save_LIBS="$LIBS"
|
|
||||||
dnl CFLAGS="$CFLAGS $ECORE_CFLAGS"
|
|
||||||
dnl LIBS="$ECORE_LIBS $LIBS"
|
|
||||||
dnl dnl
|
|
||||||
dnl dnl Now check if the installed Ecore is sufficiently new. (Also sanity
|
|
||||||
dnl dnl checks the results of ecore-config to some extent
|
|
||||||
dnl dnl
|
|
||||||
dnl rm -f conf.ecoretest
|
|
||||||
dnl AC_TRY_RUN([
|
|
||||||
dnl #include <Ecore.h>
|
|
||||||
dnl #include <stdio.h>
|
|
||||||
dnl #include <stdlib.h>
|
|
||||||
dnl
|
|
||||||
dnl int
|
|
||||||
dnl main ()
|
|
||||||
dnl {
|
|
||||||
dnl int major, minor, micro;
|
|
||||||
dnl char *tmp_version;
|
|
||||||
dnl
|
|
||||||
dnl system ("touch conf.ecoretest");
|
|
||||||
dnl
|
|
||||||
dnl /* HP/UX 9 (%@#!) writes to sscanf strings */
|
|
||||||
dnl tmp_version = g_strdup("$min_ecore_version");
|
|
||||||
dnl if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) {
|
|
||||||
dnl printf("%s, bad version string\n", "$min_ecore_version");
|
|
||||||
dnl exit(1);
|
|
||||||
dnl }
|
|
||||||
dnl
|
|
||||||
dnl if ((ecore_major_version != $ecore_config_major_version) ||
|
|
||||||
dnl (ecore_minor_version != $ecore_config_minor_version) ||
|
|
||||||
dnl (ecore_micro_version != $ecore_config_micro_version))
|
|
||||||
dnl {
|
|
||||||
dnl printf("\n*** 'ecore-config --version' returned %d.%d.%d, but Ecore (%d.%d.%d)\n",
|
|
||||||
dnl $ecore_config_major_version, $ecore_config_minor_version, $ecore_config_micro_version,
|
|
||||||
dnl ecore_major_version, ecore_minor_version, ecore_micro_version);
|
|
||||||
dnl printf ("*** was found! If ecore-config was correct, then it is best\n");
|
|
||||||
dnl printf ("*** to remove the old version of Ecore. You may also be able to fix the error\n");
|
|
||||||
dnl printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
|
|
||||||
dnl printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
|
|
||||||
dnl printf("*** required on your system.\n");
|
|
||||||
dnl printf("*** If ecore-config was wrong, set the environment variable ECORE_CONFIG\n");
|
|
||||||
dnl printf("*** to point to the correct copy of ecore-config, and remove the file config.cache\n");
|
|
||||||
dnl printf("*** before re-running configure\n");
|
|
||||||
dnl }
|
|
||||||
dnl #if defined (ECORE_MAJOR_VERSION) && defined (ECORE_MINOR_VERSION) && defined (ECORE_MICRO_VERSION)
|
|
||||||
dnl else if ((ecore_major_version != ECORE_MAJOR_VERSION) ||
|
|
||||||
dnl (ecore_minor_version != ECORE_MINOR_VERSION) ||
|
|
||||||
dnl (ecore_micro_version != ECORE_MICRO_VERSION))
|
|
||||||
dnl {
|
|
||||||
dnl printf("*** Ecore header files (version %d.%d.%d) do not match\n",
|
|
||||||
dnl ECORE_MAJOR_VERSION, ECORE_MINOR_VERSION, ECORE_MICRO_VERSION);
|
|
||||||
dnl printf("*** library (version %d.%d.%d)\n",
|
|
||||||
dnl ecore_major_version, ecore_minor_version, ecore_micro_version);
|
|
||||||
dnl }
|
|
||||||
dnl #endif /* defined (ECORE_MAJOR_VERSION) ... */
|
|
||||||
dnl else
|
|
||||||
dnl {
|
|
||||||
dnl if ((ecore_major_version > major) ||
|
|
||||||
dnl ((ecore_major_version == major) && (ecore_minor_version > minor)) ||
|
|
||||||
dnl ((ecore_major_version == major) && (ecore_minor_version == minor) && (ecore_micro_version >= micro)))
|
|
||||||
dnl {
|
|
||||||
dnl return 0;
|
|
||||||
dnl }
|
|
||||||
dnl else
|
|
||||||
dnl {
|
|
||||||
dnl printf("\n*** An old version of Ecore (%d.%d.%d) was found.\n",
|
|
||||||
dnl ecore_major_version, ecore_minor_version, ecore_micro_version);
|
|
||||||
dnl printf("*** You need a version of Ecore newer than %d.%d.%d. The latest version of\n",
|
|
||||||
dnl major, minor, micro);
|
|
||||||
dnl printf("*** Ecore is always available from ftp://ftp.enlightenment.org.\n");
|
|
||||||
dnl printf("***\n");
|
|
||||||
dnl printf("*** If you have already installed a sufficiently new version, this error\n");
|
|
||||||
dnl printf("*** probably means that the wrong copy of the ecore-config shell script is\n");
|
|
||||||
dnl printf("*** being found. The easiest way to fix this is to remove the old version\n");
|
|
||||||
dnl printf("*** of Ecore, but you can also set the ECORE_CONFIG environment to point to the\n");
|
|
||||||
dnl printf("*** correct copy of ecore-config. (In this case, you will have to\n");
|
|
||||||
dnl printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
|
|
||||||
dnl printf("*** so that the correct libraries are found at run-time))\n");
|
|
||||||
dnl }
|
|
||||||
dnl }
|
|
||||||
dnl return 1;
|
|
||||||
dnl }
|
|
||||||
dnl ],, no_ecore=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
|
|
||||||
dnl CFLAGS="$ac_save_CFLAGS"
|
|
||||||
dnl LIBS="$ac_save_LIBS"
|
|
||||||
dnl fi
|
|
||||||
dnl **********************************************************************
|
|
||||||
|
|
||||||
fi
|
|
||||||
if test "x$no_ecore" = x ; then
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
ifelse([$2], , :, [$2])
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
if test "$ECORE_CONFIG" = "no" ; then
|
|
||||||
echo "*** The ecore-config script installed by Ecore could not be found"
|
|
||||||
echo "*** If Ecore was installed in PREFIX, make sure PREFIX/bin is in"
|
|
||||||
echo "*** your path, or set the ECORE_CONFIG environment variable to the"
|
|
||||||
echo "*** full path to ecore-config."
|
|
||||||
else
|
|
||||||
if test -f conf.ecoretest ; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
echo "*** Could not run Ecore test program, checking why..."
|
|
||||||
CFLAGS="$CFLAGS $ECORE_CFLAGS"
|
|
||||||
LIBS="$LIBS $ECORE_LIBS"
|
|
||||||
AC_TRY_LINK([
|
|
||||||
#include <Ecore.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
], [ return ((ecore_major_version) || (ecore_minor_version) || (ecore_micro_version)); ],
|
|
||||||
[ echo "*** The test program compiled, but did not run. This usually means"
|
|
||||||
echo "*** that the run-time linker is not finding Ecore or finding the wrong"
|
|
||||||
echo "*** version of Ecore. If it is not finding Ecore, you'll need to set your"
|
|
||||||
echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
|
|
||||||
echo "*** to the installed location Also, make sure you have run ldconfig if that"
|
|
||||||
echo "*** is required on your system"
|
|
||||||
echo "***"
|
|
||||||
echo "*** If you have an old version installed, it is best to remove it, although"
|
|
||||||
echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
|
|
||||||
echo "***"
|
|
||||||
echo "*** If you have a RedHat 5.0 system, you should remove the Ecore package that"
|
|
||||||
echo "*** came with the system with the command"
|
|
||||||
echo "***"
|
|
||||||
echo "*** rpm --erase --nodeps ecore ecore-devel" ],
|
|
||||||
[ echo "*** The test program failed to compile or link. See the file config.log for the"
|
|
||||||
echo "*** exact error that occured. This usually means Ecore was incorrectly installed"
|
|
||||||
echo "*** or that you have moved Ecore since it was installed. In the latter case, you"
|
|
||||||
echo "*** may want to edit the ecore-config script: $ECORE_CONFIG" ])
|
|
||||||
CFLAGS="$ac_save_CFLAGS"
|
|
||||||
LIBS="$ac_save_LIBS"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
ECORE_CFLAGS=""
|
|
||||||
ECORE_LIBS=""
|
|
||||||
ifelse([$3], , :, [$3])
|
|
||||||
fi
|
|
||||||
AC_SUBST(ECORE_CFLAGS)
|
|
||||||
AC_SUBST(ECORE_LIBS)
|
|
||||||
rm -f conf.ecoretest
|
|
||||||
])
|
|
|
@ -1,11 +0,0 @@
|
||||||
prefix=@prefix@
|
|
||||||
exec_prefix=@exec_prefix@
|
|
||||||
libdir=@libdir@
|
|
||||||
includedir=@includedir@
|
|
||||||
|
|
||||||
Name: ecore
|
|
||||||
Description: Enlightened Core X interface library
|
|
||||||
Version: @VERSION@
|
|
||||||
Libs: -L${libdir} -lecore @x_libs@ -lm
|
|
||||||
Cflags: -I${includedir} -I@x_includes@
|
|
||||||
|
|
|
@ -1,63 +0,0 @@
|
||||||
# this is NOT relocatable, unless you alter the patch!
|
|
||||||
%define name ecore
|
|
||||||
%define ver 0.0.2
|
|
||||||
%define rel 1
|
|
||||||
%define prefix /usr
|
|
||||||
|
|
||||||
Summary: Enlightened Core X interface library
|
|
||||||
Name: %{name}
|
|
||||||
Version: %{ver}
|
|
||||||
Release: %{rel}
|
|
||||||
Copyright: BSD
|
|
||||||
Group: User Interface/X
|
|
||||||
URL: http://www.enlightenment.org/efm.html
|
|
||||||
Packager: The Rasterman <raster@rasterman.com> Term <term@twistedpath.org>
|
|
||||||
Vendor: The Enlightenment Development Team <e-develop@enlightenment.org>
|
|
||||||
Source: ftp://ftp.enlightenment.org/enlightenment/%{name}-%{ver}.tar.gz
|
|
||||||
BuildRoot: /var/tmp/%{name}-root
|
|
||||||
|
|
||||||
%description
|
|
||||||
Ecore is brub.
|
|
||||||
|
|
||||||
%package devel
|
|
||||||
Summary: Ecore headers and development libraries.
|
|
||||||
Group: Development/Libraries
|
|
||||||
Requires: %{name} = %{ver}
|
|
||||||
|
|
||||||
%description devel
|
|
||||||
Ecore development files
|
|
||||||
|
|
||||||
%prep
|
|
||||||
%setup -q
|
|
||||||
|
|
||||||
%build
|
|
||||||
if [ -e ./configure ]
|
|
||||||
then
|
|
||||||
./configure --prefix=%{prefix}
|
|
||||||
else
|
|
||||||
./autogen.sh --prefix=%{prefix}
|
|
||||||
fi
|
|
||||||
make
|
|
||||||
|
|
||||||
%install
|
|
||||||
make prefix=$RPM_BUILD_ROOT%{prefix} install
|
|
||||||
|
|
||||||
%post
|
|
||||||
/sbin/ldconfig
|
|
||||||
|
|
||||||
%postun
|
|
||||||
/sbin/ldconfig
|
|
||||||
|
|
||||||
%clean
|
|
||||||
rm -rf $RPM_BUILD_ROOT
|
|
||||||
|
|
||||||
%files
|
|
||||||
%defattr(-,root,root)
|
|
||||||
%{prefix}/lib/libecore.so.*
|
|
||||||
|
|
||||||
%files devel
|
|
||||||
%defattr(-,root,root)
|
|
||||||
%{prefix}/lib/libecore.so
|
|
||||||
%{prefix}/lib/libecore.*a
|
|
||||||
%{prefix}/include/Ecore.h
|
|
||||||
%{prefix}/bin/ecore-config
|
|
|
@ -1,29 +0,0 @@
|
||||||
*.lo
|
|
||||||
*.la
|
|
||||||
.deps
|
|
||||||
.libs
|
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
aclocal.m4
|
|
||||||
confdefs.h
|
|
||||||
config.cache
|
|
||||||
config.guess
|
|
||||||
config.h
|
|
||||||
config.h.in
|
|
||||||
config.log
|
|
||||||
config.status
|
|
||||||
config.sub
|
|
||||||
configure
|
|
||||||
install-sh
|
|
||||||
libtool
|
|
||||||
ltconfig
|
|
||||||
ltmain.sh
|
|
||||||
missing
|
|
||||||
mkinstalldirs
|
|
||||||
stamp-h
|
|
||||||
stamp-h.in
|
|
||||||
*.tar.gz
|
|
||||||
macros
|
|
||||||
*~
|
|
||||||
*.spec
|
|
||||||
.icons
|
|
|
@ -1,919 +0,0 @@
|
||||||
#ifndef E_CORE_H
|
|
||||||
#define E_CORE_H 1
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <sys/time.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <signal.h>
|
|
||||||
|
|
||||||
#define XK_MISCELLANY 1
|
|
||||||
|
|
||||||
#include <X11/Xlib.h>
|
|
||||||
#include <X11/Xutil.h>
|
|
||||||
#include <X11/Xatom.h>
|
|
||||||
#include <X11/Xresource.h>
|
|
||||||
#include <X11/keysymdef.h>
|
|
||||||
#include <X11/extensions/XShm.h>
|
|
||||||
#include <X11/extensions/shape.h>
|
|
||||||
#ifdef WITH_DMALLOC
|
|
||||||
#include <dmalloc.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define XEV_NONE NoEventMask
|
|
||||||
#define XEV_KEY KeyPressMask | KeyReleaseMask
|
|
||||||
#define XEV_BUTTON ButtonPressMask | ButtonReleaseMask
|
|
||||||
#define XEV_KEY_PRESS KeyPressMask
|
|
||||||
#define XEV_KEY_RELEASE KeyReleaseMask
|
|
||||||
#define XEV_BUTTON_PRESS ButtonPressMask
|
|
||||||
#define XEV_BUTTON_RELEASE ButtonReleaseMask
|
|
||||||
#define XEV_IN_OUT EnterWindowMask | LeaveWindowMask
|
|
||||||
#define XEV_MOUSE_MOVE PointerMotionMask | ButtonMotionMask
|
|
||||||
#define XEV_EXPOSE ExposureMask
|
|
||||||
#define XEV_VISIBILITY VisibilityChangeMask
|
|
||||||
#define XEV_CONFIGURE StructureNotifyMask
|
|
||||||
#define XEV_CHILD_CHANGE SubstructureNotifyMask
|
|
||||||
#define XEV_CHILD_REDIRECT SubstructureRedirectMask | ResizeRedirectMask
|
|
||||||
#define XEV_FOCUS FocusChangeMask
|
|
||||||
#define XEV_PROPERTY PropertyChangeMask
|
|
||||||
#define XEV_COLORMAP ColormapChangeMask
|
|
||||||
|
|
||||||
|
|
||||||
#define ECORE_ATOM(atom, name) \
|
|
||||||
if (!atom) (atom) = ecore_atom_get(name);
|
|
||||||
#define MEMCPY(src, dst, type, num) \
|
|
||||||
memcpy(dst, src, sizeof(type) * (num))
|
|
||||||
#define NEW(type, num) \
|
|
||||||
malloc(sizeof(type) * (num))
|
|
||||||
#define ZERO(ptr, type, num) \
|
|
||||||
memset((ptr), 0, sizeof(type) * (num))
|
|
||||||
#define NEW_PTR(num) \
|
|
||||||
malloc(sizeof(void *) * (num))
|
|
||||||
#define FREE(ptr) \
|
|
||||||
{ \
|
|
||||||
free(ptr); \
|
|
||||||
(ptr) = NULL; \
|
|
||||||
}
|
|
||||||
#define IF_FREE(ptr) \
|
|
||||||
{if (ptr) FREE(ptr);}
|
|
||||||
#define REALLOC(ptr, type, num) \
|
|
||||||
{ \
|
|
||||||
if ((ptr) && (num == 0)) {free(ptr); ptr = NULL;} \
|
|
||||||
else if (ptr) ptr = realloc((ptr), sizeof(type) * (num)); \
|
|
||||||
else ptr = malloc(sizeof(type) * (num)); \
|
|
||||||
}
|
|
||||||
#define REALLOC_PTR(ptr, num) \
|
|
||||||
{ \
|
|
||||||
if ((ptr) && (num == 0)) {free(ptr); ptr = NULL;} \
|
|
||||||
else if (ptr) ptr = realloc(ptr, sizeof(void *) * (num)); \
|
|
||||||
else ptr = malloc(sizeof(void *) * (num)); \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define START_LIST_DEL(type, base, cmp) \
|
|
||||||
type *_p, *_pp; _pp = NULL; \
|
|
||||||
_p = (base); \
|
|
||||||
while(_p) \
|
|
||||||
{ \
|
|
||||||
if (cmp) \
|
|
||||||
{ \
|
|
||||||
if (_pp) _pp->next = _p->next; \
|
|
||||||
else (base) = _p->next;
|
|
||||||
#define END_LIST_DEL \
|
|
||||||
return; \
|
|
||||||
} \
|
|
||||||
_pp = _p; \
|
|
||||||
_p = _p->next; \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define DND_TYPE_URI_LIST 0
|
|
||||||
#define DND_TYPE_PLAIN_TEXT 1
|
|
||||||
#define DND_TYPE_MOZ_URL 2
|
|
||||||
#define DND_TYPE_NETSCAPE_URL 3
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C"
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern XContext xid_context;
|
|
||||||
|
|
||||||
typedef void (*Ecore_Error_Function) (Display * d, XErrorEvent * ev);
|
|
||||||
|
|
||||||
typedef struct _ecore_keygrab Ecore_KeyGrab;
|
|
||||||
|
|
||||||
typedef enum _ecore_ev_modifiers
|
|
||||||
{
|
|
||||||
ECORE_EVENT_KEY_MODIFIER_NONE = 0,
|
|
||||||
ECORE_EVENT_KEY_MODIFIER_SHIFT = (1 << 0),
|
|
||||||
ECORE_EVENT_KEY_MODIFIER_CTRL = (1 << 1),
|
|
||||||
ECORE_EVENT_KEY_MODIFIER_ALT = (1 << 2),
|
|
||||||
ECORE_EVENT_KEY_MODIFIER_WIN = (1 << 3)
|
|
||||||
} Ecore_Event_Key_Modifiers;
|
|
||||||
|
|
||||||
typedef enum _ecore_event_stack_detail
|
|
||||||
{
|
|
||||||
ECORE_EVENT_STACK_ABOVE = Above,
|
|
||||||
ECORE_EVENT_STACK_BELOW = Below,
|
|
||||||
ECORE_EVENT_STACK_TOP_IF = TopIf,
|
|
||||||
ECORE_EVENT_STACK_BOTTOM_IF = BottomIf,
|
|
||||||
ECORE_EVENT_STACK_OPPOSITE = Opposite
|
|
||||||
} Ecore_Event_Stack_Detail;
|
|
||||||
|
|
||||||
typedef enum _ecore_event_value_mask
|
|
||||||
{
|
|
||||||
ECORE_EVENT_VALUE_X = CWX,
|
|
||||||
ECORE_EVENT_VALUE_Y = CWY,
|
|
||||||
ECORE_EVENT_VALUE_W = CWWidth,
|
|
||||||
ECORE_EVENT_VALUE_H = CWHeight,
|
|
||||||
ECORE_EVENT_VALUE_BORDER = CWBorderWidth,
|
|
||||||
ECORE_EVENT_VALUE_SIBLING = CWSibling,
|
|
||||||
ECORE_EVENT_VALUE_STACKING = CWStackMode
|
|
||||||
} Ecore_Event_Value_Mask;
|
|
||||||
|
|
||||||
typedef enum _ecore_event_type
|
|
||||||
{
|
|
||||||
ECORE_EVENT_MOUSE_MOVE,
|
|
||||||
ECORE_EVENT_MOUSE_DOWN,
|
|
||||||
ECORE_EVENT_MOUSE_UP,
|
|
||||||
ECORE_EVENT_MOUSE_IN,
|
|
||||||
ECORE_EVENT_MOUSE_OUT,
|
|
||||||
ECORE_EVENT_MOUSE_WHEEL,
|
|
||||||
ECORE_EVENT_KEY_DOWN,
|
|
||||||
ECORE_EVENT_KEY_UP,
|
|
||||||
ECORE_EVENT_WINDOW_MAP,
|
|
||||||
ECORE_EVENT_WINDOW_UNMAP,
|
|
||||||
ECORE_EVENT_WINDOW_CREATE,
|
|
||||||
ECORE_EVENT_WINDOW_DESTROY,
|
|
||||||
ECORE_EVENT_WINDOW_CONFIGURE,
|
|
||||||
ECORE_EVENT_WINDOW_CONFIGURE_REQUEST,
|
|
||||||
ECORE_EVENT_WINDOW_MAP_REQUEST,
|
|
||||||
ECORE_EVENT_WINDOW_PROPERTY,
|
|
||||||
ECORE_EVENT_WINDOW_CIRCULATE,
|
|
||||||
ECORE_EVENT_WINDOW_CIRCULATE_REQUEST,
|
|
||||||
ECORE_EVENT_WINDOW_REPARENT,
|
|
||||||
ECORE_EVENT_WINDOW_EXPOSE,
|
|
||||||
ECORE_EVENT_WINDOW_VISIBILITY,
|
|
||||||
ECORE_EVENT_WINDOW_SHAPE,
|
|
||||||
ECORE_EVENT_WINDOW_FOCUS_IN,
|
|
||||||
ECORE_EVENT_WINDOW_FOCUS_OUT,
|
|
||||||
ECORE_EVENT_MESSAGE,
|
|
||||||
ECORE_EVENT_WINDOW_DELETE,
|
|
||||||
ECORE_EVENT_COLORMAP,
|
|
||||||
|
|
||||||
ECORE_EVENT_DND_DROP_REQUEST,
|
|
||||||
ECORE_EVENT_DND_DROP_END,
|
|
||||||
ECORE_EVENT_DND_DROP_POSITION,
|
|
||||||
ECORE_EVENT_DND_DROP,
|
|
||||||
ECORE_EVENT_DND_DROP_STATUS,
|
|
||||||
ECORE_EVENT_DND_DATA_REQUEST,
|
|
||||||
ECORE_EVENT_PASTE_REQUEST,
|
|
||||||
ECORE_EVENT_CLEAR_SELECTION,
|
|
||||||
|
|
||||||
ECORE_EVENT_CHILD,
|
|
||||||
ECORE_EVENT_USER,
|
|
||||||
|
|
||||||
ECORE_EVENT_MAX
|
|
||||||
} Ecore_Event_Type;
|
|
||||||
|
|
||||||
typedef struct _ecore_event
|
|
||||||
{
|
|
||||||
Ecore_Event_Type type;
|
|
||||||
char ignore;
|
|
||||||
void *event;
|
|
||||||
void (*ev_free) (void *evnt);
|
|
||||||
struct _ecore_event *next;
|
|
||||||
} Ecore_Event;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_fd_handler
|
|
||||||
{
|
|
||||||
int fd;
|
|
||||||
void (*func) (int fd);
|
|
||||||
struct _ecore_event_fd_handler *next;
|
|
||||||
} Ecore_Event_Fd_Handler;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_pid_handler
|
|
||||||
{
|
|
||||||
pid_t pid;
|
|
||||||
void (*func) (pid_t pid);
|
|
||||||
struct _ecore_event_pid_handler *next;
|
|
||||||
} Ecore_Event_Pid_Handler;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_ipc_handler
|
|
||||||
{
|
|
||||||
int ipc;
|
|
||||||
void (*func) (int ipc);
|
|
||||||
struct _ecore_event_ipc_handler *next;
|
|
||||||
} Ecore_Event_Ipc_Handler;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_timer
|
|
||||||
{
|
|
||||||
char *name;
|
|
||||||
void (*func) (int val, void *data);
|
|
||||||
int val;
|
|
||||||
void *data;
|
|
||||||
double in;
|
|
||||||
char just_added;
|
|
||||||
struct _ecore_event_timer *next;
|
|
||||||
} Ecore_Event_Timer;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_key_down
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
Ecore_Event_Key_Modifiers mods;
|
|
||||||
char *key;
|
|
||||||
char *symbol;
|
|
||||||
char *compose;
|
|
||||||
Time time;
|
|
||||||
} Ecore_Event_Key_Down;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_key_up
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
Ecore_Event_Key_Modifiers mods;
|
|
||||||
char *key;
|
|
||||||
char *symbol;
|
|
||||||
char *compose;
|
|
||||||
Time time;
|
|
||||||
} Ecore_Event_Key_Up;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_mouse_down
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
Ecore_Event_Key_Modifiers mods;
|
|
||||||
int button;
|
|
||||||
int x, y;
|
|
||||||
int rx, ry;
|
|
||||||
int double_click, triple_click;
|
|
||||||
Time time;
|
|
||||||
} Ecore_Event_Mouse_Down;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_mouse_up
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
Ecore_Event_Key_Modifiers mods;
|
|
||||||
int button;
|
|
||||||
int x, y;
|
|
||||||
int rx, ry;
|
|
||||||
Time time;
|
|
||||||
} Ecore_Event_Mouse_Up;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_wheel
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
Ecore_Event_Key_Modifiers mods;
|
|
||||||
int x, y, z;
|
|
||||||
int rx, ry;
|
|
||||||
Time time;
|
|
||||||
} Ecore_Event_Wheel;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_mouse_move
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
Ecore_Event_Key_Modifiers mods;
|
|
||||||
int x, y;
|
|
||||||
int rx, ry;
|
|
||||||
Time time;
|
|
||||||
} Ecore_Event_Mouse_Move;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_window_enter
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
int x, y;
|
|
||||||
int rx, ry;
|
|
||||||
Ecore_Event_Key_Modifiers mods;
|
|
||||||
Time time;
|
|
||||||
} Ecore_Event_Window_Enter;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_window_leave
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
int x, y;
|
|
||||||
int rx, ry;
|
|
||||||
Ecore_Event_Key_Modifiers mods;
|
|
||||||
Time time;
|
|
||||||
} Ecore_Event_Window_Leave;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_window_focus_in
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
int key_grab;
|
|
||||||
Time time;
|
|
||||||
} Ecore_Event_Window_Focus_In;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_window_focus_out
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
int key_grab;
|
|
||||||
Time time;
|
|
||||||
} Ecore_Event_Window_Focus_Out;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_window_expose
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
int x, y, w, h;
|
|
||||||
} Ecore_Event_Window_Expose;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_window_visibility
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
int fully_obscured;
|
|
||||||
} Ecore_Event_Window_Visibility;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_window_create
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
int override;
|
|
||||||
} Ecore_Event_Window_Create;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_window_destroy
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
} Ecore_Event_Window_Destroy;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_window_map
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
} Ecore_Event_Window_Map;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_window_unmap
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
} Ecore_Event_Window_Unmap;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_window_map_request
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
} Ecore_Event_Window_Map_Request;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_window_reparent
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
Window parent_from, parent;
|
|
||||||
} Ecore_Event_Window_Reparent;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_window_configure
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
int x, y, w, h;
|
|
||||||
int wm_generated;
|
|
||||||
} Ecore_Event_Window_Configure;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_window_configure_request
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
int x, y, w, h;
|
|
||||||
int border;
|
|
||||||
Window stack_win;
|
|
||||||
Ecore_Event_Stack_Detail detail;
|
|
||||||
Ecore_Event_Value_Mask mask;
|
|
||||||
} Ecore_Event_Window_Configure_Request;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_window_circulate
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
int lower;
|
|
||||||
} Ecore_Event_Window_Circulate;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_window_circulate_request
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
int lower;
|
|
||||||
} Ecore_Event_Window_Circulate_Request;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_window_property
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
Atom atom;
|
|
||||||
Time time;
|
|
||||||
} Ecore_Event_Window_Property;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_window_shape
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
Time time;
|
|
||||||
} Ecore_Event_Window_Shape;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_message
|
|
||||||
{
|
|
||||||
Window win;
|
|
||||||
int format;
|
|
||||||
Atom atom;
|
|
||||||
union
|
|
||||||
{
|
|
||||||
char b[20];
|
|
||||||
short s[10];
|
|
||||||
long l[5];
|
|
||||||
}
|
|
||||||
data;
|
|
||||||
} Ecore_Event_Message;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_colormap
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
Colormap cmap;
|
|
||||||
int installed;
|
|
||||||
} Ecore_Event_Colormap;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_window_delete
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
} Ecore_Event_Window_Delete;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_paste_request
|
|
||||||
{
|
|
||||||
Window win, root, source_win;
|
|
||||||
char *string;
|
|
||||||
} Ecore_Event_Paste_Request;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_clear_selection
|
|
||||||
{
|
|
||||||
Window win, root;
|
|
||||||
Atom selection;
|
|
||||||
} Ecore_Event_Clear_Selection;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_dnd_drop_request
|
|
||||||
{
|
|
||||||
Window win, root, source_win;
|
|
||||||
int num_files;
|
|
||||||
char **files;
|
|
||||||
int copy, link, move;
|
|
||||||
} Ecore_Event_Dnd_Drop_Request;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_dnd_drop_end
|
|
||||||
{
|
|
||||||
Window win, root, source_win;
|
|
||||||
} Ecore_Event_Dnd_Drop_End;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_dnd_drop_position
|
|
||||||
{
|
|
||||||
Window win, root, source_win;
|
|
||||||
int x, y;
|
|
||||||
} Ecore_Event_Dnd_Drop_Position;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_dnd_drop
|
|
||||||
{
|
|
||||||
Window win, root, source_win;
|
|
||||||
} Ecore_Event_Dnd_Drop;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_dnd_drop_status
|
|
||||||
{
|
|
||||||
Window win, root, source_win;
|
|
||||||
int x, y, w, h;
|
|
||||||
int copy, link, move, e_private;
|
|
||||||
int all_position_msgs;
|
|
||||||
int ok;
|
|
||||||
} Ecore_Event_Dnd_Drop_Status;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_dnd_data_request
|
|
||||||
{
|
|
||||||
Window win, root, source_win;
|
|
||||||
Atom destination_atom;
|
|
||||||
int plain_text;
|
|
||||||
int uri_list;
|
|
||||||
int moz_url;
|
|
||||||
int netscape_url;
|
|
||||||
} Ecore_Event_Dnd_Data_Request;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_child
|
|
||||||
{
|
|
||||||
pid_t pid;
|
|
||||||
int exit_code;
|
|
||||||
} Ecore_Event_Child;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_user
|
|
||||||
{
|
|
||||||
int num;
|
|
||||||
int hup;
|
|
||||||
} Ecore_Event_User;
|
|
||||||
|
|
||||||
typedef struct _ecore_event_ipc_service
|
|
||||||
{
|
|
||||||
int service;
|
|
||||||
void (*func) (int fd);
|
|
||||||
struct _ecore_event_ipc_service *next;
|
|
||||||
} Ecore_Event_Ipc_Service;
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct _ecore_xid
|
|
||||||
{
|
|
||||||
Window win;
|
|
||||||
Window parent;
|
|
||||||
Window root;
|
|
||||||
int children_num;
|
|
||||||
Window *children;
|
|
||||||
int x, y, w, h;
|
|
||||||
int mapped;
|
|
||||||
int mouse_in;
|
|
||||||
int depth;
|
|
||||||
int gravity;
|
|
||||||
int coords_invalid;
|
|
||||||
int bw;
|
|
||||||
int (*grab_button_auto_replay) (Ecore_Event_Mouse_Down *ev);
|
|
||||||
} Ecore_XID;
|
|
||||||
|
|
||||||
|
|
||||||
/* ---------------- API CALLS BELOW --------------------*/
|
|
||||||
|
|
||||||
/* ---------------- X WRAPPER CALLS */
|
|
||||||
|
|
||||||
int ecore_x_get_fd(void);
|
|
||||||
void ecore_set_error_handler(Ecore_Error_Function func);
|
|
||||||
void ecore_reset_error_handler(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ecore_display_init - Establishes a connection to the X server
|
|
||||||
* @display: The name of the display to connect to
|
|
||||||
*
|
|
||||||
* This function creates a connection to the X server. If
|
|
||||||
* @display is NULL, the name is taken from the $DISPLAY
|
|
||||||
* environment variable.
|
|
||||||
*/
|
|
||||||
int ecore_display_init(char *display);
|
|
||||||
|
|
||||||
int ecore_events_pending(void);
|
|
||||||
void ecore_get_next_event(XEvent * event);
|
|
||||||
int ecore_event_shape_get_id(void);
|
|
||||||
void ecore_sync(void);
|
|
||||||
void ecore_flush(void);
|
|
||||||
|
|
||||||
/* ---------------- WINDOW CHILD HANDLING */
|
|
||||||
|
|
||||||
void ecore_del_child(Window win, Window child);
|
|
||||||
void ecore_add_child(Window win, Window child);
|
|
||||||
void ecore_raise_child(Window win, Window child);
|
|
||||||
void ecore_lower_child(Window win, Window child);
|
|
||||||
Ecore_XID *ecore_add_xid(Window win, int x, int y, int w, int h,
|
|
||||||
int depth, Window parent);
|
|
||||||
Ecore_XID *ecore_validate_xid(Window win);
|
|
||||||
void ecore_unvalidate_xid(Window win);
|
|
||||||
|
|
||||||
/* ---------------- WINDOWS-RELATED CALLS */
|
|
||||||
|
|
||||||
Window ecore_window_new(Window parent, int x, int y, int w,
|
|
||||||
int h);
|
|
||||||
Window ecore_window_override_new(Window parent, int x, int y,
|
|
||||||
int w, int h);
|
|
||||||
Window ecore_window_input_new(Window parent, int x, int y, int w,
|
|
||||||
int h);
|
|
||||||
void ecore_window_set_events_propagate(Window win,
|
|
||||||
int propagate);
|
|
||||||
void ecore_window_show(Window win);
|
|
||||||
void ecore_window_hide(Window win);
|
|
||||||
void ecore_window_set_background_pixmap(Window win,
|
|
||||||
Pixmap pmap);
|
|
||||||
void ecore_window_set_shape_mask(Window win, Pixmap mask);
|
|
||||||
void ecore_window_add_shape_mask(Window win, Pixmap mask);
|
|
||||||
void ecore_window_set_shape_window(Window win, Window src,
|
|
||||||
int x, int y);
|
|
||||||
void ecore_window_add_shape_window(Window win, Window src,
|
|
||||||
int x, int y);
|
|
||||||
void ecore_window_set_shape_rectangle(Window win, int x, int y,
|
|
||||||
int w, int h);
|
|
||||||
void ecore_window_add_shape_rectangle(Window win, int x, int y,
|
|
||||||
int w, int h);
|
|
||||||
void ecore_window_set_shape_rectangles(Window win,
|
|
||||||
XRectangle * rect,
|
|
||||||
int num);
|
|
||||||
void ecore_window_add_shape_rectangles(Window win,
|
|
||||||
XRectangle * rect,
|
|
||||||
int num);
|
|
||||||
void ecore_window_clip_shape_by_rectangle(Window win, int x,
|
|
||||||
int y, int w, int h);
|
|
||||||
XRectangle *ecore_window_get_shape_rectangles(Window win, int *num);
|
|
||||||
void ecore_window_select_shape_events(Window win);
|
|
||||||
void ecore_window_unselect_shape_events(Window win);
|
|
||||||
void ecore_window_clear(Window win);
|
|
||||||
void ecore_window_clear_area(Window win, int x, int y, int w,
|
|
||||||
int h);
|
|
||||||
void ecore_window_set_events(Window win, long mask);
|
|
||||||
void ecore_window_remove_events(Window win, long mask);
|
|
||||||
void ecore_window_add_events(Window win, long mask);
|
|
||||||
void ecore_window_move(Window win, int x, int y);
|
|
||||||
void ecore_window_resize(Window win, int w, int h);
|
|
||||||
void ecore_window_move_resize(Window win, int x, int y, int w,
|
|
||||||
int h);
|
|
||||||
void ecore_window_destroy(Window win);
|
|
||||||
void ecore_window_reparent(Window win, Window parent, int x,
|
|
||||||
int y);
|
|
||||||
void ecore_window_raise(Window win);
|
|
||||||
void ecore_window_lower(Window win);
|
|
||||||
void ecore_window_get_geometry(Window win, int *x, int *y,
|
|
||||||
int *w, int *h);
|
|
||||||
int ecore_window_get_depth(Window win);
|
|
||||||
int ecore_window_exists(Window win);
|
|
||||||
Window ecore_window_get_parent(Window win);
|
|
||||||
Window *ecore_window_get_children(Window win, int *num);
|
|
||||||
int ecore_window_mouse_in(Window win);
|
|
||||||
void ecore_window_mouse_set_in(Window win, int in);
|
|
||||||
Window ecore_window_get_root(Window win);
|
|
||||||
void ecore_window_set_delete_inform(Window win);
|
|
||||||
void ecore_window_property_set(Window win, Atom type,
|
|
||||||
Atom format, int size,
|
|
||||||
void *data, int number);
|
|
||||||
void *ecore_window_property_get(Window win, Atom type,
|
|
||||||
Atom format, int *size);
|
|
||||||
void ecore_window_dnd_advertise(Window win);
|
|
||||||
void ecore_window_ignore(Window win);
|
|
||||||
void ecore_window_no_ignore(Window win);
|
|
||||||
int ecore_window_is_ignored(Window win);
|
|
||||||
Window ecore_window_get_at_xy(int x, int y);
|
|
||||||
|
|
||||||
int ecore_window_dnd_capable(Window win);
|
|
||||||
void ecore_window_dnd_handle_motion(Window source_win, int x,
|
|
||||||
int y, int dragging);
|
|
||||||
void ecore_window_dnd_ok(int ok);
|
|
||||||
void ecore_window_dnd_finished(void);
|
|
||||||
void ecore_window_dnd_send_status_ok(Window source_win,
|
|
||||||
Window win, int x, int y,
|
|
||||||
int w, int h);
|
|
||||||
void ecore_window_dnd_send_finished(Window source_win,
|
|
||||||
Window win);
|
|
||||||
void ecore_window_set_title(Window win, char *title);
|
|
||||||
void ecore_window_set_name_class(Window win, char *name,
|
|
||||||
char *);
|
|
||||||
void ecore_window_get_name_class(Window win, char **name,
|
|
||||||
char **name_class);
|
|
||||||
char *ecore_window_get_machine(Window win);
|
|
||||||
char *ecore_window_get_command(Window win);
|
|
||||||
char *ecore_window_get_icon_name(Window win);
|
|
||||||
void ecore_window_get_hints(Window win, int *accepts_focus,
|
|
||||||
int *initial_state,
|
|
||||||
Pixmap * icon_pixmap,
|
|
||||||
Pixmap * icon_mask,
|
|
||||||
Window * icon_window,
|
|
||||||
Window * window_group);
|
|
||||||
void ecore_window_set_min_size(Window win, int w, int h);
|
|
||||||
void ecore_window_set_max_size(Window win, int w, int h);
|
|
||||||
void ecore_window_set_xy_hints(Window win, int x, int y);
|
|
||||||
void ecore_window_get_frame_size(Window win, int *l, int *r,
|
|
||||||
int *t, int *b);
|
|
||||||
int ecore_window_save_under(Window win);
|
|
||||||
void ecore_window_hint_set_layer(Window win, int layer);
|
|
||||||
void ecore_window_hint_set_sticky(Window win, int sticky);
|
|
||||||
void ecore_window_hint_set_borderless(Window win);
|
|
||||||
int ecore_window_get_gravity(Window win);
|
|
||||||
void ecore_window_gravity_reset(Window win);
|
|
||||||
void ecore_window_gravity_set(Window win, int gravity);
|
|
||||||
void ecore_window_bit_gravity_set(Window win, int gravity);
|
|
||||||
void ecore_window_get_root_relative_location(Window win,
|
|
||||||
int *x, int *y);
|
|
||||||
void ecore_window_send_event_move_resize(Window win, int x,
|
|
||||||
int y, int w, int h);
|
|
||||||
void ecore_window_send_client_message(Window win, Atom type,
|
|
||||||
int format, void *data);
|
|
||||||
void ecore_window_add_to_save_set(Window win);
|
|
||||||
void ecore_window_del_from_save_set(Window win);
|
|
||||||
void ecore_window_kill_client(Window win);
|
|
||||||
void ecore_window_set_border_width(Window win, int bw);
|
|
||||||
int ecore_window_get_border_width(Window win);
|
|
||||||
int ecore_window_get_wm_size_hints(Window win,
|
|
||||||
XSizeHints * hints,
|
|
||||||
int *mask);
|
|
||||||
int ecore_window_is_visible(Window win);
|
|
||||||
int ecore_window_is_normal(Window win);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ecore_window_is_manageable - Returns 1 if a window can be managed by the wm.
|
|
||||||
* @win: the window for which to query.
|
|
||||||
*
|
|
||||||
* This function returns 0 if the window is unmapped, should be ignored
|
|
||||||
* by the window manager or is of the InputOnly class, 1 otherwise.
|
|
||||||
*/
|
|
||||||
int ecore_window_is_manageable(Window win);
|
|
||||||
|
|
||||||
void ecore_windows_restack(Window * wins, int num);
|
|
||||||
void ecore_window_stack_above(Window win, Window above);
|
|
||||||
void ecore_window_stack_below(Window win, Window below);
|
|
||||||
char *ecore_window_get_title(Window win);
|
|
||||||
void ecore_window_button_grab_auto_replay_set(Window win,
|
|
||||||
int (*func) (Ecore_Event_Mouse_Down *ev));
|
|
||||||
void *ecore_window_button_grab_auto_replay_get(Window win);
|
|
||||||
Window ecore_window_root(void);
|
|
||||||
void ecore_window_get_virtual_area(Window win, int *area_x,
|
|
||||||
int *area_y);
|
|
||||||
|
|
||||||
/* ---------------- PIXMAP CALLS */
|
|
||||||
|
|
||||||
Pixmap ecore_pixmap_new(Window win, int w, int h, int dep);
|
|
||||||
void ecore_pixmap_free(Pixmap pmap);
|
|
||||||
|
|
||||||
/* ---------------- POINTER CALLS */
|
|
||||||
|
|
||||||
void ecore_pointer_xy(Window win, int *x, int *y);
|
|
||||||
void ecore_pointer_xy_set(int x, int y);
|
|
||||||
void ecore_pointer_xy_get(int *x, int *y);
|
|
||||||
void ecore_pointer_warp_by(int dx, int dy);
|
|
||||||
void ecore_pointer_warp_to(int x, int y);
|
|
||||||
void ecore_pointer_replay(Time t);
|
|
||||||
void ecore_pointer_grab(Window win, Time t);
|
|
||||||
void ecore_pointer_ungrab(Time t);
|
|
||||||
|
|
||||||
/* ---------------- KEYBOARD-RELATED CALLS */
|
|
||||||
|
|
||||||
KeySym ecore_key_get_keysym_from_keycode(KeyCode keycode);
|
|
||||||
char *ecore_key_get_string_from_keycode(KeyCode keycode);
|
|
||||||
char *ecore_key_get_string_from_keysym(KeySym keysym);
|
|
||||||
void ecore_key_grab(char *key, Ecore_Event_Key_Modifiers mods,
|
|
||||||
int anymod, int sync);
|
|
||||||
void ecore_key_ungrab(char *key,
|
|
||||||
Ecore_Event_Key_Modifiers mods,
|
|
||||||
int anymod);
|
|
||||||
KeyCode ecore_key_get_keycode(char *key);
|
|
||||||
char *ecore_keypress_translate_into_typeable(Ecore_Event_Key_Down * e);
|
|
||||||
|
|
||||||
void ecore_event_allow(int mode, Time t);
|
|
||||||
|
|
||||||
/* ---------------- LOCKS AND MODIFIER CALLS */
|
|
||||||
|
|
||||||
int ecore_lock_mask_scroll_get(void);
|
|
||||||
int ecore_lock_mask_num_get(void);
|
|
||||||
int ecore_lock_mask_caps_get(void);
|
|
||||||
void ecore_lock_scroll_set(int onoff);
|
|
||||||
int ecore_lock_scroll_get(void);
|
|
||||||
void ecore_lock_num_set(int onoff);
|
|
||||||
int ecore_lock_num_get(void);
|
|
||||||
void ecore_lock_caps_set(int onoff);
|
|
||||||
int ecore_lock_caps_get(void);
|
|
||||||
|
|
||||||
int ecore_mod_mask_shift_get(void);
|
|
||||||
int ecore_mod_mask_ctrl_get(void);
|
|
||||||
int ecore_mod_mask_alt_get(void);
|
|
||||||
int ecore_mod_mask_win_get(void);
|
|
||||||
void ecore_mod_shift_set(int onoff);
|
|
||||||
int ecore_mod_shift_get(void);
|
|
||||||
void ecore_mod_ctrl_set(int onoff);
|
|
||||||
int ecore_mod_ctrl_get(void);
|
|
||||||
void ecore_mod_alt_set(int onoff);
|
|
||||||
int ecore_mod_alt_get(void);
|
|
||||||
void ecore_mod_win_set(int onoff);
|
|
||||||
int ecore_mod_win_get(void);
|
|
||||||
|
|
||||||
int ecore_lock_mask_get(void);
|
|
||||||
int ecore_modifier_mask_get(void);
|
|
||||||
Window ecore_get_key_grab_win(void);
|
|
||||||
Display *ecore_display_get(void);
|
|
||||||
void ecore_focus_window_set(Window win);
|
|
||||||
Window ecore_focus_window_get(void);
|
|
||||||
void ecore_focus_to_window(Window win);
|
|
||||||
void ecore_focus_mode_reset(void);
|
|
||||||
Atom ecore_atom_get(char *name);
|
|
||||||
|
|
||||||
|
|
||||||
/* ---------------- GRABBING/UNGRABBING CALLS */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ecore_grab - Grabs the X server connection
|
|
||||||
*
|
|
||||||
* This function wraps XGrabServer, which prevents all other
|
|
||||||
* clients from receiving events. Calls are reference-counted.
|
|
||||||
*/
|
|
||||||
void ecore_grab(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ecore_ungrab - Ungrabs the X server connection
|
|
||||||
*
|
|
||||||
* This function releases the server, provided that ecore_grab()
|
|
||||||
* has been called the same number of times as ecore_ungrab().
|
|
||||||
*/
|
|
||||||
void ecore_ungrab(void);
|
|
||||||
|
|
||||||
void ecore_grab_mouse(Window win, int confine, Cursor cursor);
|
|
||||||
void ecore_ungrab_mouse(void);
|
|
||||||
Window ecore_grab_window_get(void);
|
|
||||||
|
|
||||||
void ecore_button_grab(Window win, int button, int events,
|
|
||||||
Ecore_Event_Key_Modifiers mod,
|
|
||||||
int any_mod);
|
|
||||||
void ecore_button_ungrab(Window win, int button,
|
|
||||||
Ecore_Event_Key_Modifiers mod,
|
|
||||||
int any_mod);
|
|
||||||
void ecore_keyboard_grab(Window win);
|
|
||||||
void ecore_keyboard_ungrab(void);
|
|
||||||
Window ecore_keyboard_grab_window_get(void);
|
|
||||||
|
|
||||||
|
|
||||||
/* ----------------- GRAPHICS CONTEXT AND DRAWING CALLS */
|
|
||||||
|
|
||||||
GC ecore_gc_new(Drawable d);
|
|
||||||
void ecore_gc_free(GC gc);
|
|
||||||
void ecore_gc_set_fg(GC gc, int val);
|
|
||||||
void ecore_gc_set_include_inferiors(GC gc);
|
|
||||||
void ecore_fill_rectangle(Drawable d, GC gc, int x, int y,
|
|
||||||
int w, int h);
|
|
||||||
void ecore_draw_rectangle(Drawable d, GC gc, int x, int y,
|
|
||||||
int w, int h);
|
|
||||||
void ecore_draw_line(Drawable d, GC gc, int x1, int y1, int x2,
|
|
||||||
int y2);
|
|
||||||
void ecore_draw_point(Drawable d, GC gc, int x, int y);
|
|
||||||
void ecore_area_copy(Drawable src, Drawable dest, GC gc,
|
|
||||||
int sx, int sy, int sw, int sh, int dx,
|
|
||||||
int dy);
|
|
||||||
|
|
||||||
|
|
||||||
/* ---------------- DRAG AND DROP CALLS */
|
|
||||||
|
|
||||||
|
|
||||||
int ecore_dnd_selection_convert(Window win, Window req,
|
|
||||||
Atom type);
|
|
||||||
void *ecore_dnd_selection_get(Window win, Window req, Atom type,
|
|
||||||
int *size);
|
|
||||||
void ecore_dnd_set_data(Window win);
|
|
||||||
void ecore_dnd_set_action(Window win);
|
|
||||||
|
|
||||||
void ecore_dnd_send_data(Window win, Window source_win,
|
|
||||||
void *data, int size, Atom dest_atom,
|
|
||||||
int type);
|
|
||||||
void ecore_dnd_set_mode_copy(void);
|
|
||||||
void ecore_dnd_set_mode_link(void);
|
|
||||||
void ecore_dnd_set_mode_move(void);
|
|
||||||
void ecore_dnd_set_mode_ask(void);
|
|
||||||
void ecore_dnd_own_selection(Window win);
|
|
||||||
void ecore_dnd_send_drop(Window win, Window source_win);
|
|
||||||
void ecore_get_virtual_area(int *area_x, int *area_y);
|
|
||||||
void ecore_clear_target_status(void);
|
|
||||||
|
|
||||||
|
|
||||||
/* ---------------- IPC CALLS */
|
|
||||||
|
|
||||||
void ecore_event_ipc_init(char *path);
|
|
||||||
void ecore_event_ipc_cleanup(void);
|
|
||||||
void ecore_add_ipc_service(int service, void (*func) (int fd));
|
|
||||||
void ecore_del_ipc_service(int service);
|
|
||||||
|
|
||||||
/* ---------------- SELECTION CALLS */
|
|
||||||
|
|
||||||
char *ecore_selection_get_data(Window win, Atom prop);
|
|
||||||
Window ecore_selection_request(void);
|
|
||||||
Window ecore_selection_set(char *string);
|
|
||||||
|
|
||||||
/* ---------------- CURSOR LOOK CALLS */
|
|
||||||
|
|
||||||
void ecore_set_blank_pointer(Window w);
|
|
||||||
Cursor ecore_cursor_new(Pixmap pmap, Pixmap mask, int x, int y,
|
|
||||||
int fr, int fg, int fb, int br, int bg,
|
|
||||||
int bb);
|
|
||||||
void ecore_cursor_free(Cursor c);
|
|
||||||
void ecore_cursor_set(Window win, Cursor c);
|
|
||||||
|
|
||||||
/* ---------------- EVENT-HANDLING CALLS */
|
|
||||||
|
|
||||||
void ecore_add_event(Ecore_Event_Type type, void *event,
|
|
||||||
void (*ev_free) (void *event));
|
|
||||||
void ecore_del_event(void *event);
|
|
||||||
void ecore_del_all_events(void);
|
|
||||||
Ecore_Event *ecore_get_last_event(void);
|
|
||||||
void ecore_add_event_fd(int fd, void (*func) (int fd));
|
|
||||||
void ecore_del_event_fd(int fd);
|
|
||||||
void ecore_add_event_pid(pid_t pid, void (*func) (pid_t pid));
|
|
||||||
void ecore_del_event_pid(pid_t pid);
|
|
||||||
void ecore_add_event_ipc(int ipc, void (*func) (int ipc));
|
|
||||||
void ecore_del_event_ipc(int ipc);
|
|
||||||
void ecore_event_loop(void);
|
|
||||||
void ecore_event_loop_quit(void);
|
|
||||||
void ecore_add_event_timer(char *name, double in,
|
|
||||||
void (*func) (int val, void *data),
|
|
||||||
int val, void *data);
|
|
||||||
void *ecore_del_event_timer(char *name);
|
|
||||||
void ecore_event_filter(Ecore_Event * ev);
|
|
||||||
void ecore_event_filter_events_handle(Ecore_Event * ev);
|
|
||||||
void ecore_event_filter_idle_handle(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ecore_event_filter_init - Setup event handlers
|
|
||||||
*
|
|
||||||
* This function initializes all ECORE_EVENT_MAX
|
|
||||||
* event handler to be empty.
|
|
||||||
*/
|
|
||||||
void ecore_event_filter_init(void);
|
|
||||||
|
|
||||||
void ecore_event_filter_handler_add(Ecore_Event_Type type,
|
|
||||||
void (*func) (Ecore_Event *ev));
|
|
||||||
void ecore_event_filter_idle_handler_add(void (*func) (void *data), void *data);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ecore_event_signal_init - Setup for default signal handlers
|
|
||||||
*
|
|
||||||
* This function initializes signal handlers for various
|
|
||||||
* signals via sigaction().
|
|
||||||
*/
|
|
||||||
void ecore_event_signal_init(void);
|
|
||||||
|
|
||||||
int ecore_event_signal_events_pending(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ecore_event_x_init - Ecore X initialization
|
|
||||||
*
|
|
||||||
* This function initializes Ecore's X event handling
|
|
||||||
* callbacks.
|
|
||||||
*/
|
|
||||||
void ecore_event_x_init(void);
|
|
||||||
|
|
||||||
/* ---------------- MISCELLANEOUS CALLS */
|
|
||||||
|
|
||||||
double ecore_get_time(void);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,19 +0,0 @@
|
||||||
## Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
INCLUDES = @x_cflags@
|
|
||||||
|
|
||||||
lib_LTLIBRARIES = libecore.la
|
|
||||||
include_HEADERS = \
|
|
||||||
Ecore.h
|
|
||||||
|
|
||||||
libecore_la_SOURCES = \
|
|
||||||
e_ev_filter.c \
|
|
||||||
e_ev_signal.c \
|
|
||||||
e_ev_x.c \
|
|
||||||
e_events.c \
|
|
||||||
e_ipc.c \
|
|
||||||
e_util.c \
|
|
||||||
e_x.c
|
|
||||||
|
|
||||||
libecore_la_LIBADD = @x_ldflags@ @x_libs@ -lm
|
|
||||||
libecore_la_LDFLAGS = -version-info 0:2:0
|
|
|
@ -1,132 +0,0 @@
|
||||||
#include "Ecore.h"
|
|
||||||
|
|
||||||
typedef struct _ecore_event_handler Ecore_Event_Handler;
|
|
||||||
typedef struct _ecore_event_idle_handler Ecore_Event_Idle_Handler;
|
|
||||||
|
|
||||||
struct _ecore_event_handler
|
|
||||||
{
|
|
||||||
void (*func) (Ecore_Event * ev);
|
|
||||||
Ecore_Event_Handler *next;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _ecore_event_idle_handler
|
|
||||||
{
|
|
||||||
void (*func) (void *data);
|
|
||||||
void *data;
|
|
||||||
Ecore_Event_Idle_Handler *next;
|
|
||||||
};
|
|
||||||
|
|
||||||
static Ecore_Event_Handler *handler[ECORE_EVENT_MAX];
|
|
||||||
static Ecore_Event_Idle_Handler *idle_handlers = NULL;
|
|
||||||
|
|
||||||
void
|
|
||||||
ecore_event_filter(Ecore_Event * ev)
|
|
||||||
{
|
|
||||||
Ecore_Event *evp;
|
|
||||||
int motion_events = 0;
|
|
||||||
int dnd_pos_events = 0;
|
|
||||||
int dnd_status_events = 0;
|
|
||||||
|
|
||||||
/* count events to only use last events of some types */
|
|
||||||
for (evp = ev; evp; evp = evp->next)
|
|
||||||
{
|
|
||||||
if (evp->type == ECORE_EVENT_MOUSE_MOVE)
|
|
||||||
motion_events++;
|
|
||||||
if (evp->type == ECORE_EVENT_DND_DROP_POSITION)
|
|
||||||
dnd_pos_events++;
|
|
||||||
if (evp->type == ECORE_EVENT_DND_DROP_STATUS)
|
|
||||||
dnd_status_events++;
|
|
||||||
}
|
|
||||||
for (evp = ev; evp; evp = evp->next)
|
|
||||||
{
|
|
||||||
if (evp->type == ECORE_EVENT_MOUSE_MOVE)
|
|
||||||
{
|
|
||||||
if (motion_events > 1)
|
|
||||||
{
|
|
||||||
evp->ignore = 1;
|
|
||||||
motion_events--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (evp->type == ECORE_EVENT_DND_DROP_POSITION)
|
|
||||||
{
|
|
||||||
if (dnd_pos_events > 1)
|
|
||||||
{
|
|
||||||
evp->ignore = 1;
|
|
||||||
dnd_pos_events--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (evp->type == ECORE_EVENT_DND_DROP_STATUS)
|
|
||||||
{
|
|
||||||
if (dnd_status_events > 1)
|
|
||||||
{
|
|
||||||
evp->ignore = 1;
|
|
||||||
dnd_status_events--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ecore_event_filter_events_handle(Ecore_Event * ev)
|
|
||||||
{
|
|
||||||
Ecore_Event *evp;
|
|
||||||
|
|
||||||
for (evp = ev; evp; evp = evp->next)
|
|
||||||
{
|
|
||||||
Ecore_Event_Handler *h;
|
|
||||||
|
|
||||||
if (!evp->ignore)
|
|
||||||
{
|
|
||||||
for (h = handler[evp->type]; h; h = h->next)
|
|
||||||
{
|
|
||||||
if (h->func)
|
|
||||||
h->func(evp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ecore_event_filter_idle_handle(void)
|
|
||||||
{
|
|
||||||
Ecore_Event_Idle_Handler *h;
|
|
||||||
|
|
||||||
for (h = idle_handlers; h; h = h->next)
|
|
||||||
h->func(h->data);
|
|
||||||
}
|
|
||||||
|
|
||||||
extern int __quit_ev_loop;
|
|
||||||
|
|
||||||
void
|
|
||||||
ecore_event_filter_init(void)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
__quit_ev_loop = 0;
|
|
||||||
for (i = 0; i < ECORE_EVENT_MAX; i++)
|
|
||||||
handler[i] = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ecore_event_filter_handler_add(Ecore_Event_Type type,
|
|
||||||
void (*func) (Ecore_Event * ev))
|
|
||||||
{
|
|
||||||
Ecore_Event_Handler *h;
|
|
||||||
|
|
||||||
h = NEW(Ecore_Event_Handler, 1);
|
|
||||||
h->func = func;
|
|
||||||
h->next = handler[type];
|
|
||||||
handler[type] = h;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ecore_event_filter_idle_handler_add(void (*func) (void *data), void *data)
|
|
||||||
{
|
|
||||||
Ecore_Event_Idle_Handler *h;
|
|
||||||
|
|
||||||
h = NEW(Ecore_Event_Idle_Handler, 1);
|
|
||||||
h->func = func;
|
|
||||||
h->data = data;
|
|
||||||
h->next = idle_handlers;
|
|
||||||
idle_handlers = h;
|
|
||||||
}
|
|
|
@ -1,320 +0,0 @@
|
||||||
#include "Ecore.h"
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/wait.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
static void ecore_event_signal_free(void *event);
|
|
||||||
static void ecore_event_signal_handle_sigchld(int num);
|
|
||||||
static void ecore_event_signal_handle_sigusr1(int num);
|
|
||||||
static void ecore_event_signal_handle_sigusr2(int num);
|
|
||||||
static void ecore_event_signal_handle_sighup(int num);
|
|
||||||
static void ecore_event_signal_handle_sigpipe(int num);
|
|
||||||
static void ecore_event_signal_handle_sigsegv(int num);
|
|
||||||
static void ecore_event_signal_handle_sigfpe(int num);
|
|
||||||
static void ecore_event_signal_handle_sigill(int num);
|
|
||||||
static void ecore_event_signal_handle_sigbus(int num);
|
|
||||||
|
|
||||||
#ifdef HAVE_SIGSTKFLT
|
|
||||||
static void ecore_event_signal_handle_sigstkflt(int num);
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_SIGPWR
|
|
||||||
static void ecore_event_signal_handle_sigpwr(int num);
|
|
||||||
#endif
|
|
||||||
static void ecore_event_signal_handle_sigchld(int num);
|
|
||||||
static void ecore_event_signal_handle_all(pid_t pid);
|
|
||||||
|
|
||||||
static int signal_chld_count = 0;
|
|
||||||
static int signal_usr1_count = 0;
|
|
||||||
static int signal_usr2_count = 0;
|
|
||||||
static int signal_hup_count = 0;
|
|
||||||
|
|
||||||
/* freeing stuff */
|
|
||||||
static void
|
|
||||||
ecore_event_signal_free(void *event)
|
|
||||||
{
|
|
||||||
FREE(event);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* signal handlers we can return from and add to signal recieved counts */
|
|
||||||
static void
|
|
||||||
ecore_event_signal_handle_sigchld(int num)
|
|
||||||
{
|
|
||||||
signal_chld_count++;
|
|
||||||
return;
|
|
||||||
num = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
ecore_event_signal_handle_sigusr1(int num)
|
|
||||||
{
|
|
||||||
signal_usr1_count++;
|
|
||||||
return;
|
|
||||||
num = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
ecore_event_signal_handle_sigusr2(int num)
|
|
||||||
{
|
|
||||||
signal_usr2_count++;
|
|
||||||
return;
|
|
||||||
num = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
ecore_event_signal_handle_sighup(int num)
|
|
||||||
{
|
|
||||||
signal_hup_count++;
|
|
||||||
return;
|
|
||||||
num = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* signals to ignore */
|
|
||||||
static void
|
|
||||||
ecore_event_signal_handle_sigpipe(int num)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
num = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* signal handlers we cant return from - so handle here */
|
|
||||||
static void
|
|
||||||
ecore_event_signal_handle_sigsegv(int num)
|
|
||||||
{
|
|
||||||
for (;;)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "EEEEEEEEK SEGV - waiting 10 seconds\n");
|
|
||||||
sleep(10);
|
|
||||||
}
|
|
||||||
/* EEK - can't return - bad */
|
|
||||||
abort();
|
|
||||||
num = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
ecore_event_signal_handle_sigfpe(int num)
|
|
||||||
{
|
|
||||||
/* EEK - can't return - bad */
|
|
||||||
abort();
|
|
||||||
num = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
ecore_event_signal_handle_sigill(int num)
|
|
||||||
{
|
|
||||||
/* EEK - can't return - bad */
|
|
||||||
abort();
|
|
||||||
num = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
ecore_event_signal_handle_sigbus(int num)
|
|
||||||
{
|
|
||||||
/* EEK - can't return - bad */
|
|
||||||
abort();
|
|
||||||
num = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef HAVE_SIGSTKFLT
|
|
||||||
static void
|
|
||||||
ecore_event_signal_handle_sigstkflt(int num)
|
|
||||||
{
|
|
||||||
/* EEK - can't return - bad */
|
|
||||||
abort();
|
|
||||||
return;
|
|
||||||
num = 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
|
||||||
ecore_event_signal_handle_sigint(int num)
|
|
||||||
{
|
|
||||||
exit(0);
|
|
||||||
return;
|
|
||||||
num = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
ecore_event_signal_handle_sigquit(int num)
|
|
||||||
{
|
|
||||||
exit(0);
|
|
||||||
return;
|
|
||||||
num = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
ecore_event_signal_handle_sigabrt(int num)
|
|
||||||
{
|
|
||||||
abort();
|
|
||||||
return;
|
|
||||||
num = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
ecore_event_signal_handle_sigalrm(int num)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
num = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
ecore_event_signal_handle_sigterm(int num)
|
|
||||||
{
|
|
||||||
exit(0);
|
|
||||||
return;
|
|
||||||
num = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef HAVE_SIGPWR
|
|
||||||
static void
|
|
||||||
ecore_event_signal_handle_sigpwr(int num)
|
|
||||||
{
|
|
||||||
exit(0);
|
|
||||||
return;
|
|
||||||
num = 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
|
||||||
ecore_event_signal_handle_all(pid_t pid_pass)
|
|
||||||
{
|
|
||||||
int status;
|
|
||||||
pid_t pid;
|
|
||||||
|
|
||||||
if (signal_chld_count > 0)
|
|
||||||
{
|
|
||||||
while ((pid = waitpid(-1, &status, WNOHANG)) > 0)
|
|
||||||
{
|
|
||||||
if (WIFEXITED(status))
|
|
||||||
{
|
|
||||||
Ecore_Event_Child *e;
|
|
||||||
int code;
|
|
||||||
|
|
||||||
code = WEXITSTATUS(status);
|
|
||||||
e = NEW(Ecore_Event_Child, 1);
|
|
||||||
e->pid = pid;
|
|
||||||
e->exit_code = code;
|
|
||||||
ecore_add_event(ECORE_EVENT_CHILD, e, ecore_event_signal_free);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
signal_chld_count = 0;
|
|
||||||
}
|
|
||||||
while (signal_usr1_count > 0)
|
|
||||||
{
|
|
||||||
Ecore_Event_User *e;
|
|
||||||
|
|
||||||
e = NEW(Ecore_Event_User, 1);
|
|
||||||
e->num = 0;
|
|
||||||
e->hup = 0;
|
|
||||||
ecore_add_event(ECORE_EVENT_USER, e, ecore_event_signal_free);
|
|
||||||
signal_usr1_count--;
|
|
||||||
}
|
|
||||||
while (signal_hup_count > 0)
|
|
||||||
{
|
|
||||||
Ecore_Event_User *e;
|
|
||||||
|
|
||||||
e = NEW(Ecore_Event_User, 1);
|
|
||||||
e->num = 0;
|
|
||||||
e->hup = 1;
|
|
||||||
ecore_add_event(ECORE_EVENT_USER, e, ecore_event_signal_free);
|
|
||||||
signal_hup_count--;
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
pid_pass = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
ecore_event_signal_events_pending(void)
|
|
||||||
{
|
|
||||||
return (signal_chld_count + signal_usr1_count + signal_hup_count);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ecore_event_signal_init(void)
|
|
||||||
{
|
|
||||||
struct sigaction sa;
|
|
||||||
|
|
||||||
ecore_add_event_pid(0, ecore_event_signal_handle_all);
|
|
||||||
|
|
||||||
sa.sa_handler = ecore_event_signal_handle_sigchld;
|
|
||||||
sa.sa_flags = SA_RESTART;
|
|
||||||
sigemptyset(&sa.sa_mask);
|
|
||||||
sigaction(SIGCHLD, &sa, (struct sigaction *)0);
|
|
||||||
|
|
||||||
sa.sa_handler = ecore_event_signal_handle_sigusr1;
|
|
||||||
sa.sa_flags = SA_RESTART;
|
|
||||||
sigemptyset(&sa.sa_mask);
|
|
||||||
sigaction(SIGUSR1, &sa, (struct sigaction *)0);
|
|
||||||
|
|
||||||
sa.sa_handler = ecore_event_signal_handle_sigusr2;
|
|
||||||
sa.sa_flags = SA_RESTART;
|
|
||||||
sigemptyset(&sa.sa_mask);
|
|
||||||
sigaction(SIGUSR2, &sa, (struct sigaction *)0);
|
|
||||||
|
|
||||||
sa.sa_handler = ecore_event_signal_handle_sighup;
|
|
||||||
sa.sa_flags = SA_RESTART;
|
|
||||||
sigemptyset(&sa.sa_mask);
|
|
||||||
sigaction(SIGHUP, &sa, (struct sigaction *)0);
|
|
||||||
|
|
||||||
sa.sa_handler = ecore_event_signal_handle_sigpipe;
|
|
||||||
sa.sa_flags = SA_RESTART;
|
|
||||||
sigemptyset(&sa.sa_mask);
|
|
||||||
sigaction(SIGPIPE, &sa, (struct sigaction *)0);
|
|
||||||
/*
|
|
||||||
sa.sa_handler = ecore_event_signal_handle_sigsegv;
|
|
||||||
sa.sa_flags = SA_RESTART;
|
|
||||||
sigemptyset(&sa.sa_mask);
|
|
||||||
sigaction(SIGSEGV, &sa, (struct sigaction *)0);
|
|
||||||
*/
|
|
||||||
sa.sa_handler = ecore_event_signal_handle_sigfpe;
|
|
||||||
sa.sa_flags = SA_RESTART;
|
|
||||||
sigemptyset(&sa.sa_mask);
|
|
||||||
sigaction(SIGFPE, &sa, (struct sigaction *)0);
|
|
||||||
|
|
||||||
sa.sa_handler = ecore_event_signal_handle_sigill;
|
|
||||||
sa.sa_flags = SA_RESTART;
|
|
||||||
sigemptyset(&sa.sa_mask);
|
|
||||||
sigaction(SIGILL, &sa, (struct sigaction *)0);
|
|
||||||
|
|
||||||
sa.sa_handler = ecore_event_signal_handle_sigbus;
|
|
||||||
sa.sa_flags = SA_RESTART;
|
|
||||||
sigemptyset(&sa.sa_mask);
|
|
||||||
sigaction(SIGBUS, &sa, (struct sigaction *)0);
|
|
||||||
#ifdef HAVE_SIGSTKFLT
|
|
||||||
sa.sa_handler = ecore_event_signal_handle_sigstkflt;
|
|
||||||
sa.sa_flags = SA_RESTART;
|
|
||||||
sigemptyset(&sa.sa_mask);
|
|
||||||
sigaction(SIGSTKFLT, &sa, (struct sigaction *)0);
|
|
||||||
#endif
|
|
||||||
sa.sa_handler = ecore_event_signal_handle_sigint;
|
|
||||||
sa.sa_flags = SA_RESTART;
|
|
||||||
sigemptyset(&sa.sa_mask);
|
|
||||||
sigaction(SIGINT, &sa, (struct sigaction *)0);
|
|
||||||
|
|
||||||
sa.sa_handler = ecore_event_signal_handle_sigquit;
|
|
||||||
sa.sa_flags = SA_RESTART;
|
|
||||||
sigemptyset(&sa.sa_mask);
|
|
||||||
sigaction(SIGQUIT, &sa, (struct sigaction *)0);
|
|
||||||
|
|
||||||
sa.sa_handler = ecore_event_signal_handle_sigabrt;
|
|
||||||
sa.sa_flags = SA_RESTART;
|
|
||||||
sigemptyset(&sa.sa_mask);
|
|
||||||
sigaction(SIGABRT, &sa, (struct sigaction *)0);
|
|
||||||
|
|
||||||
sa.sa_handler = ecore_event_signal_handle_sigalrm;
|
|
||||||
sa.sa_flags = SA_RESTART;
|
|
||||||
sigemptyset(&sa.sa_mask);
|
|
||||||
sigaction(SIGALRM, &sa, (struct sigaction *)0);
|
|
||||||
|
|
||||||
sa.sa_handler = ecore_event_signal_handle_sigterm;
|
|
||||||
sa.sa_flags = SA_RESTART;
|
|
||||||
sigemptyset(&sa.sa_mask);
|
|
||||||
sigaction(SIGTERM, &sa, (struct sigaction *)0);
|
|
||||||
#ifdef HAVE_SIGPWR
|
|
||||||
sa.sa_handler = ecore_event_signal_handle_sigpwr;
|
|
||||||
sa.sa_flags = SA_RESTART;
|
|
||||||
sigemptyset(&sa.sa_mask);
|
|
||||||
sigaction(SIGPWR, &sa, (struct sigaction *)0);
|
|
||||||
#endif
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,430 +0,0 @@
|
||||||
#include "Ecore.h"
|
|
||||||
#include <errno.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
/* glocal (yes global/local) variabels for events */
|
|
||||||
Ecore_Event_Fd_Handler *fd_handlers = NULL;
|
|
||||||
Ecore_Event_Ipc_Handler *ipc_handlers = NULL;
|
|
||||||
Ecore_Event_Pid_Handler *pid_handlers = NULL;
|
|
||||||
Ecore_Event_Timer *timers = NULL;
|
|
||||||
|
|
||||||
Ecore_Event *events = NULL;
|
|
||||||
Ecore_Event *last_event = NULL;
|
|
||||||
|
|
||||||
int __quit_ev_loop = 0;
|
|
||||||
|
|
||||||
/* local functions for event handling */
|
|
||||||
static void ecore_handle_event_timer(void);
|
|
||||||
static void ecore_handle_zero_event_timer(void);
|
|
||||||
|
|
||||||
/* public functions */
|
|
||||||
|
|
||||||
/* add an event to the end of the event queue */
|
|
||||||
void
|
|
||||||
ecore_add_event(Ecore_Event_Type type, void *event,
|
|
||||||
void (*ev_free) (void *event))
|
|
||||||
{
|
|
||||||
Ecore_Event *ev;
|
|
||||||
|
|
||||||
ev = NEW(Ecore_Event, 1);
|
|
||||||
ev->type = type;
|
|
||||||
ev->ignore = 0;
|
|
||||||
ev->event = event;
|
|
||||||
ev->next = NULL;
|
|
||||||
ev->ev_free = ev_free;
|
|
||||||
if (!events)
|
|
||||||
events = ev;
|
|
||||||
else
|
|
||||||
last_event->next = ev;
|
|
||||||
last_event = ev;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* delete an event from the event queue */
|
|
||||||
void
|
|
||||||
ecore_del_event(void *event)
|
|
||||||
{
|
|
||||||
Ecore_Event *ev, *pev;
|
|
||||||
|
|
||||||
pev = NULL;
|
|
||||||
ev = events;
|
|
||||||
while (ev)
|
|
||||||
{
|
|
||||||
if (ev->event == event)
|
|
||||||
{
|
|
||||||
if (pev)
|
|
||||||
pev->next = ev->next;
|
|
||||||
else
|
|
||||||
events = ev->next;
|
|
||||||
if (!ev->next)
|
|
||||||
last_event = pev;
|
|
||||||
if ((ev->event) && (ev->ev_free))
|
|
||||||
(*ev->ev_free) (ev->event);
|
|
||||||
FREE(ev);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
pev = ev;
|
|
||||||
ev = ev->next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ecore_del_all_events(void)
|
|
||||||
{
|
|
||||||
Ecore_Event *ev, *pev;
|
|
||||||
|
|
||||||
ev = events;
|
|
||||||
while (ev)
|
|
||||||
{
|
|
||||||
pev = ev;
|
|
||||||
ev = ev->next;
|
|
||||||
if ((pev->event) && (pev->ev_free))
|
|
||||||
pev->ev_free(pev->event);
|
|
||||||
FREE(pev);
|
|
||||||
}
|
|
||||||
events = NULL;
|
|
||||||
last_event = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ecore_Event *
|
|
||||||
ecore_get_last_event(void)
|
|
||||||
{
|
|
||||||
return last_event;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* add a callback handler if fd is active for reading */
|
|
||||||
void
|
|
||||||
ecore_add_event_fd(int fd, void (*func) (int fd))
|
|
||||||
{
|
|
||||||
Ecore_Event_Fd_Handler *fd_h;
|
|
||||||
|
|
||||||
/* new handler struct */
|
|
||||||
fd_h = NEW(Ecore_Event_Fd_Handler, 1);
|
|
||||||
fd_h->next = fd_handlers;
|
|
||||||
fd_h->fd = fd;
|
|
||||||
fd_h->func = func;
|
|
||||||
fd_handlers = fd_h;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* delete handler for fd */
|
|
||||||
void
|
|
||||||
ecore_del_event_fd(int fd)
|
|
||||||
{
|
|
||||||
START_LIST_DEL(Ecore_Event_Fd_Handler, fd_handlers, (_p->fd == fd));
|
|
||||||
FREE(_p);
|
|
||||||
END_LIST_DEL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ecore_add_event_pid(pid_t pid, void (*func) (pid_t pid))
|
|
||||||
{
|
|
||||||
Ecore_Event_Pid_Handler *pid_h;
|
|
||||||
|
|
||||||
/* delete the old handler */
|
|
||||||
ecore_del_event_pid(pid);
|
|
||||||
/* new handler struct */
|
|
||||||
pid_h = NEW(Ecore_Event_Pid_Handler, 1);
|
|
||||||
pid_h->next = pid_handlers;
|
|
||||||
pid_h->pid = pid;
|
|
||||||
pid_h->func = func;
|
|
||||||
pid_handlers = pid_h;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ecore_del_event_pid(pid_t pid)
|
|
||||||
{
|
|
||||||
START_LIST_DEL(Ecore_Event_Pid_Handler, pid_handlers, (_p->pid == pid));
|
|
||||||
FREE(_p);
|
|
||||||
END_LIST_DEL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ecore_add_event_ipc(int ipc, void (*func) (int ipc))
|
|
||||||
{
|
|
||||||
Ecore_Event_Ipc_Handler *ipc_h;
|
|
||||||
|
|
||||||
/* delete the old handler */
|
|
||||||
ecore_del_event_ipc(ipc);
|
|
||||||
/* new handler struct */
|
|
||||||
ipc_h = NEW(Ecore_Event_Ipc_Handler, 1);
|
|
||||||
ipc_h->next = ipc_handlers;
|
|
||||||
ipc_h->ipc = ipc;
|
|
||||||
ipc_h->func = func;
|
|
||||||
ipc_handlers = ipc_h;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ecore_del_event_ipc(int ipc)
|
|
||||||
{
|
|
||||||
START_LIST_DEL(Ecore_Event_Ipc_Handler, ipc_handlers, (_p->ipc == ipc));
|
|
||||||
FREE(_p);
|
|
||||||
END_LIST_DEL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* sit in this loop forever and process events */
|
|
||||||
void
|
|
||||||
ecore_event_loop(void)
|
|
||||||
{
|
|
||||||
int fdcount, fdsize, ipccount, ipcsize;
|
|
||||||
int timed_out, were_events;
|
|
||||||
double time1, time2, prev_time = 0.0;
|
|
||||||
struct timeval tval;
|
|
||||||
fd_set fdset, ipcset;
|
|
||||||
Ecore_Event_Fd_Handler *fd_h;
|
|
||||||
Ecore_Event_Pid_Handler *pid_h;
|
|
||||||
Ecore_Event_Ipc_Handler *ipc_h;
|
|
||||||
|
|
||||||
/* init some of the time variables */
|
|
||||||
time1 = ecore_get_time();
|
|
||||||
time2 = time1 - prev_time;
|
|
||||||
prev_time = time1;
|
|
||||||
while (__quit_ev_loop == 0)
|
|
||||||
{
|
|
||||||
/* state setup */
|
|
||||||
timed_out = 0;
|
|
||||||
were_events = 0;
|
|
||||||
|
|
||||||
/* setup fd array from list of listening fd's */
|
|
||||||
fdsize = 0;
|
|
||||||
FD_ZERO(&fdset);
|
|
||||||
/* for ever fd handler add the fd to the array and incriment fdsize */
|
|
||||||
for (fd_h = fd_handlers; fd_h; fd_h = fd_h->next)
|
|
||||||
{
|
|
||||||
FD_SET(fd_h->fd, &fdset);
|
|
||||||
if (fd_h->fd > fdsize)
|
|
||||||
fdsize = fd_h->fd;
|
|
||||||
}
|
|
||||||
fdcount = 1;
|
|
||||||
ipcsize = 0;
|
|
||||||
FD_ZERO(&ipcset);
|
|
||||||
/* for ever fd handler add the fd to the array and incriment fdsize */
|
|
||||||
for (ipc_h = ipc_handlers; ipc_h; ipc_h = ipc_h->next)
|
|
||||||
{
|
|
||||||
FD_SET(ipc_h->ipc, &ipcset);
|
|
||||||
if (ipc_h->ipc > ipcsize)
|
|
||||||
ipcsize = ipc_h->ipc;
|
|
||||||
}
|
|
||||||
ipccount = 1;
|
|
||||||
/* if there are timers setup adjust timeout value and select */
|
|
||||||
if (timers)
|
|
||||||
{
|
|
||||||
if (timers->just_added)
|
|
||||||
{
|
|
||||||
timers->just_added = 0;
|
|
||||||
time1 = timers->in;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
time1 = timers->in - time2;
|
|
||||||
if (time1 < 0.0)
|
|
||||||
time1 = 0.0;
|
|
||||||
timers->in = time1;
|
|
||||||
}
|
|
||||||
tval.tv_sec = (long)time1;
|
|
||||||
tval.tv_usec = (long)((time1 - ((double)tval.tv_sec)) * 1000000);
|
|
||||||
if (tval.tv_sec < 0)
|
|
||||||
tval.tv_sec = 0;
|
|
||||||
if (tval.tv_usec <= 1000)
|
|
||||||
tval.tv_usec = 1000;
|
|
||||||
ecore_handle_zero_event_timer();
|
|
||||||
if ((!ecore_events_pending()) && (!ecore_event_signal_events_pending()))
|
|
||||||
fdcount = select(fdsize + 1, &fdset, NULL, NULL, &tval);
|
|
||||||
}
|
|
||||||
/* no timers - just sit and block */
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ((!ecore_events_pending()) && (!ecore_event_signal_events_pending()))
|
|
||||||
fdcount = select(fdsize + 1, &fdset, NULL, NULL, NULL);
|
|
||||||
}
|
|
||||||
for (pid_h = pid_handlers; pid_h; pid_h = pid_h->next)
|
|
||||||
pid_h->func(pid_h->pid);
|
|
||||||
|
|
||||||
/* see if we have any new ipc connections */
|
|
||||||
tval.tv_sec = 0;
|
|
||||||
tval.tv_usec = 0;
|
|
||||||
ipccount += select(ipcsize + 1, &ipcset, NULL, NULL, &tval);
|
|
||||||
|
|
||||||
/* return < 0 - error or signal interrupt */
|
|
||||||
if (fdcount < 0)
|
|
||||||
{
|
|
||||||
/* error */
|
|
||||||
if ((errno == ENOMEM) || (errno == EINVAL) || (errno == EBADF))
|
|
||||||
{
|
|
||||||
fprintf(stderr, "Lost connection to X display.\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* timers are available and its a timeout */
|
|
||||||
if ((timers) && (fdcount == 0))
|
|
||||||
{
|
|
||||||
ecore_handle_event_timer();
|
|
||||||
timed_out = 1;
|
|
||||||
}
|
|
||||||
if (fdcount < 0)
|
|
||||||
fdcount = 0;
|
|
||||||
if (ecore_events_pending())
|
|
||||||
{
|
|
||||||
fdcount++;
|
|
||||||
FD_SET(ecore_x_get_fd(), &fdset);
|
|
||||||
}
|
|
||||||
/* fd's are active */
|
|
||||||
if (fdcount > 0)
|
|
||||||
{
|
|
||||||
/* for every fd handler - if its fd is set - call the func */
|
|
||||||
for (fd_h = fd_handlers; fd_h;)
|
|
||||||
{
|
|
||||||
Ecore_Event_Fd_Handler *fdh;
|
|
||||||
|
|
||||||
fdh = fd_h;
|
|
||||||
fd_h = fd_h->next;
|
|
||||||
if (FD_ISSET(fdh->fd, &fdset))
|
|
||||||
fdh->func(fdh->fd);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ipc clients are active */
|
|
||||||
if (ipccount > 0)
|
|
||||||
{
|
|
||||||
for (ipc_h = ipc_handlers; ipc_h;)
|
|
||||||
{
|
|
||||||
Ecore_Event_Ipc_Handler *ipch;
|
|
||||||
|
|
||||||
ipch = ipc_h;
|
|
||||||
ipc_h = ipc_h->next;
|
|
||||||
if (FD_ISSET(ipch->ipc, &ipcset))
|
|
||||||
ipch->func(ipch->ipc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (events)
|
|
||||||
ecore_event_filter(events);
|
|
||||||
if (events)
|
|
||||||
{
|
|
||||||
ecore_event_filter_events_handle(events);
|
|
||||||
were_events = 1;
|
|
||||||
}
|
|
||||||
ecore_del_all_events();
|
|
||||||
if ((timed_out) || (were_events))
|
|
||||||
ecore_event_filter_idle_handle();
|
|
||||||
ecore_flush();
|
|
||||||
time1 = ecore_get_time();
|
|
||||||
time2 = time1 - prev_time;
|
|
||||||
prev_time = time1;
|
|
||||||
}
|
|
||||||
__quit_ev_loop = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* set a flag to 0 so that we can quit the event loop and shutdown
|
|
||||||
* properly */
|
|
||||||
void
|
|
||||||
ecore_event_loop_quit(void)
|
|
||||||
{
|
|
||||||
__quit_ev_loop = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* add a timeout funcitont o be called in "in" seconds with name name */
|
|
||||||
void
|
|
||||||
ecore_add_event_timer(char *name, double in, void (*func) (int val, void *data),
|
|
||||||
int val, void *data)
|
|
||||||
{
|
|
||||||
Ecore_Event_Timer *timer, *ptr, *pptr;
|
|
||||||
double tally;
|
|
||||||
|
|
||||||
if (name)
|
|
||||||
ecore_del_event_timer(name);
|
|
||||||
timer = NEW(Ecore_Event_Timer, 1);
|
|
||||||
timer->next = NULL;
|
|
||||||
timer->func = func;
|
|
||||||
timer->data = data;
|
|
||||||
timer->val = val;
|
|
||||||
timer->just_added = 1;
|
|
||||||
timer->in = in;
|
|
||||||
timer->name = strdup(name);
|
|
||||||
if (!timers)
|
|
||||||
timers = timer;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pptr = NULL;
|
|
||||||
ptr = timers;
|
|
||||||
tally = 0.0;
|
|
||||||
while (ptr)
|
|
||||||
{
|
|
||||||
tally += ptr->in;
|
|
||||||
if (tally > in)
|
|
||||||
{
|
|
||||||
tally -= ptr->in;
|
|
||||||
timer->next = ptr;
|
|
||||||
if (pptr)
|
|
||||||
pptr->next = timer;
|
|
||||||
else
|
|
||||||
timers = timer;
|
|
||||||
timer->in -= tally;
|
|
||||||
if (timer->next)
|
|
||||||
timer->next->in -= timer->in;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
pptr = ptr;
|
|
||||||
ptr = ptr->next;
|
|
||||||
}
|
|
||||||
if (pptr)
|
|
||||||
pptr->next = timer;
|
|
||||||
else
|
|
||||||
timers = timer;
|
|
||||||
timer->in -= tally;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* delete a timer timeout entry named "name" */
|
|
||||||
void *
|
|
||||||
ecore_del_event_timer(char *name)
|
|
||||||
{
|
|
||||||
Ecore_Event_Timer *timer, *ptr, *pptr;
|
|
||||||
|
|
||||||
pptr = NULL;
|
|
||||||
ptr = timers;
|
|
||||||
while (ptr)
|
|
||||||
{
|
|
||||||
timer = ptr;
|
|
||||||
if (!strcmp(timer->name, name))
|
|
||||||
{
|
|
||||||
void *data;
|
|
||||||
|
|
||||||
if (pptr)
|
|
||||||
pptr->next = timer->next;
|
|
||||||
else
|
|
||||||
timers = timer->next;
|
|
||||||
if (timer->next)
|
|
||||||
timer->next->in += timer->in;
|
|
||||||
IF_FREE(timer->name);
|
|
||||||
data = timer->data;
|
|
||||||
FREE(timer);
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
pptr = ptr;
|
|
||||||
ptr = ptr->next;
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* private functions */
|
|
||||||
static void
|
|
||||||
ecore_handle_event_timer(void)
|
|
||||||
{
|
|
||||||
Ecore_Event_Timer *timer;
|
|
||||||
|
|
||||||
if (!timers)
|
|
||||||
return;
|
|
||||||
timer = timers;
|
|
||||||
timers = timer->next;
|
|
||||||
(*(timer->func)) (timer->val, timer->data);
|
|
||||||
IF_FREE(timer->name);
|
|
||||||
FREE(timer);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
ecore_handle_zero_event_timer(void)
|
|
||||||
{
|
|
||||||
while ((timers) && (timers->in == 0.0))
|
|
||||||
ecore_handle_event_timer();
|
|
||||||
}
|
|
|
@ -1,187 +0,0 @@
|
||||||
#include "Ecore.h"
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <sys/un.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
void ecore_ipc_init(char *path);
|
|
||||||
void ecore_ipc_cleanup(void);
|
|
||||||
static void ecore_ipc_connect_handler(int fd);
|
|
||||||
static void ecore_ipc_client_handler(int fd);
|
|
||||||
void ecore_ipc_get_data(int fd, void *buf);
|
|
||||||
void ecore_ipc_send_data(int fd, void *buf, int size);
|
|
||||||
void ecore_add_ipc_service(int service, void (*func) (int fd));
|
|
||||||
void ecore_del_ipc_service(int service);
|
|
||||||
|
|
||||||
Ecore_Event_Ipc_Service *ipc_services = NULL;
|
|
||||||
|
|
||||||
void
|
|
||||||
ecore_ev_ipc_init(char *path)
|
|
||||||
{
|
|
||||||
int fd, len;
|
|
||||||
struct sockaddr_un saun;
|
|
||||||
|
|
||||||
if (path == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* a UNIX domain, stream socket */
|
|
||||||
if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0)
|
|
||||||
{
|
|
||||||
printf("Cannot create ipc socket... disabling ipc.\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* create the address we will be binding to */
|
|
||||||
saun.sun_family = AF_UNIX;
|
|
||||||
strcpy(saun.sun_path, path);
|
|
||||||
|
|
||||||
/* unlink the address so the bind won't fail */
|
|
||||||
unlink(path);
|
|
||||||
len = sizeof(saun.sun_family) + strlen(saun.sun_path);
|
|
||||||
|
|
||||||
if (bind(fd, (struct sockaddr *)&saun, len) < 0)
|
|
||||||
{
|
|
||||||
printf("Cannot bind ipc socket... disabling ipc.\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* listen on the socket */
|
|
||||||
if (listen(fd, 5) < 0)
|
|
||||||
{
|
|
||||||
printf("Cannot listen on ipc socket... disabling ipc.\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* add ipc listener */
|
|
||||||
ecore_add_event_ipc(fd, ecore_ipc_connect_handler);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ecore_ev_ipc_cleanup(void)
|
|
||||||
{
|
|
||||||
Ecore_Event_Ipc_Service *ipc_s;
|
|
||||||
|
|
||||||
/* cleanup services list */
|
|
||||||
for (ipc_s = ipc_services; ipc_s; ipc_s = ipc_s->next)
|
|
||||||
{
|
|
||||||
ecore_del_ipc_service(ipc_s->service);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
ecore_ipc_connect_handler(int fd)
|
|
||||||
{
|
|
||||||
struct sockaddr_un fsaun;
|
|
||||||
int fromlen, nfd;
|
|
||||||
|
|
||||||
/* accept ipc connection */
|
|
||||||
fromlen = sizeof(fsaun);
|
|
||||||
|
|
||||||
if ((nfd = accept(fd, (struct sockaddr *)&fsaun, &fromlen)) < 0)
|
|
||||||
{
|
|
||||||
printf("Cannot accept ipc connection... ignoring connection attempt.\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* add ipc client */
|
|
||||||
ecore_add_event_ipc(nfd, ecore_ipc_client_handler);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
ecore_ipc_client_handler(int fd)
|
|
||||||
{
|
|
||||||
int nread, service;
|
|
||||||
Ecore_Event_Ipc_Service *ipc_s;
|
|
||||||
|
|
||||||
if ((nread = read(fd, &service, sizeof(service))) == 0)
|
|
||||||
{
|
|
||||||
close(fd);
|
|
||||||
ecore_del_event_ipc(fd);
|
|
||||||
}
|
|
||||||
else if (nread > 0)
|
|
||||||
{
|
|
||||||
/* call the service function */
|
|
||||||
for (ipc_s = ipc_services; ipc_s; ipc_s = ipc_s->next)
|
|
||||||
{
|
|
||||||
if (ipc_s->service == service)
|
|
||||||
{
|
|
||||||
ipc_s->func(fd);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
printf("ipc error in read service.\n");
|
|
||||||
fflush(stdout);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ecore_ipc_get_data(int fd, void *buf)
|
|
||||||
{
|
|
||||||
int readn, nread;
|
|
||||||
|
|
||||||
/* read number of bytes being sent */
|
|
||||||
if ((nread = read(fd, &readn, sizeof(readn))) == -1)
|
|
||||||
{
|
|
||||||
printf("ipc error in get data.\n");
|
|
||||||
fflush(stdout);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* get data structure */
|
|
||||||
if ((nread = read(fd, buf, readn)) == -1)
|
|
||||||
{
|
|
||||||
printf("ipc error in get data.\n");
|
|
||||||
fflush(stdout);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ecore_ipc_send_data(int fd, void *buf, int size)
|
|
||||||
{
|
|
||||||
int n;
|
|
||||||
|
|
||||||
/* send length of data being sent */
|
|
||||||
if ((n = write(fd, &size, sizeof(size))) == -1)
|
|
||||||
{
|
|
||||||
printf("ipc error in send data length.\n");
|
|
||||||
fflush(stdout);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* send data */
|
|
||||||
if ((n = write(fd, buf, size)) == -1)
|
|
||||||
{
|
|
||||||
printf("ipc error in send data.\n");
|
|
||||||
fflush(stdout);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ecore_add_ipc_service(int service, void (*func) (int fd))
|
|
||||||
{
|
|
||||||
Ecore_Event_Ipc_Service *ipc_s;
|
|
||||||
|
|
||||||
/* delete the old service */
|
|
||||||
ecore_del_ipc_service(service);
|
|
||||||
/* new service struct */
|
|
||||||
ipc_s = NEW(Ecore_Event_Ipc_Service, 1);
|
|
||||||
ipc_s->next = ipc_services;
|
|
||||||
ipc_s->service = service;
|
|
||||||
ipc_s->func = func;
|
|
||||||
ipc_services = ipc_s;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ecore_del_ipc_service(int service)
|
|
||||||
{
|
|
||||||
START_LIST_DEL(Ecore_Event_Ipc_Service, ipc_services,
|
|
||||||
(_p->service == service));
|
|
||||||
FREE(_p);
|
|
||||||
END_LIST_DEL;
|
|
||||||
}
|
|
|
@ -1,10 +0,0 @@
|
||||||
#include "Ecore.h"
|
|
||||||
|
|
||||||
double
|
|
||||||
ecore_get_time(void)
|
|
||||||
{
|
|
||||||
struct timeval timev;
|
|
||||||
|
|
||||||
gettimeofday(&timev, NULL);
|
|
||||||
return (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000);
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue