diff options
author | Robin Gareus <robin@gareus.org> | 2020-02-27 22:16:12 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2020-02-27 22:16:12 +0100 |
commit | 08559abc106283cd8c57a8dfc9dd3b6aa79fdcac (patch) | |
tree | bd772f74b80d3de4ae2f06ddc036c72ab340413f /libs/ardour/session.cc | |
parent | ef512d412d860b873f0bb478ee1b40217c50054e (diff) |
Add signals to indicate Punch/Loop constraints
This is in preparation for GUI sensitivity of Loop and Punch actions.
Diffstat (limited to 'libs/ardour/session.cc')
-rw-r--r-- | libs/ardour/session.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index a2c61c8bb8..74c0fbb22e 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -1428,12 +1428,25 @@ Session::loop_is_possible () const return g_atomic_int_get(&_punch_or_loop) != OnlyPunch; } +void +Session::reset_punch_loop_constraint () +{ + if (g_atomic_int_get (&_punch_or_loop) == NoConstraint) { + return; + } + g_atomic_int_set (&_punch_or_loop, NoConstraint); + PunchLoopConstraintChange (); /* EMIT SIGNAL */ +} + bool Session::maybe_allow_only_loop (bool play_loop) { if (!(get_play_loop () || play_loop)) { return false; } bool rv = g_atomic_int_compare_and_exchange (&_punch_or_loop, NoConstraint, OnlyLoop); + if (rv) { + PunchLoopConstraintChange (); /* EMIT SIGNAL */ + } if (rv || loop_is_possible ()) { unset_punch (); return true; @@ -1447,6 +1460,9 @@ Session::maybe_allow_only_punch () { return false; } bool rv = g_atomic_int_compare_and_exchange (&_punch_or_loop, NoConstraint, OnlyPunch); + if (rv) { + PunchLoopConstraintChange (); /* EMIT SIGNAL */ + } return rv || punch_is_possible (); } |