On Thu, 12 Feb 2015 15:30:16 +0200
Pekka Paalanen <[email protected]> wrote:

> From: Pekka Paalanen <[email protected]>
> 
> This timer delays the output_repaint towards the end of the refresh
> period, reducing the time from repaint to present.
> 
> The length of the repaint window can be set in weston.ini.
> 
> Signed-off-by: Pekka Paalanen <[email protected]>
> ---
>  man/weston.ini.man | 10 ++++++++++
>  src/compositor.c   | 49 +++++++++++++++++++++++++++++++++++++++++++++----
>  src/compositor.h   |  2 ++
>  3 files changed, 57 insertions(+), 4 deletions(-)

...

>  WL_EXPORT void
>  weston_output_finish_frame(struct weston_output *output,
>                          const struct timespec *stamp,
>                          uint32_t presented_flags)
>  {
>       struct weston_compositor *compositor = output->compositor;
> -     int r;
>       uint32_t refresh_nsec;
>  
>       TL_POINT("core_repaint_finished", TLP_OUTPUT(output),
> @@ -2158,9 +2175,14 @@ weston_output_finish_frame(struct weston_output 
> *output,
>       if (output->repaint_needed &&
>           compositor->state != WESTON_COMPOSITOR_SLEEPING &&
>           compositor->state != WESTON_COMPOSITOR_OFFSCREEN) {
> -             r = weston_output_repaint(output);
> -             if (!r)
> -                     return;
> +             int msec = refresh_nsec / 1000000;
> +
> +             msec -= compositor->repaint_msec;
> +             if (msec < 1)
> +                     output_repaint_delay_handler(output);
> +             else
> +                     
> wl_event_source_timer_update(output->repaint_delay_timer, msec);

Hi,

I need to revise this bit of code to take current time into account,
because the delay is relative, not an absolute timestamp.

And maybe rename repaint_delay_timer to repaint_timer. Or is that too
"omg weston uses a timer!!?!1"? ;-)


Thanks,
pq
_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to