mirror of
https://github.com/brl/mutter.git
synced 2025-08-07 00:54:42 +00:00
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:
@@ -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++);
|
||||
}
|
||||
|
Reference in New Issue
Block a user