diff --git a/TermTk/TTkCore/TTkTerm/term_unix.py b/TermTk/TTkCore/TTkTerm/term_unix.py index 56bbefa7..274f24ea 100644 --- a/TermTk/TTkCore/TTkTerm/term_unix.py +++ b/TermTk/TTkCore/TTkTerm/term_unix.py @@ -23,6 +23,7 @@ # SOFTWARE. import sys, os, signal +from threading import Thread, Lock try: import termios except Exception as e: @@ -118,11 +119,20 @@ class TTkTerm(TTkTermBase): print(f'ERROR: {e}') TTkTermBase.getTerminalSize = _getTerminalSize + _sigWinChMutex = Lock() + + @staticmethod + def _sigWinChThreaded(): + if not TTkTerm._sigWinChMutex.acquire(blocking=False): return + while (TTkTerm.width, TTkTerm.height) != (wh:=TTkTerm.getTerminalSize()): + TTkTerm.width, TTkTerm.height = wh + if TTkTerm._sigWinChCb is not None: + TTkTerm._sigWinChCb(TTkTerm.width, TTkTerm.height) + TTkTerm._sigWinChMutex.release() + @staticmethod def _sigWinCh(signum, frame): - TTkTerm.width, TTkTerm.height = TTkTerm.getTerminalSize() - if TTkTerm._sigWinChCb is not None: - TTkTerm._sigWinChCb(TTkTerm.width, TTkTerm.height) + Thread(target=TTkTerm._sigWinChThreaded).start() @staticmethod def _registerResizeCb(callback): diff --git a/tools/check.import.sh b/tools/check.import.sh index 77ace93b..34e268e0 100755 --- a/tools/check.import.sh +++ b/tools/check.import.sh @@ -24,6 +24,7 @@ __check(){ -e "term.*.py:import sys, os, signal" \ -e "term.*.py:from .term_base import TTkTermBase" \ -e "term_pyodide.py:import pyodideProxy" \ + -e "term_unix.py:from threading import Thread, Lock" \ -e "timer.py:import importlib" \ -e "timer_unix.py:import threading" \ -e "timer_pyodide.py:import pyodideProxy" \ diff --git a/tools/prepareBuild.sh b/tools/prepareBuild.sh index 206c57c3..de8c1550 100755 --- a/tools/prepareBuild.sh +++ b/tools/prepareBuild.sh @@ -28,10 +28,10 @@ _TOOLS_BASE_PATH=$(dirname $(readlink -f $0)) _BASE_PATH=${_TOOLS_BASE_PATH}/.. _TMP_PATH=${_BASE_PATH}/tmp -_MAJOR=$( git describe | sed 's,\([0-9]*\)\..*,\1,' ) -_MINOR=$( git describe | sed 's,[0-9]*\.\([0-9]*\)\..*,\1,' ) -_PATCH=$( git describe | sed 's,[0-9]*\.[0-9]*\.\([0-9]*\)[^0-9].*,\1,' ) -_STAGE=$( git describe | sed 's,[^-]*-a-\?\([0-9]*\).*,\1,' ) +_MAJOR=$( git describe --tags | sed 's,\([0-9]*\)\..*,\1,' ) +_MINOR=$( git describe --tags | sed 's,[0-9]*\.\([0-9]*\)\..*,\1,' ) +_PATCH=$( git describe --tags | sed 's,[0-9]*\.[0-9]*\.\([0-9]*\)[^0-9].*,\1,' ) +_STAGE=$( git describe --tags | sed 's,[^-]*-a-\?\([0-9]*\).*,\1,' ) _VERSION="${_MAJOR}.${_MINOR}.${_PATCH}-a${_STAGE}"