[gnome-builder] flatpak: avoid off-thread access of installations
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] flatpak: avoid off-thread access of installations
- Date: Thu, 14 Mar 2019 23:25:31 +0000 (UTC)
commit 8d789c94b54901736a924104e0db0e35a1f36910
Author: Christian Hergert <chergert redhat com>
Date: Thu Mar 14 16:24:40 2019 -0700
flatpak: avoid off-thread access of installations
src/plugins/flatpak/gbp-flatpak-preferences-addin.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
---
diff --git a/src/plugins/flatpak/gbp-flatpak-preferences-addin.c
b/src/plugins/flatpak/gbp-flatpak-preferences-addin.c
index d047829c2..56ad47630 100644
--- a/src/plugins/flatpak/gbp-flatpak-preferences-addin.c
+++ b/src/plugins/flatpak/gbp-flatpak-preferences-addin.c
@@ -215,14 +215,16 @@ gbp_flatpak_preferences_addin_reload_worker (IdeTask *task,
GbpFlatpakPreferencesAddin *self = (GbpFlatpakPreferencesAddin *)source_object;
g_autoptr(GPtrArray) runtimes = NULL;
GbpFlatpakApplicationAddin *app_addin;
+ GPtrArray *installations = task_data;
IDE_ENTRY;
g_assert (IDE_IS_TASK (task));
g_assert (GBP_IS_FLATPAK_PREFERENCES_ADDIN (self));
+ g_assert (installations != NULL);
+ g_assert (!cancellable || G_IS_CANCELLABLE (cancellable));
runtimes = g_ptr_array_new_with_free_func (g_object_unref);
-
app_addin = gbp_flatpak_application_addin_get_default ();
/*
@@ -231,10 +233,6 @@ gbp_flatpak_preferences_addin_reload_worker (IdeTask *task,
*/
if (app_addin != NULL)
{
- g_autoptr(GPtrArray) installations = NULL;
-
- installations = gbp_flatpak_application_addin_get_installations (app_addin);
-
for (guint i = 0; i < installations->len; i++)
{
FlatpakInstallation *installation = g_ptr_array_index (installations, i);
@@ -338,11 +336,14 @@ gbp_flatpak_preferences_addin_reload_cb (GObject *object,
static void
gbp_flatpak_preferences_addin_reload (GbpFlatpakPreferencesAddin *self)
{
+ GbpFlatpakApplicationAddin *addin;
+ g_autoptr(GPtrArray) installations = NULL;
g_autoptr(IdeTask) task = NULL;
guint id;
IDE_ENTRY;
+ g_assert (IDE_IS_MAIN_THREAD ());
g_assert (GBP_IS_FLATPAK_PREFERENCES_ADDIN (self));
g_assert (DZL_IS_PREFERENCES (self->preferences));
@@ -360,8 +361,12 @@ gbp_flatpak_preferences_addin_reload (GbpFlatpakPreferencesAddin *self)
g_array_remove_range (self->ids, 0, self->ids->len);
}
+ addin = gbp_flatpak_application_addin_get_default ();
+ installations = gbp_flatpak_application_addin_get_installations (addin);
+
task = ide_task_new (self, self->cancellable, gbp_flatpak_preferences_addin_reload_cb, NULL);
ide_task_set_source_tag (task, gbp_flatpak_preferences_addin_reload);
+ ide_task_set_task_data (task, g_steal_pointer (&installations), g_ptr_array_unref);
ide_task_run_in_thread (task, gbp_flatpak_preferences_addin_reload_worker);
IDE_EXIT;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]