tests: Release GApplication a little later to avoid assertion failures

If it takes one more `GMainContext` cycle than expected for the
`activate` signals to be handled, the `GApplication` under test can be
released too early, and the test will fail due to not seeing a high
enough value of `n_activations`.

Hopefully avoid that by moving the release to a low priority idle
callback.

This fix is only hopeful because I’ve only been able to reproduce the
failure on FreeBSD CI and not locally.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>

Fixes: #2835
This commit is contained in:
Philip Withnall 2022-12-14 09:33:18 +00:00
parent a0dbaeed2f
commit a2c8a8c630

View File

@ -1207,6 +1207,7 @@ dbus_activate_cb (GApplication *app,
static void dbus_startup_reply_cb (GObject *source_object,
GAsyncResult *result,
gpointer user_data);
static gboolean dbus_startup_reply_idle_cb (gpointer user_data);
static void
dbus_startup_cb (GApplication *app,
@ -1241,8 +1242,19 @@ dbus_startup_reply_cb (GObject *source_object,
/* Nothing to check on the reply for now. */
g_clear_object (&reply);
/* Release the app in an idle callback, so theres time to process other
* pending sources first. */
g_idle_add_full (G_PRIORITY_LOW, dbus_startup_reply_idle_cb, g_steal_pointer (&app), g_object_unref);
}
static gboolean
dbus_startup_reply_idle_cb (gpointer user_data)
{
GApplication *app = G_APPLICATION (user_data);
g_application_release (app);
g_clear_object (&app);
return G_SOURCE_REMOVE;
}
static void