diff options
| author | Peter Hutterer <peter.hutterer@who-t.net> | 2013-08-26 13:24:26 +1000 |
|---|---|---|
| committer | Peter Hutterer <peter.hutterer@who-t.net> | 2013-09-03 16:58:54 +1000 |
| commit | 55d67a340b058da84b7a5f135192fe126e5cbe0d (patch) | |
| tree | 1a80b57ac06f491eb00a6fcdd662201385f05f4f /libevdev/libevdev.c | |
| parent | 37d37cdaea9c010c5f7f0ab878617c8239d14d15 (diff) | |
| download | libevdev-55d67a340b058da84b7a5f135192fe126e5cbe0d.tar.gz | |
Drop per-device logging function, use per-library one instead
There's no need to have separate logging function for each device created.
More likely, libevdev will be hooked up once into the logging system and
expected to deal with it.
Plus, this allows us to log from the uinput code where we don't
have the context anyway.
Requires a rename to libevdev_set_log_function to avoid ABI breaks, and
while we're breaking the ABI make the logging function more sophisticated
to log line, number, etc.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Diffstat (limited to 'libevdev/libevdev.c')
| -rw-r--r-- | libevdev/libevdev.c | 56 |
1 files changed, 45 insertions, 11 deletions
diff --git a/libevdev/libevdev.c b/libevdev/libevdev.c index 867e008..ff1fd07 100644 --- a/libevdev/libevdev.c +++ b/libevdev/libevdev.c @@ -49,20 +49,35 @@ init_event_queue(struct libevdev *dev) } static void -_libevdev_log(struct libevdev *dev, const char *format, ...) +libevdev_noop_log_func(enum libevdev_log_priority priority, + void *data, + const char *file, int line, const char *func, + const char *format, va_list args) +{ +} + +/* + * Global logging settings. + */ +struct logdata log_data = { + LIBEVDEV_LOG_INFO, + libevdev_noop_log_func, + NULL, +}; + +void +log_msg(enum libevdev_log_priority priority, + void *data, + const char *file, int line, const char *func, + const char *format, ...) { va_list args; va_start(args, format); - dev->log(format, args); + log_data.handler(priority, data, file, line, func, format, args); va_end(args); } -static void -libevdev_noop_log_func(const char *format, va_list args) -{ -} - LIBEVDEV_EXPORT struct libevdev* libevdev_new(void) { @@ -74,7 +89,6 @@ libevdev_new(void) dev->fd = -1; dev->num_slots = -1; dev->current_slot = -1; - dev->log = libevdev_noop_log_func; dev->grabbed = LIBEVDEV_UNGRAB; dev->sync_state = SYNC_NONE; @@ -112,13 +126,33 @@ libevdev_free(struct libevdev *dev) free(dev); } +/* DEPRECATED */ LIBEVDEV_EXPORT void libevdev_set_log_handler(struct libevdev *dev, libevdev_log_func_t logfunc) { - if (dev == NULL) - return; + /* Can't be backwards compatible to this yet, so don't even try */ + fprintf(stderr, "libevdev: ABI change. Log function will not be honored.\n"); +} + +LIBEVDEV_EXPORT void +libevdev_set_log_function(libevdev_log_func_t logfunc, void *data) +{ + log_data.handler = logfunc ? logfunc : libevdev_noop_log_func; + log_data.userdata = data; +} - dev->log = logfunc ? logfunc : libevdev_noop_log_func; +LIBEVDEV_EXPORT void +libevdev_set_log_priority(enum libevdev_log_priority priority) +{ + if (priority > LIBEVDEV_LOG_DEBUG) + priority = LIBEVDEV_LOG_DEBUG; + log_data.priority = priority; +} + +LIBEVDEV_EXPORT enum libevdev_log_priority +libevdev_get_log_priority(void) +{ + return log_data.priority; } LIBEVDEV_EXPORT int |
