Rename JACK to "JACK/Pipewire" on Linux (1/2)

This commit is contained in:
Robin Gareus 2024-07-31 04:38:01 +02:00
parent cc56f92a73
commit a76b2ed1bb
No known key found for this signature in database
GPG key ID: A090BCE02CF57F04
9 changed files with 27 additions and 7 deletions

View file

@ -161,6 +161,9 @@ public:
*/ */
virtual bool is_realtime () const = 0; virtual bool is_realtime () const = 0;
/** Return true if the backed is JACK */
virtual bool is_jack () const { return false; }
virtual int client_real_time_priority () { return PBD_RT_PRI_PROC; } virtual int client_real_time_priority () { return PBD_RT_PRI_PROC; }
/* Discovering devices and parameters */ /* Discovering devices and parameters */

View file

@ -75,6 +75,7 @@ class LIBARDOUR_API AudioEngine : public PortManager, public SessionHandlePtr
std::shared_ptr<AudioBackend> set_backend (const std::string&, const std::string& arg1, const std::string& arg2); std::shared_ptr<AudioBackend> set_backend (const std::string&, const std::string& arg1, const std::string& arg2);
std::shared_ptr<AudioBackend> current_backend() const { return _backend; } std::shared_ptr<AudioBackend> current_backend() const { return _backend; }
bool setup_required () const; bool setup_required () const;
bool is_jack () const;
ProcessThread* main_thread() const { return _main_thread; } ProcessThread* main_thread() const { return _main_thread; }

View file

@ -986,6 +986,12 @@ AudioEngine::current_backend_name() const
return string(); return string();
} }
bool
AudioEngine::is_jack() const
{
return _backend && _backend->is_jack();
}
void void
AudioEngine::drop_backend () AudioEngine::drop_backend ()
{ {

View file

@ -50,13 +50,13 @@ Engine_TransportMaster::init ()
bool bool
Engine_TransportMaster::usable () const Engine_TransportMaster::usable () const
{ {
return AudioEngine::instance()->current_backend_name() == X_("JACK"); return AudioEngine::instance()->is_jack();
} }
void void
Engine_TransportMaster::check_backend() Engine_TransportMaster::check_backend()
{ {
if (AudioEngine::instance()->current_backend_name() == X_("JACK")) { if (AudioEngine::instance()->is_jack ()) {
_connected = true; _connected = true;
} else { } else {
_connected = false; _connected = false;

View file

@ -1027,7 +1027,7 @@ ARDOUR::get_available_sync_options ()
vector<SyncSource> ret; vector<SyncSource> ret;
std::shared_ptr<AudioBackend> backend = AudioEngine::instance ()->current_backend (); std::shared_ptr<AudioBackend> backend = AudioEngine::instance ()->current_backend ();
if (backend && backend->name () == "JACK") { if (backend && backend->is_jack ()) {
ret.push_back (Engine); ret.push_back (Engine);
} }

View file

@ -886,7 +886,7 @@ PortManager::reestablish_ports ()
set_pretty_names (port_names, DataType::MIDI, false); set_pretty_names (port_names, DataType::MIDI, false);
} }
if (Config->get_work_around_jack_no_copy_optimization () && AudioEngine::instance ()->current_backend_name () == X_("JACK")) { if (Config->get_work_around_jack_no_copy_optimization () && AudioEngine::instance ()->is_jack ()) {
port_engine ().register_port (X_("physical_audio_input_monitor_enable"), DataType::AUDIO, ARDOUR::PortFlags (IsInput | IsTerminal | Hidden)); port_engine ().register_port (X_("physical_audio_input_monitor_enable"), DataType::AUDIO, ARDOUR::PortFlags (IsInput | IsTerminal | Hidden));
port_engine ().register_port (X_("physical_midi_input_monitor_enable"), DataType::MIDI, ARDOUR::PortFlags (IsInput | IsTerminal | Hidden)); port_engine ().register_port (X_("physical_midi_input_monitor_enable"), DataType::MIDI, ARDOUR::PortFlags (IsInput | IsTerminal | Hidden));
} }
@ -943,7 +943,7 @@ PortManager::reconnect_ports ()
} }
} }
if (Config->get_work_around_jack_no_copy_optimization () && AudioEngine::instance ()->current_backend_name () == X_("JACK")) { if (Config->get_work_around_jack_no_copy_optimization () && AudioEngine::instance ()->is_jack ()) {
std::string const audio_port = AudioEngine::instance ()->make_port_name_non_relative (X_("physical_audio_input_monitor_enable")); std::string const audio_port = AudioEngine::instance ()->make_port_name_non_relative (X_("physical_audio_input_monitor_enable"));
std::string const midi_port = AudioEngine::instance ()->make_port_name_non_relative (X_("physical_midi_input_monitor_enable")); std::string const midi_port = AudioEngine::instance ()->make_port_name_non_relative (X_("physical_midi_input_monitor_enable"));
std::vector<std::string> audio_ports; std::vector<std::string> audio_ports;
@ -1145,7 +1145,7 @@ PortManager::update_input_ports (bool clear)
#endif #endif
mpw->insert (make_pair (*p, MIDIInputPort (32))); mpw->insert (make_pair (*p, MIDIInputPort (32)));
if (Config->get_work_around_jack_no_copy_optimization () && AudioEngine::instance ()->current_backend_name () == X_("JACK")) { if (Config->get_work_around_jack_no_copy_optimization () && AudioEngine::instance ()->is_jack ()) {
physical_midi_connection_list.push_back (*p); physical_midi_connection_list.push_back (*p);
} }
} }
@ -1534,7 +1534,7 @@ PortManager::port_is_virtual_piano (std::string const& name)
bool bool
PortManager::port_is_physical_input_monitor_enable (std::string const& name) PortManager::port_is_physical_input_monitor_enable (std::string const& name)
{ {
if (Config->get_work_around_jack_no_copy_optimization () && AudioEngine::instance ()->current_backend_name () == X_("JACK")) { if (Config->get_work_around_jack_no_copy_optimization () && AudioEngine::instance ()->is_jack ()) {
if (ends_with (name, X_(":physical_midi_input_monitor_enable"))) { if (ends_with (name, X_(":physical_midi_input_monitor_enable"))) {
return true; return true;
} }

View file

@ -31,7 +31,11 @@ static bool already_configured ();
static bool available (); static bool available ();
static ARDOUR::AudioBackendInfo _descriptor = { static ARDOUR::AudioBackendInfo _descriptor = {
#if ! (defined(__APPLE__) || defined(PLATFORM_WINDOWS))
"JACK/Pipewire",
#else
"JACK", "JACK",
#endif
instantiate, instantiate,
deinstantiate, deinstantiate,
backend_factory, backend_factory,

View file

@ -87,7 +87,11 @@ JACKAudioBackend::~JACKAudioBackend()
string string
JACKAudioBackend::name() const JACKAudioBackend::name() const
{ {
#if ! (defined(__APPLE__) || defined(PLATFORM_WINDOWS))
return X_("JACK/Pipewire");
#else
return X_("JACK"); return X_("JACK");
#endif
} }
void* void*

View file

@ -60,6 +60,8 @@ class JACKAudioBackend : public AudioBackend {
void* private_handle() const; void* private_handle() const;
bool is_realtime () const; bool is_realtime () const;
bool is_jack () const { return true; }
bool requires_driver_selection() const; bool requires_driver_selection() const;
std::vector<std::string> enumerate_drivers () const; std::vector<std::string> enumerate_drivers () const;
int set_driver (const std::string&); int set_driver (const std::string&);