summaryrefslogtreecommitdiff
path: root/src/core/display.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/display.c')
-rw-r--r--src/core/display.c32
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++);
+}