[gnome-software: 10/20] gs-plugin-loader: Refactor job_process_async() task creation
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software: 10/20] gs-plugin-loader: Refactor job_process_async() task creation
- Date: Thu, 17 Mar 2022 10:27:11 +0000 (UTC)
commit 34025046f9caba6a04731e988d8742e4bad0ac84
Author: Philip Withnall <pwithnall endlessos org>
Date: Mon Mar 7 16:01:04 2022 +0000
gs-plugin-loader: Refactor job_process_async() task creation
So that the task is created a single place, rather than four places.
Signed-off-by: Philip Withnall <pwithnall endlessos org>
lib/gs-plugin-loader.c | 32 +++++++++++++++-----------------
1 file changed, 15 insertions(+), 17 deletions(-)
---
diff --git a/lib/gs-plugin-loader.c b/lib/gs-plugin-loader.c
index 4bb4731e1..cdccf0388 100644
--- a/lib/gs-plugin-loader.c
+++ b/lib/gs-plugin-loader.c
@@ -3658,28 +3658,36 @@ gs_plugin_loader_job_process_async (GsPluginLoader *plugin_loader,
GsPluginAction action;
GsPluginLoaderHelper *helper;
g_autoptr(GTask) task = NULL;
- g_autoptr(GCancellable) cancellable_job = g_cancellable_new ();
+ g_autoptr(GCancellable) cancellable_job = NULL;
g_autofree gchar *task_name = NULL;
g_return_if_fail (GS_IS_PLUGIN_LOADER (plugin_loader));
g_return_if_fail (GS_IS_PLUGIN_JOB (plugin_job));
g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
+ job_class = GS_PLUGIN_JOB_GET_CLASS (plugin_job);
+ action = gs_plugin_job_get_action (plugin_job);
+
+ if (job_class->run_async != NULL) {
+ task_name = g_strdup_printf ("%s %s", G_STRFUNC, G_OBJECT_TYPE_NAME (plugin_job));
+ cancellable_job = (cancellable != NULL) ? g_object_ref (cancellable) : NULL;
+ } else {
+ task_name = g_strdup_printf ("%s %s", G_STRFUNC, gs_plugin_action_to_string (action));
+ cancellable_job = g_cancellable_new ();
+ }
+
+ task = g_task_new (plugin_loader, cancellable_job, callback, user_data);
+ g_task_set_name (task, task_name);
+
/* If the job provides a more specific async run function, use that.
*
* FIXME: This will eventually go away when
* gs_plugin_loader_job_process_async() is removed. */
- job_class = GS_PLUGIN_JOB_GET_CLASS (plugin_job);
if (job_class->run_async != NULL) {
#ifdef HAVE_SYSPROF
gint64 begin_time_nsec G_GNUC_UNUSED = SYSPROF_CAPTURE_CURRENT_TIME;
-#endif
- task = g_task_new (plugin_loader, cancellable, callback, user_data);
- task_name = g_strdup_printf ("%s %s", G_STRFUNC, G_OBJECT_TYPE_NAME (plugin_job));
- g_task_set_name (task, task_name);
-#ifdef HAVE_SYSPROF
g_task_set_task_data (task, GSIZE_TO_POINTER (begin_time_nsec), NULL);
#endif
@@ -3688,14 +3696,9 @@ gs_plugin_loader_job_process_async (GsPluginLoader *plugin_loader,
return;
}
- action = gs_plugin_job_get_action (plugin_job);
- task_name = g_strdup_printf ("%s %s", G_STRFUNC, gs_plugin_action_to_string (action));
-
/* check job has valid action */
if (action == GS_PLUGIN_ACTION_UNKNOWN) {
g_autofree gchar *job_str = gs_plugin_job_to_string (plugin_job);
- task = g_task_new (plugin_loader, cancellable_job, callback, user_data);
- g_task_set_name (task, task_name);
g_task_return_new_error (task,
GS_PLUGIN_ERROR,
GS_PLUGIN_ERROR_NOT_SUPPORTED,
@@ -3707,8 +3710,6 @@ gs_plugin_loader_job_process_async (GsPluginLoader *plugin_loader,
if (action == GS_PLUGIN_ACTION_REMOVE || action == GS_PLUGIN_ACTION_REMOVE_REPO) {
if (remove_app_from_install_queue (plugin_loader, gs_plugin_job_get_app (plugin_job))) {
GsAppList *list = gs_plugin_job_get_list (plugin_job);
- task = g_task_new (plugin_loader, cancellable, callback, user_data);
- g_task_set_name (task, task_name);
g_task_return_pointer (task, g_object_ref (list), (GDestroyNotify) g_object_unref);
return;
}
@@ -3773,9 +3774,6 @@ gs_plugin_loader_job_process_async (GsPluginLoader *plugin_loader,
}
/* check required args */
- task = g_task_new (plugin_loader, cancellable_job, callback, user_data);
- g_task_set_name (task, task_name);
-
switch (action) {
case GS_PLUGIN_ACTION_SEARCH:
case GS_PLUGIN_ACTION_SEARCH_FILES:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]