ardour.git
7 years agoa reverb is a reverb is a reverb 5.1
Robin Gareus [Wed, 24 Aug 2016 21:45:02 +0000 (23:45 +0200)]
a reverb is a reverb is a reverb

7 years agoadd missing include
Robin Gareus [Wed, 24 Aug 2016 21:06:52 +0000 (23:06 +0200)]
add missing include

7 years agofix copy/paste mistake
Robin Gareus [Wed, 24 Aug 2016 20:46:36 +0000 (22:46 +0200)]
fix copy/paste mistake

7 years agoNO-OP: whitespace
Robin Gareus [Wed, 24 Aug 2016 20:39:44 +0000 (22:39 +0200)]
NO-OP: whitespace

7 years agolessons learned from a-fluidsynth
Robin Gareus [Wed, 24 Aug 2016 19:32:45 +0000 (21:32 +0200)]
lessons learned from a-fluidsynth

7 years agoOSC: Add preset loading to OSC GUI
Len Ovens [Wed, 24 Aug 2016 17:07:21 +0000 (10:07 -0700)]
OSC: Add preset loading to OSC GUI

7 years agoreduce initial fluidsynth load
Robin Gareus [Wed, 24 Aug 2016 15:51:15 +0000 (17:51 +0200)]
reduce initial fluidsynth load

7 years agoTake process-lock before processor-lock
Robin Gareus [Wed, 24 Aug 2016 15:21:43 +0000 (17:21 +0200)]
Take process-lock before processor-lock

This [hopefully] fixes jack1 zombification on session-load with large
plugin-states. Previously it was possible to block
Route::process_output_buffers().

7 years agoprevent a unlikely race: concurrent restore() + work_response ()
Robin Gareus [Wed, 24 Aug 2016 13:38:36 +0000 (15:38 +0200)]
prevent a unlikely race: concurrent restore() + work_response ()

7 years agoupdate fluidsynth patch
Robin Gareus [Wed, 24 Aug 2016 11:04:03 +0000 (13:04 +0200)]
update fluidsynth patch

7 years agotweak a-fluidsynth reinit strategy.
Robin Gareus [Wed, 24 Aug 2016 11:01:40 +0000 (13:01 +0200)]
tweak a-fluidsynth reinit strategy.

reset synth in offline thread, queue panic on deactivate to be
called in run() after first re-activate.

Initial activation does not warrant a panic.

7 years agostrip down libfluidsynth a bit more
Robin Gareus [Wed, 24 Aug 2016 11:00:20 +0000 (13:00 +0200)]
strip down libfluidsynth a bit more

7 years agoFix string to float conversion when typing gain values in Gain Meter
Tim Mayberry [Sun, 21 Aug 2016 11:52:04 +0000 (21:52 +1000)]
Fix string to float conversion when typing gain values in Gain Meter

Remove the LocaleGuard so that the value of LC_NUMERIC is that of the users
locale and sscanf will parse the string correctly. For instance, with a locale
like nl_NL or fr_FR where the decimal point is different than the "C" locale,
only the number up to the decimal point will be parsed by sscanf and input
values will be rounded down.

7 years agoadd support for reverb & chorus in a-fluidsynth
Robin Gareus [Wed, 24 Aug 2016 03:33:18 +0000 (05:33 +0200)]
add support for reverb & chorus in a-fluidsynth

7 years agoARDOUR::FluidSynth automatically assign first 16 channels
Robin Gareus [Wed, 24 Aug 2016 03:31:30 +0000 (05:31 +0200)]
ARDOUR::FluidSynth automatically assign first 16 channels

7 years agofix generic GUI layout for no-control UIs
Robin Gareus [Wed, 24 Aug 2016 01:18:28 +0000 (03:18 +0200)]
fix generic GUI layout for no-control UIs

7 years agoa-fluidsynth
Robin Gareus [Wed, 24 Aug 2016 01:18:14 +0000 (03:18 +0200)]
a-fluidsynth

7 years agoproperly fix copy/paste typos
Robin Gareus [Wed, 24 Aug 2016 00:26:39 +0000 (02:26 +0200)]
properly fix copy/paste typos

7 years agofluidsynth 1.1.6 actually
Robin Gareus [Wed, 24 Aug 2016 00:21:30 +0000 (02:21 +0200)]
fluidsynth 1.1.6 actually

