#include <stdlib.h>
#include <sys/mman.h>
#include <sys/time.h>
+#include <sys/types.h>
+#include <unistd.h>
#include <glibmm.h>
#include "pbd/compose.h"
#include "pbd/error.h"
+#include "pbd/file_utils.h"
#include "pbd/pthread_utils.h"
#include "ardour/port_manager.h"
return get_standard_device_name (DeviceNone);
}
+/* External control app */
+std::string
+PulseAudioBackend::control_app_name () const
+{
+ std::string ignored;
+ if (PBD::find_file (PBD::Searchpath (Glib::getenv("PATH")), X_("pavucontrol"), ignored)) {
+ return "pavucontrol";
+ }
+ return "";
+}
+
+void
+PulseAudioBackend::launch_control_app ()
+{
+#ifdef NO_VFORK
+ (void) system ("pavucontrol");
+#else
+ if (::vfork () == 0) {
+ ::execlp ("pavucontrol", "pavucontrol", (char*)NULL);
+ exit (EXIT_SUCCESS);
+ }
+#endif
+}
+
/* State Control */
static void*
uint32_t systemic_midi_output_latency (std::string const) const { return 0; }
/* External control app */
- std::string control_app_name () const { return std::string (); }
- void launch_control_app () { }
+ std::string control_app_name () const;
+ void launch_control_app ();
/* MIDI */
std::vector<std::string> enumerate_midi_options () const;