13
0
Commit Graph

32202 Commits

Author SHA1 Message Date
838279c5e8
Fix C++11ism, enums are not classes in C++98 2021-06-24 18:14:06 +02:00
68e3d3d672
Fix endless loop if port-handle is n/a #8760 2021-06-24 17:20:44 +02:00
944eae53e6 Add a Midi port per Midi Tracer window that can be connected to for debugging. 2021-06-23 17:54:58 -05:00
6f251f8b2f Fix Midi Tracer handling of different port types
Transport Masters and Async MIDI port already have a parser available, so
just connect to it.

Normal Midi ports are the only one that need to use the Midi Tracers parser.
2021-06-23 17:54:58 -05:00
89eab2714f Fix double call error in midi tracer handling
Only basic midi ports use the _trace_parser and they enter
here via cycle_start which will pass the _trace_parser to
this function. No need to double up calls.
2021-06-23 17:54:58 -05:00
5adbcd0673 Add function to find transport master by port and expose midi parser 2021-06-23 17:54:58 -05:00
8237add6d2
Keep track of splash visibility behind dialogs
This fixes various issues, esp on macOS and Windows where
the window is only hidden, not re-stacked:

* plugin scan dialog hides the splash, but
  the plugin-manager emits BootMessage
  (this worked mostly because gtk event loop didn't
  have time to catch up)

* More than one dialog can pop back/front the splash,
  e.g. scripted session-setup or error messages when
  loading recent sessions.
2021-06-23 17:55:01 +02:00
8ad1405cf5
Fix crash when deleting Plugin after MIDI binding #8756
BindingProxy owns a PopUp prompter with 30 sec self-destruct
timeout. However ~BindingProxy explicitly destroys the PopUp.
Later the timeout can lead to a double-free.

This fixes a crash when deleting a plugin within 30 sec
after using MIDI learn.
2021-06-23 04:02:38 +02:00
da8e4da34f
Never say never 2021-06-23 01:02:23 +02:00
336319a1df SMF meta-events do not set running status while parsing the file 2021-06-22 14:18:03 -06:00
96febb8f26
Properly solve d'tor order (controllable first) #8756 2021-06-21 20:07:11 +02:00
John Emmas
43da7c6e6f Add/remove source(s) in our MSVC project (libardour) 2021-06-21 11:26:55 +01:00
db1821a363
Fix crash when removing plugin with mapped controllable #8756
MidiControlUI drops the reference to a given controllable in
its own thread. This can happen after the plugin is already
destroyed (even though the PBD::Controllable still exists).
2021-06-21 05:27:11 +02:00
3b1c52dbd0
Override Ubuntu global menu
This causes a crash in libappmenu-gtk-module.so
-> gtk_widget_get_toplevel() and apart from that breaks
ardour's layout with status-bar at the top.
2021-06-21 05:23:01 +02:00
1e5ccd4acc
Use poll timeout workaround on macOS only
Other systems implement proper poll according
to POSIX and return when the pipe is closed.
2021-06-21 03:48:04 +02:00
cc69274234
NO-OP: clang-format 2021-06-21 02:51:23 +02:00
0f7229fb02
Fix some C++11isms 2021-06-21 02:46:39 +02:00
Marijn Kruisselbrink
0a54f96a44
Add M4A support to the audio import dialog using FFMPEG.
This uses the existing optional runtime ffmpeg dependency to add support
for m4a files (and in theory whatever other file formats ffmpeg
supports) to the import audio dialog.

The same functionality is mostly already available via Session -> Open
Video, with the "import audio only" selection (even though m4a isn't
currently included as one of the video formats, it still works). Having
this in the import audio dialog however seems much more user friendly.
2021-06-21 02:30:36 +02:00
f4166fb61d Fix endless poll on macOS #8753
Harvid daemonizes and does not write anything
to stdout/err. as opposed to select(), poll() on
macOS does not return when the child process
terminates or is killed.

