[gnome-software: 7/9] packagekit: Use a new PkTask for each remaining operation




commit 1928b17824eb550978234cb1e5ab72e3f9e47bfa
Author: Philip Withnall <pwithnall endlessos org>
Date:   Tue May 31 17:54:44 2022 +0100

    packagekit: Use a new PkTask for each remaining operation
    
    See the previous commits.
    
    Signed-off-by: Philip Withnall <pwithnall endlessos org>
    
    Helps: #1762

 plugins/packagekit/gs-plugin-packagekit.c | 147 ++++++++++++++++--------------
 1 file changed, 77 insertions(+), 70 deletions(-)
---
diff --git a/plugins/packagekit/gs-plugin-packagekit.c b/plugins/packagekit/gs-plugin-packagekit.c
index 785bbbd45..3ee471c84 100644
--- a/plugins/packagekit/gs-plugin-packagekit.c
+++ b/plugins/packagekit/gs-plugin-packagekit.c
@@ -53,9 +53,6 @@
 struct _GsPluginPackagekit {
        GsPlugin                 parent;
 
-       PkTask                  *task;
-       GMutex                   task_mutex;
-
        PkControl               *control_refine;
 
        PkControl               *control_proxy;
@@ -104,11 +101,6 @@ gs_plugin_packagekit_init (GsPluginPackagekit *self)
 {
        GsPlugin *plugin = GS_PLUGIN (self);
 
-       /* core */
-       g_mutex_init (&self->task_mutex);
-       self->task = gs_packagekit_task_new (plugin);
-       pk_client_set_interactive (PK_CLIENT (self->task), gs_plugin_has_flags (plugin, 
GS_PLUGIN_FLAGS_INTERACTIVE));
-
        /* refine */
        self->control_refine = pk_control_new ();
        g_signal_connect (self->control_refine, "updates-changed",
@@ -166,9 +158,6 @@ gs_plugin_packagekit_dispose (GObject *object)
        g_cancellable_cancel (self->proxy_settings_cancellable);
        g_clear_object (&self->proxy_settings_cancellable);
 
-       /* core */
-       g_clear_object (&self->task);
-
        /* refine */
        g_clear_object (&self->control_refine);
 
@@ -193,7 +182,6 @@ gs_plugin_packagekit_finalize (GObject *object)
 {
        GsPluginPackagekit *self = GS_PLUGIN_PACKAGEKIT (object);
 
-       g_mutex_clear (&self->task_mutex);
        g_mutex_clear (&self->prepared_updates_mutex);
 
        G_OBJECT_CLASS (gs_plugin_packagekit_parent_class)->finalize (object);
@@ -261,12 +249,12 @@ gs_plugin_add_sources_related (GsPlugin *plugin,
                               GCancellable *cancellable,
                               GError **error)
 {
-       GsPluginPackagekit *self = GS_PLUGIN_PACKAGEKIT (plugin);
        guint i;
        GsApp *app;
        GsApp *app_tmp;
        PkBitfield filter;
        g_autoptr(GsPackagekitHelper) helper = gs_packagekit_helper_new (plugin);
+       g_autoptr(PkTask) task_related = NULL;
        const gchar *id;
        gboolean ret = TRUE;
        g_autoptr(GsAppList) installed = gs_app_list_new ();
@@ -277,14 +265,17 @@ gs_plugin_add_sources_related (GsPlugin *plugin,
                                         PK_FILTER_ENUM_ARCH,
                                         PK_FILTER_ENUM_NOT_COLLECTIONS,
                                         -1);
-       g_mutex_lock (&self->task_mutex);
-       gs_packagekit_task_setup (GS_PACKAGEKIT_TASK (self->task), GS_PLUGIN_ACTION_GET_SOURCES, 
gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
-       results = pk_client_get_packages (PK_CLIENT(self->task),
+
+       task_related = gs_packagekit_task_new (plugin);
+       pk_client_set_interactive (PK_CLIENT (task_related), gs_plugin_has_flags (plugin, 
GS_PLUGIN_FLAGS_INTERACTIVE));
+       gs_packagekit_task_setup (GS_PACKAGEKIT_TASK (task_related), GS_PLUGIN_ACTION_GET_SOURCES, 
gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
+
+       results = pk_client_get_packages (PK_CLIENT (task_related),
                                           filter,
                                           cancellable,
                                           gs_packagekit_helper_cb, helper,
                                           error);
-       g_mutex_unlock (&self->task_mutex);
+
        if (!gs_plugin_packagekit_results_valid (results, error)) {
                g_prefix_error (error, "failed to get sources related: ");
                return FALSE;
@@ -326,10 +317,10 @@ gs_plugin_add_sources (GsPlugin *plugin,
                       GCancellable *cancellable,
                       GError **error)
 {
-       GsPluginPackagekit *self = GS_PLUGIN_PACKAGEKIT (plugin);
        PkBitfield filter;
        PkRepoDetail *rd;
        g_autoptr(GsPackagekitHelper) helper = gs_packagekit_helper_new (plugin);
+       g_autoptr(PkTask) task_sources = NULL;
        const gchar *id;
        guint i;
        g_autoptr(GHashTable) hash = NULL;
@@ -340,14 +331,17 @@ gs_plugin_add_sources (GsPlugin *plugin,
        filter = pk_bitfield_from_enums (PK_FILTER_ENUM_NOT_SOURCE,
                                         PK_FILTER_ENUM_NOT_DEVELOPMENT,
                                         -1);
-       g_mutex_lock (&self->task_mutex);
-       gs_packagekit_task_setup (GS_PACKAGEKIT_TASK (self->task), GS_PLUGIN_ACTION_GET_SOURCES, 
gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
-       results = pk_client_get_repo_list (PK_CLIENT(self->task),
+
+       task_sources = gs_packagekit_task_new (plugin);
+       pk_client_set_interactive (PK_CLIENT (task_sources), gs_plugin_has_flags (plugin, 
GS_PLUGIN_FLAGS_INTERACTIVE));
+       gs_packagekit_task_setup (GS_PACKAGEKIT_TASK (task_sources), GS_PLUGIN_ACTION_GET_SOURCES, 
gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
+
+       results = pk_client_get_repo_list (PK_CLIENT (task_sources),
                                           filter,
                                           cancellable,
                                           gs_packagekit_helper_cb, helper,
                                           error);
-       g_mutex_unlock (&self->task_mutex);
+
        if (!gs_plugin_packagekit_results_valid (results, error))
                return FALSE;
        hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
@@ -386,6 +380,7 @@ gs_plugin_add_sources (GsPlugin *plugin,
 
 static gboolean
 gs_plugin_app_origin_repo_enable (GsPluginPackagekit  *self,
+                                  PkTask              *task_enable_repo,
                                   GsApp               *app,
                                   GCancellable        *cancellable,
                                   GError             **error)
@@ -408,15 +403,12 @@ gs_plugin_app_origin_repo_enable (GsPluginPackagekit  *self,
 
        /* do sync call */
        gs_plugin_status_update (plugin, app, GS_PLUGIN_STATUS_WAITING);
-       g_mutex_lock (&self->task_mutex);
-       gs_packagekit_task_setup (GS_PACKAGEKIT_TASK (self->task), GS_PLUGIN_ACTION_INSTALL, 
gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
-       results = pk_client_repo_enable (PK_CLIENT (self->task),
+       results = pk_client_repo_enable (PK_CLIENT (task_enable_repo),
                                         repo_id,
                                         TRUE,
                                         cancellable,
                                         gs_packagekit_helper_cb, helper,
                                         error);
-       g_mutex_unlock (&self->task_mutex);
 
        /* pk_client_repo_enable() returns an error if the repo is already enabled. */
        if (results != NULL &&
@@ -450,6 +442,7 @@ gs_plugin_app_install (GsPlugin *plugin,
        g_autoptr(GsAppList) addons = NULL;
        GPtrArray *source_ids;
        g_autoptr(GsPackagekitHelper) helper = gs_packagekit_helper_new (plugin);
+       g_autoptr(PkTask) task_install = NULL;
        const gchar *package_id;
        guint i;
        g_autofree gchar *local_filename = NULL;
@@ -470,6 +463,11 @@ gs_plugin_app_install (GsPlugin *plugin,
                return TRUE;
        }
 
+       /* Set up a #PkTask to handle the D-Bus calls to packagekitd. */
+       task_install = gs_packagekit_task_new (plugin);
+       pk_client_set_interactive (PK_CLIENT (task_install), gs_plugin_has_flags (plugin, 
GS_PLUGIN_FLAGS_INTERACTIVE));
+       gs_packagekit_task_setup (GS_PACKAGEKIT_TASK (task_install), GS_PLUGIN_ACTION_INSTALL, 
gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
+
        if (gs_app_get_state (app) == GS_APP_STATE_UNAVAILABLE) {
                /* get everything up front we need */
                source_ids = gs_app_get_source_ids (app);
@@ -484,7 +482,7 @@ gs_plugin_app_install (GsPlugin *plugin,
                package_ids[0] = g_strdup (g_ptr_array_index (source_ids, 0));
 
                /* enable the repo where the unavailable app is coming from */
-               if (!gs_plugin_app_origin_repo_enable (self, app, cancellable, error))
+               if (!gs_plugin_app_origin_repo_enable (self, task_install, app, cancellable, error))
                        return FALSE;
 
                gs_app_set_state (app, GS_APP_STATE_INSTALLING);
@@ -496,14 +494,13 @@ gs_plugin_app_install (GsPlugin *plugin,
 
                /* actually install the package */
                gs_packagekit_helper_add_app (helper, app);
-               g_mutex_lock (&self->task_mutex);
-               gs_packagekit_task_setup (GS_PACKAGEKIT_TASK (self->task), GS_PLUGIN_ACTION_INSTALL, 
gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
-               results = pk_task_install_packages_sync (self->task,
+
+               results = pk_task_install_packages_sync (task_install,
                                                         package_ids,
                                                         cancellable,
                                                         gs_packagekit_helper_cb, helper,
                                                         error);
-               g_mutex_unlock (&self->task_mutex);
+
                if (!gs_plugin_packagekit_results_valid (results, error)) {
                        gs_app_set_state_recover (app);
                        return FALSE;
@@ -565,14 +562,13 @@ gs_plugin_app_install (GsPlugin *plugin,
                                gs_app_set_state (addon, GS_APP_STATE_INSTALLING);
                }
                gs_packagekit_helper_add_app (helper, app);
-               g_mutex_lock (&self->task_mutex);
-               gs_packagekit_task_setup (GS_PACKAGEKIT_TASK (self->task), GS_PLUGIN_ACTION_INSTALL, 
gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
-               results = pk_task_install_packages_sync (self->task,
+
+               results = pk_task_install_packages_sync (task_install,
                                                         (gchar **) array_package_ids->pdata,
                                                         cancellable,
                                                         gs_packagekit_helper_cb, helper,
                                                         error);
-               g_mutex_unlock (&self->task_mutex);
+
                if (!gs_plugin_packagekit_results_valid (results, error)) {
                        for (i = 0; addons != NULL && i < gs_app_list_length (addons); i++) {
                                GsApp *addon = gs_app_list_index (addons, i);
@@ -607,14 +603,13 @@ gs_plugin_app_install (GsPlugin *plugin,
 
                gs_app_set_state (app, GS_APP_STATE_INSTALLING);
                gs_packagekit_helper_add_app (helper, app);
-               g_mutex_lock (&self->task_mutex);
-               gs_packagekit_task_setup (GS_PACKAGEKIT_TASK (self->task), GS_PLUGIN_ACTION_INSTALL, 
gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
-               results = pk_task_install_files_sync (self->task,
+
+               results = pk_task_install_files_sync (task_install,
                                                      package_ids,
                                                      cancellable,
                                                      gs_packagekit_helper_cb, helper,
                                                      error);
-               g_mutex_unlock (&self->task_mutex);
+
                if (!gs_plugin_packagekit_results_valid (results, error)) {
                        gs_app_set_state_recover (app);
                        return FALSE;
@@ -648,11 +643,11 @@ gs_plugin_app_remove (GsPlugin *plugin,
                      GCancellable *cancellable,
                      GError **error)
 {
-       GsPluginPackagekit *self = GS_PLUGIN_PACKAGEKIT (plugin);
        const gchar *package_id;
        GPtrArray *source_ids;
        g_autoptr(GsAppList) addons = NULL;
        g_autoptr(GsPackagekitHelper) helper = gs_packagekit_helper_new (plugin);
+       g_autoptr(PkTask) task_remove = NULL;
        guint i;
        guint cnt = 0;
        g_autoptr(PkResults) results = NULL;
@@ -692,15 +687,18 @@ gs_plugin_app_remove (GsPlugin *plugin,
        /* do the action */
        gs_app_set_state (app, GS_APP_STATE_REMOVING);
        gs_packagekit_helper_add_app (helper, app);
-       g_mutex_lock (&self->task_mutex);
-       gs_packagekit_task_setup (GS_PACKAGEKIT_TASK (self->task), GS_PLUGIN_ACTION_REMOVE, 
gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
-       results = pk_task_remove_packages_sync (self->task,
+
+       task_remove = gs_packagekit_task_new (plugin);
+       pk_client_set_interactive (PK_CLIENT (task_remove), gs_plugin_has_flags (plugin, 
GS_PLUGIN_FLAGS_INTERACTIVE));
+       gs_packagekit_task_setup (GS_PACKAGEKIT_TASK (task_remove), GS_PLUGIN_ACTION_REMOVE, 
gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
+
+       results = pk_task_remove_packages_sync (task_remove,
                                                package_ids,
                                                TRUE, GS_PACKAGEKIT_AUTOREMOVE,
                                                cancellable,
                                                gs_packagekit_helper_cb, helper,
                                                error);
-       g_mutex_unlock (&self->task_mutex);
+
        if (!gs_plugin_packagekit_results_valid (results, error)) {
                gs_app_set_state_recover (app);
                return FALSE;
@@ -757,8 +755,8 @@ gs_plugin_packagekit_add_updates (GsPlugin *plugin,
                                  GCancellable *cancellable,
                                  GError **error)
 {
-       GsPluginPackagekit *self = GS_PLUGIN_PACKAGEKIT (plugin);
        g_autoptr(GsPackagekitHelper) helper = gs_packagekit_helper_new (plugin);
+       g_autoptr(PkTask) task_updates = NULL;
        g_autoptr(PkResults) results = NULL;
        g_autoptr(GPtrArray) array = NULL;
        g_autoptr(GsApp) first_app = NULL;
@@ -766,14 +764,17 @@ gs_plugin_packagekit_add_updates (GsPlugin *plugin,
 
        /* do sync call */
        gs_plugin_status_update (plugin, NULL, GS_PLUGIN_STATUS_WAITING);
-       g_mutex_lock (&self->task_mutex);
-       gs_packagekit_task_setup (GS_PACKAGEKIT_TASK (self->task), GS_PLUGIN_ACTION_GET_UPDATES, 
gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
-       results = pk_client_get_updates (PK_CLIENT (self->task),
+
+       task_updates = gs_packagekit_task_new (plugin);
+       pk_client_set_interactive (PK_CLIENT (task_updates), gs_plugin_has_flags (plugin, 
GS_PLUGIN_FLAGS_INTERACTIVE));
+       gs_packagekit_task_setup (GS_PACKAGEKIT_TASK (task_updates), GS_PLUGIN_ACTION_GET_UPDATES, 
gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
+
+       results = pk_client_get_updates (PK_CLIENT (task_updates),
                                         pk_bitfield_value (PK_FILTER_ENUM_NONE),
                                         cancellable,
                                         gs_packagekit_helper_cb, helper,
                                         error);
-       g_mutex_unlock (&self->task_mutex);
+
        if (!gs_plugin_packagekit_results_valid (results, error))
                return FALSE;
 
@@ -829,9 +830,9 @@ gs_plugin_packagekit_list_apps_async (GsPlugin              *plugin,
                                       GAsyncReadyCallback    callback,
                                       gpointer               user_data)
 {
-       GsPluginPackagekit *self = GS_PLUGIN_PACKAGEKIT (plugin);
        PkBitfield filter;
        g_autoptr(GsPackagekitHelper) helper = gs_packagekit_helper_new (plugin);
+       g_autoptr(PkTask) task_list_apps = NULL;
        g_autoptr(GsApp) app_dl = gs_app_new (gs_plugin_get_name (plugin));
        gboolean interactive = (flags & GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE);
        g_autoptr(GTask) task = NULL;
@@ -843,14 +844,15 @@ gs_plugin_packagekit_list_apps_async (GsPlugin              *plugin,
        gs_plugin_status_update (plugin, NULL, GS_PLUGIN_STATUS_WAITING);
        gs_packagekit_helper_set_progress_app (helper, app_dl);
 
-       g_mutex_lock (&self->task_mutex);
-       gs_packagekit_task_setup (GS_PACKAGEKIT_TASK (self->task), GS_PLUGIN_ACTION_UNKNOWN, interactive);
+       task_list_apps = gs_packagekit_task_new (plugin);
+       pk_client_set_interactive (PK_CLIENT (task_list_apps), interactive);
+       gs_packagekit_task_setup (GS_PACKAGEKIT_TASK (task_list_apps), GS_PLUGIN_ACTION_UNKNOWN, interactive);
 
        if (gs_app_query_get_provides_files (query) != NULL) {
                filter = pk_bitfield_from_enums (PK_FILTER_ENUM_NEWEST,
                                                 PK_FILTER_ENUM_ARCH,
                                                 -1);
-               pk_client_search_files_async (PK_CLIENT (self->task),
+               pk_client_search_files_async (PK_CLIENT (task_list_apps),
                                              filter,
                                              (gchar **) gs_app_query_get_provides_files (query),
                                              cancellable,
@@ -860,8 +862,6 @@ gs_plugin_packagekit_list_apps_async (GsPlugin              *plugin,
                g_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
                                         "Unsupported query");
        }
-
-       g_mutex_unlock (&self->task_mutex);
 }
 
 static void
@@ -901,9 +901,9 @@ gs_plugin_add_search_what_provides (GsPlugin *plugin,
                                     GCancellable *cancellable,
                                     GError **error)
 {
-       GsPluginPackagekit *self = GS_PLUGIN_PACKAGEKIT (plugin);
        PkBitfield filter;
        g_autoptr(GsPackagekitHelper) helper = gs_packagekit_helper_new (plugin);
+       g_autoptr(PkTask) task_search = NULL;
        g_autoptr(PkResults) results = NULL;
 
        /* do sync call */
@@ -911,15 +911,18 @@ gs_plugin_add_search_what_provides (GsPlugin *plugin,
        filter = pk_bitfield_from_enums (PK_FILTER_ENUM_NEWEST,
                                         PK_FILTER_ENUM_ARCH,
                                         -1);
-       g_mutex_lock (&self->task_mutex);
-       gs_packagekit_task_setup (GS_PACKAGEKIT_TASK (self->task), GS_PLUGIN_ACTION_SEARCH_PROVIDES, 
gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
-       results = pk_client_what_provides (PK_CLIENT (self->task),
+
+       task_search = gs_packagekit_task_new (plugin);
+       pk_client_set_interactive (PK_CLIENT (task_search), gs_plugin_has_flags (plugin, 
GS_PLUGIN_FLAGS_INTERACTIVE));
+       gs_packagekit_task_setup (GS_PACKAGEKIT_TASK (task_search), GS_PLUGIN_ACTION_SEARCH_PROVIDES, 
gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
+
+       results = pk_client_what_provides (PK_CLIENT (task_search),
                                           filter,
                                           search,
                                           cancellable,
                                           gs_packagekit_helper_cb, helper,
                                           error);
-       g_mutex_unlock (&self->task_mutex);
+
        if (!gs_plugin_packagekit_results_valid (results, error))
                return FALSE;
 
@@ -3429,8 +3432,8 @@ gs_plugin_enable_repo (GsPlugin *plugin,
                       GCancellable *cancellable,
                       GError **error)
 {
-       GsPluginPackagekit *self = GS_PLUGIN_PACKAGEKIT (plugin);
        g_autoptr(GsPackagekitHelper) helper = gs_packagekit_helper_new (plugin);
+       g_autoptr(PkTask) task_enable_repo = NULL;
        g_autoptr(PkResults) results = NULL;
        g_autoptr(PkError) error_code = NULL;
        g_autoptr(GMainContext) context = NULL;
@@ -3447,15 +3450,17 @@ gs_plugin_enable_repo (GsPlugin *plugin,
        gs_plugin_status_update (plugin, repo, GS_PLUGIN_STATUS_WAITING);
        gs_app_set_state (repo, GS_APP_STATE_INSTALLING);
        gs_packagekit_helper_add_app (helper, repo);
-       g_mutex_lock (&self->task_mutex);
-       gs_packagekit_task_setup (GS_PACKAGEKIT_TASK (self->task), GS_PLUGIN_ACTION_ENABLE_REPO, 
gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
-       results = pk_client_repo_enable (PK_CLIENT (self->task),
+
+       task_enable_repo = gs_packagekit_task_new (plugin);
+       pk_client_set_interactive (PK_CLIENT (task_enable_repo), gs_plugin_has_flags (plugin, 
GS_PLUGIN_FLAGS_INTERACTIVE));
+       gs_packagekit_task_setup (GS_PACKAGEKIT_TASK (task_enable_repo), GS_PLUGIN_ACTION_ENABLE_REPO, 
gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
+
+       results = pk_client_repo_enable (PK_CLIENT (task_enable_repo),
                                         gs_app_get_id (repo),
                                         TRUE,
                                         cancellable,
                                         gs_packagekit_helper_cb, helper,
                                         error);
-       g_mutex_unlock (&self->task_mutex);
 
        /* pk_client_repo_enable() returns an error if the repo is already enabled. */
        if (results != NULL &&
@@ -3502,8 +3507,8 @@ gs_plugin_disable_repo (GsPlugin *plugin,
                        GCancellable *cancellable,
                        GError **error)
 {
-       GsPluginPackagekit *self = GS_PLUGIN_PACKAGEKIT (plugin);
        g_autoptr(GsPackagekitHelper) helper = gs_packagekit_helper_new (plugin);
+       g_autoptr(PkTask) task_disable_repo = NULL;
        g_autoptr(PkResults) results = NULL;
        g_autoptr(PkError) error_code = NULL;
 
@@ -3518,15 +3523,17 @@ gs_plugin_disable_repo (GsPlugin *plugin,
        gs_plugin_status_update (plugin, repo, GS_PLUGIN_STATUS_WAITING);
        gs_app_set_state (repo, GS_APP_STATE_REMOVING);
        gs_packagekit_helper_add_app (helper, repo);
-       g_mutex_lock (&self->task_mutex);
-       gs_packagekit_task_setup (GS_PACKAGEKIT_TASK (self->task), GS_PLUGIN_ACTION_DISABLE_REPO, 
gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
-       results = pk_client_repo_enable (PK_CLIENT (self->task),
+
+       task_disable_repo = gs_packagekit_task_new (plugin);
+       pk_client_set_interactive (PK_CLIENT (task_disable_repo), gs_plugin_has_flags (plugin, 
GS_PLUGIN_FLAGS_INTERACTIVE));
+       gs_packagekit_task_setup (GS_PACKAGEKIT_TASK (task_disable_repo), GS_PLUGIN_ACTION_DISABLE_REPO, 
gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
+
+       results = pk_client_repo_enable (PK_CLIENT (task_disable_repo),
                                         gs_app_get_id (repo),
                                         FALSE,
                                         cancellable,
                                         gs_packagekit_helper_cb, helper,
                                         error);
-       g_mutex_unlock (&self->task_mutex);
 
        /* pk_client_repo_enable() returns an error if the repo is already enabled. */
        if (results != NULL &&


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]