From 8fb087be14e786af2ab3e8c14f1f40b4f8264d55 Mon Sep 17 00:00:00 2001 From: MattHag <16444067+MattHag@users.noreply.github.com> Date: Sun, 15 Sep 2024 14:53:37 +0200 Subject: [PATCH] logitech_receiver: Remove GDK dependency --- lib/logitech_receiver/base.py | 18 +++++++++++++----- lib/solaar/listener.py | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/lib/logitech_receiver/base.py b/lib/logitech_receiver/base.py index ae97b10a..7685c37f 100644 --- a/lib/logitech_receiver/base.py +++ b/lib/logitech_receiver/base.py @@ -23,6 +23,7 @@ import dataclasses import logging import struct import threading +import typing from contextlib import contextmanager from random import getrandbits @@ -42,8 +43,9 @@ from . import hidpp20_constants from .common import LOGITECH_VENDOR_ID from .common import BusID -gi.require_version("Gdk", "3.0") -from gi.repository import GLib # NOQA: E402 +if typing.TYPE_CHECKING: + gi.require_version("Gdk", "3.0") + from gi.repository import GLib # NOQA: E402 logger = logging.getLogger(__name__) @@ -178,9 +180,15 @@ def receivers_and_devices(): yield from hidapi.enumerate(filter) -def notify_on_receivers_glib(callback): - """Watch for matching devices and notifies the callback on the GLib thread.""" - return hidapi.monitor_glib(GLib, callback, filter) +def notify_on_receivers_glib(glib: GLib, callback): + """Watch for matching devices and notifies the callback on the GLib thread. + + Parameters + ---------- + glib + GLib instance. + """ + return hidapi.monitor_glib(glib, callback, filter) def open_path(path): diff --git a/lib/solaar/listener.py b/lib/solaar/listener.py index 4539756f..ef76d8a8 100644 --- a/lib/solaar/listener.py +++ b/lib/solaar/listener.py @@ -332,7 +332,7 @@ def setup_scanner(status_changed_callback, setting_changed_callback, error_callb _status_callback = status_changed_callback _setting_callback = setting_changed_callback _error_callback = error_callback - base.notify_on_receivers_glib(_process_receiver_event) + base.notify_on_receivers_glib(GLib, _process_receiver_event) def _process_add(device_info, retry):