ei-demo-client: use mmap to read the keymap

Closes #55
This commit is contained in:
Peter Hutterer 2024-07-24 09:13:17 +10:00
parent 6ea468c823
commit a924888f0f

View file

@ -55,7 +55,7 @@
#include "src/util-macros.h"
#include "src/util-mem.h"
#include "src/util-memfile.h"
#include "src/util-memmap.h"
#include "src/util-color.h"
#include "src/util-strings.h"
#include "src/util-time.h"
@ -84,6 +84,7 @@ colorprint(const char *format, ...)
DEFINE_UNREF_CLEANUP_FUNC(xkb_context);
DEFINE_UNREF_CLEANUP_FUNC(xkb_keymap);
DEFINE_UNREF_CLEANUP_FUNC(xkb_state);
DEFINE_UNREF_CLEANUP_FUNC(memmap);
#endif
static void
@ -97,12 +98,13 @@ setup_xkb_keymap(struct ei_keymap *keymap)
if (!ctx)
return;
size_t sz = ei_keymap_get_size(keymap);
_cleanup_free_ char *buf = xalloc(sz + 1);
read(ei_keymap_get_fd(keymap), buf, sz);
buf[sz] = '\0';
_unref_(memmap) *memmap = memmap_new(ei_keymap_get_fd(keymap), ei_keymap_get_size(keymap));
if (!memmap) {
colorprint("Failed to mmap XKB keymap: %m\n");
return;
}
_unref_(xkb_keymap) *xkbmap = xkb_keymap_new_from_string(ctx, buf,
_unref_(xkb_keymap) *xkbmap = xkb_keymap_new_from_string(ctx, memmap_get_data(memmap),
XKB_KEYMAP_FORMAT_TEXT_V1,
XKB_KEYMAP_COMPILE_NO_FLAGS);
if (!xkbmap)