window: Add window id

Generate a unique 64bit window-id which is unrelated to any windowing
backend.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/306
This commit is contained in:
Olivier Fourdan
2018-09-21 17:49:36 +02:00
parent ec25f3a6b7
commit bbcb66ddf4
5 changed files with 55 additions and 0 deletions

View File

@@ -3597,3 +3597,35 @@ meta_display_get_startup_notification (MetaDisplay *display)
{
return display->startup_notification;
}
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++);
}