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
