move some DEBUG::Graph traces to DEBUG::ProcessThreads ; remove Diskstream::rename_write_sources() which is no longer relevant (sources are not created on disk until needed); fixup calling Diskstream::non_realtime_input_change() when calling Diskstream::set_track() with a track that doesn't yet have any I/O (i.e. typical case)
git-svn-id: svn://localhost/ardour2/branches/3.0@9281 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
1052bc39bf
commit
040e016137
@ -157,7 +157,6 @@ class AudioDiskstream : public Diskstream
|
|||||||
void set_block_size (pframes_t);
|
void set_block_size (pframes_t);
|
||||||
int internal_playback_seek (framecnt_t distance);
|
int internal_playback_seek (framecnt_t distance);
|
||||||
int can_internal_playback_seek (framecnt_t distance);
|
int can_internal_playback_seek (framecnt_t distance);
|
||||||
int rename_write_sources ();
|
|
||||||
std::list<boost::shared_ptr<Source> > steal_write_sources();
|
std::list<boost::shared_ptr<Source> > steal_write_sources();
|
||||||
void reset_write_sources (bool, bool force = false);
|
void reset_write_sources (bool, bool force = false);
|
||||||
void non_realtime_input_change ();
|
void non_realtime_input_change ();
|
||||||
|
@ -173,7 +173,6 @@ class Diskstream : public SessionObject, public PublicDiskstream
|
|||||||
virtual int overwrite_existing_buffers () = 0;
|
virtual int overwrite_existing_buffers () = 0;
|
||||||
virtual int internal_playback_seek (framecnt_t distance) = 0;
|
virtual int internal_playback_seek (framecnt_t distance) = 0;
|
||||||
virtual int can_internal_playback_seek (framecnt_t distance) = 0;
|
virtual int can_internal_playback_seek (framecnt_t distance) = 0;
|
||||||
virtual int rename_write_sources () = 0;
|
|
||||||
virtual void reset_write_sources (bool, bool force = false) = 0;
|
virtual void reset_write_sources (bool, bool force = false) = 0;
|
||||||
virtual void non_realtime_input_change () = 0;
|
virtual void non_realtime_input_change () = 0;
|
||||||
|
|
||||||
|
@ -127,7 +127,6 @@ class MidiDiskstream : public Diskstream
|
|||||||
void set_block_size (pframes_t);
|
void set_block_size (pframes_t);
|
||||||
int internal_playback_seek (framecnt_t distance);
|
int internal_playback_seek (framecnt_t distance);
|
||||||
int can_internal_playback_seek (framecnt_t distance);
|
int can_internal_playback_seek (framecnt_t distance);
|
||||||
int rename_write_sources ();
|
|
||||||
std::list<boost::shared_ptr<Source> > steal_write_sources();
|
std::list<boost::shared_ptr<Source> > steal_write_sources();
|
||||||
void reset_write_sources (bool, bool force = false);
|
void reset_write_sources (bool, bool force = false);
|
||||||
void non_realtime_input_change ();
|
void non_realtime_input_change ();
|
||||||
|
@ -1909,23 +1909,6 @@ AudioDiskstream::reset_write_sources (bool mark_write_complete, bool /*force*/)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
|
||||||
AudioDiskstream::rename_write_sources ()
|
|
||||||
{
|
|
||||||
ChannelList::iterator chan;
|
|
||||||
boost::shared_ptr<ChannelList> c = channels.reader();
|
|
||||||
uint32_t n;
|
|
||||||
|
|
||||||
for (chan = c->begin(), n = 0; chan != c->end(); ++chan, ++n) {
|
|
||||||
if ((*chan)->write_source != 0) {
|
|
||||||
(*chan)->write_source->set_source_name (_name.val(), destructive());
|
|
||||||
/* XXX what to do if one of them fails ? */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
AudioDiskstream::set_block_size (pframes_t /*nframes*/)
|
AudioDiskstream::set_block_size (pframes_t /*nframes*/)
|
||||||
{
|
{
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
#include "pbd/basename.h"
|
#include "pbd/basename.h"
|
||||||
#include "pbd/memento_command.h"
|
#include "pbd/memento_command.h"
|
||||||
#include "pbd/xml++.h"
|
#include "pbd/xml++.h"
|
||||||
|
#include "pbd/stacktrace.h"
|
||||||
|
|
||||||
#include "ardour/ardour.h"
|
#include "ardour/ardour.h"
|
||||||
#include "ardour/audioengine.h"
|
#include "ardour/audioengine.h"
|
||||||
@ -180,8 +181,10 @@ Diskstream::set_track (Track* t)
|
|||||||
ic_connection.disconnect();
|
ic_connection.disconnect();
|
||||||
_io->changed.connect_same_thread (ic_connection, boost::bind (&Diskstream::handle_input_change, this, _1, _2));
|
_io->changed.connect_same_thread (ic_connection, boost::bind (&Diskstream::handle_input_change, this, _1, _2));
|
||||||
|
|
||||||
input_change_pending.type = IOChange::Type (IOChange::ConfigurationChanged|IOChange::ConnectionsChanged);
|
if (_io->n_ports() != ChanCount::ZERO) {
|
||||||
non_realtime_input_change ();
|
input_change_pending.type = IOChange::Type (IOChange::ConfigurationChanged|IOChange::ConnectionsChanged);
|
||||||
|
non_realtime_input_change ();
|
||||||
|
}
|
||||||
|
|
||||||
_track->Destroyed.connect_same_thread (*this, boost::bind (&Diskstream::route_going_away, this));
|
_track->Destroyed.connect_same_thread (*this, boost::bind (&Diskstream::route_going_away, this));
|
||||||
}
|
}
|
||||||
@ -454,18 +457,9 @@ Diskstream::set_name (const string& str)
|
|||||||
if (_name != str) {
|
if (_name != str) {
|
||||||
assert(playlist());
|
assert(playlist());
|
||||||
playlist()->set_name (str);
|
playlist()->set_name (str);
|
||||||
|
|
||||||
SessionObject::set_name(str);
|
SessionObject::set_name(str);
|
||||||
|
|
||||||
if (!in_set_state && recordable()) {
|
|
||||||
/* rename existing capture files so that they have the correct name */
|
|
||||||
return rename_write_sources ();
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
XMLNode&
|
XMLNode&
|
||||||
|
@ -460,7 +460,7 @@ Graph::main_thread()
|
|||||||
|
|
||||||
again:
|
again:
|
||||||
_callback_start_sem.wait ();
|
_callback_start_sem.wait ();
|
||||||
DEBUG_TRACE(DEBUG::Graph, "main thread is awake\n");
|
DEBUG_TRACE(DEBUG::ProcessThreads, "main thread is awake\n");
|
||||||
|
|
||||||
if (_quit_threads) {
|
if (_quit_threads) {
|
||||||
return;
|
return;
|
||||||
@ -470,12 +470,12 @@ Graph::main_thread()
|
|||||||
|
|
||||||
if (_graph_empty && !_quit_threads) {
|
if (_graph_empty && !_quit_threads) {
|
||||||
_callback_done_sem.signal ();
|
_callback_done_sem.signal ();
|
||||||
DEBUG_TRACE(DEBUG::Graph, "main thread sees graph done, goes back to slee\n");
|
DEBUG_TRACE(DEBUG::ProcessThreads, "main thread sees graph done, goes back to slee\n");
|
||||||
goto again;
|
goto again;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
DEBUG_TRACE(DEBUG::Graph, "main thread runs one graph node\n");
|
DEBUG_TRACE(DEBUG::ProcessThreads, "main thread runs one graph node\n");
|
||||||
if (run_one()) {
|
if (run_one()) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -527,7 +527,7 @@ Graph::silent_process_routes (pframes_t nframes, framepos_t start_frame, framepo
|
|||||||
_process_need_butler = false;
|
_process_need_butler = false;
|
||||||
|
|
||||||
if (!_graph_empty) {
|
if (!_graph_empty) {
|
||||||
DEBUG_TRACE(DEBUG::Graph, "wake graph for silent process\n");
|
DEBUG_TRACE(DEBUG::ProcessThreads, "wake graph for silent process\n");
|
||||||
_callback_start_sem.signal ();
|
_callback_start_sem.signal ();
|
||||||
_callback_done_sem.wait ();
|
_callback_done_sem.wait ();
|
||||||
}
|
}
|
||||||
@ -541,7 +541,7 @@ int
|
|||||||
Graph::process_routes (pframes_t nframes, framepos_t start_frame, framepos_t end_frame, int declick,
|
Graph::process_routes (pframes_t nframes, framepos_t start_frame, framepos_t end_frame, int declick,
|
||||||
bool can_record, bool rec_monitors_input, bool& need_butler)
|
bool can_record, bool rec_monitors_input, bool& need_butler)
|
||||||
{
|
{
|
||||||
DEBUG_TRACE (DEBUG::Graph, string_compose ("graph execution from %1 to %2 = %3\n", start_frame, end_frame, nframes));
|
DEBUG_TRACE (DEBUG::ProcessThreads, string_compose ("graph execution from %1 to %2 = %3\n", start_frame, end_frame, nframes));
|
||||||
|
|
||||||
_process_nframes = nframes;
|
_process_nframes = nframes;
|
||||||
_process_start_frame = start_frame;
|
_process_start_frame = start_frame;
|
||||||
@ -555,11 +555,11 @@ Graph::process_routes (pframes_t nframes, framepos_t start_frame, framepos_t end
|
|||||||
_process_retval = 0;
|
_process_retval = 0;
|
||||||
_process_need_butler = false;
|
_process_need_butler = false;
|
||||||
|
|
||||||
DEBUG_TRACE(DEBUG::Graph, "wake graph for non-silent process\n");
|
DEBUG_TRACE(DEBUG::ProcessThreads, "wake graph for non-silent process\n");
|
||||||
_callback_start_sem.signal ();
|
_callback_start_sem.signal ();
|
||||||
_callback_done_sem.wait ();
|
_callback_done_sem.wait ();
|
||||||
|
|
||||||
DEBUG_TRACE (DEBUG::Graph, "graph execution complete\n");
|
DEBUG_TRACE (DEBUG::ProcessThreads, "graph execution complete\n");
|
||||||
|
|
||||||
need_butler = _process_need_butler;
|
need_butler = _process_need_butler;
|
||||||
|
|
||||||
@ -570,7 +570,7 @@ int
|
|||||||
Graph::routes_no_roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame,
|
Graph::routes_no_roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame,
|
||||||
bool non_rt_pending, bool can_record, int declick)
|
bool non_rt_pending, bool can_record, int declick)
|
||||||
{
|
{
|
||||||
DEBUG_TRACE (DEBUG::Graph, string_compose ("no-roll graph execution from %1 to %2 = %3\n", start_frame, end_frame, nframes));
|
DEBUG_TRACE (DEBUG::ProcessThreads, string_compose ("no-roll graph execution from %1 to %2 = %3\n", start_frame, end_frame, nframes));
|
||||||
|
|
||||||
_process_nframes = nframes;
|
_process_nframes = nframes;
|
||||||
_process_start_frame = start_frame;
|
_process_start_frame = start_frame;
|
||||||
@ -584,7 +584,7 @@ Graph::routes_no_roll (pframes_t nframes, framepos_t start_frame, framepos_t end
|
|||||||
_process_retval = 0;
|
_process_retval = 0;
|
||||||
_process_need_butler = false;
|
_process_need_butler = false;
|
||||||
|
|
||||||
DEBUG_TRACE(DEBUG::Graph, "wake graph for no-roll process\n");
|
DEBUG_TRACE(DEBUG::ProcessThreads, "wake graph for no-roll process\n");
|
||||||
_callback_start_sem.signal ();
|
_callback_start_sem.signal ();
|
||||||
_callback_done_sem.wait ();
|
_callback_done_sem.wait ();
|
||||||
|
|
||||||
|
@ -443,13 +443,15 @@ write_midi_data_to_new_files (Evoral::SMF* source, ImportStatus& status,
|
|||||||
if (status.cancel) {
|
if (status.cancel) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
warning << string_compose (_("Track %1 of %2 contained no usable MIDI data"), i, source->file_path()) << endmsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
++s; // next source
|
++s; // next source
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
error << "Corrupt MIDI file " << source->file_path() << endmsg;
|
error << string_compose (_("MIDI file %1 was not readable (no reason available"), source->file_path()) << endmsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buf) {
|
if (buf) {
|
||||||
|
@ -36,7 +36,6 @@
|
|||||||
#include "pbd/memento_command.h"
|
#include "pbd/memento_command.h"
|
||||||
#include "pbd/enumwriter.h"
|
#include "pbd/enumwriter.h"
|
||||||
#include "pbd/stateful_diff_command.h"
|
#include "pbd/stateful_diff_command.h"
|
||||||
#include "pbd/stacktrace.h"
|
|
||||||
|
|
||||||
#include "ardour/ardour.h"
|
#include "ardour/ardour.h"
|
||||||
#include "ardour/audioengine.h"
|
#include "ardour/audioengine.h"
|
||||||
@ -164,8 +163,10 @@ MidiDiskstream::non_realtime_input_change ()
|
|||||||
|
|
||||||
if (input_change_pending.type & IOChange::ConfigurationChanged) {
|
if (input_change_pending.type & IOChange::ConfigurationChanged) {
|
||||||
if (_io->n_ports().n_midi() != _n_channels.n_midi()) {
|
if (_io->n_ports().n_midi() != _n_channels.n_midi()) {
|
||||||
error << "Can not feed " << _io->n_ports()
|
error << string_compose (_("%1: I/O configuration change %4 requested to use %2, but channel setup is %3"),
|
||||||
<< " ports to " << _n_channels << " channels"
|
name(),
|
||||||
|
_io->n_ports(),
|
||||||
|
_n_channels, input_change_pending.type)
|
||||||
<< endmsg;
|
<< endmsg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1354,16 +1355,6 @@ MidiDiskstream::reset_write_sources (bool mark_write_complete, bool /*force*/)
|
|||||||
use_new_write_source (0);
|
use_new_write_source (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
|
||||||
MidiDiskstream::rename_write_sources ()
|
|
||||||
{
|
|
||||||
if (_write_source != 0) {
|
|
||||||
_write_source->set_source_name (_name.val(), destructive());
|
|
||||||
/* XXX what to do if this fails ? */
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
MidiDiskstream::set_block_size (pframes_t /*nframes*/)
|
MidiDiskstream::set_block_size (pframes_t /*nframes*/)
|
||||||
{
|
{
|
||||||
|
@ -108,7 +108,7 @@ Session::no_roll (pframes_t nframes)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (route_graph->threads_in_use() > 0) {
|
if (route_graph->threads_in_use() > 0) {
|
||||||
DEBUG_TRACE(DEBUG::Graph,"calling graph/no-roll\n");
|
DEBUG_TRACE(DEBUG::ProcessThreads,"calling graph/no-roll\n");
|
||||||
route_graph->routes_no_roll( nframes, _transport_frame, end_frame, non_realtime_work_pending(), actively_recording(), declick);
|
route_graph->routes_no_roll( nframes, _transport_frame, end_frame, non_realtime_work_pending(), actively_recording(), declick);
|
||||||
} else {
|
} else {
|
||||||
for (RouteList::iterator i = r->begin(); i != r->end(); ++i) {
|
for (RouteList::iterator i = r->begin(); i != r->end(); ++i) {
|
||||||
@ -154,7 +154,7 @@ Session::process_routes (pframes_t nframes, bool& need_butler)
|
|||||||
tracks, the graph never gets updated.
|
tracks, the graph never gets updated.
|
||||||
*/
|
*/
|
||||||
if (1 || route_graph->threads_in_use() > 0) {
|
if (1 || route_graph->threads_in_use() > 0) {
|
||||||
DEBUG_TRACE(DEBUG::Graph,"calling graph/process-routes\n");
|
DEBUG_TRACE(DEBUG::ProcessThreads,"calling graph/process-routes\n");
|
||||||
route_graph->process_routes( nframes, start_frame, end_frame, declick, record_active, rec_monitors, need_butler);
|
route_graph->process_routes( nframes, start_frame, end_frame, declick, record_active, rec_monitors, need_butler);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
@ -180,9 +180,7 @@ Track::set_name (const string& str)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_diskstream->set_name (str)) {
|
_diskstream->set_name (str);
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* save state so that the statefile fully reflects any filename changes */
|
/* save state so that the statefile fully reflects any filename changes */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user