Where would I find
ppaalanen at gmail.com
Fri Sep 10 09:06:28 UTC 2021
On Thu, 9 Sep 2021 17:29:21 +0000
David Deyo <ddeyo at tireprofiles.com> wrote:
> Hello all,
> I am trying to track down a bug I’ve either created or revealed.
> I’ve implemented a patch to Weston-9 to allow me to rotate my display.
> It mostly works. Occasionally it fails and crashes because the new
> screen size (1315) requested is too large.
> Does anyone know where would I find the functions below, like
> wl_shm_pool at 21.create_buffer<mailto:wl_shm_pool at 21.create_buffer>?
that particular one is implemented in
That function is plugged into struct wl_shm_pool_interface in
shm_create_pool(). That one in turn is plugged into struct
wl_shm_interface in bind_shm(), which gets called for wl_registry.bind
request when the wl_shm global is the argument.
Weston installs this machinery by calling wl_display_init_shm().
> I’ve searched through the git folder of weston. I’ve been able to
> find weston_desktop_xdg_surface_protocol_set_window_geometry, but
> when I try a simple printf, I never get it in stdout. But, I can put
> a wl_resource_post_error in the same place and it definitely crashes.
> How would I add a log statement and actually get it?
I don't see why the printf would not come through, but in Weston it's
often better to use weston_log() instead.
stdout is buffered - maybe it's not flushed on crash? Hence preferring
strerr for ad hoc printf instead.
> I’ve set WAYLAND_DEBUG to 1 and I believe below is the protocol log.
> [2077634.996] wl_callback at 21.done(156952735)
> [2077645.484] -> wl_shm at 9.create_pool(new id wl_shm_pool at 21, fd 10, 10099200)
> [2077645.654] -> wl_shm_pool at 21.create_buffer(new id wl_buffer at 15, 0, 1920, 1315, 7680, 0)
> [2077673.186] -> wl_surface at 27.attach(wl_buffer at 15, 0, 0)
> [2077673.303] -> wl_surface at 27.set_buffer_scale(1)
> [2077673.320] -> wl_surface at 27.damage(0, 0, 1920, 1315)
> [2077673.350] -> xdg_toplevel at 31.set_min_size(686, 1315)
> [2077673.369] -> xdg_toplevel at 31.set_max_size(0, 0)
> [2077673.388] -> xdg_surface at 29.set_window_geometry(0, 0, 1920, 1315)
> [2077673.419] -> wl_compositor at 4.create_region(new id wl_region at 23)
> [2077673.437] -> wl_region at 23.add(0, 0, 1920, 1315)
> [2077673.465] -> wl_surface at 27.set_opaque_region(wl_region at 23)
> [2077673.479] -> wl_region at 23.destroy()
> [2077673.492] -> wl_compositor at 4.create_region(new id wl_region at 20)
> [2077673.509] -> wl_region at 20.add(-10, -10, 1940, 1335)
> [2077673.537] -> wl_surface at 27.set_input_region(wl_region at 20)
> [2077673.551] -> wl_region at 20.destroy()
> [2077673.611] -> wl_surface at 27.frame(new id wl_callback at 30)
> [2077673.659] -> wl_surface at 27.commit()
> [2077678.019] wl_display at 1.delete_id(26)
> [2077678.091] wl_display at 1.delete_id(3)
> [2077678.107] wl_display at 1.delete_id(23)
> [2077678.121] wl_display at 1.delete_id(20)
> [2077678.134] wl_display at 1.error(xdg_wm_base at 18, 4, "xdg_surface buffer (1920 x 1315) is larger than the configured fullscreen state (1920 x 1088)")
You should be getting a configure event with 1920x1088 in the client.
Then you need to use that size when you ack the configuration.
However, this is a protocol error sent to the client. It doesn't crash
the compositor per se.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 833 bytes
Desc: OpenPGP digital signature
More information about the wayland-devel