<div dir="ltr"><div><div>Some more context here: currently, the output_handle_done function is not really doing anything, but I haven't figured out yet how to fix it. These patches fix a few trivial bugs, but there's more work to be done.<br><br></div>The call to RRScreenSizeNotify is a no-op: it expects the width/height of xwl_screen->screen (not xwl_screen!) to be updated, and returns immediately otherwise. However, if I update xwl_screen->screen->width and xwl_screen->screen->height, then RRScreenSizeNotify will crash due to a NULL pointer (probably because it's called too soon, and some of the dix state is not initialized yet).<br><br></div>The only time output_handle_done is useful is during the xwayland initialization: xwl_screen_init waits for xwl_screen->expecting_event to become 0, then reads the width and height of the xwl_screen.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, May 21, 2015 at 9:23 AM, Jasper St. Pierre <span dir="ltr"><<a href="mailto:jstpierre@mecheye.net" target="_blank">jstpierre@mecheye.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Expecting anything atomic from X11 in the first place is a wrong assumption.<br>
<div><div class="h5"><br>
On Thu, May 21, 2015 at 6:18 AM, Marek Chalupa <<a href="mailto:mchqwerty@gmail.com">mchqwerty@gmail.com</a>> wrote:<br>
> Hi,<br>
><br>
> On Sat, May 16, 2015 at 7:38 AM, Dima Ryazanov <<a href="mailto:dima@gmail.com">dima@gmail.com</a>> wrote:<br>
>><br>
>> Add the output to the list when it's created rather than when its<br>
>> properties<br>
>> change (as pointed out by Marek Chalupa).<br>
>> Remove the output from the list when it's destroyed.<br>
>><br>
>> Signed-off-by: Dima Ryazanov <<a href="mailto:dima@gmail.com">dima@gmail.com</a>><br>
>> ---<br>
>>  hw/xwayland/xwayland-output.c | 5 +++--<br>
>>  1 file changed, 3 insertions(+), 2 deletions(-)<br>
>><br>
>> diff --git a/hw/xwayland/xwayland-output.c b/hw/xwayland/xwayland-output.c<br>
>> index 155cbc1..9baf4eb 100644<br>
>> --- a/hw/xwayland/xwayland-output.c<br>
>> +++ b/hw/xwayland/xwayland-output.c<br>
>> @@ -120,8 +120,6 @@ output_handle_done(void *data, struct wl_output<br>
>> *wl_output)<br>
>>      struct xwl_screen *xwl_screen = xwl_output->xwl_screen;<br>
>>      int width, height;<br>
>><br>
>> -    xorg_list_append(&xwl_output->link, &xwl_screen->output_list);<br>
>> -<br>
><br>
><br>
> As I pointed out in the other e-mail: I don't think this is right. The<br>
> append is here on purpose to make the output update atomic.<br>
> But maybe somebody more erudated should review it :)<br>
><br>
>><br>
>>      width = 0;<br>
>>      height = 0;<br>
>>      xorg_list_for_each_entry(xwl_output, &xwl_screen->output_list, link)<br>
>> {<br>
>> @@ -177,6 +175,8 @@ xwl_output_create(struct xwl_screen *xwl_screen,<br>
>> uint32_t id)<br>
>>      xwl_output->randr_crtc = RRCrtcCreate(xwl_screen->screen,<br>
>> xwl_output);<br>
>>      xwl_output->randr_output = RROutputCreate(xwl_screen->screen, name,<br>
>>                                                strlen(name), xwl_output);<br>
>> +    xorg_list_append(&xwl_output->link, &xwl_screen->output_list);<br>
>> +<br>
>>      RRCrtcGammaSetSize(xwl_output->randr_crtc, 256);<br>
>>      RROutputSetCrtcs(xwl_output->randr_output, &xwl_output->randr_crtc,<br>
>> 1);<br>
>>      RROutputSetConnection(xwl_output->randr_output, RR_Connected);<br>
>> @@ -190,6 +190,7 @@ xwl_output_destroy(struct xwl_output *xwl_output)<br>
>>      wl_output_destroy(xwl_output->output);<br>
>>      RRCrtcDestroy(xwl_output->randr_crtc);<br>
>>      RROutputDestroy(xwl_output->randr_output);<br>
>> +    xorg_list_del(&xwl_output->link);<br>
>>      free(xwl_output);<br>
>>  }<br>
>><br>
>> --<br>
>> 2.4.0<br>
>><br>
><br>
><br>
</div></div>> _______________________________________________<br>
> <a href="mailto:xorg-devel@lists.x.org">xorg-devel@lists.x.org</a>: X.Org development<br>
> Archives: <a href="http://lists.x.org/archives/xorg-devel" target="_blank">http://lists.x.org/archives/xorg-devel</a><br>
> Info: <a href="http://lists.x.org/mailman/listinfo/xorg-devel" target="_blank">http://lists.x.org/mailman/listinfo/xorg-devel</a><br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
<br>
--<br>
  Jasper<br>
</font></span></blockquote></div><br></div>