mirror of
https://github.com/brl/mutter.git
synced 2024-11-23 16:40:41 -05:00
tests/runner: Move window shown synchronization to helper
https://gitlab.gnome.org/GNOME/mutter/merge_requests/912
This commit is contained in:
parent
c9a05d4581
commit
8cb0646b62
@ -342,39 +342,6 @@ test_case_check_xserver_stacking (TestCase *test,
|
|||||||
return *error == NULL;
|
return *error == NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct _WaitForShownData
|
|
||||||
{
|
|
||||||
GMainLoop *loop;
|
|
||||||
MetaWindow *window;
|
|
||||||
guint shown_handler_id;
|
|
||||||
} WaitForShownData;
|
|
||||||
|
|
||||||
static void
|
|
||||||
on_window_shown (MetaWindow *window,
|
|
||||||
WaitForShownData *data)
|
|
||||||
{
|
|
||||||
g_main_loop_quit (data->loop);
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
test_case_wait_for_showing_before_redraw (gpointer user_data)
|
|
||||||
{
|
|
||||||
WaitForShownData *data = user_data;
|
|
||||||
|
|
||||||
if (meta_window_is_hidden (data->window))
|
|
||||||
{
|
|
||||||
data->shown_handler_id = g_signal_connect (data->window, "shown",
|
|
||||||
G_CALLBACK (on_window_shown),
|
|
||||||
data);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
g_main_loop_quit (data->loop);
|
|
||||||
}
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
test_case_do (TestCase *test,
|
test_case_do (TestCase *test,
|
||||||
int argc,
|
int argc,
|
||||||
@ -533,18 +500,7 @@ test_case_do (TestCase *test,
|
|||||||
if (!window)
|
if (!window)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
WaitForShownData data = {
|
test_client_wait_for_window_shown (client, window);
|
||||||
.loop = g_main_loop_new (NULL, FALSE),
|
|
||||||
.window = window,
|
|
||||||
};
|
|
||||||
meta_later_add (META_LATER_BEFORE_REDRAW,
|
|
||||||
test_case_wait_for_showing_before_redraw,
|
|
||||||
&data,
|
|
||||||
NULL);
|
|
||||||
g_main_loop_run (data.loop);
|
|
||||||
if (data.shown_handler_id)
|
|
||||||
g_signal_handler_disconnect (window, data.shown_handler_id);
|
|
||||||
g_main_loop_unref (data.loop);
|
|
||||||
}
|
}
|
||||||
else if (strcmp (argv[0], "hide") == 0 ||
|
else if (strcmp (argv[0], "hide") == 0 ||
|
||||||
strcmp (argv[0], "activate") == 0 ||
|
strcmp (argv[0], "activate") == 0 ||
|
||||||
|
@ -359,6 +359,57 @@ test_client_find_window (TestClient *client,
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef struct _WaitForShownData
|
||||||
|
{
|
||||||
|
GMainLoop *loop;
|
||||||
|
MetaWindow *window;
|
||||||
|
guint shown_handler_id;
|
||||||
|
} WaitForShownData;
|
||||||
|
|
||||||
|
static void
|
||||||
|
on_window_shown (MetaWindow *window,
|
||||||
|
WaitForShownData *data)
|
||||||
|
{
|
||||||
|
g_main_loop_quit (data->loop);
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
wait_for_showing_before_redraw (gpointer user_data)
|
||||||
|
{
|
||||||
|
WaitForShownData *data = user_data;
|
||||||
|
|
||||||
|
if (meta_window_is_hidden (data->window))
|
||||||
|
{
|
||||||
|
data->shown_handler_id = g_signal_connect (data->window, "shown",
|
||||||
|
G_CALLBACK (on_window_shown),
|
||||||
|
data);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_main_loop_quit (data->loop);
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
test_client_wait_for_window_shown (TestClient *client,
|
||||||
|
MetaWindow *window)
|
||||||
|
{
|
||||||
|
WaitForShownData data = {
|
||||||
|
.loop = g_main_loop_new (NULL, FALSE),
|
||||||
|
.window = window,
|
||||||
|
};
|
||||||
|
meta_later_add (META_LATER_BEFORE_REDRAW,
|
||||||
|
wait_for_showing_before_redraw,
|
||||||
|
&data,
|
||||||
|
NULL);
|
||||||
|
g_main_loop_run (data.loop);
|
||||||
|
if (data.shown_handler_id)
|
||||||
|
g_signal_handler_disconnect (window, data.shown_handler_id);
|
||||||
|
g_main_loop_unref (data.loop);
|
||||||
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
test_client_alarm_filter (MetaX11Display *x11_display,
|
test_client_alarm_filter (MetaX11Display *x11_display,
|
||||||
XSyncAlarmNotifyEvent *event,
|
XSyncAlarmNotifyEvent *event,
|
||||||
|
@ -70,6 +70,9 @@ MetaWindow * test_client_find_window (TestClient *client,
|
|||||||
const char *window_id,
|
const char *window_id,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
void test_client_wait_for_window_shown (TestClient *client,
|
||||||
|
MetaWindow *window);
|
||||||
|
|
||||||
gboolean test_client_quit (TestClient *client,
|
gboolean test_client_quit (TestClient *client,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user