7 years agofix windows build/runtime
Robin Gareus [Tue, 23 Aug 2016 20:58:03 +0000 (22:58 +0200)]
fix windows build/runtime

7 years agoexample fluidsynth lua script (currently: hardcoded .sf2)
Robin Gareus [Tue, 23 Aug 2016 20:19:34 +0000 (22:19 +0200)]
example fluidsynth lua script (currently: hardcoded .sf2)

7 years agoadd FluidSynth Lua Bindings
Robin Gareus [Tue, 23 Aug 2016 20:18:04 +0000 (22:18 +0200)]
add FluidSynth Lua Bindings

7 years agoadd basic libardour wrapper for fluidsynth (for Lua bindings)
Robin Gareus [Tue, 23 Aug 2016 20:17:46 +0000 (22:17 +0200)]
add basic libardour wrapper for fluidsynth (for Lua bindings)

7 years agoImport libfluidsynth into the Ardour codebase
Robin Gareus [Tue, 23 Aug 2016 16:50:54 +0000 (18:50 +0200)]
Import libfluidsynth into the Ardour codebase

7 years agoDon't attempt to snap to the current musical grid when dragging tempi.
nick_m [Tue, 23 Aug 2016 17:41:42 +0000 (03:41 +1000)]
Don't attempt to snap to the current musical grid when dragging tempi.

7 years agoTempo marker movement snaps to the future grid, rather than the current one.
nick_m [Tue, 23 Aug 2016 17:38:46 +0000 (03:38 +1000)]
Tempo marker movement snaps to the future grid, rather than the current one.

- fixes jittery tempo movement when snapping within large gradients.

7 years agoRound to bar correctly in TempoMap::exact_beat_at_frame_locked().
nick_m [Tue, 23 Aug 2016 17:23:04 +0000 (03:23 +1000)]
Round to bar correctly in TempoMap::exact_beat_at_frame_locked().

7 years agoNyquist (pronounce it like Klopstock!)
Robin Gareus [Tue, 23 Aug 2016 11:44:00 +0000 (13:44 +0200)]
Nyquist (pronounce it like Klopstock!)

7 years agofix threaded state restore (duplicate calls to restore during init)
Robin Gareus [Tue, 23 Aug 2016 11:40:42 +0000 (13:40 +0200)]
fix threaded state restore (duplicate calls to restore during init)

and also allow immediate work during use latency-compute runs.

At session load, Ardour calls a plugins "set default" state (GUI thread).
Some plugins may schedule work during state-restore. Ardour immediately
proceeded to restore the actual session plugin state without processing
the already scheduled work and without calling run() for a plugin
to apply state synchronously.

7 years agoOSC: Tweak GUI to be more user obvious.
Len Ovens [Mon, 22 Aug 2016 20:23:04 +0000 (13:23 -0700)]
OSC: Tweak GUI to be more user obvious.

7 years agoupdate session utils for API change in 636522
Robin Gareus [Mon, 22 Aug 2016 16:52:08 +0000 (18:52 +0200)]
update session utils for API change in 636522

7 years agoprint a warning if CoreAudio falls back to non realtime priority
Robin Gareus [Mon, 22 Aug 2016 15:38:45 +0000 (17:38 +0200)]
print a warning if CoreAudio falls back to non realtime priority

7 years agobetter late than never
Robin Gareus [Mon, 22 Aug 2016 14:29:16 +0000 (16:29 +0200)]
better late than never

7 years agouse user-specified insertion point when adding new tracks/busses with a template
Paul Davis [Mon, 22 Aug 2016 13:44:48 +0000 (09:44 -0400)]
use user-specified insertion point when adding new tracks/busses with a template

7 years agouse insert at specification when duplicating tracks/busses
Paul Davis [Mon, 22 Aug 2016 13:41:53 +0000 (09:41 -0400)]
use insert at specification when duplicating tracks/busses

7 years agofix signed/unsigned warning
Paul Davis [Mon, 22 Aug 2016 13:41:28 +0000 (09:41 -0400)]
fix signed/unsigned warning

7 years agonew libardour API for Session::new_route_from_template to allow specifying insertion...
Paul Davis [Mon, 22 Aug 2016 13:41:08 +0000 (09:41 -0400)]
new libardour API for Session::new_route_from_template to allow specifying insertion point

