int noia_wayland_engine_event_loop_feeder(void* data) { LOG_WAYL5("--- Wayland loop feeder ---"); NoiaWaylandEngine* engine = (NoiaWaylandEngine*) data; wl_event_source_timer_update(engine->src, 60); return 0; }
WLC_API bool wlc_event_source_timer_update(struct wlc_event_source *source, int32_t ms_delay) { assert(source); assert(wlc_event_loop()); return (wl_event_source_timer_update((struct wl_event_source*)source, ms_delay) == 0); }
//utility int adjustTimeout(DBusTimeout* timeout, wl_event_source* source) { unsigned long iv = 0; if (dbus_timeout_get_enabled(timeout)) iv = dbus_timeout_get_interval(timeout); return wl_event_source_timer_update(source, iv); }
static int timer_update_callback_2(void *data) { struct timer_update_context *context = data; context->count++; wl_event_source_timer_update(context->source1, 1000); return 1; }
static int weston_dbus_adjust_timeout(DBusTimeout *timeout, struct wl_event_source *s) { int64_t t = 0; if (dbus_timeout_get_enabled(timeout)) t = dbus_timeout_get_interval(timeout); return wl_event_source_timer_update(s, t); }
static int watchdog_handler(void *data) { struct systemd_notifier *notifier = data; wl_event_source_timer_update(notifier->watchdog_source, notifier->watchdog_time); sd_notify(0, "WATCHDOG=1"); return 1; }
WL_EXPORT int module_init(struct weston_compositor *compositor, int *argc, char *argv[]) { char *watchdog_time_env; struct wl_event_loop *loop; long watchdog_time_conv; struct systemd_notifier *notifier; notifier = zalloc(sizeof *notifier); if (notifier == NULL) return -1; notifier->compositor_destroy_listener.notify = weston_compositor_destroy_listener; wl_signal_add(&compositor->destroy_signal, ¬ifier->compositor_destroy_listener); if (add_systemd_sockets(compositor) < 0) return -1; sd_notify(0, "READY=1"); /* 'WATCHDOG_USEC' is environment variable that is set * by systemd to transfer 'WatchdogSec' watchdog timeout * setting from service file.*/ watchdog_time_env = getenv("WATCHDOG_USEC"); if (!watchdog_time_env) return 0; if (!safe_strtoint(watchdog_time_env, &watchdog_time_conv)) return 0; /* Convert 'WATCHDOG_USEC' to milliseconds and notify * systemd every half of that time.*/ watchdog_time_conv /= 1000 * 2; if (watchdog_time_conv <= 0) return 0; notifier->watchdog_time = watchdog_time_conv; loop = wl_display_get_event_loop(compositor->wl_display); notifier->watchdog_source = wl_event_loop_add_timer(loop, watchdog_handler, notifier); wl_event_source_timer_update(notifier->watchdog_source, notifier->watchdog_time); return 0; }
static int headless_output_repaint(struct weston_output *output_base, pixman_region32_t *damage) { struct headless_output *output = (struct headless_output *) output_base; struct weston_compositor *ec = output->base.compositor; ec->renderer->repaint_output(&output->base, damage); pixman_region32_subtract(&ec->primary_plane.damage, &ec->primary_plane.damage, damage); wl_event_source_timer_update(output->finish_frame_timer, 16); return 0; }