[PATCH xserver 3/5] xwayland: process Wayland events after adding screen
Lyude Paul
lyude at redhat.com
Fri May 25 22:33:32 UTC 2018
Reviewed-by: Lyude Paul <lyude at redhat.com>
On Thu, 2018-05-24 at 16:11 +0200, Olivier Fourdan wrote:
> When we're done adding a new screen, we need to process pending Wayland
> events again so that we don't end up processing xdg_output events when
> unexpected if glamor is disabled (either becauase "-shm" was passed or
> because "-eglstream" failed):
>
> Xwayland: dixGetPrivateAddr: Assertion `key->initialized' failed.
> (EE)
> (EE) Backtrace:
> (EE) 0: Xwayland (OsSigHandler)
> (EE) 1: libpthread.so.0 (funlockfile)
> (EE) 2: libc.so.6 (gsignal)
> (EE) 3: libc.so.6 (abort)
> (EE) 4: libc.so.6 (?+0x0)
> (EE) 5: libc.so.6 (__assert_fail)
> (EE) 6: Xwayland (dixGetPrivateAddr)
> (EE) 7: Xwayland (_fbGetWindowPixmap)
> (EE) 8: Xwayland (getDrawableDamageRef)
> (EE) 9: Xwayland (damageRegionProcessPending)
> (EE) 10: Xwayland (damagePolyFillRect)
> (EE) 11: Xwayland (miPaintWindow)
> (EE) 12: Xwayland (miWindowExposures)
> (EE) 13: Xwayland (miHandleValidateExposures)
> (EE) 14: Xwayland (SetRootClip)
> (EE) 15: Xwayland (update_screen_size)
> (EE) 16: Xwayland (apply_output_change)
> (EE) 17: libffi.so.6 (ffi_call_unix64)
> (EE) 18: libffi.so.6 (ffi_call)
> (EE) 19: libwayland-client.so.0 (wl_log_set_handler_client)
> (EE) 20: libwayland-client.so.0 (_init)
> (EE) 21: libwayland-client.so.0 (wl_display_dispatch_queue_pending)
> (EE) 22: libwayland-client.so.0 (wl_display_roundtrip_queue)
> (EE) 23: Xwayland (InitInput)
> (EE) 24: Xwayland (dix_main)
> (EE) 25: libc.so.6 (__libc_start_main)
> (EE) 26: Xwayland (_start)
> (EE)
> (EE)
> Fatal server error:
> (EE) Caught signal 6 (Aborted). Server aborting
> (EE)
> Aborted (core dumped)
>
> Signed-off-by: Olivier Fourdan <ofourdan at redhat.com>
> ---
> hw/xwayland/xwayland.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c
> index b4049d2cc..cc16edf27 100644
> --- a/hw/xwayland/xwayland.c
> +++ b/hw/xwayland/xwayland.c
> @@ -1132,6 +1132,10 @@ xwl_screen_init(ScreenPtr pScreen, int argc, char
> **argv)
>
> AddCallback(&PropertyStateCallback, xwl_property_callback, pScreen);
>
> + wl_display_roundtrip(xwl_screen->display);
> + while (xwl_screen->expecting_event)
> + wl_display_roundtrip(xwl_screen->display);
> +
> return ret;
> }
>
--
Cheers,
Lyude Paul
More information about the xorg-devel
mailing list