7 years agoadd insert-at combo selector for duplicate tracks dialog
Paul Davis [Mon, 22 Aug 2016 13:06:13 +0000 (09:06 -0400)]
add insert-at combo selector for duplicate tracks dialog

7 years agoParse information from harvid independent from the locale
Robin Gareus [Mon, 22 Aug 2016 12:47:19 +0000 (14:47 +0200)]
Parse information from harvid independent from the locale

This fixes a crash where aspect ratio "0.5" from harvid was interpreted
as "0" in the French locale (expecting 0,5).

Note: harvid uses a portable, not localized snprintf() implementation

7 years agofactor out "new route insertion point" enums so they can be shared by relevant dialogs
Paul Davis [Mon, 22 Aug 2016 12:40:12 +0000 (08:40 -0400)]
factor out "new route insertion point" enums so they can be shared by relevant dialogs

7 years agoremove debug output from last commit
Paul Davis [Mon, 22 Aug 2016 01:44:33 +0000 (21:44 -0400)]
remove debug output from last commit

7 years agoediting plugin with generic GUI has a tooltip saying it uses the primary modifier...
Paul Davis [Mon, 22 Aug 2016 01:41:57 +0000 (21:41 -0400)]
editing plugin with generic GUI has a tooltip saying it uses the primary modifier. Make it so

7 years agopong on the major scale (and fix a typo)
Robin Gareus [Mon, 22 Aug 2016 01:26:14 +0000 (03:26 +0200)]
pong on the major scale (and fix a typo)

7 years agoRepeat INSENSITIVE colors instead of relying on inheritance
Julien "_FrnchFrgg_" RIVAUD [Sun, 21 Aug 2016 23:57:20 +0000 (01:57 +0200)]
Repeat INSENSITIVE colors instead of relying on inheritance

Since inheritance doesn't seem to work on some systems, though it worked
on mine.

7 years agoOSC: populate check boxes with default settings at session start
Len Ovens [Sun, 21 Aug 2016 23:31:22 +0000 (16:31 -0700)]
OSC: populate check boxes with default settings at session start

7 years agoOSC: set global variables in global space - crash fix
Len Ovens [Sun, 21 Aug 2016 21:15:54 +0000 (14:15 -0700)]
OSC: set global variables in global space - crash fix

7 years agoremove close buttons from Bundle Manager (rely on WM provided button)
Robin Gareus [Sun, 21 Aug 2016 20:58:52 +0000 (22:58 +0200)]
remove close buttons from Bundle Manager (rely on WM provided button)

7 years agoeven more consistent labels in the mundle manager
Robin Gareus [Sun, 21 Aug 2016 20:58:01 +0000 (22:58 +0200)]
even more consistent labels in the mundle manager

7 years agomore musical pong. uhm ping.
Robin Gareus [Sun, 21 Aug 2016 20:57:18 +0000 (22:57 +0200)]
more musical pong. uhm ping.

7 years agoFix another crash at exit:
Robin Gareus [Sun, 21 Aug 2016 20:08:54 +0000 (22:08 +0200)]
Fix another crash at exit:

Collecting bindings after ::finish() has already destroyed half the GUI
will result in memory corruption invalid Glib::RefPtr<Gtk::Action>

 Gtkmm2ext::ActionMap::get_actions()
 Gtkmm2ext::Bindings::get_all_actions()
 KeyEditor::Tab::populate()
 KeyEditor::refresh()
 Editor::set_script_action_name()
 LuaInstance::session_going_away()
 PBD::Destructible::drop_references()
 ARDOUR::Session::destroy()
 ARDOUR::Session::~Session()
 ARDOUR_UI::finish()

7 years agoOSC GUI: Add Strip types and feedback check boxes
Len Ovens [Sun, 21 Aug 2016 20:25:11 +0000 (13:25 -0700)]
OSC GUI: Add Strip types and feedback check boxes

7 years agoResolve Bundle Manager Input/Output label ambiguity
Robin Gareus [Sun, 21 Aug 2016 17:12:16 +0000 (19:12 +0200)]
Resolve Bundle Manager Input/Output label ambiguity

7 years agoNO-OP: more source code comments
Robin Gareus [Sun, 21 Aug 2016 15:43:24 +0000 (17:43 +0200)]
NO-OP: more source code comments

