On Fri, 14 May 2010, Enlightenment SVN wrote:

> +AS_IF(
> +   [test "x$e_cv_want_device_hal" != "xno"],
> +     [PKG_CHECK_EXISTS([ehal], 
> e_cv_want_device_hal=yes,e_cv_want_device_hal=no)],
> +   [e_cv_want_device_hal=no]
> +)

don't use AS_IF. AS_IF is for constructions like:

if **
  ****
else if **
  ****
else if **
  ****
else

Use simple tests, like all the other tests in that configure.ac

Vincent

> +AC_ARG_ENABLE([device-udev],
> +   AS_HELP_STRING([--enable-device-udev],[enable udev support 
> @<:@default=disabled@:>@]),
> +   [e_cv_want_device_udev=$enableval],
> +   AC_CACHE_VAL([e_cv_want_device_udev], [e_cv_want_device_udev=no]))
> +AS_IF(
> +   [test "x$e_cv_want_device_udev" = "xyes"],
> +     [PKG_CHECK_EXISTS([eeze_udev], 
> e_cv_want_device_udev=yes,e_cv_want_device_udev=no)],
> +   [e_cv_want_device_udev=no]
> +)
> +AS_IF(
> +   [test "x$e_cv_want_device_hal" = "xyes" && test "x$e_cv_want_device_udev" 
> != "xyes"],
> +      [device_backend="ehal"],
> +   [test "x$e_cv_want_device_udev" = "xyes"],
> +      [device_backend="eeze_udev"]
> +      AC_DEFINE_UNQUOTED([HAVE_EEZE_UDEV],[1],[enable udev support]),
> +   AC_MSG_ERROR(No usable device backend (eeze_udev/ehal) found!)
> +)
> +AC_MSG_RESULT($device_backend)
> +
> # doxygen program for documentation building
>
> EFL_CHECK_DOXYGEN([build_doc="yes"], [build_doc="no"])
> @@ -324,8 +354,9 @@
>   dbus-1
>   edbus
>   ehal
> +  $device_backend
> ])
> -requirements_e="evas ecore ecore-x ecore-evas ecore-con ecore-ipc ecore-file 
> eet edje efreet efreet-mime eina-0 dbus-1 edbus ehal"
> +requirements_e="evas ecore ecore-x ecore-evas ecore-con ecore-ipc ecore-file 
> eet edje efreet efreet-mime eina-0 dbus-1 edbus ehal $device_backend"
>
> AC_E_CHECK_PKG(ECORE_IMF, [ecore-imf ecore-imf-evas], [], [:])
>
> @@ -747,6 +778,10 @@
> po/Makefile.in
> ])
>
> +if test "$device_backend" = "eeze_udev";then
> +  device_backend+=" (EXPERIMENTAL!)"
> +fi
> +
> # report
> txt_strip() {
>         echo "[$]@" | sed -e 's/^[[ \t]]*\([[^ \t]]*\)[[ \t]]*$/\1/g'
> @@ -761,6 +796,11 @@
>  * LDFLAGS.........: $(txt_strip $LDFLAGS)
> SUMMARY_EOF
> echo
> +cat << DEVICE_EOF
> +Preferred Backends:
> + * device..........: $device_backend
> +DEVICE_EOF
> +echo
>
> UNUSED_MODS=""
> for mod in $UNUSED_OPTIONAL_MODULES; do
>
> Modified: trunk/e/src/bin/e.h
> ===================================================================
> --- trunk/e/src/bin/e.h       2010-05-14 18:02:43 UTC (rev 48866)
> +++ trunk/e/src/bin/e.h       2010-05-14 18:19:51 UTC (rev 48867)
> @@ -97,6 +97,9 @@
> #else
> #include <E_Hal.h>
> #endif
> +#ifdef HAVE_EEZE_UDEV
> +#include <Eeze_Udev.h>
> +#endif
>
> #ifdef EAPI
> #undef EAPI
>
> Modified: trunk/e/src/modules/illume2/e_mod_kbd.c
> ===================================================================
> --- trunk/e/src/modules/illume2/e_mod_kbd.c   2010-05-14 18:02:43 UTC (rev 
> 48866)
> +++ trunk/e/src/modules/illume2/e_mod_kbd.c   2010-05-14 18:19:51 UTC (rev 
> 48867)
> @@ -60,8 +60,8 @@
>    _kbd_hook = e_border_hook_add(E_BORDER_HOOK_EVAL_PRE_POST_FETCH,
>                                  _e_mod_kbd_cb_border_pre_post_fetch, NULL);
>
> -   /* initialize the dbus subsystem */
> -   e_mod_kbd_dbus_init();
> +   /* initialize the device subsystem */
> +   e_mod_kbd_device_init();
>
>    return 1;
> }
> @@ -71,8 +71,8 @@
> {
>    Ecore_Event_Handler *hdl;
>
> -   /* shutdown the dbus subsystem */
> -   e_mod_kbd_dbus_shutdown();
> +   /* shutdown the device subsystem */
> +   e_mod_kbd_device_shutdown();
>
>    /* destroy the hook */
>    e_border_hook_del(_kbd_hook);
>
> Modified: trunk/e/src/modules/illume2/e_mod_kbd_device.c
> ===================================================================
> --- trunk/e/src/modules/illume2/e_mod_kbd_device.c    2010-05-14 18:02:43 UTC 
> (rev 48866)
> +++ trunk/e/src/modules/illume2/e_mod_kbd_device.c    2010-05-14 18:19:51 UTC 
> (rev 48867)
> @@ -2,93 +2,108 @@
> #include "e_mod_kbd_device.h"
>
> /* local function prototypes */
> -static void _e_mod_kbd_dbus_ignore_load(void);
> -static void _e_mod_kbd_dbus_ignore_load_file(const char *file);
> -static void _e_mod_kbd_dbus_cb_input_kbd(void *data __UNUSED__, void *reply, 
> DBusError *err);
> -static void _e_mod_kbd_dbus_cb_input_kbd_is(void *data, void *reply, 
> DBusError *err);
> -static void _e_mod_kbd_dbus_kbd_add(const char *udi);
> -static void _e_mod_kbd_dbus_kbd_del(const char *udi);
> -static void _e_mod_kbd_dbus_kbd_eval(void);
> -static void _e_mod_kbd_dbus_dev_add(void *data __UNUSED__, DBusMessage *msg);
> -static void _e_mod_kbd_dbus_dev_del(void *data __UNUSED__, DBusMessage *msg);
> -static void _e_mod_kbd_dbus_dev_chg(void *data __UNUSED__, DBusMessage *msg);
> +static void _e_mod_kbd_device_ignore_load(void);
> +static void _e_mod_kbd_device_ignore_load_file(const char *file);
> +static void _e_mod_kbd_device_kbd_add(const char *udi);
> +static void _e_mod_kbd_device_kbd_del(const char *udi);
> +static void _e_mod_kbd_device_kbd_eval(void);
> +#ifdef HAVE_EEZE_UDEV
> +static void _e_mod_kbd_device_udev_event(const char *device, const char 
> *event, void *data __UNUSED__, Eeze_Udev_Watch *watch __UNUSED__);
> +#else
> +static void _e_mod_kbd_device_cb_input_kbd(void *data __UNUSED__, void 
> *reply, DBusError *err);
> +static void _e_mod_kbd_device_cb_input_kbd_is(void *data, void *reply, 
> DBusError *err);
> +static void _e_mod_kbd_device_dbus_add(void *data __UNUSED__, DBusMessage 
> *msg);
> +static void _e_mod_kbd_device_dbus_del(void *data __UNUSED__, DBusMessage 
> *msg);
> +static void _e_mod_kbd_device_dbus_chg(void *data __UNUSED__, DBusMessage 
> *msg);
> +#endif
>
> /* local variables */
> static int have_real_kbd = 0;
> +#ifdef HAVE_EEZE_UDEV
> +static Eeze_Udev_Watch *watch;
> +#else
> static E_DBus_Connection *_dbus_conn = NULL;
> static E_DBus_Signal_Handler *_dev_add = NULL;
> static E_DBus_Signal_Handler *_dev_del = NULL;
> static E_DBus_Signal_Handler *_dev_chg = NULL;
> -static Eina_List *_dbus_kbds = NULL, *_ignore_kbds = NULL;
> +#endif
> +static Eina_List *_device_kbds = NULL, *_ignore_kbds = NULL;
>
> void
> -e_mod_kbd_dbus_init(void)
> +e_mod_kbd_device_init(void)
> {
>    /* load the 'ignored' keyboard file */
> -   _e_mod_kbd_dbus_ignore_load();
> -
> +   _e_mod_kbd_device_ignore_load();
> +#ifdef HAVE_EEZE_UDEV
> +   watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_KEYBOARD,
> +                         _e_mod_kbd_device_udev_event, NULL);
> +#else
>    /* try to attach to the system dbus */
>    if (!(_dbus_conn = e_dbus_bus_get(DBUS_BUS_SYSTEM))) return;
>
>    /* ask HAL for any input keyboards */
>    e_hal_manager_find_device_by_capability(_dbus_conn, "input.keyboard",
> -                                           _e_mod_kbd_dbus_cb_input_kbd, 
> NULL);
> +                                           _e_mod_kbd_device_cb_input_kbd, 
> NULL);
>
>    /* setup dbus signal handlers for when a device gets added/removed/changed 
> */
>    _dev_add =
>      e_dbus_signal_handler_add(_dbus_conn, "org.freedesktop.Hal",
>                                "/org/freedesktop/Hal/Manager",
>                                "org.freedesktop.Hal.Manager",
> -                               "DeviceAdded", _e_mod_kbd_dbus_dev_add, NULL);
> +                               "DeviceAdded", _e_mod_kbd_device_dbus_add, 
> NULL);
>    _dev_del =
>      e_dbus_signal_handler_add(_dbus_conn, "org.freedesktop.Hal",
>                                "/org/freedesktop/Hal/Manager",
>                                "org.freedesktop.Hal.Manager",
> -                               "DeviceRemoved", _e_mod_kbd_dbus_dev_del, 
> NULL);
> +                               "DeviceRemoved", _e_mod_kbd_device_dbus_del, 
> NULL);
>    _dev_chg =
>      e_dbus_signal_handler_add(_dbus_conn, "org.freedesktop.Hal",
>                                "/org/freedesktop/Hal/Manager",
>                                "org.freedesktop.Hal.Manager",
> -                               "NewCapability", _e_mod_kbd_dbus_dev_chg, 
> NULL);
> +                               "NewCapability", _e_mod_kbd_device_dbus_chg, 
> NULL);
> +#endif
> }
>
> void
> -e_mod_kbd_dbus_shutdown(void)
> +e_mod_kbd_device_shutdown(void)
> {
>    char *str;
>
> +#ifdef HAVE_EEZE_UDEV
> +   if (watch) eeze_udev_watch_del(watch);
> +#else
>    /* remove the dbus signal handlers if we can */
>    if (_dev_add) e_dbus_signal_handler_del(_dbus_conn, _dev_add);
>    if (_dev_del) e_dbus_signal_handler_del(_dbus_conn, _dev_del);
>    if (_dev_chg) e_dbus_signal_handler_del(_dbus_conn, _dev_chg);
> -
> +#endif
>    /* free the list of ignored keyboards */
>    EINA_LIST_FREE(_ignore_kbds, str)
>      eina_stringshare_del(str);
>
>    /* free the list of keyboards */
> -   EINA_LIST_FREE(_dbus_kbds, str)
> +   EINA_LIST_FREE(_device_kbds, str)
>      eina_stringshare_del(str);
> }
>
> /* local functions */
> static void
> -_e_mod_kbd_dbus_ignore_load(void)
> +_e_mod_kbd_device_ignore_load(void)
> {
>    char buff[PATH_MAX];
>
>    /* load the 'ignore' file from the user's home dir */
>    e_user_dir_concat_static(buff, "keyboards/ignore_built_in_keyboards");
> -   _e_mod_kbd_dbus_ignore_load_file(buff);
> +   _e_mod_kbd_device_ignore_load_file(buff);
>
>    /* load the 'ignore' file from the system/module dir */
>    snprintf(buff, sizeof(buff),
>             "%s/ignore_built_in_keyboards", _e_illume_mod_dir);
> -   _e_mod_kbd_dbus_ignore_load_file(buff);
> +   _e_mod_kbd_device_ignore_load_file(buff);
> }
>
> static void
> -_e_mod_kbd_dbus_ignore_load_file(const char *file)
> +_e_mod_kbd_device_ignore_load_file(const char *file)
> {
>    char buff[PATH_MAX];
>    FILE *f;
> @@ -113,17 +128,31 @@
>
>         /* append this kbd to the ignore list */
>       if (*p)
> -          {
> -             _ignore_kbds =
> -               eina_list_append(_ignore_kbds, eina_stringshare_add(p));
> -          }
> +       {
> +          _ignore_kbds =
> +            eina_list_append(_ignore_kbds, eina_stringshare_add(p));
> +       }
>      }
>    fclose(f);
> }
>
> +#ifdef HAVE_EEZE_UDEV
> static void
> -_e_mod_kbd_dbus_cb_input_kbd(void *data __UNUSED__, void *reply, DBusError 
> *err)
> +_e_mod_kbd_device_udev_event(const char *device, const char *event, void 
> *data __UNUSED__, Eeze_Udev_Watch *watch __UNUSED__)
> {
> +   if ((!device) || (!event)) return;
> +
> +   if ((!strcmp(event, "add")) || (!strcmp(event, "online")))
> +     _e_mod_kbd_device_kbd_add(device);
> +   else if ((!strcmp(event, "remove")) || (!strcmp(event, "offline")))
> +     _e_mod_kbd_device_kbd_del(device);
> +
> +   _e_mod_kbd_device_kbd_eval();
> +}
> +#else
> +static void
> +_e_mod_kbd_device_cb_input_kbd(void *data __UNUSED__, void *reply, DBusError 
> *err)
> +{
>    E_Hal_Manager_Find_Device_By_Capability_Return *ret = reply;
>    Eina_List *l;
>    char *dev;
> @@ -140,13 +169,13 @@
>    /* for each returned keyboard, add it and evaluate it */
>    EINA_LIST_FOREACH(ret->strings, l, dev)
>      {
> -        _e_mod_kbd_dbus_kbd_add(dev);
> -        _e_mod_kbd_dbus_kbd_eval();
> +        _e_mod_kbd_device_kbd_add(dev);
> +        _e_mod_kbd_device_kbd_eval();
>      }
> }
>
> static void
> -_e_mod_kbd_dbus_cb_input_kbd_is(void *data, void *reply, DBusError *err)
> +_e_mod_kbd_device_cb_input_kbd_is(void *data, void *reply, DBusError *err)
> {
>    E_Hal_Device_Query_Capability_Return *ret = reply;
>    char *udi = data;
> @@ -163,49 +192,99 @@
>      {
>         if (udi)
>           {
> -             _e_mod_kbd_dbus_kbd_add(udi);
> -             _e_mod_kbd_dbus_kbd_eval();
> +             _e_mod_kbd_device_kbd_add(udi);
> +             _e_mod_kbd_device_kbd_eval();
>           }
>      }
> }
>
> static void
> -_e_mod_kbd_dbus_kbd_add(const char *udi)
> +_e_mod_kbd_device_dbus_add(void *data __UNUSED__, DBusMessage *msg)
> {
> +   DBusError err;
> +   char *udi;
> +
> +   dbus_error_init(&err);
> +   dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &udi, 
> DBUS_TYPE_INVALID);
> +   e_hal_device_query_capability(_dbus_conn, udi, "input.keyboard",
> +                                 _e_mod_kbd_device_cb_input_kbd_is, udi);
> +}
> +
> +static void
> +_e_mod_kbd_device_dbus_del(void *data __UNUSED__, DBusMessage *msg)
> +{
> +   DBusError err;
> +   char *udi;
> +
> +   dbus_error_init(&err);
> +   dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &udi, 
> DBUS_TYPE_INVALID);
> +   if (udi)
> +     {
> +        _e_mod_kbd_device_kbd_del(udi);
> +        _e_mod_kbd_device_kbd_eval();
> +     }
> +}
> +
> +static void
> +_e_mod_kbd_device_dbus_chg(void *data __UNUSED__, DBusMessage *msg)
> +{
> +   DBusError err;
> +   char *udi, *cap;
> +
> +   dbus_error_init(&err);
> +   dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &udi,
> +                         DBUS_TYPE_STRING, &cap, DBUS_TYPE_INVALID);
> +   if (cap)
> +     {
> +        if (!strcmp(cap, "input.keyboard"))
> +          {
> +             if (udi)
> +               {
> +                  _e_mod_kbd_device_kbd_add(udi);
> +                  _e_mod_kbd_device_kbd_eval();
> +               }
> +          }
> +     }
> +}
> +#endif
> +
> +static void
> +_e_mod_kbd_device_kbd_add(const char *udi)
> +{
>    const char *str;
>    Eina_List *l;
>
>    if (!udi) return;
> -   EINA_LIST_FOREACH(_dbus_kbds, l, str)
> +   EINA_LIST_FOREACH(_device_kbds, l, str)
>      if (!strcmp(str, udi)) return;
> -   _dbus_kbds = eina_list_append(_dbus_kbds, eina_stringshare_add(udi));
> +   _device_kbds = eina_list_append(_device_kbds, eina_stringshare_add(udi));
> }
>
> static void
> -_e_mod_kbd_dbus_kbd_del(const char *udi)
> +_e_mod_kbd_device_kbd_del(const char *udi)
> {
>    const char *str;
>    Eina_List *l;
>
>    if (!udi) return;
> -   EINA_LIST_FOREACH(_dbus_kbds, l, str)
> +   EINA_LIST_FOREACH(_device_kbds, l, str)
>      if (!strcmp(str, udi))
>        {
>           eina_stringshare_del(str);
> -          _dbus_kbds = eina_list_remove_list(_dbus_kbds, l);
> -          return;
> +          _device_kbds = eina_list_remove_list(_device_kbds, l);
> +          break;
>        }
> }
>
> static void
> -_e_mod_kbd_dbus_kbd_eval(void)
> +_e_mod_kbd_device_kbd_eval(void)
> {
>    Eina_List *l, *ll;
>    const char *g, *gg;
>    int have_real = 0;
>
> -   have_real = eina_list_count(_dbus_kbds);
> -   EINA_LIST_FOREACH(_dbus_kbds, l, g)
> +   have_real = eina_list_count(_device_kbds);
> +   EINA_LIST_FOREACH(_device_kbds, l, g)
>      EINA_LIST_FOREACH(_ignore_kbds, ll, gg)
>        if (e_util_glob_match(g, gg))
>          {
> @@ -217,58 +296,9 @@
>      {
>         have_real_kbd = have_real;
> #if 0
> -//        if (have_real_kbd) e_kbd_all_disable();
> +//        if (have_real_kbd) e_mod_kbd_disable();
>         else
> #endif
> -//          e_kbd_all_enable();
> +//          e_mod_kbd_enable();
>      }
> }
> -
> -static void
> -_e_mod_kbd_dbus_dev_add(void *data __UNUSED__, DBusMessage *msg)
> -{
> -   DBusError err;
> -   char *udi;
> -
> -   dbus_error_init(&err);
> -   dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &udi, 
> DBUS_TYPE_INVALID);
> -   e_hal_device_query_capability(_dbus_conn, udi, "input.keyboard",
> -                                 _e_mod_kbd_dbus_cb_input_kbd_is, udi);
> -}
> -
> -static void
> -_e_mod_kbd_dbus_dev_del(void *data __UNUSED__, DBusMessage *msg)
> -{
> -   DBusError err;
> -   char *udi;
> -
> -   dbus_error_init(&err);
> -   dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &udi, 
> DBUS_TYPE_INVALID);
> -   if (udi)
> -     {
> -        _e_mod_kbd_dbus_kbd_del(udi);
> -        _e_mod_kbd_dbus_kbd_eval();
> -     }
> -}
> -
> -static void
> -_e_mod_kbd_dbus_dev_chg(void *data __UNUSED__, DBusMessage *msg)
> -{
> -   DBusError err;
> -   char *udi, *cap;
> -
> -   dbus_error_init(&err);
> -   dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &udi,
> -                         DBUS_TYPE_STRING, &cap, DBUS_TYPE_INVALID);
> -   if (cap)
> -     {
> -        if (!strcmp(cap, "input.keyboard"))
> -          {
> -             if (udi)
> -               {
> -                  _e_mod_kbd_dbus_kbd_add(udi);
> -                  _e_mod_kbd_dbus_kbd_eval();
> -               }
> -          }
> -     }
> -}
>
> Modified: trunk/e/src/modules/illume2/e_mod_kbd_device.h
> ===================================================================
> --- trunk/e/src/modules/illume2/e_mod_kbd_device.h    2010-05-14 18:02:43 UTC 
> (rev 48866)
> +++ trunk/e/src/modules/illume2/e_mod_kbd_device.h    2010-05-14 18:19:51 UTC 
> (rev 48867)
> @@ -1,7 +1,7 @@
> -#ifndef E_MOD_KBD_DBUS_H
> -# define E_MOD_KBD_DBUS_H
> +#ifndef E_MOD_KBD_DEVICE_H
> +# define E_MOD_KBD_DEVICE_H
>
> -void e_mod_kbd_dbus_init(void);
> -void e_mod_kbd_dbus_shutdown(void);
> +void e_mod_kbd_device_init(void);
> +void e_mod_kbd_device_shutdown(void);
>
> #endif
>
>
> ------------------------------------------------------------------------------
>
> _______________________________________________
> enlightenment-svn mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-svn
>
>

------------------------------------------------------------------------------

_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to