more style-guidification, plus do not run process threads RT if JACK is not RT

git-svn-id: svn://localhost/ardour2/branches/3.0@7232 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2010-06-04 12:09:09 +00:00
parent 04a10a9700
commit 15f1d68e9f
2 changed files with 34 additions and 29 deletions

View file

@ -1,5 +1,6 @@
/*
Copyright (C) 2010 Paul Davis
Author: Torben Hohn
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -14,14 +15,12 @@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef __ardour_graph_h__
#define __ardour_graph_h__
#include <list>
#include <set>
#include <vector>
@ -53,18 +52,16 @@ typedef boost::shared_ptr<Graph> graph_ptr_t;
typedef std::list< node_ptr_t > node_list_t;
typedef std::set< node_ptr_t > node_set_t;
class Graph : public SessionHandleRef
{
public:
Graph( Session & session );
Graph (Session & session);
void prep();
void trigger( GraphNode * n );
void rechain( boost::shared_ptr<RouteList> r );
void trigger (GraphNode * n);
void rechain (boost::shared_ptr<RouteList> r);
void dump( int chain );
void dump (int chain);
void process();
void dec_ref();
void restart_cycle();
@ -73,16 +70,16 @@ class Graph : public SessionHandleRef
void helper_thread();
void main_thread();
int silent_process_routes (nframes_t nframes, sframes_t start_frame, sframes_t end_frame,
bool can_record, bool rec_monitors_input, bool& need_butler );
int silent_process_routes (nframes_t nframes, framepos_t start_frame, framepos_t end_frame,
bool can_record, bool rec_monitors_input, bool& need_butler);
int process_routes (nframes_t nframes, sframes_t start_frame, sframes_t end_frame, int declick,
bool can_record, bool rec_monitors_input, bool& need_butler );
int process_routes (nframes_t nframes, framepos_t start_frame, framepos_t end_frame, int declick,
bool can_record, bool rec_monitors_input, bool& need_butler);
int routes_no_roll (nframes_t nframes, sframes_t start_frame, sframes_t end_frame,
int routes_no_roll (nframes_t nframes, framepos_t start_frame, framepos_t end_frame,
bool non_rt_pending, bool can_record, int declick);
void process_one_route( Route * route );
void process_one_route (Route * route);
protected:
virtual void session_going_away ();
@ -119,8 +116,8 @@ class Graph : public SessionHandleRef
// parameter caches.
nframes_t _process_nframes;
sframes_t _process_start_frame;
sframes_t _process_end_frame;
framepos_t _process_start_frame;
framepos_t _process_end_frame;
bool _process_can_record;
bool _process_rec_monitors_input;
bool _process_non_rt_pending;
@ -132,6 +129,6 @@ class Graph : public SessionHandleRef
bool _process_need_butler;
};
}
} // namespace
#endif
#endif /* __ardour_graph_h__ */

View file

@ -290,15 +290,16 @@ Graph::run_one()
if (_trigger_queue.size()) {
to_run = _trigger_queue.back();
_trigger_queue.pop_back();
}
else
} else {
to_run = 0;
}
int wakeup = std::min ((int) _execution_tokens, (int) _trigger_queue.size() );
int wakeup = std::min ((int) _execution_tokens, (int) _trigger_queue.size());
_execution_tokens -= wakeup;
for (int i=0; i<wakeup; i++ )
for (int i=0; i<wakeup; i++ ) {
sem_post (&_execution_sem);
}
while (to_run == 0) {
_execution_tokens += 1;
@ -324,6 +325,10 @@ Graph::run_one()
static void get_rt()
{
if (!jack_is_realtime (AudioEngine::instance()->jack())) {
return;
}
int priority = jack_client_real_time_priority (AudioEngine::instance()->jack());
if (priority) {
@ -344,11 +349,12 @@ Graph::helper_thread()
pt->get_buffers();
get_rt();
while(1) {
if (run_one())
if (run_one()) {
break;
}
}
pt->drop_buffers();
}
@ -370,10 +376,12 @@ Graph::main_thread()
goto again;
}
while(1) {
if (run_one())
while (1) {
if (run_one()) {
break;
}
}
pt->drop_buffers();
}
@ -405,7 +413,7 @@ Graph::dump (int chain)
}
int
Graph::silent_process_routes (nframes_t nframes, sframes_t start_frame, sframes_t end_frame,
Graph::silent_process_routes (nframes_t nframes, framepos_t start_frame, framepos_t end_frame,
bool can_record, bool rec_monitors_input, bool& need_butler)
{
_process_nframes = nframes;
@ -430,7 +438,7 @@ Graph::silent_process_routes (nframes_t nframes, sframes_t start_frame, sframes_
}
int
Graph::process_routes (nframes_t nframes, sframes_t start_frame, sframes_t end_frame, int declick,
Graph::process_routes (nframes_t nframes, framepos_t start_frame, framepos_t end_frame, int declick,
bool can_record, bool rec_monitors_input, bool& need_butler)
{
_process_nframes = nframes;
@ -454,7 +462,7 @@ Graph::process_routes (nframes_t nframes, sframes_t start_frame, sframes_t end_f
}
int
Graph::routes_no_roll (nframes_t nframes, sframes_t start_frame, sframes_t end_frame,
Graph::routes_no_roll (nframes_t nframes, framepos_t start_frame, framepos_t end_frame,
bool non_rt_pending, bool can_record, int declick)
{
_process_nframes = nframes;