[PATCH weston v2] compositor: fix initializing idle timeout at startup
Egor Starkov
egor.starkov at ge.com
Tue Sep 22 03:50:00 PDT 2015
Read and store idle-time setting before calling weston_compositor_create
that makes initial setting of idle timeout.
Fixes https://bugs.freedesktop.org/show_bug.cgi?id=92030
Signed-off-by: Egor Starkov <egor.starkov at ge.com>
---
src/compositor.c | 3 ++-
src/compositor.h | 2 +-
src/main.c | 11 ++++-------
3 files changed, 7 insertions(+), 9 deletions(-)
diff --git a/src/compositor.c b/src/compositor.c
index cbef4dc..d65afab 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -4459,7 +4459,7 @@ timeline_key_binding_handler(struct weston_keyboard *keyboard, uint32_t time,
* \return The compositor instance on success or NULL on failure.
*/
WL_EXPORT struct weston_compositor *
-weston_compositor_create(struct wl_display *display, void *user_data)
+weston_compositor_create(struct wl_display *display, void *user_data, int32_t idle_time)
{
struct weston_compositor *ec;
struct wl_event_loop *loop;
@@ -4527,6 +4527,7 @@ weston_compositor_create(struct wl_display *display, void *user_data)
loop = wl_display_get_event_loop(ec->wl_display);
ec->idle_source = wl_event_loop_add_timer(loop, idle_handler, ec);
+ ec->idle_time = idle_time;
wl_event_source_timer_update(ec->idle_source, ec->idle_time * 1000);
ec->input_loop = wl_event_loop_create();
diff --git a/src/compositor.h b/src/compositor.h
index c4c81f0..cdcfd39 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -1353,7 +1353,7 @@ weston_compositor_get_time(void);
void
weston_compositor_destroy(struct weston_compositor *ec);
struct weston_compositor *
-weston_compositor_create(struct wl_display *display, void *user_data);
+weston_compositor_create(struct wl_display *display, void *user_data, int32_t idle_time);
void
weston_compositor_exit(struct weston_compositor *ec);
void *
diff --git a/src/main.c b/src/main.c
index a98570e..c9d35b1 100644
--- a/src/main.c
+++ b/src/main.c
@@ -727,7 +727,10 @@ int main(int argc, char *argv[])
if (!backend_init)
goto out_signals;
- ec = weston_compositor_create(display, NULL);
+ if (idle_time < 0)
+ weston_config_section_get_int(section, "idle-time", &idle_time, 300);
+
+ ec = weston_compositor_create(display, NULL, idle_time);
if (ec == NULL) {
weston_log("fatal: failed to create compositor\n");
goto out_signals;
@@ -745,12 +748,6 @@ int main(int argc, char *argv[])
catch_signals();
segv_compositor = ec;
- if (idle_time < 0)
- weston_config_section_get_int(section, "idle-time", &idle_time, -1);
- if (idle_time < 0)
- idle_time = 300; /* default idle timeout, in seconds */
-
- ec->idle_time = idle_time;
ec->default_pointer_grab = NULL;
ec->exit = handle_exit;
--
1.8.3.1
More information about the wayland-devel
mailing list