7 years agoMerge set_pango_fontsize() into reset_dpi()
Julien "_FrnchFrgg_" RIVAUD [Sun, 21 Aug 2016 09:51:54 +0000 (11:51 +0200)]
Merge set_pango_fontsize() into reset_dpi()

… since reset_dpi() is the only caller.

7 years agoSilence a GCC initialization order warning
Julien "_FrnchFrgg_" RIVAUD [Sun, 21 Aug 2016 08:51:47 +0000 (10:51 +0200)]
Silence a GCC initialization order warning

7 years agorefurbish a-pong
Robin Gareus [Sun, 21 Aug 2016 10:34:15 +0000 (12:34 +0200)]
refurbish a-pong

* add code comments
* support no-inplace audio processing
* display score
* add re-init & difficulty settings

7 years agoclean up a-pong
Robin Gareus [Sat, 20 Aug 2016 23:36:50 +0000 (01:36 +0200)]
clean up a-pong

7 years agoExclude dev/example Lua scripts from packages
Robin Gareus [Sat, 20 Aug 2016 22:41:49 +0000 (00:41 +0200)]
Exclude dev/example Lua scripts from packages

7 years agoshowcase
Robin Gareus [Sat, 20 Aug 2016 22:23:55 +0000 (00:23 +0200)]
showcase

7 years agoLua bind MonitorProcessor
Robin Gareus [Fri, 19 Aug 2016 19:31:38 +0000 (21:31 +0200)]
Lua bind MonitorProcessor

7 years agoAvoid jitter of track headers width when changing automation states
Julien "_FrnchFrgg_" RIVAUD [Sat, 20 Aug 2016 16:32:37 +0000 (18:32 +0200)]
Avoid jitter of track headers width when changing automation states

7 years agoMake knobs size requests dynamic
Julien "_FrnchFrgg_" RIVAUD [Sat, 20 Aug 2016 16:12:49 +0000 (18:12 +0200)]
Make knobs size requests dynamic

At the point of creation, the automate_button size request is wrong
since it has not the correct style yet. Instead of trying ugly hacks to
fix that, connect to the knob's size_request signal and get the button's
requisition only when needed. If the system font changes to one that has
different extents (even if the point size is the same), the UI will thus
correctly update.

7 years agoDo not constrain vertical size without need
Julien "_FrnchFrgg_" RIVAUD [Sat, 20 Aug 2016 16:11:55 +0000 (18:11 +0200)]
Do not constrain vertical size without need

A value of -1 means "let the widget use its natural size in that
direction".

7 years agoUse ArdourButton::Square mode instead of ad-hoc sizing
Julien "_FrnchFrgg_" RIVAUD [Sat, 20 Aug 2016 16:11:13 +0000 (18:11 +0200)]
Use ArdourButton::Square mode instead of ad-hoc sizing

7 years agoUse set_sizing_text in generic plugin ui
Julien "_FrnchFrgg_" RIVAUD [Sat, 20 Aug 2016 14:05:18 +0000 (16:05 +0200)]
Use set_sizing_text in generic plugin ui

7 years agoInvalidate char_pixel_* on possible font change
Julien "_FrnchFrgg_" RIVAUD [Sat, 20 Aug 2016 14:01:15 +0000 (16:01 +0200)]
Invalidate char_pixel_* on possible font change

