diff options
| author | Peter Hutterer <peter.hutterer@who-t.net> | 2013-05-30 09:00:13 +1000 |
|---|---|---|
| committer | Peter Hutterer <peter.hutterer@who-t.net> | 2013-05-30 13:25:58 +1000 |
| commit | e19994c34c4225185860cd9f2d2aab46a04347e6 (patch) | |
| tree | 9fbb3bc3ab7dd7f2596ce0985480503da772f73b /libevdev/libevdev.c | |
| parent | 8034fdd0d7f6ca66b9d2e6b2c0a105ae6d373ebb (diff) | |
| download | libevdev-e19994c34c4225185860cd9f2d2aab46a04347e6.tar.gz | |
Add log func handling
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'libevdev/libevdev.c')
| -rw-r--r-- | libevdev/libevdev.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/libevdev/libevdev.c b/libevdev/libevdev.c index 2b9dd17..2e74edd 100644 --- a/libevdev/libevdev.c +++ b/libevdev/libevdev.c @@ -25,6 +25,7 @@ #include <stdlib.h> #include <string.h> #include <unistd.h> +#include <stdarg.h> #include "libevdev.h" #include "libevdev-int.h" @@ -134,6 +135,21 @@ init_event_queue(struct libevdev *dev) return 0; } +static void +_libevdev_log(struct libevdev *dev, const char *format, ...) +{ + va_list args; + + va_start(args, format); + dev->log(format, args); + va_end(args); +} + +static void +libevdev_noop_log_func(const char *format, va_list args) +{ +} + struct libevdev* libevdev_new(int fd) { @@ -141,6 +157,7 @@ libevdev_new(int fd) dev = calloc(1, sizeof(*dev)); dev->num_slots = -1; + dev->log = libevdev_noop_log_func; if (fd >= 0) libevdev_set_fd(dev, fd); @@ -155,6 +172,12 @@ libevdev_free(struct libevdev *dev) free(dev); } +void +libevdev_set_log_handler(struct libevdev *dev, libevdev_log_func_t logfunc) +{ + dev->log = logfunc ? logfunc : libevdev_noop_log_func; +} + int libevdev_change_fd(struct libevdev *dev, int fd) { @@ -171,6 +194,7 @@ libevdev_set_fd(struct libevdev* dev, int fd) int i; if (dev->fd == -1) { + libevdev_log_func_t log; libevdev_callback_proc cb, scb; void *userdata; @@ -178,6 +202,7 @@ libevdev_set_fd(struct libevdev* dev, int fd) cb = dev->callback; scb = dev->sync_callback; userdata = dev->userdata; + log = dev->log; memset(dev, 0, sizeof(*dev)); @@ -185,6 +210,7 @@ libevdev_set_fd(struct libevdev* dev, int fd) dev->callback = cb; dev->sync_callback = scb; dev->userdata = userdata; + dev->log = log; } rc = ioctl(fd, EVIOCGBIT(0, sizeof(dev->bits)), dev->bits); |
