38301c808c
Fix sample-rate override when changing backends or devices
...
This indirectly honors session_loaded() and prevents that restoring
engine-state can change the sample-rate dropdown when a session is loaded.
2018-11-11 18:50:01 +01:00
30b087ab3d
globally change all use of "frame" to refer to audio into "sample".
...
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
2017-09-18 12:39:17 -04:00
d4a089937b
Populate the buffer size combo when connecting to jack that is already running.
...
This would crash (throw) if ardour was started with an invalid backend
(alsa with no devices avaliable) and then changec to an alredy running
jack. The invalid backend at the start would leave the buffer
size combo empty and switching to the running jack backend did not populate
buffer size list.
2017-08-10 09:49:22 -05:00
cc4df34697
SNAFU. Allow changing engine buffer-size while running
2017-08-04 03:39:41 +02:00
5c92613698
Separate Ardour UI widgets into dedicated library
2017-07-17 21:06:04 +02:00
Thomas Brand
63ea7b6516
NO-OP whitespace (updated GH PR #357 )
2017-07-01 19:28:26 +02:00
6d35b3c4e4
Remove locale_guard.h from ardour/ardour.h header
...
Add to source files that use LocaleGuard
Results in far less recompiling when pbd/locale_guard.h changes
2017-06-22 10:48:38 +10:00
921bdd4a51
Fix engine-state history.
...
Remove old code to remove duplicate engine state which was used to
work-around a bug since 3.x saved duplicates but broke with 4.x separate
i/o devices.
Add a new variant to purge old unused states per backend (after sorting).
2017-06-16 22:32:56 +02:00
6ece6ed407
EngineDialog: immediadely push latency changes to running backends
2017-04-27 21:10:10 +02:00
2039fc6fd0
Don't directly call into engine to stop latency detection.
2017-04-27 19:45:56 +02:00
e1c4fe8edc
Show the splash-screen if the engine dialog's run() hid it.
2017-04-20 23:16:09 +02:00
057bb167ca
Run gtk-main iteration after hiding dialogs
2017-04-20 23:15:13 +02:00
ab30f45bba
Use PBD::to_string to convert period count in EngineControl class
...
The functionality is the same so might as well use it.
2017-04-19 09:36:59 +10:00
0739bada9e
Use PBD::to_string to convert bufsize to string in EngineControl class
...
string_compose uses std::ostream/stringstream which will insert thousands
separators in some locales. This was not a problem when LocaleGuard set the
global C++ locale to "C"
2017-04-19 09:36:59 +10:00
800112c3b7
Use XMLNode::get/set_property API in EngineDialog class
...
Fixes many of the type conversions but I doubt any would have been an issue.
LocaleGuard is no longer necessary
2017-04-19 09:36:55 +10:00
3e43585fa1
Pop splash on dialog response - not d'tor.
...
A Dialog Window may not be tightly scoped, and may be around
for a while (query settings from the dialog instance). The destructor
may only be called later.
2017-04-01 16:40:07 +02:00
16cdab6327
Fix engine state ordering
2017-04-01 15:39:02 +02:00
8bed793b48
Properly desensitize various engine-controls.
...
MIDI system and channel-count cannot be changed while the engine is
running.
2017-04-01 14:37:35 +02:00
05b0102668
ArdourButton: if _act_on_release is true, only trigger actions/signal clicks on key release, and vice versa
...
This should really be split in separate semantics for key and button events.
Fixes a subtle but nasty bug in the EngineDialog where the change of the default focus
widget from a Gtk::Button (acts on press) to an ArdourButton (acts on release) caused
events occuring after a dialog has grabbed focus to trigger button clicks
2017-03-01 22:30:20 +01:00
d766095732
Further tweaks to EngineDialog z-axis stacking
...
When there's no main window (initial setup, no transient parent),
preset a normal window listed in the task-bar.
The duality the Engine Dialog being used as Ardour-WM managed non-modal
Window (Menu > A/M Setup) and modal Dialog (AudioEngineSetupRequired)
complicates this a bit.
2016-12-07 14:50:17 +01:00
9d7279d012
and a more intrusive KDE workaround
2016-11-30 23:19:44 +01:00
4c4061359c
pay some attention to the special guest of the night: KDE window stacking
2016-11-30 22:52:06 +01:00
84fc68cf08
Ensure the window-close button is visible for the Engine-Dialog.
2016-11-30 18:13:35 +01:00
27d0b67b8f
Remove close/OK buttons from engine dialog
2016-11-30 14:44:36 +01:00
0cb9d4a3d2
Restrict Device selection to valid choices.
2016-11-26 15:31:21 +01:00
0b8a7d3429
Don't allow recursive calls to EngineDialog
...
OK -> start_engine() can eg. trigger an interactive plugin scan,
which in turn leaves the EngineDialog responsive. changing settings
or clicking OK again can lead to undefined behavior.
2016-11-19 04:54:36 +01:00
05bc96f4d2
move MIDI port options out of engine dialog and into prefs
2016-10-19 17:49:35 -04:00
86106bcfa1
set up MIDI port treeview columns *just once*
2016-10-18 21:18:32 -04:00
7a79a9da9a
correctly show both the old MIDI setup tab (device oriented) and the new one (port oriented)
2016-10-18 18:14:00 -04:00
8357775fbb
further work on a MIDI port functionality dialog
2016-10-18 18:01:03 -04:00
1d39500e64
beginnings of a tab in Audio/MIDI setup to manage MIDI port functionality
2016-10-18 16:56:35 -04:00
3d256ff2c2
Constrain Samplerate selection when session is loaded
...
Ardour does not allow to change the rate of a session itself.
2016-09-30 16:50:00 +02:00
7f8ec25e25
fix sample-rate display: show active (not desired) rate
2016-09-30 16:50:00 +02:00
46d2b03af0
retain desired samplerate when switching backends
2016-07-24 13:00:15 +02:00
34fe25c603
remove debug noise
2016-07-20 16:33:40 -04:00
cf52d6e4b4
enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h
2016-07-14 14:45:23 -04:00
bd865c8c90
fix plural form snafu in translation macro
2016-07-14 06:20:17 -04:00
f2f9c2303a
fix initial engine state (windows: buffered-i/o; all: channelcount)
2016-05-21 16:24:35 +02:00
6d343ba3c6
fix LocaleGuard contstructor ( 3dc77280
)
2016-05-07 12:19:41 +02:00
3dc7728038
we always only use the "C" locale when saving.
2016-05-05 21:49:56 +02:00
17ace643e4
OMNIBUS COMMIT: prefer const XMLNode::property method (and provide a real one)
2016-05-04 23:09:45 -04:00
e14b6428c3
slightly better version of 0077923d
, don't stop the engine for nothing
2016-04-18 17:37:14 +02:00
0077923dea
update flow when loading a new session with different SR.
2016-04-18 15:18:36 +02:00
652468a344
add a try-autostart-engine option (most recently used settings)
2016-04-18 14:11:22 +02:00
db56a4da71
Engine Dialog: exclude optional widgets from show_all.
2016-04-18 14:07:49 +02:00
0812f3bac1
Hide "Use Buffered I/O" button when switching to backend with no control
...
Which in this case means the JACK backend where the server is already running.
2016-02-13 10:00:59 +10:00
2b4ac72e5d
Add button to Engine Dialog to choose between Portaudio callback and blocking API
2016-02-11 12:15:07 +10:00
d54a320374
Show/Hide midi calibrate button based on AudioBackend::enumerate_devices
...
Rather than use an ifdef to only pack the button on linux just hide the button
if the backend doesn't enumerate the devices.
2016-02-11 12:15:07 +10:00
c0a843a905
fix device-list update concurrency issue.
...
It may happen that during push_state_to_backend() a device is
reconfigured in a way that triggers a "Device Changed" callback before
the engine is started. This callback can trigger a change to the
configuration that will be used when the engine is actually started.
This has been seen on OSX in conjunction with Aggregate Devices
(even if the aggregate is not used, but the device which is used
is also part of an aggregate)
example: HW changed callback arrives, device-list is re-populated,
*A*irplay" is at the top of the list, Airplay supports only 44.1K,
Samplerate changes... later save also writes this new rate to the file.
2016-01-29 01:12:53 +01:00
aeaf0610d4
GUI for latency-measurement signal-level
2016-01-14 19:25:23 +01:00
fed6c9f3ad
tweak GUI for backends where nperiods is driver dependent.
2015-12-05 13:55:37 +01:00
b5c5b7e493
GUI chores to show nperiods option.
2015-12-05 01:53:13 +01:00
2529b9db96
GUI handling for live latency-measurement
2015-12-04 17:34:46 +01:00
e9b0b4bcf0
remove duplicate check (same is done few lines above)
2015-12-04 17:05:21 +01:00
911830726e
prefer recently used states.
2015-11-23 22:45:16 +01:00
b754c4341e
restore last used driver+devices for a given backend.
2015-11-23 22:45:16 +01:00
8431d102b9
Do not restore engine state if we don't have control
...
When connecting to already running jack, display jack's buffersize
correctly.
2015-10-06 14:40:51 +02:00
ef0f13cb84
Stop engine when clicking back button in latency measurement tab of EngineControl dialog
...
The engine is started when you switch to latency measurement tab but it isn't
stopped if you just click the back button without measuring for latency.
2015-10-06 13:29:57 +10:00
cd4dd08931
Add EngineControl::stop_engine method to show errors when stopping engine
...
This replaces using ARDOUR_UI::disconnect_from_session which is only used by the
EngineControl class. ARDOUR_UI::disconnect_from_session also disconnects from
the AudioEngine::Halted signal which seems unnecessary as Halted is not emitted
when stopping the engine and calling update_sample_rate() which is already
handled when the AudioEngine::Stopped signal is emitted.
2015-10-06 13:29:57 +10:00
1195aeb64e
Handle all errors when starting backend in EngineDialog
2015-10-06 13:29:57 +10:00
4b9e738636
Align switch statement with case labels to reduce indentation in EngineDialog
2015-10-06 13:29:57 +10:00
dc36b063bf
remove unused fstream includes
2015-10-05 22:15:18 +02:00
22b07e0233
NOOP, remove trailing tabs/whitespace.
2015-10-05 16:17:49 +02:00
520b78b841
Add parent window argument to ARDOUR_UI::check_audioengine
...
Ensures relevant placement of the dialog when presented
2015-10-01 09:10:19 +10:00
73acaf6de6
Display warning when closing Audio Setup dialog with engine stopped
...
Only show warning when a session is loaded
2015-10-01 09:10:19 +10:00
463bd470e8
Don't hide Audio Setup dialog when clicking 'OK' if engine fails to start
...
This has to be handled in two places, in ARDOUR_UI::do_audio_midi_setup and in
the dialogs response handler and in as the window can also be triggered via the
window action manager.
2015-10-01 09:10:19 +10:00
b7fbd4e9c0
fix a small memleak.
...
downcase(char*) requires free(), downcase(std::string) does not.
2015-09-10 17:39:31 +02:00
fc079a0ea3
initialize some uninitialized variables.
...
really just nitpicking (keep valgrind clean).
2015-09-06 21:54:54 +02:00
dbe3500f24
Add utility method for choosing which device/s to display in Audio Setup dialog
2015-09-02 12:07:15 +10:00
25ff056921
Use previously set buffer size in EngineDialog if possible
...
This is also to support refreshing of devices so that the buffer size isn't
reset.
2015-09-02 12:07:15 +10:00
9626e0c413
Add "Refresh Devices" button in Audio Setup dialog for backends that support it
...
This allows the portaudio library to be reinitialized to pick up new devices
and changes to ASIO buffer changes made externally.
2015-09-02 12:07:15 +10:00
88b332412c
Add some debugging output for state restoration in Audio Setup dialog
2015-09-02 12:07:15 +10:00
e6492319b1
Remove Apply button from Audio Setup dialog now that there is a start/stop button
2015-09-02 12:07:15 +10:00
dd275327a4
Change "Stop" button into a Start/Stop button in Audio Setup dialog
2015-09-02 12:07:15 +10:00
c734f82ff2
use program-name for internal ports
2015-08-27 16:50:09 +02:00
59a8fc9e64
Fix state restoration in EngineControl dialog for backends with driver selection
...
We want to save the driver name even when the engine is running and the driver
combo is insensitive
2015-08-13 00:19:01 +10:00
ad9cebe247
hide “Midi Setup” button on OSX and Windows.
2015-08-12 03:16:09 +02:00
687921a760
remove -Woverload-virtual ambiguity (from 1d3690d
)
2015-08-11 23:50:56 +02:00
bf1b65029c
update driver selection sensitivity
2015-08-11 22:04:28 +02:00
212a4c1f8d
refine "Running" message.
2015-08-11 19:44:14 +02:00
6cc029f5da
don't allow to change devices while engine is running.
2015-08-11 19:13:10 +02:00
52c25cab36
allow to stop engine for re-configure
2015-08-11 15:38:38 +02:00
6bb51a26eb
consolidate engine-dialog widget sensitivity logic.
...
Use a single function with the complete logic.
Since the callgraph is complex, there is internal state as well as GUI
state (different pages), do not rely on individual methods to get it
right.
A widget's sensitivity should only be controlled by one function.
2015-08-11 15:38:31 +02:00
a3b2b1bcfa
Engine Dialog: use new API
2015-08-11 15:38:19 +02:00
22acbc1cee
Fix to ensure there are always sample rates and buffer sizes in the dropdown
...
This can happen if both input and output devices are set to None for instance
on backends that report no supported SR or buffer size for the None device.
2015-08-11 14:20:43 +10:00
c80e4c04c5
Extract two utility methods from EngineControl::set_samplerate/bufferize_popdown_strings
2015-08-11 14:13:06 +10:00
a8daa36901
Use a union of all sample rates and buffer sizes for all devices in EngineControl
...
Using just the input device doesn't work in the case that the input device is
an invalid/None device
2015-08-11 14:00:57 +10:00
5e5db3c402
Check the default SR is available for a device when setting SR in EngineControl
2015-08-11 09:57:38 +10:00
4651b10345
Remove unnecesary clearing of local variable in EngineControl
2015-08-11 09:46:46 +10:00
ab7cf8c7a7
Fix state restoration in EngineControl dialog for backends with driver selection
...
This also prevents backend_changed from being called more that once in the
EngineControl ctor
2015-08-11 09:24:53 +10:00
c165c991ca
Use the current backend device names to set active text in device dropdowns if available
...
Compare device names with enumerated devices rather than assume an empty string
has special meaning
2015-08-11 09:24:53 +10:00
6451060bd1
Remove Unwinder instances in EngineControl::set_*_device_popdown_strings
...
These are not necessary since SignalBlocker will prevent signal emission
2015-08-11 09:24:53 +10:00
495dd2e52a
Compare the string returned by backend->driver_name() against driver names in EngineControl
...
Don't assume an empty string has any meaning and compare string returned with
enumerated drivers
2015-08-11 09:24:52 +10:00
e20d74079a
Remove Unwinder instance from EngineControl::set_driver_popdown_strings
...
Not necessary now that signal emission is blocked via backend_changed()
2015-08-11 09:24:52 +10:00
dfa9a2326a
Reimplement method using code extracted from EngineDialog::backend_changed
...
EngineControl::set_driver_popdown_strings is now like the other
set_*_popdown_strings methods in that it sets the driver strings and a
default active entry and returns false if no drivers are available.
2015-08-11 09:24:52 +10:00
1bea87e10a
Remove previous fix attempt at restoring state for backends with driver selection
...
The fix does not work properly anymore for the Portaudio backend and needs
fixing in another manner. It will now be temporarily back to the broken state
it was in before the "fix".
2015-08-11 09:24:52 +10:00
eaf5ed2b18
Use SignalBlocker class in EngineControl to block widget signal emission
...
This stops a whole lot of redundant signal emission and makes it much easier to
think about what is going on. It also makes the dialog present much faster.
2015-08-11 09:24:52 +10:00
001c1a0910
Extract part of EngineControl::backend_changed into EngineControl::update_midi_options
2015-08-11 09:24:52 +10:00
6e0d062773
Move call to EngineControl::device_changed into EngineControl::list_devices ()
...
This prevents devices_changed from being called twice with backends that have
separate input and output devices
2015-08-11 09:24:52 +10:00
c8f8f75831
Add debug output to blocking/unblocking signals in EngineControl dialog
2015-08-11 09:24:52 +10:00