mark session dirty when plugin pin mapping changes
[ardour.git] / libs / ardour / system_exec.cc
index 90e729a7f683d51df0f761fb3947ebf942afd6f1..b85b2347aebb76d9e8001f1a76d4914bc0dbb195 100644 (file)
@@ -19,7 +19,6 @@
 */
 
 #include <glibmm/miscutils.h>
-#include "pbd/pathscanner.h"
 #include "pbd/file_utils.h"
 #include "pbd/error.h"
 
@@ -35,11 +34,14 @@ static char *vfork_exec_wrapper_path() {
        return NULL;
 #else
        std::string vfork_exec_wrapper;
-       if (!PBD::find_file_in_search_path (
-                               PBD::Searchpath(Glib::build_filename(ARDOUR::ardour_dll_directory(), "vfork")),
+       if (!PBD::find_file (
+                               PBD::Searchpath(
+                                       ARDOUR::ardour_dll_directory() // deployed
+                                       + G_SEARCHPATH_SEPARATOR_S + Glib::build_filename(ARDOUR::ardour_dll_directory(), "vfork") // src, build (ardev, etc)
+                                       ),
                                "ardour-exec-wrapper", vfork_exec_wrapper)) {
-               PBD::warning << "vfork exec wrapper not found..'" << endmsg;
-               return NULL;
+               PBD::fatal << "vfork exec wrapper 'ardour-exec-wrapper' was not found in $PATH." << endmsg;
+               abort(); /*NOTREACHED*/
        }
        return strdup(vfork_exec_wrapper.c_str());
 #endif
@@ -65,4 +67,14 @@ SystemExec::SystemExec (std::string c, std::string a)
 #endif
 }
 
+SystemExec::SystemExec (std::string c, const std::map<char, std::string> subs)
+       : PBD::SystemExec(c, subs)
+{
+#ifndef PLATFORM_WINDOWS
+       if (!_vfork_exec_wrapper) {
+               _vfork_exec_wrapper = vfork_exec_wrapper_path();
+       }
+#endif
+}
+
 SystemExec::~SystemExec() { }