diff options
Diffstat (limited to 'src/core/display.c')
-rw-r--r-- | src/core/display.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/core/display.c b/src/core/display.c index e7dd4534b..d09f119ff 100644 --- a/src/core/display.c +++ b/src/core/display.c @@ -3269,3 +3269,35 @@ meta_display_notify_pad_group_switch (MetaDisplay *display, g_string_free (message, TRUE); } + +MetaWindow * +meta_display_get_window_from_id (MetaDisplay *display, + uint64_t window_id) +{ + g_autoptr (GSList) windows = NULL; + GSList *l; + + windows = meta_display_list_windows (display, META_LIST_DEFAULT); + for (l = windows; l; l = l->next) + { + MetaWindow *window = l->data; + + if (window->id == window_id) + return window; + } + + return NULL; +} + +uint64_t +meta_display_generate_window_id (MetaDisplay *display) +{ + static uint64_t base_window_id; + static uint64_t last_window_id; + + if (!base_window_id) + base_window_id = g_random_int () + 1; + + /* We can overflow here, that's fine */ + return (base_window_id + last_window_id++); +} |