diff options
| author | marios <marios8543@gmail.com> | 2022-04-29 21:51:01 +0300 |
|---|---|---|
| committer | marios <marios8543@gmail.com> | 2022-04-29 21:51:01 +0300 |
| commit | 89ecca7c30f3898e4b772b7c9786fa58e5bb4ada (patch) | |
| tree | 1b36c97b8484cd22860e8d7289aca7466c59e53b | |
| parent | 7d74e98f4f8a47daac85b5de1ef6aa29a1637c06 (diff) | |
| download | decky-loader-89ecca7c30f3898e4b772b7c9786fa58e5bb4ada.tar.gz decky-loader-89ecca7c30f3898e4b772b7c9786fa58e5bb4ada.zip | |
Fixed callsign debug bug, Fixed process spawn and termination bugv1.2.2
| -rw-r--r-- | plugin_loader/loader.py | 4 | ||||
| -rw-r--r-- | plugin_loader/plugin.py | 8 |
2 files changed, 9 insertions, 3 deletions
diff --git a/plugin_loader/loader.py b/plugin_loader/loader.py index f060b5b6..fea5f149 100644 --- a/plugin_loader/loader.py +++ b/plugin_loader/loader.py @@ -58,6 +58,7 @@ class Loader: self.logger.info(f"plugin_path: {self.plugin_path}") self.plugins = {} self.callsigns = {} + self.callsign_matches = {} self.import_plugins() if live_reload: @@ -85,13 +86,14 @@ class Loader: else: self.plugins[plugin.name].stop() self.plugins.pop(plugin.name, None) - self.callsigns.pop(plugin.callsign, None) + self.callsigns.pop(self.callsign_matches[file], None) if plugin.passive: self.logger.info(f"Plugin {plugin.name} is passive") callsign = str(time()) plugin.callsign = callsign self.plugins[plugin.name] = plugin.start() self.callsigns[callsign] = plugin + self.callsign_matches[file] = callsign self.logger.info(f"Loaded {plugin.name}") except Exception as e: self.logger.error(f"Could not load {file}. {e}") diff --git a/plugin_loader/plugin.py b/plugin_loader/plugin.py index 88857797..30626058 100644 --- a/plugin_loader/plugin.py +++ b/plugin_loader/plugin.py @@ -2,8 +2,10 @@ from importlib.util import spec_from_file_location, module_from_spec from asyncio import get_event_loop, new_event_loop, set_event_loop, start_unix_server, open_unix_connection, sleep, Lock from os import path, setuid from json import loads, dumps, load -from concurrent.futures import ProcessPoolExecutor from time import time +from multiprocessing import Process +from signal import signal, SIGINT +from sys import exit class PluginWrapper: def __init__(self, file, plugin_directory, plugin_path) -> None: @@ -25,6 +27,8 @@ class PluginWrapper: self.passive = not path.isfile(self.file) def _init(self): + signal(SIGINT, lambda s, f: exit(0)) + set_event_loop(new_event_loop()) if self.passive: return @@ -73,7 +77,7 @@ class PluginWrapper: def start(self): if self.passive: return self - ProcessPoolExecutor().submit(self._init, self) + Process(target=self._init).start() return self def stop(self): |
