From f57809c87658ab56630db0923daeb5af48415a11 Mon Sep 17 00:00:00 2001 From: Eugenio Parodi Date: Tue, 1 Aug 2023 11:41:13 +0100 Subject: [PATCH 1/2] FIX: #153 Non blocking SIGWINCH --- TermTk/TTkCore/TTkTerm/term_unix.py | 16 +++++++++++++--- tools/check.import.sh | 1 + 2 files changed, 14 insertions(+), 3 deletions(-) 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 61d994e4..3de1d394 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" \ From 33244eef5f27b86018ae87a08fcb1bcfaeae5bd9 Mon Sep 17 00:00:00 2001 From: Eugenio Parodi Date: Tue, 1 Aug 2023 11:57:49 +0100 Subject: [PATCH 2/2] Annoted tags are no more required to gen the build version --- tools/prepareBuild.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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}"