Commit graph

13107 commits

Author SHA1 Message Date
Robin Gareus
e9ee454ced Prefer Stereo-Balance Panner for stereo tracks 2017-07-03 02:24:53 +02:00
Robin Gareus
ebc8e352bf FP8: toggle editor/mixer (now that "link" button is used)
..and some TODO notes.
2017-07-03 01:42:36 +02:00
Robin Gareus
3a42383975 Add binding-proxy to ClickBox 2017-07-02 22:48:39 +02:00
Robin Gareus
b942c76df9 FP8: properly control enum+integer parameters. 2017-07-02 21:05:42 +02:00
Robin Gareus
7ed775a716 Add API to step though parameter enumerations 2017-07-02 21:04:22 +02:00
Robin Gareus
0310f89971 FP8: Implement "Control-Link" 2017-07-02 18:19:13 +02:00
Robin Gareus
c4fcb12d12 Add control-focus notifications from bindable widgets. 2017-07-02 18:19:13 +02:00
Robin Gareus
6f986173f3 Controllable focus notification API
This allows to inform control-surfaces about the current GUI
control-element. "Link" control-surface interaction to GUI focus.
2017-07-02 18:19:13 +02:00
Len Ovens
ec76d7ce03 OSC: GUI indicate invalid port and set to old port on defocus if not valid 2017-07-02 08:28:34 -07:00
Robin Gareus
34c0e3f1c8 FP8: plugin GUI display options 2017-07-02 02:06:48 +02:00
Robin Gareus
15b6b29112 Prepare x-thread signals plugin-GUI visibility 2017-07-02 01:58:16 +02:00
Robin Gareus
d1d6e696aa FP8: fix 2-line text 2017-07-02 01:57:21 +02:00
Robin Gareus
b2f3523ab6 Remove old libardour API for plugin UIs 2017-07-01 23:42:28 +02:00
Len Ovens
c42db10044 OSC: issue 7176 patch applied. shows plugin descriptors. 2017-07-01 13:13:04 -07:00
Len Ovens
2219021389 OSC: add feedback for solo isolate and solo safe to strips (issue 7161) 2017-07-01 11:49:08 -07:00
Len Ovens
8bc25fb971 OSC: add strip type flag for master and monitor to strip list 2017-07-01 11:14:55 -07:00
Robin Gareus
f413b83cb9 Fix thinko in dd3f922788 2017-07-01 18:31:55 +02:00
Robin Gareus
58beb02024 FP8: Use Mixer-Order 2017-07-01 17:11:55 +02:00
Len Ovens
a967a942d2 OSC: include all of select in feedback[13] 2017-06-30 20:47:42 -07:00
Len Ovens
296c9ae03e OSC: try to prevent race when clearing devices 2017-06-30 20:13:18 -07:00
Len Ovens
41bc5bc116 OSC: test param type in a way that works when optimized too. 2017-06-30 19:05:30 -07:00
Robin Gareus
d421e56fc0 FP8: Clear input port on close. Fixes crash when switching snapshots
The midi_input_handler for the AsyncMIDIPort is connected to the
main event-loop. Events may still be delivered after the surface was
destroyed.

That by itself is not harmful, unless a given message produces a reply:
The _output_port is already gone, FaderPort8::tx_midi crashes.
2017-07-01 02:55:47 +02:00
Johannes Mueller
f7452c2a3a Addressing #7371: don't trigger session->undo() from non-GUI-thread
When triggering Session::undo() or Session::redo() from a
non-GUI-thread (e.g. from a surface protocol) Ardour crashes if setting a
CairoWidget dirty due to a ENSURE_GUI_THREAD assertion. (see #7371)

By triggering undo by BasicUI::access_action() rather than by Session::undo()
we ensure that the GUI thread will finally call Session::undo().

So more like a workaround ... but better than crashing :)
2017-07-01 01:04:44 +02:00
Robin Gareus
1cbc91788f Don't invert azimuth & elevation display value 2017-06-30 20:01:53 +02:00
Robin Gareus
1682368052 NO-OP: whitespace 2017-06-30 19:56:40 +02:00
Robin Gareus
17bcb67af5 Remove cruft (ParameterDescriptor sets this) 2017-06-30 19:56:01 +02:00
Robin Gareus
389d2cab36 FP8: Scribble-strip display preferences 2017-06-30 19:55:03 +02:00
Robin Gareus
cd728fdd73 FP8: Allow to select Plugin Presets 2017-06-30 19:13:55 +02:00
Robin Gareus
1fe1d17ef8 FP8: don't allow to toggle Channelstrip bypass/enable 2017-06-30 02:31:36 +02:00
Robin Gareus
773c31afc0 FaderPort8 updates
* use 2 lines for Plugin Parameter Names
* Expose Plugin Bypass/Enable per plugin
 - Shift + Select in Plugin Select Mode
 - Bypass Button in Plugin Parameter Edit Mode
