On 16.05.2016 17:02, Jonas Ådahl wrote:
> On Mon, May 16, 2016 at 04:45:05PM +0200, Armin Krezović wrote:
>> On 10.05.2016 16:10, Pekka Paalanen wrote:
>>> From: Pekka Paalanen <[email protected]>
>>>
>>> weston_surface::output and weston_view::output as used for different
>>> purposes. Only the surface output is used for frame callbacks.
>>>
>>> The uses of the view output are much more vague and hard to describe.
>>>
>>> Also fix a comment mistake in weston_surface_assign_output().
>>>
>>
>> All the changes look fine to me. I have one comment below, as I'm not sure
>> if it's a mistake or not.
>>
>> In case it isn't a mistake (or with the mistake fixed, in case it is one),
>> this patch is also:
>>
>> Reviewed-by: Armin Krezović <[email protected]>
>>
>>> Signed-off-by: Pekka Paalanen <[email protected]>
>>> ---
>>>  src/compositor.c | 8 +++-----
>>>  src/compositor.h | 5 +++--
>>>  2 files changed, 6 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/src/compositor.c b/src/compositor.c
>>> index ee47a82..40d8baf 100644
>>> --- a/src/compositor.c
>>> +++ b/src/compositor.c
>>> @@ -1082,16 +1082,15 @@ weston_surface_update_output_mask(struct 
>>> weston_surface *es, uint32_t mask)
>>>     }
>>>  }
>>>  
>>> -
>>>  /** Recalculate which output(s) the surface has views displayed on
>>>   *
>>>   * \param es  The surface to remap to outputs
>>>   *
>>>   * Finds the output that is showing the largest amount of one
>>>   * of the surface's various views.  This output becomes the
>>> - * surface's primary output for vsync and frame event purposes.
>>> + * surface's primary output for vsync and frame callback purposes.
>>>   *
>>> - * Also notes the primary outputs of all of the surface's views
>>> + * Also notes all outputs of all of the surface's views
>>>   * in the output_mask for the surface.
>>>   */
>>>  static void
>>> @@ -1136,8 +1135,7 @@ weston_surface_assign_output(struct weston_surface 
>>> *es)
>>>   *
>>>   * Identifies the set of outputs that the view is visible on,
>>>   * noting them into the output_mask.  The output that the view
>>> - * is most visible on is set as the view's primary output for
>>> - * vsync and frame event purposes.
>>> + * is most visible on is set as the view's primary output.
>>>   *
>>>   * Also does the same for the view's surface.  See
>>>   * weston_surface_assign_output().
>>> diff --git a/src/compositor.h b/src/compositor.h
>>> index 7851000..0801f20 100644
>>> --- a/src/compositor.h
>>> +++ b/src/compositor.h
>>> @@ -949,8 +949,9 @@ struct weston_view {
>>>     } transform;
>>>  
>>>     /*
>>> -    * Which output to vsync this surface to.
>>> -    * Used to determine, whether to send or queue frame events.
>>> +    * The primary output for this view.
>>> +    * Used for picking the output for driving view animations, inheriting
>>
>> Is the correct term "driving animations" or "drawing animations" ?
> 
> It is actually "driving" here. One surface may be drawn on multiple
> outputs, but only one output will "drive" the animation.
> 
> Driving the animation means to respond to frame callbacks, and since
> outputs may be rendered independently, we tie the animation of a surface
> to only one output.
> 
> For example: a client rendering an animation will attach and commit a
> new buffer of a frame of its animation, and ask for a frame callback.
> Then it will wait for the frame callback until it draws, attaches and
> commits the buffer of the next frame of its animation.
> 
> In order to get as good results as possible, meaning content drawn by
> the client should end up on the output as quickly as possible, we
> calculate the output it has the largest overlapping region on, and
> whenever that output was painted, we reply to the frame callback.
> 
> If we for example would wait until all outputs the surface is one is
> drawn on until replying, we would potentially delay the frame callback,
> making the latency between the client drawing and the content being
> displayed on the output, unnecessarily long, since we would effectively
> let the output drawn last, no matter how large portion of the surface is
> drawn on it, always "drive" the animation.
> 
> 
> Jonas
> 

Thanks for the brief explanation!

>>
>>> +    * the primary output for related views in shells, etc.
>>>      * Must be NULL, if 'link' is not in weston_compositor::view_list.
>>>      */
>>>     struct weston_output *output;
>>>
>>


Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
wayland-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to