This is an automated email from the git hooks/post-receive script.
git pushed a commit to branch tymux
in repository terminology.
View the commit online.
commit 0bf4d62550aaec921bb9bc5ba7bad476dfa5f26f
Author: [email protected] <[email protected]>
AuthorDate: Mon Mar 23 22:23:43 2026 -0600
feat: wire tymux pause/resume callbacks in termio.c
Add _smart_tymux_pause/_smart_tymux_resume static callbacks inside the
HAVE_TYMUX block in termio.c. Both are wired into sd->tymux->cb_pause
and sd->tymux->cb_resume at the two attach sites: _termio_tymux_switch_job
and termio_add.
Because Term is an opaque type in termio.c, signal emission is routed
through a new term_pause_set(Term*, Eina_Bool) helper added to win.c/win.h,
following the same pattern as term_tymux_indicator_set. The resume callback
additionally triggers a full repaint via cb_change.
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
---
src/bin/termio.c | 30 ++++++++++++++++++++++++++++++
src/bin/win.c | 10 ++++++++++
src/bin/win.h | 1 +
3 files changed, 41 insertions(+)
diff --git a/src/bin/termio.c b/src/bin/termio.c
index 2b148131..24d69041 100644
--- a/src/bin/termio.c
+++ b/src/bin/termio.c
@@ -3843,6 +3843,28 @@ _tymux_name_valid(const char *name)
return EINA_TRUE;
}
+static void
+_smart_tymux_pause(void *data)
+{
+ Evas_Object *obj = data;
+ Termio *sd = evas_object_smart_data_get(obj);
+ if (!sd || !sd->term) return;
+ term_pause_set(sd->term, EINA_TRUE);
+}
+
+static void
+_smart_tymux_resume(void *data)
+{
+ Evas_Object *obj = data;
+ Termio *sd = evas_object_smart_data_get(obj);
+ if (!sd || !sd->term) return;
+ term_pause_set(sd->term, EINA_FALSE);
+
+ /* Force a full repaint by triggering the change callback */
+ if (sd->tymux && sd->tymux->cb_change.func)
+ sd->tymux->cb_change.func(sd->tymux->cb_change.data);
+}
+
/* Deferred tymux switch — runs on the next Ecore main loop iteration
* so we don't free the PTY while we're still inside its read handler. */
static void
@@ -3904,6 +3926,10 @@ _termio_tymux_switch_job(void *data)
sd->tymux->cb_bell.data = ""
sd->tymux->cb_exit.func = _smart_pty_exited;
sd->tymux->cb_exit.data = ""
+ sd->tymux->cb_pause.func = _smart_tymux_pause;
+ sd->tymux->cb_pause.data = ""
+ sd->tymux->cb_resume.func = _smart_tymux_resume;
+ sd->tymux->cb_resume.data = ""
if (sd->term)
term_tymux_indicator_set(sd->term, EINA_TRUE);
@@ -4496,6 +4522,10 @@ termio_add(Evas_Object *win, Config *config,
sd->tymux->cb_bell.data = ""
sd->tymux->cb_exit.func = _smart_pty_exited;
sd->tymux->cb_exit.data = ""
+ sd->tymux->cb_pause.func = _smart_tymux_pause;
+ sd->tymux->cb_pause.data = ""
+ sd->tymux->cb_resume.func = _smart_tymux_resume;
+ sd->tymux->cb_resume.data = ""
}
else
#endif
diff --git a/src/bin/win.c b/src/bin/win.c
index c0eabaaf..1eba848e 100644
--- a/src/bin/win.c
+++ b/src/bin/win.c
@@ -469,6 +469,16 @@ term_tymux_indicator_set(Term *term, Eina_Bool on)
term->is_tymux = on ? 1 : 0;
_tymux_indicator_update(term);
}
+
+void
+term_pause_set(Term *term, Eina_Bool paused)
+{
+ EINA_SAFETY_ON_NULL_RETURN(term);
+ if (paused)
+ elm_layout_signal_emit(term->bg, "pause,on", "terminology");
+ else
+ elm_layout_signal_emit(term->bg, "pause,off", "terminology");
+}
#endif
/* }}} */
diff --git a/src/bin/win.h b/src/bin/win.h
index f9636b5c..3caed84b 100644
--- a/src/bin/win.h
+++ b/src/bin/win.h
@@ -93,6 +93,7 @@ void main_trans_update(void);
#ifdef HAVE_TYMUX
void term_tymux_indicator_set(Term *term, Eina_Bool on);
+void term_pause_set(Term *term, Eina_Bool paused);
#endif
#endif
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.