However poll() on an invalid FD does throw an
error and POLLNVAL is set.
2021-06-21 01:58:40 +02:00
e7466bddbc Push2: Clean up forward declarations 2021-06-18 13:53:53 -04:00
57a3db06f8 OSC: Fix potential crash on select-prev-route (#8670)
If the selection here is empty for whatever reason, it crashed with a null
pointer dereference.
2021-06-18 12:55:45 -04:00
45bd2c47d8 Brush Drag: refactor Brush-drag into its own Drag class (operation is still weird though) 2021-06-17 10:56:30 -05:00
69af0e6964 Abort a copy-drag in the case where it would result in a copy at the same location
also code cleanup: clear_draggingview_list() avoids duplicated code
2021-06-17 10:56:30 -05:00
87ecc9b4ca Slip Contents Drag: fix undo 2021-06-17 10:56:30 -05:00
295d9100ec Slip Contents Drag: slip_contents should obey edit_mode:Locked, and locked regions 2021-06-17 10:56:30 -05:00
f281e7e3c3 Slip Contents Drag: disambiguate Slip Contents from prior Contents Trim 2021-06-17 10:56:30 -05:00
3d8bccb508 Slip Contents Drag: remove ContentsTrim modifier from the region boundaries
*now that you can grab "anywhere" in the region, trim edges are inferior because they are hard to hit
*modifier had to change anyway (since CTRL is used as a copy-drag on both mac and win), so that invalidates prior muscle memory
*potentially frees up modifier on the trim edge for some other purpose (anchored_trim)
2021-06-17 10:56:27 -05:00
fea3fb9e71 Slip Contents Drag: add ContentsDrag 2021-06-17 10:56:22 -05:00
cc6b58ef00
Fix Windows builds (pthread handle abstraction) 2021-06-17 13:32:10 +02:00
5e1e55c982 use UTF8 lower-left corner chars in performance meter to indicate nesting of values 2021-06-16 19:29:03 -06:00
0b1d5e4a45
Remove dead assignment 2021-06-16 22:30:09 +02:00
f85bbaa97d
Fix C++11ism 2021-06-16 03:03:26 +02:00
4efe5b7ada continued tweaks for perf meters (including show average and dev in tooltip) 2021-06-15 14:03:55 -06:00
ad9ac0911e remove some timing stats that it seems unlikely we will use 2021-06-15 14:03:55 -06:00
c62b6e0e3e Control Points should not obey Lock Edit, which was intended to lock regions and notes at the time where they were recorded.
Control Points should ignore x_constraint which is set in Drag::motion and potentially other places.
The only thing that should prevent CP sliding is can_slide which is false for the points at the ends of a region.
2021-06-14 11:51:16 -05:00
Luciano Iam
04104b68a6 WebSockets: fix surface build for older systems 2021-06-14 14:50:48 +02:00
Luciano Iam
5fffe985bb WebSockets: update some source headers 2021-06-14 14:45:51 +02:00
Luciano Iam
6cc59ad8e6 WebSockets: update some comments in source
Based on feedback from libwebsockets author
https://github.com/warmcat/libwebsockets/issues/2322#issuecomment-860572124
2021-06-14 12:25:29 +02:00
Luciano Iam
cef81b8c23 WebSockets: minor update in JS code style
Use anonymous blocks { } instead of anonymous functions as the outermost scope
in some files.

Also fix incorrect wording for a comment
2021-06-14 10:36:10 +02:00
Luciano Iam
f1d7e1759a WebSockets: repeat 8baf275 for JS files
Like ec131fc does
2021-06-14 10:25:45 +02:00
Luciano Iam
ebee3a8010 WebSockets: remove unnecessary code
Leftovers from copy and pasting from test_ui.cc
2021-06-14 10:02:25 +02:00
Luciano Iam
cb73eb350d WebSockets: less invasive version of 5407232
There is no need to connect signals twice, can connect them directly to the
helper UI loop and skip the surface loop. Then let the server decide if it is
necessary to call lws_cancel_service() or not.

Also rename WebsocketsServer::should_request_write() to read_blocks_event_loop()
it makes more sense for the caller now on-demand write logic is completely
implemented by the server class.
2021-06-14 10:02:25 +02:00
fc6fd7973f
Reset performance counters along with xrun count
This is mainly relevant after session export, which uses
freewheeling and processing take much longer than running realtime.
2021-06-14 03:14:07 +02:00
80c11a763a
Notify GUI of x-run counter resets 2021-06-14 03:09:46 +02:00
c06553c2de
Reset x-run counter after disabling freewheeling 2021-06-14 03:09:42 +02:00
d6a1a64398 remove debug output 2021-06-13 18:36:44 -06:00
6553d5adfc small tweak to perf display if timing stats are not available 2021-06-13 18:35:33 -06:00
c15e6fd7db fix condition-variable race caused by not holding the request lock when signalling the var 2021-06-13 18:35:33 -06:00
21f4598395
Fix DR refill when exporting multiple timespans #8742
In between timespans Ardour disables freewheeling and
only later resumes freewheel. It can happen that
Session::process can summon the butler while start_audio_export()
calls Track::seek.

Just waiting for an earlier Butler::wait_until_finished() does
not prevent the butler from running again later.

This can lead to concurrent calls of DR::refill_audio from both
the butler and start_audio_export(), leading to garbled buffers.
2021-06-14 02:18:54 +02:00
ec131fcb70
Set Thread name to aid debugging 2021-06-14 01:29:16 +02:00