[PATCH v2 1/3] xwayland: Fix the addition and removal of outputs

Jasper St. Pierre jstpierre at mecheye.net
Thu May 21 09:23:03 PDT 2015


Expecting anything atomic from X11 in the first place is a wrong assumption.

On Thu, May 21, 2015 at 6:18 AM, Marek Chalupa <mchqwerty at gmail.com> wrote:
> Hi,
>
> On Sat, May 16, 2015 at 7:38 AM, Dima Ryazanov <dima at gmail.com> wrote:
>>
>> Add the output to the list when it's created rather than when its
>> properties
>> change (as pointed out by Marek Chalupa).
>> Remove the output from the list when it's destroyed.
>>
>> Signed-off-by: Dima Ryazanov <dima at gmail.com>
>> ---
>>  hw/xwayland/xwayland-output.c | 5 +++--
>>  1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/hw/xwayland/xwayland-output.c b/hw/xwayland/xwayland-output.c
>> index 155cbc1..9baf4eb 100644
>> --- a/hw/xwayland/xwayland-output.c
>> +++ b/hw/xwayland/xwayland-output.c
>> @@ -120,8 +120,6 @@ output_handle_done(void *data, struct wl_output
>> *wl_output)
>>      struct xwl_screen *xwl_screen = xwl_output->xwl_screen;
>>      int width, height;
>>
>> -    xorg_list_append(&xwl_output->link, &xwl_screen->output_list);
>> -
>
>
> As I pointed out in the other e-mail: I don't think this is right. The
> append is here on purpose to make the output update atomic.
> But maybe somebody more erudated should review it :)
>
>>
>>      width = 0;
>>      height = 0;
>>      xorg_list_for_each_entry(xwl_output, &xwl_screen->output_list, link)
>> {
>> @@ -177,6 +175,8 @@ xwl_output_create(struct xwl_screen *xwl_screen,
>> uint32_t id)
>>      xwl_output->randr_crtc = RRCrtcCreate(xwl_screen->screen,
>> xwl_output);
>>      xwl_output->randr_output = RROutputCreate(xwl_screen->screen, name,
>>                                                strlen(name), xwl_output);
>> +    xorg_list_append(&xwl_output->link, &xwl_screen->output_list);
>> +
>>      RRCrtcGammaSetSize(xwl_output->randr_crtc, 256);
>>      RROutputSetCrtcs(xwl_output->randr_output, &xwl_output->randr_crtc,
>> 1);
>>      RROutputSetConnection(xwl_output->randr_output, RR_Connected);
>> @@ -190,6 +190,7 @@ xwl_output_destroy(struct xwl_output *xwl_output)
>>      wl_output_destroy(xwl_output->output);
>>      RRCrtcDestroy(xwl_output->randr_crtc);
>>      RROutputDestroy(xwl_output->randr_output);
>> +    xorg_list_del(&xwl_output->link);
>>      free(xwl_output);
>>  }
>>
>> --
>> 2.4.0
>>
>
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel



-- 
  Jasper


More information about the xorg-devel mailing list