2017-06-30 01:59:12 +02:00
Robin Gareus
dd3f922788 Tweak LV2 float parameter printing 2017-06-30 01:56:49 +02:00
John Emmas
496ac30c41 Accommodate newly introduced source(s) in our MSVC project (gtkmm2ext) 2017-06-29 10:11:05 +01:00
John Emmas
33d30fdf57 Accommodate newly introduced source(s) in our MSVC project (cairocanvas) 2017-06-29 10:10:26 +01:00
John Emmas
fae592e8f4 Remove ambiguity ('CheckMenuItem' conflicts with an item already existing in MSVC) 2017-06-29 10:08:32 +01:00
Robin Gareus
d4928e0765 Fix multi-channel delaylines #7409 part 2/2 2017-06-29 04:40:54 +02:00
Robin Gareus
8e4eb42833 Fix send mono to stereo (or N to M; M > N) sends #7409 part 1/2 2017-06-29 04:40:00 +02:00
Robin Gareus
972e01f9c7 Add a convenience MenuHelper c'tor
This is pretty much Gtkmm's
  * CheckMenuElem::CheckMenuElem
  * MenuElem::MenuElem
except MenuItems are created with bool mnemonic = false;
2017-06-29 00:22:34 +02:00
Robin Gareus
d3510b5606 fix OSX builds (llmath compat) 2017-06-28 03:03:05 +02:00
Robin Gareus
1f5013b4a8 Distinguish error-messages.
The vast majority of errors reported by users as
  "Cannot configure audio/midi engine with session parameters"
have nothing to do with engine-parameters.
2017-06-27 20:28:45 +02:00
Robin Gareus
1dd4aab0b4 Update fluidsynth
Fix potential crashes in case fluid-synth runs into an OOM error,
and address a const-cast compiler warning.

Switch to track github repo (instead of sf.net git)
2017-06-27 20:12:46 +02:00
Robin Gareus
007f3cdbba Add convenience fn to compute a file's sha1sum 2017-06-26 19:39:40 +02:00
Tim Mayberry
a1cd4f8dfe Fix friend declaration in WaveView code for non-c++11 builds 2017-06-26 17:04:18 +10:00
Tim Mayberry
6e91ee071c Reimplementation of large parts of the WaveView class
The drawing itself should be unchanged but much of the rest of the
implementation has changed. The WaveViewThreads and WaveViewDrawingThread
classes were added and allow multiple drawing threads.

The Item::prepare_for_render interface is implemented by WaveView to enable
queuing draw requests for the drawing threads to process as soon as the state
change occurs during Editor::visual_changer, which often means the images will
be finished by the time they are needed in WaveView::render. This can
significantly reduce total render time and also flickering caused by images not
being ready for display.

If the drawing thread/s cannot finish the request by the time it is required in
WaveView::render then cancel it and draw the WaveViewImage in the GUI thread if
it is likely it can be completed in the current render pass/frame.  This change
also helps reduce the flickering caused by images not being ready with threaded
rendering, but with several drawing threads, drawing in the GUI thread may not
often occur (unless explicitly requested).

Allow unfinished images to be returned from the cache in
WaveView::prepare_for_render so that new draw requests aren't queued for
duplicate images. This reduces the amount of drawing for instance in
compositions where there are many instances of the same sample/waveform
displayed on the canvas as only a single image should be drawn.

Use a random width within a certain range for
WaveView::optimal_image_width_samples so that image drawing is less likely to
occur at the same time (which will cause a spike in render/draw time and
increase the chance of flickering waveforms).

Move implementations of the private WaveView classes into wave_view_private.h
and wave_view_private.cc source files.

Incorporate a fix for limiting the waveview image size to the cairo image size
limit.

Should hopefully Resolve: #6478
2017-06-26 08:40:47 +10:00
Tim Mayberry
4ddf97f5a2 Add Canvas::get_microseconds_since_render_start() method
Initial use is for the WaveView class to determine whether on not to draw the
waveform in the GUI thread.
2017-06-26 08:40:47 +10:00
Tim Mayberry
ab13e87ec2 Add Canvas::get_last_render_start_timestamp method 2017-06-26 08:40:47 +10:00
Tim Mayberry
8538ba35fe Only call Gtk::Widget::queue_draw_area in canvas when item and visible area intersect
Refactor GtkCanvas::request_redraw to use Rect::intersection
2017-06-26 08:40:47 +10:00
Tim Mayberry
c4e31fc322 Add an optional ArdourCanvas::Item::prepare_for_render interface
Called when an item has requested a redraw and intersects with visible
canvas area.

Also add Canvas::prepare_for_render that will call Item::prepare_for_render for
items visible on the canvas.
2017-06-26 08:40:47 +10:00
Tim Mayberry
dac25b8db9 Add PreRender signal to the canvas
Emitted by the canvas immediately before rendering.
2017-06-26 08:40:47 +10:00
Tim Mayberry
9618b6dcbb Whitespace fixes in canvas.h 2017-06-26 08:40:47 +10:00
Robin Gareus
de99d7c528 Allow saving state w/o backend
Connections are remembered by ARDOUR::Port to re-establish at load.
2017-06-25 22:03:42 +02:00