Problem with mmap keyboard.

Fred vS fiens at hotmail.com
Wed Oct 4 18:19:30 UTC 2023


Hello.


I try to make work the "Keyboard event" step from the Wayland-book but the C demo crash at loading.

The problem comes from the mapping: with that error:


Line 301: wl_keyboard_keymap: Assertion map_shm != MAP_FAILED' failed.


Here is the function:

static void
wl_keyboard_keymap(void *data, struct wl_keyboard *wl_keyboard,
             uint32_t format, int32_t fd, uint32_t size)
{
     struct client_state *client_state = data;
     assert(format == WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1);

     // Line 301: Here problem with mapping
     char *map_shm = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0);
     assert(map_shm != MAP_FAILED);

     struct xkb_keymap *xkb_keymap = xkb_keymap_new_from_string(
                     client_state->xkb_context, map_shm,
                     XKB_KEYMAP_FORMAT_TEXT_V1, XKB_KEYMAP_COMPILE_NO_FLAGS);
     munmap(map_shm, size);
     close(fd);

     struct xkb_state *xkb_state = xkb_state_new(xkb_keymap);
     xkb_keymap_unref(client_state->xkb_keymap);
     xkb_state_unref(client_state->xkb_state);
     client_state->xkb_keymap = xkb_keymap;
     client_state->xkb_state = xkb_state;
}



Why does the mapping fails, I did check fd and size and they are correctly assigned?


Thanks.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/wayland-devel/attachments/20231004/fd5782e4/attachment.htm>


More information about the wayland-devel mailing list