Make stack tracker work without X11
https://bugzilla.gnome.org/show_bug.cgi?id=759538
This commit is contained in:
parent
9f1ab1c3af
commit
e6b885210c
@ -803,6 +803,9 @@ meta_display_open (void)
|
|||||||
|
|
||||||
meta_display_set_cursor (display, META_CURSOR_DEFAULT);
|
meta_display_set_cursor (display, META_CURSOR_DEFAULT);
|
||||||
|
|
||||||
|
display->stack = meta_stack_new (display);
|
||||||
|
display->stack_tracker = meta_stack_tracker_new (display);
|
||||||
|
|
||||||
/* This is the default layout extracted from default
|
/* This is the default layout extracted from default
|
||||||
* variable values in update_num_workspaces ()
|
* variable values in update_num_workspaces ()
|
||||||
* This can be overriden using _NET_DESKTOP_LAYOUT in
|
* This can be overriden using _NET_DESKTOP_LAYOUT in
|
||||||
@ -835,9 +838,6 @@ meta_display_open (void)
|
|||||||
|
|
||||||
timestamp = display->x11_display->timestamp;
|
timestamp = display->x11_display->timestamp;
|
||||||
|
|
||||||
display->stack = meta_stack_new (display);
|
|
||||||
display->stack_tracker = meta_stack_tracker_new (display);
|
|
||||||
|
|
||||||
display->last_focus_time = timestamp;
|
display->last_focus_time = timestamp;
|
||||||
display->last_user_time = timestamp;
|
display->last_user_time = timestamp;
|
||||||
display->compositor = NULL;
|
display->compositor = NULL;
|
||||||
|
@ -476,13 +476,14 @@ copy_stack (GArray *stack)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
query_xserver_stack (MetaStackTracker *tracker)
|
query_xserver_stack (MetaDisplay *display,
|
||||||
|
MetaStackTracker *tracker)
|
||||||
{
|
{
|
||||||
MetaX11Display *x11_display = tracker->display->x11_display;
|
MetaX11Display *x11_display = display->x11_display;
|
||||||
Window ignored1, ignored2;
|
Window ignored1, ignored2;
|
||||||
Window *children;
|
Window *children;
|
||||||
guint n_children;
|
guint n_children;
|
||||||
guint i;
|
guint i, old_len;
|
||||||
|
|
||||||
tracker->xserver_serial = XNextRequest (x11_display->xdisplay);
|
tracker->xserver_serial = XNextRequest (x11_display->xdisplay);
|
||||||
|
|
||||||
@ -490,11 +491,12 @@ query_xserver_stack (MetaStackTracker *tracker)
|
|||||||
x11_display->xroot,
|
x11_display->xroot,
|
||||||
&ignored1, &ignored2, &children, &n_children);
|
&ignored1, &ignored2, &children, &n_children);
|
||||||
|
|
||||||
tracker->verified_stack = g_array_sized_new (FALSE, FALSE, sizeof (guint64), n_children);
|
old_len = tracker->verified_stack->len;
|
||||||
g_array_set_size (tracker->verified_stack, n_children);
|
|
||||||
|
g_array_set_size (tracker->verified_stack, old_len + n_children);
|
||||||
|
|
||||||
for (i = 0; i < n_children; i++)
|
for (i = 0; i < n_children; i++)
|
||||||
g_array_index (tracker->verified_stack, guint64, i) = children[i];
|
g_array_index (tracker->verified_stack, guint64, old_len + i) = children[i];
|
||||||
|
|
||||||
XFree (children);
|
XFree (children);
|
||||||
}
|
}
|
||||||
@ -507,10 +509,14 @@ meta_stack_tracker_new (MetaDisplay *display)
|
|||||||
tracker = g_new0 (MetaStackTracker, 1);
|
tracker = g_new0 (MetaStackTracker, 1);
|
||||||
tracker->display = display;
|
tracker->display = display;
|
||||||
|
|
||||||
query_xserver_stack (tracker);
|
tracker->verified_stack = g_array_new (FALSE, FALSE, sizeof (guint64));
|
||||||
|
|
||||||
tracker->unverified_predictions = g_queue_new ();
|
tracker->unverified_predictions = g_queue_new ();
|
||||||
|
|
||||||
|
g_signal_connect (display,
|
||||||
|
"x11-display-opened",
|
||||||
|
G_CALLBACK (query_xserver_stack),
|
||||||
|
tracker);
|
||||||
|
|
||||||
meta_stack_tracker_dump (tracker);
|
meta_stack_tracker_dump (tracker);
|
||||||
|
|
||||||
return tracker;
|
return tracker;
|
||||||
@ -530,6 +536,10 @@ meta_stack_tracker_free (MetaStackTracker *tracker)
|
|||||||
g_queue_free (tracker->unverified_predictions);
|
g_queue_free (tracker->unverified_predictions);
|
||||||
tracker->unverified_predictions = NULL;
|
tracker->unverified_predictions = NULL;
|
||||||
|
|
||||||
|
g_signal_handlers_disconnect_by_func (tracker->display,
|
||||||
|
(gpointer)query_xserver_stack,
|
||||||
|
tracker);
|
||||||
|
|
||||||
g_free (tracker);
|
g_free (tracker);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user