Skip to content

Commit

Permalink
uterm: input: forward xkbcommon log messages
Browse files Browse the repository at this point in the history
Instead of letting xkbcommon write to stderr, we now forward these
messages via the llog handler.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
  • Loading branch information
David Herrmann committed Nov 3, 2013
1 parent 4bcf507 commit a11d71a
Showing 1 changed file with 44 additions and 1 deletion.
45 changes: 44 additions & 1 deletion src/uterm_input_uxkb.c
Expand Up @@ -38,11 +38,48 @@
#include "uterm_input.h"
#include "uterm_input_internal.h"

#define LLOG_SUBSYSTEM "uterm_input_uxkb"
#define LLOG_SUBSYSTEM "uterm_uxkb"

extern const char _binary_src_uterm_input_fallback_xkb_bin_start[];
extern const char _binary_src_uterm_input_fallback_xkb_bin_end[];

static void uxkb_log(struct xkb_context *context, enum xkb_log_level level,
const char *format, va_list args)
{
struct uterm_input *input;
unsigned int sev;

input = xkb_context_get_user_data(context);
if (!input->llog)
return;

switch (level) {
case XKB_LOG_LEVEL_CRITICAL:
sev = LLOG_CRITICAL;
break;
case XKB_LOG_LEVEL_ERROR:
sev = LLOG_ERROR;
break;
case XKB_LOG_LEVEL_WARNING:
sev = LLOG_WARNING;
break;
case XKB_LOG_LEVEL_INFO:
sev = LLOG_INFO;
break;
case XKB_LOG_LEVEL_DEBUG:
/* fallthrough */
default:
sev = LLOG_DEBUG;
break;
}

input->llog(input->llog_data,
LLOG_DEFAULT,
sev,
format,
args);
}

int uxkb_desc_init(struct uterm_input *input,
const char *model,
const char *layout,
Expand All @@ -68,6 +105,12 @@ int uxkb_desc_init(struct uterm_input *input,
return -ENOMEM;
}

/* Set logging function. You can use XKB_LOG_VERBOSITY and XKB_LOG_LEVEL
* to change the xkbcommon logger. That's why we don't touch the
* verbosity and level here. */
xkb_context_set_user_data(input->ctx, input);
xkb_context_set_log_fn(input->ctx, uxkb_log);

/* If a complete keymap file was given, first try that. */
if (keymap && *keymap) {
input->keymap = xkb_keymap_new_from_string(input->ctx,
Expand Down

0 comments on commit a11d71a

Please sign in to comment.