So that the padding and other elements always correctly depend on the
font instead of the default GTK font (which might have a wildly
different size from the fixed size fonts of Ardour's custom theme).

7 years agoArdourButton: add text for measuring decoupled from display text
Julien "_FrnchFrgg_" RIVAUD [Sat, 20 Aug 2016 13:46:41 +0000 (15:46 +0200)]
ArdourButton: add text for measuring decoupled from display text

In the normal course of events, an ArdourButton requests just enough
space to display its elements. In particular the size will change when
the text does. Yet, in several cases it is better to avoid layout jittering; until now ArdourButton users manually set a static size on the button at creation time.

Introduce new API to set the text used for measuring the button size
separately from the text that will be displayed. In most cases this
enables the callers to replace

    set_size_request_to_display_given_text(button, text, w, h);

where w and h were hard-coded to cater for other button elements, by

    button.set_sizing_text(text);

which will make ArdourButton correctly compute the size request in all
cases with its real elements and padding. ArdourButton users can call

    button.set_sizing_text("");

to get the size request depend on displayed text (which is the default).

7 years agoFix colors of disabled spin buttons (and maybe others)
Julien "_FrnchFrgg_" RIVAUD [Fri, 19 Aug 2016 22:25:22 +0000 (00:25 +0200)]
Fix colors of disabled spin buttons (and maybe others)

The insensitive state should not get a base color that's the same as the
enabled one, or the difference is not visible enough (only the text
color changes). In fact, since the goal of the entry modifications is to
aid visibility during user input, there is no reason to override the
insensitive colors.

Just inherit the insensitive colors of the global style.

Also fix a comment that was attached to the wrong declaration.

7 years agoOSC: Add setup to GUI
Len Ovens [Fri, 19 Aug 2016 21:22:55 +0000 (14:22 -0700)]
OSC: Add setup to GUI

7 years agofix optimized build compilation
Robin Gareus [Fri, 19 Aug 2016 20:38:10 +0000 (22:38 +0200)]
fix optimized build compilation

7 years agoAmend last commit - remove some code.
nick_m [Fri, 19 Aug 2016 19:41:12 +0000 (05:41 +1000)]
Amend last commit - remove some code.

7 years agoSwap tempo/meter colours when hovering. Use entered marker for these as well.
nick_m [Fri, 19 Aug 2016 18:36:52 +0000 (04:36 +1000)]
Swap tempo/meter colours when hovering. Use entered marker for these as well.

- Note : entered_marker modifies the 'p' press, locating to the
  currently hovered-over marker.

7 years agoAdd a colour for music-locked meters.
nick_m [Fri, 19 Aug 2016 18:33:51 +0000 (04:33 +1000)]
Add a colour for music-locked meters.

7 years agofix missing API for no-app-nap when building on OS X < 10.9
Paul Davis [Fri, 19 Aug 2016 17:19:23 +0000 (13:19 -0400)]
fix missing API for no-app-nap when building on OS X < 10.9

7 years agoRevert last commit (269a08a2b1).
nick_m [Fri, 19 Aug 2016 15:58:56 +0000 (01:58 +1000)]
Revert last commit (269a08a2b1).

7 years agoAllow both types of constrained drag (again).
nick_m [Fri, 19 Aug 2016 15:46:04 +0000 (01:46 +1000)]
Allow both types of constrained drag (again).

- Holding the constraint modifier at the time of grab gives constrained x.

- Holding the constraint modifier after the grab but before the first motion
  constrains to the direction of first movement.

7 years agoExtending an empty selection selects the clicked region.
nick_m [Fri, 19 Aug 2016 15:34:53 +0000 (01:34 +1000)]
Extending an empty selection selects the clicked region.

- fixes a crash where the first operation on loading a session
  is a constrained drag

7 years agoand another typo gone in in 9702020
Robin Gareus [Fri, 19 Aug 2016 15:21:51 +0000 (17:21 +0200)]
and another typo gone in in 9702020

7 years agoadd code to disable AppNap on OS X/MacOS
Paul Davis [Fri, 19 Aug 2016 15:12:05 +0000 (11:12 -0400)]
add code to disable AppNap on OS X/MacOS

Should build on versions before 10.9 and run everywhere due to respondsToSelector check.

7 years agofix typo in 9702020
Robin Gareus [Fri, 19 Aug 2016 14:23:32 +0000 (16:23 +0200)]
fix typo in 9702020

7 years agoRemove unused lines in clearlooks.rc.in
Julien "_FrnchFrgg_" RIVAUD [Fri, 19 Aug 2016 13:49:24 +0000 (15:49 +0200)]
Remove unused lines in clearlooks.rc.in

7 years agoad rest of Stripable API to lua
Paul Davis [Fri, 19 Aug 2016 13:40:07 +0000 (09:40 -0400)]
ad rest of Stripable API to lua

7 years agoMove 'round()' / 'trunc()' etc so that they won't conflict with any versions already...
John Emmas [Fri, 19 Aug 2016 11:56:34 +0000 (12:56 +0100)]
Move 'round()' / 'trunc()' etc so that they won't conflict with any versions already available in MSVC

7 years agoFor MSVC, 'using namespace whatever' doesn't help us to differentiate between ambiguo...
John Emmas [Fri, 19 Aug 2016 09:21:26 +0000 (10:21 +0100)]
For MSVC, 'using namespace whatever' doesn't help us to differentiate between ambiguous type names

so... given that 'Rectangle' is a type name that's commonly found in several different namespaces, we'll need to specify explicitly which one we want.

7 years ago'roundf()' wasn't introduced in MSVC until VS2013 - so for the time being, let's...
John Emmas [Fri, 19 Aug 2016 09:19:32 +0000 (10:19 +0100)]
'roundf()' wasn't introduced in MSVC until VS2013 - so for the time being, let's emulate it using 'floorf()'

7 years agoAvoid CamelCase in color names
Julien "_FrnchFrgg_" RIVAUD [Fri, 19 Aug 2016 12:41:36 +0000 (14:41 +0200)]
Avoid CamelCase in color names

7 years agohandle edge-case where jack-meta-data may be NULL, but the call succeeds
Robin Gareus [Fri, 19 Aug 2016 12:38:22 +0000 (14:38 +0200)]
handle edge-case where jack-meta-data may be NULL, but the call succeeds

this fixes #6968

7 years agofix failure to remove keyvalue from Keyboard::state on key release
Paul Davis [Fri, 19 Aug 2016 12:32:28 +0000 (08:32 -0400)]
fix failure to remove keyvalue from Keyboard::state on key release

7 years agoMIDI polyphonic pressure, part 2
Paul Davis [Thu, 18 Aug 2016 16:35:15 +0000 (12:35 -0400)]
MIDI polyphonic pressure, part 2

7 years agoattempt to handle poly-pressure (polyphonic aftertouch) similarly to other MIDI messages
Paul Davis [Thu, 18 Aug 2016 13:44:20 +0000 (09:44 -0400)]
attempt to handle poly-pressure (polyphonic aftertouch) similarly to other MIDI messages

7 years agoOSC:: needs the .h file too...
Len Ovens [Fri, 19 Aug 2016 02:16:53 +0000 (19:16 -0700)]
OSC:: needs the .h file too...

7 years agoOSC: make remote port setting possible, add default surface variables
Len Ovens [Fri, 19 Aug 2016 02:15:57 +0000 (19:15 -0700)]
OSC: make remote port setting possible, add default surface variables

7 years agoinitialize uninitialized variable
Robin Gareus [Fri, 19 Aug 2016 01:31:20 +0000 (03:31 +0200)]
initialize uninitialized variable

7 years agoUpdate automated Plugin Controlls when seeking and not rolling
Robin Gareus [Fri, 19 Aug 2016 01:31:08 +0000 (03:31 +0200)]
Update automated Plugin Controlls when seeking and not rolling

7 years agoMake automation state buttons active when not on Manual
Julien "_FrnchFrgg_" RIVAUD [Fri, 19 Aug 2016 00:48:39 +0000 (02:48 +0200)]
Make automation state buttons active when not on Manual

With the same color code as the fader automation button on mixer strips.
This is especially usefull when use_knob is true (e.g. for a-EQ) because
the automation only shows one letter and a "Write" state can thus be
easy to miss.

7 years agoRemove unused space in gain_meter's automation menu
Julien "_FrnchFrgg_" RIVAUD [Thu, 18 Aug 2016 22:12:48 +0000 (00:12 +0200)]
Remove unused space in gain_meter's automation menu

7 years agofix Aux-Send Panner Linking
Robin Gareus [Thu, 18 Aug 2016 23:14:21 +0000 (01:14 +0200)]
fix Aux-Send Panner Linking

7 years agofix SNAFU in track-properties script
Robin Gareus [Thu, 18 Aug 2016 17:49:16 +0000 (19:49 +0200)]
fix SNAFU in track-properties script

7 years agoAdd missing return
Julien "_FrnchFrgg_" RIVAUD [Thu, 18 Aug 2016 14:32:38 +0000 (16:32 +0200)]
Add missing return

7 years agoMake ArdourButton detect when a grab should stop being pressed
Julien "_FrnchFrgg_" RIVAUD [Thu, 18 Aug 2016 14:09:50 +0000 (16:09 +0200)]
Make ArdourButton detect when a grab should stop being pressed

If for whatever reason a grab is taken (e.g. a menu popping up) while
somebody is pressing a mouse button on an ArdourButton, then the
ArdourButton will not get the mouse button release event and will look
stuck in pressed position.

The leave notify event is fired if the mouse is still on the
ArdourButton while the grab is taken, but not if the user was dragging
the mouse outside of the button.

The only reliable way is to listen for the grab_broken_event signal.
Do so.