diff --git a/lib/util/sp-process-model.c b/lib/util/sp-process-model.c index e83b132a..8d55e368 100644 --- a/lib/util/sp-process-model.c +++ b/lib/util/sp-process-model.c @@ -236,6 +236,7 @@ sp_process_model_do_reload (gpointer user_data) self->reload_source = 0; task = g_task_new (self, NULL, sp_process_model_merge_cb, NULL); + g_task_set_priority (task, G_PRIORITY_LOW); g_task_run_in_thread (task, sp_process_model_reload_worker); return G_SOURCE_REMOVE; @@ -247,6 +248,26 @@ sp_process_model_new (void) return g_object_new (SP_TYPE_PROCESS_MODEL, NULL); } +void +sp_process_model_reload (SpProcessModel *self) +{ + g_autoptr(GTask) task = NULL; + + g_return_if_fail (SP_IS_PROCESS_MODEL (self)); + + if (self->reload_source != 0) + { + g_source_remove (self->reload_source); + self->reload_source = 0; + } + + task = g_task_new (self, NULL, NULL, NULL); + g_task_set_priority (task, G_PRIORITY_LOW); + g_task_run_in_thread_sync (task, sp_process_model_reload_worker); + + sp_process_model_merge_cb (G_OBJECT (self), G_ASYNC_RESULT (task), NULL); +} + void sp_process_model_queue_reload (SpProcessModel *self) { diff --git a/lib/util/sp-process-model.h b/lib/util/sp-process-model.h index 8b16037b..300ad90a 100644 --- a/lib/util/sp-process-model.h +++ b/lib/util/sp-process-model.h @@ -28,6 +28,7 @@ G_BEGIN_DECLS G_DECLARE_FINAL_TYPE (SpProcessModel, sp_process_model, SP, PROCESS_MODEL, GObject) SpProcessModel *sp_process_model_new (void); +void sp_process_model_reload (SpProcessModel *self); void sp_process_model_queue_reload (SpProcessModel *self); G_END_DECLS