]> sigrok.org Git - libsigrokdecode.git/commit
ir_irmp: Python binding, support instance locking and context manager
authorGerhard Sittig <redacted>
Sun, 26 Dec 2021 07:31:02 +0000 (08:31 +0100)
committerGerhard Sittig <redacted>
Sun, 26 Dec 2021 12:45:09 +0000 (13:45 +0100)
commit7395d57b3c722229d18aa70fbee7e60a60902304
tree29fc7c43174cf8d90b232f180b7698fe974895ef
parent7cfa9f7aa2426c617990f3ecfcabed8765aff46c
ir_irmp: Python binding, support instance locking and context manager

Extend the ctypes wrapper for the IRMP decoder core. Add routines for
the instance state creation and lock management. Implement metamethods
for Python context managers which lock the instance to protect the C
library's internal state from changing unexpectedly. Add my copyright
for the non-trivial changes.

This commit eliminates the limitation to a single IRMP decoder core for
the sigrok process to use. Multiple Python callers can synchronize their
library use, and see a consistent library state across the scope of the
context manager. It's essential though that callers leave the context
to not block other callers for extended periods of time.
decoders/ir_irmp/irmp_library.py