From d981f050951d2a23ec9f5e339a95368746895346 Mon Sep 17 00:00:00 2001 From: GeoffreyCoulaud Date: Thu, 18 May 2023 18:56:23 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A7=20using=20closures=20to=20pass=20d?= =?UTF-8?q?ata=20to=20Tasks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/importer/importer.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/importer/importer.py b/src/importer/importer.py index 2646bf8..bd44c7c 100644 --- a/src/importer/importer.py +++ b/src/importer/importer.py @@ -66,13 +66,14 @@ class Importer: for source in self.sources: self.n_source_tasks_created += 1 logging.debug("Importing games from source %s", source.id) - task = Gio.Task(None, None, self.source_task_callback, (source,)) - task.set_task_data((source,)) - tasks.add(task) - # Start all tasks - for task in tasks: - task.run_in_thread(self.source_task_thread_func) + def closure(task, obj, _data, cancellable): + self.source_task_thread_func(task, obj, (source,), cancellable) + + task = Gio.Task.new(None, None, self.source_task_callback, (source,)) + self.n_sgdb_tasks_created += 1 + task.run_in_thread(closure) + tasks.add(task) def create_dialog(self): """Create the import dialog""" @@ -133,11 +134,14 @@ class Importer: # Start sgdb lookup for game # HACK move to its own manager - task = Gio.Task( + + def closure(task, obj, _data, cancellable): + self.sgdb_task_thread_func(task, obj, (game,), cancellable) + + task = Gio.Task.new( None, self.sgdb_cancellable, self.sgdb_task_callback, (game,) ) - task.set_task_data((game,)) - task.run_in_thread(self.sgdb_task_thread_func) + task.run_in_thread(closure) def source_task_callback(self, _obj, _result, data): """Source import callback"""