Commit graph

308 commits

Author SHA1 Message Date
Tim Mayberry
e6492319b1 Remove Apply button from Audio Setup dialog now that there is a start/stop button 2015-09-02 12:07:15 +10:00
Tim Mayberry
dd275327a4 Change "Stop" button into a Start/Stop button in Audio Setup dialog 2015-09-02 12:07:15 +10:00
Robin Gareus
c734f82ff2 use program-name for internal ports 2015-08-27 16:50:09 +02:00
Tim Mayberry
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
Robin Gareus
ad9cebe247 hide “Midi Setup” button on OSX and Windows. 2015-08-12 03:16:09 +02:00
Robin Gareus
687921a760 remove -Woverload-virtual ambiguity (from 1d3690d) 2015-08-11 23:50:56 +02:00
Robin Gareus
bf1b65029c update driver selection sensitivity 2015-08-11 22:04:28 +02:00
Robin Gareus
212a4c1f8d refine "Running" message. 2015-08-11 19:44:14 +02:00
Robin Gareus
6cc029f5da don't allow to change devices while engine is running. 2015-08-11 19:13:10 +02:00
Robin Gareus
52c25cab36 allow to stop engine for re-configure 2015-08-11 15:38:38 +02:00
Robin Gareus
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
Robin Gareus
a3b2b1bcfa Engine Dialog: use new API 2015-08-11 15:38:19 +02:00
Tim Mayberry
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
Tim Mayberry
c80e4c04c5 Extract two utility methods from EngineControl::set_samplerate/bufferize_popdown_strings 2015-08-11 14:13:06 +10:00
Tim Mayberry
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
Tim Mayberry
5e5db3c402 Check the default SR is available for a device when setting SR in EngineControl 2015-08-11 09:57:38 +10:00
Tim Mayberry
4651b10345 Remove unnecesary clearing of local variable in EngineControl 2015-08-11 09:46:46 +10:00
Tim Mayberry
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
Tim Mayberry
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
Tim Mayberry
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
Tim Mayberry
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
Tim Mayberry
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
Tim Mayberry
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
Tim Mayberry
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
Tim Mayberry
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
Tim Mayberry
001c1a0910 Extract part of EngineControl::backend_changed into EngineControl::update_midi_options 2015-08-11 09:24:52 +10:00
Tim Mayberry
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
Tim Mayberry
c8f8f75831 Add debug output to blocking/unblocking signals in EngineControl dialog 2015-08-11 09:24:52 +10:00
Tim Mayberry
1bd15bef6c Add methods in EngineControl for blocking and unblocking signals
Only intended to be used with the nested SignalBlocker class
2015-08-11 09:24:52 +10:00
Tim Mayberry
324b5ffbac Refactor part of EngineDialog ctor into connect_changed_signals method 2015-08-11 09:24:52 +10:00
Tim Mayberry
ecd9950413 Add some basic debug output in EngineControl dialog
This should make it easier to see what affect subsequent commits have on
reducing the amount of unnecessary device querying and signal emission
2015-08-11 09:24:52 +10:00
Tim Mayberry
f428cb4bf1 Refactor part of EngineControl::set_state into new set_current_state method 2015-08-11 09:24:52 +10:00
Tim Mayberry
a9c149216d Remove unused method in EngineControl dialog 2015-08-11 09:24:52 +10:00
Tim Mayberry
caae165cd3 Defer to device_changed when input or output devices change
This reduces the amount of unnecessary querying of samplerate and buffersize
for devices
2015-08-11 09:24:51 +10:00
Robin Gareus
7a3b6e6d08 remove more cruft (dead assignments) 2015-08-07 21:16:14 +02:00
Tim Mayberry
160c185fc0 Don't call AudioBackend::enumerate_drivers for Backend states without driver selection
AudioBackend::enumerate_drivers is not supposed to be called for backends that
don't support driver selection. The wavesaudio backend asserts if the method is
called.
2015-08-07 21:41:37 +10:00
Tim Mayberry
815ffcd567 Set active text in buffer_size combo in EngineControl dialog
Fixes issue with empty buffer size combo when switching to the PA ASIO driver
2015-08-07 01:42:28 +10:00
Tim Mayberry
2437bbbe23 Fix state restoration in Engine dialog for Backends with driver selection
Connect to the backend_combo changed signal after setting state as calling
backend_combo.set_active_text() in set_state was triggering backend_changed(),
which would then see the driver_combo had not been set and set it to the
incorrect value.

The value/name of the backend needs to be restored first then we can populate
the driver combo and set the correct active entry from the saved state. After
which backend_changed() will populate the device combo's etc so they can then
be set to the correct active values from the saved state.
2015-07-31 09:59:53 +10:00
Robin Gareus
364022a35a add locale-guard when saving engine states, also #6418 2015-07-08 11:34:57 +02:00
Paul Davis
3d2f298fb2 Change message about JACK already running to be less scary 2015-06-03 13:48:43 -04:00
Robin Gareus
4d2bc612f2 engine dialog fixes for multiple devices 2015-06-01 01:01:42 +02:00
Tim Mayberry
d9f24a46aa Allow selection of input and output devices in EngineDialog for backends that support it
Some refactoring was necessary to avoid code duplication

Restoring of device state for input and output devices still doesn't work
correctly. I'm not quite sure what the issue is at this stage.
2015-05-31 20:02:07 +02:00
John Emmas
15bf19961f When running on Windows, hide the Engine dialog before calling 'push_state_to_backend()'
For some reason we don't understand 'push_state_to_backend()' can interfere with hiding the dialog (causing a partially hidden dialog to remain on screen). It's most likely a timing issue with the Windows version of GTK. Fortunately, reversing the calling order seems to fix it - BUT...

If there's no session loaded yet, the user can be left with a very long wait while nothing seems to be happening. The next thing the user would normally see would be the splash image. So let's display it slightly early (so the user can at least see that something's happening).

Sadly, it's all very kludgy - but a lot better than what we had before...  :)
2015-04-14 11:22:14 +01:00
Robin Gareus
40e3a01459 and 2c89ec5, keep backend running. 2015-04-07 15:23:24 +02:00
Robin Gareus
2c89ec5c0b Query backend’s setup_required() every time. fixes #6041 2015-04-04 02:39:30 +02:00
Robin Gareus
28730b4939 fancy plural form. 2015-03-31 04:16:24 +02:00
Ben Loftis
87e95e4bf1 add colon to match other labels 2015-03-26 21:43:33 -05:00
Robin Gareus
675444c7dd Engine: remember state only on “Apply” and “OK”
filed under “another scary engine dialog change”
2015-03-22 01:28:33 +01:00
Robin Gareus
7b1c7efc1c work-around engine dialog crashes.
Thanks to brilliant detective work by John E. we
can now reveal that the actual crash in
EngineControl::print_channel_count() is caused
by a seemingly unrelated exception.

The root cause however is waves/ASIO backend reporting a
buffersize that is not in list of available buffer-sizes
it reported earlier.
2015-03-16 15:09:59 +01:00
Ben Loftis
23a6526de7 remove unneeded debug output 2015-03-07 17:10:19 -06:00