mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-03 12:19:33 +01:00
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:
parent
04a10a9700
commit
15f1d68e9f
2 changed files with 34 additions and 29 deletions
|
|
@ -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__ */
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue