From 58ba1370d8f27fb28d5772b78a29a27749839595 Mon Sep 17 00:00:00 2001 From: Casey Dahlin Date: Thu, 19 Apr 2012 22:50:08 -0400 Subject: [PATCH] Add an id field to outputs All outputs now have a unique integer ID, allocated from a bitfield pool in the compositor. Signed-off-by: Casey Dahlin --- src/compositor.c | 5 +++++ src/compositor.h | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/src/compositor.c b/src/compositor.c index 3354d21..17a0cc6 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -2365,6 +2365,9 @@ weston_output_init(struct weston_output *output, struct weston_compositor *c, wl_list_init(&output->frame_callback_list); + output->id = ffs(~output->compositor->output_id_pool) - 1; + output->compositor->output_id_pool |= 1 << output->id; + output->global = wl_display_add_global(c->wl_display, &wl_output_interface, output, bind_output); @@ -2393,6 +2396,8 @@ weston_compositor_init(struct weston_compositor *ec, struct wl_display *display) wl_signal_init(&ec->unlock_signal); ec->launcher_sock = weston_environment_get_fd("WESTON_LAUNCHER_SOCK"); + ec->output_id_pool = 0; + if (!wl_display_add_global(display, &wl_compositor_interface, ec, compositor_bind)) return -1; diff --git a/src/compositor.h b/src/compositor.h index b19900b..0ef342b 100644 --- a/src/compositor.h +++ b/src/compositor.h @@ -73,6 +73,8 @@ enum dpms_enum { }; struct weston_output { + uint32_t id; + struct wl_list link; struct wl_global *global; struct weston_compositor *compositor; @@ -240,6 +242,8 @@ struct weston_compositor { struct screenshooter *screenshooter; int launcher_sock; + + uint32_t output_id_pool; }; #define MODIFIER_CTRL (1 << 8) -- 2.7.4