[PATCH? weston] - wayland backend: outputs are destroyed twice

Dawid Gajownik gajownik at gmail.com
Thu Jul 30 06:00:29 PDT 2015


Hi Ryo,

good catch. I missed this one.

diff --git a/src/compositor-wayland.c b/src/compositor-wayland.c
index a8e63e1..70f0939 100644
--- a/src/compositor-wayland.c
+++ b/src/compositor-wayland.c
@@ -2035,12 +2035,6 @@ err_compositor:
 static void
 wayland_backend_destroy(struct wayland_backend *b)
 {
-       struct weston_output *output, *next;
-
-       wl_list_for_each_safe(output, next, &b->compositor->output_list, link)
-               wayland_output_destroy(output);
-
-       b->compositor->renderer->destroy(b->compositor);
        wl_display_disconnect(b->parent.wl_display);

        if (b->theme)

On Thu, Jul 30, 2015 at 12:03 AM, Ryo Munakata <ryomnktml at gmail.com> wrote:
> On 07/29, Dawid Gajownik wrote:
>
> Hi Dawid.
>
>> Hi,
>>
>> in src/compositor-wayland.c:wayland_backend_destroy() you can find this code:
>>
>>         struct weston_output *output, *next;
>>
>>         wl_list_for_each_safe(output, next, &b->compositor->output_list, link)
>>                 wayland_output_destroy(output);
>> [snip]
>>         weston_compositor_shutdown(b->compositor);
>>
>> but src/compositor.c:weston_compositor_shutdown() also removes the outputs:
>>
>>         /* Destroy all outputs associated with this compositor */
>>         wl_list_for_each_safe(output, next, &ec->output_list, link)
>>                 output->destroy(output);
>>
>> destroy() is assign in src/compositor-wayland.c:wayland_output_create()
>>
>>         output->base.destroy = wayland_output_destroy;
>>
>> Maybe it will be safe to remove unnecessary calls to wayland_output_destroy()?
>>
>> Thanks,
>>     Dawid
>>
>> diff --git a/src/compositor-wayland.c b/src/compositor-wayland.c
>> index a8e63e1..5c4ad11 100644
>> --- a/src/compositor-wayland.c
>> +++ b/src/compositor-wayland.c
>> @@ -2035,11 +2035,6 @@ err_compositor:
>>  static void
>>  wayland_backend_destroy(struct wayland_backend *b)
>>  {
>> -       struct weston_output *output, *next;
>> -
>> -       wl_list_for_each_safe(output, next, &b->compositor->output_list, link)
>> -               wayland_output_destroy(output);
>> -
>>         b->compositor->renderer->destroy(b->compositor);
>>         wl_display_disconnect(b->parent.wl_display);
>
> The renderer is also destroyed twice in both wayland_backend_destroy and
> weston_compositor_shutdown.
>
> Thanks.


More information about the wayland-devel mailing list