RE: Problem with mmap keyboard.

2023-10-04 Thread Fred vS
Sorry for that double post.

It was already solved by Emmanuel.

Fre;D

De : wayland-devel  de la part de 
Fred vS 
Envoyé : mercredi 4 octobre 2023 20:14
À : wayland-devel@lists.freedesktop.org 
Objet : Problem with mmap keyboard.

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.



Problem with mmap keyboard.

2023-10-04 Thread Fred vS
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.



RE: Problem with mmap keyboard.

2023-10-04 Thread Fred vS
Hello!

>“From version 7 onwards, the fd must be mapped with MAP_PRIVATE by the
recipient, as MAP_SHARED may fail.”

Yep, it does the trick, well seen, now all the infos of the keyboard are 
working.

>I don’t know which wl_shell version you are using,

Huh, I did copy the source from:
https://wayland-book.com/seat/example.html

But I dont know where/who to advice to fix the code of wayland-book.

Anyway, many thanks Emmanuel for your precious eyes and advices.

I can continue now the Wayland exploration...

Fre;D


De : Fred vS 
Envoyé : mercredi 4 octobre 2023 20:44
À : wayland-devel@lists.freedesktop.org 
Objet : RE: Problem with mmap keyboard.

Ho, many thanks Emmanuel.

I will deeply study your mail.

By the way, I am busy to translate all the "steps" demos of the Wayland-book 
into Pascal:
https://github.com/fredvs/wayland-pascal

Now, Free Pascal compiler can create nice and working "Pure Wayland 
applications".
Note too that the C demos in Wayland-book have some ommisions in code ( I added 
the fixes in /src/c).
But for the "Keyboard events" step, I am blocked, the C "Keyboard events" demo 
in /src/c does not use the key-map, but it works to give the actions of the 
keys and the number of the keys. The same for the translated Pascal code.

But ok, I will try to make the map-keyboard working thanks to with your advices.

Many thanks.

Write you later.

Fre;D


De : Emmanuel Gil Peyrot 
Envoyé : mercredi 4 octobre 2023 20:28
À : Fred vS 
Cc : wayland-devel@lists.freedesktop.org 
Objet : Re: Problem with mmap keyboard.

On Wed, Oct 04, 2023 at 06:19:30PM +, Fred vS wrote:
> Hello.

Hi,

>
>
> 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);

We can read in the documentation of this protocol:
https://wayland.app/protocols/wayland#wl_keyboard:event:keymap

“From version 7 onwards, the fd must be mapped with MAP_PRIVATE by the
recipient, as MAP_SHARED may fail.”

I don’t know which wl_shell version you are using, but check that maybe.

>  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.
>

--
Link Mauve


RE: Problem with mmap keyboard.

2023-10-04 Thread Fred vS
Ho, many thanks Emmanuel.

I will deeply study your mail.

By the way, I am busy to translate all the "steps" demos of the Wayland-book 
into Pascal:
https://github.com/fredvs/wayland-pascal

Now, Free Pascal compiler can create nice and working "Pure Wayland 
applications".
Note too that the C demos in Wayland-book have some ommisions in code ( I added 
the fixes in /src/c).
But for the "Keyboard events" step, I am blocked, the C "Keyboard events" demo 
in /src/c does not use the key-map, but it works to give the actions of the 
keys and the number of the keys. The same for the translated Pascal code.

But ok, I will try to make the map-keyboard working thanks to with your advices.

Many thanks.

Write you later.

Fre;D


De : Emmanuel Gil Peyrot 
Envoyé : mercredi 4 octobre 2023 20:28
À : Fred vS 
Cc : wayland-devel@lists.freedesktop.org 
Objet : Re: Problem with mmap keyboard.

On Wed, Oct 04, 2023 at 06:19:30PM +, Fred vS wrote:
> Hello.

Hi,

>
>
> 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);

We can read in the documentation of this protocol:
https://wayland.app/protocols/wayland#wl_keyboard:event:keymap

“From version 7 onwards, the fd must be mapped with MAP_PRIVATE by the
recipient, as MAP_SHARED may fail.”

I don’t know which wl_shell version you are using, but check that maybe.

>  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.
>

--
Link Mauve


Re: Problem with mmap keyboard.

2023-10-04 Thread Emmanuel Gil Peyrot
On Wed, Oct 04, 2023 at 06:19:30PM +, Fred vS wrote:
> Hello.

Hi,

> 
> 
> 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);

We can read in the documentation of this protocol:
https://wayland.app/protocols/wayland#wl_keyboard:event:keymap

“From version 7 onwards, the fd must be mapped with MAP_PRIVATE by the
recipient, as MAP_SHARED may fail.”

I don’t know which wl_shell version you are using, but check that maybe.

>  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.
> 

-- 
Link Mauve


Problem with mmap keyboard.

2023-10-04 Thread Fred vS
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.