From 6f5d88664d837a3820cc8ce249c9984d243b0b35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Thu, 20 Jun 2024 13:46:46 -0700 Subject: [PATCH 1/2] FlatpakBackend: set action enabled in main thread --- src/Core/FlatpakBackend.vala | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/Core/FlatpakBackend.vala b/src/Core/FlatpakBackend.vala index a23ab5c67..13932b057 100644 --- a/src/Core/FlatpakBackend.vala +++ b/src/Core/FlatpakBackend.vala @@ -93,7 +93,6 @@ public class AppCenterCore.FlatpakBackend : Object { var job = jobs.pop (); job_type = job.operation; working = true; - set_actions_enabled (working); if (remove_inhibit_timeout != 0) { Source.remove (remove_inhibit_timeout); @@ -155,7 +154,6 @@ public class AppCenterCore.FlatpakBackend : Object { } working = false; - set_actions_enabled (working); } return true; @@ -242,12 +240,13 @@ public class AppCenterCore.FlatpakBackend : Object { ); reload_appstream_pool (); - } - private void set_actions_enabled (bool working) { - var app = Application.get_default (); - ((SimpleAction) app.lookup_action ("refresh")).set_enabled (!working && !Utils.is_running_in_guest_session ()); - ((SimpleAction) app.lookup_action ("repair")).set_enabled (!working); + // Need to set actions in this thread + notify["working"].connect (() => { + var app = Application.get_default (); + ((SimpleAction) app.lookup_action ("refresh")).set_enabled (!working && !Utils.is_running_in_guest_session ()); + ((SimpleAction) app.lookup_action ("repair")).set_enabled (!working); + }); } private async void trigger_update_check () { From b3977cd1dc0cd2ac7d062b12f076281e775eed7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Thu, 20 Jun 2024 16:46:48 -0700 Subject: [PATCH 2/2] Wrap in idle instead --- src/Core/FlatpakBackend.vala | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Core/FlatpakBackend.vala b/src/Core/FlatpakBackend.vala index 13932b057..12c994265 100644 --- a/src/Core/FlatpakBackend.vala +++ b/src/Core/FlatpakBackend.vala @@ -93,6 +93,7 @@ public class AppCenterCore.FlatpakBackend : Object { var job = jobs.pop (); job_type = job.operation; working = true; + set_actions_enabled (working); if (remove_inhibit_timeout != 0) { Source.remove (remove_inhibit_timeout); @@ -154,6 +155,7 @@ public class AppCenterCore.FlatpakBackend : Object { } working = false; + set_actions_enabled (working); } return true; @@ -240,9 +242,11 @@ public class AppCenterCore.FlatpakBackend : Object { ); reload_appstream_pool (); + } - // Need to set actions in this thread - notify["working"].connect (() => { + private void set_actions_enabled (bool working) { + // Make sure we run on the main thread + Idle.add_once (() => { var app = Application.get_default (); ((SimpleAction) app.lookup_action ("refresh")).set_enabled (!working && !Utils.is_running_in_guest_session ()); ((SimpleAction) app.lookup_action ("repair")).set_enabled (!working);