forked from mirrors/nixpkgs
Patch linuxsampler so that it can load SFZ state when used as an LV2 plugin: http://tracker.ardour.org/view.php?id=4462
This commit is contained in:
parent
0f1326cde9
commit
0a6c7e432b
|
@ -11,9 +11,12 @@ stdenv.mkDerivation rec {
|
|||
sha256 = "0zsrvs9dwwhjx733m45vfi11yjkqv33z8qxn2i9qriq5zs1f0kd7";
|
||||
};
|
||||
|
||||
patchPhase = "sed -e 's/which/type -P/g' -i scripts/generate_parser.sh";
|
||||
patches = ./linuxsampler_lv2_sfz_fix.diff;
|
||||
|
||||
preConfigure = "make -f Makefile.cvs";
|
||||
preConfigure = ''
|
||||
sed -e 's/which/type -P/g' -i scripts/generate_parser.sh
|
||||
make -f Makefile.cvs
|
||||
'';
|
||||
|
||||
buildInputs = [
|
||||
alsaLib asio autoconf automake bison jackaudio libgig libsndfile
|
||||
|
@ -34,7 +37,8 @@ stdenv.mkDerivation rec {
|
|||
have questions on the subject, that are not yet covered by the
|
||||
FAQ, please contact us.
|
||||
'';
|
||||
license = licenses.gpl2;
|
||||
license = licenses.proprietary;
|
||||
maintainers = [ maintainers.goibhniu ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
Index: linuxsampler-r2359/src/hostplugins/lv2/PluginLv2.cpp
|
||||
===================================================================
|
||||
--- linuxsampler-r2359/src/hostplugins/lv2/PluginLv2.cpp (revision 2359)
|
||||
+++ linuxsampler-r2359/src/hostplugins/lv2/PluginLv2.cpp (working copy)
|
||||
@@ -18,6 +18,8 @@
|
||||
* MA 02110-1301 USA *
|
||||
***************************************************************************/
|
||||
|
||||
+#define _BSD_SOURCE 1 /* for realpath() */
|
||||
+
|
||||
#include <algorithm>
|
||||
#include <cassert>
|
||||
#include <cstdio>
|
||||
@@ -118,6 +120,23 @@
|
||||
dmsg(2, ("linuxsampler: Deactivate\n"));
|
||||
}
|
||||
|
||||
+ static String RealPath(const String& path)
|
||||
+ {
|
||||
+ String out = path;
|
||||
+ char* cpath = NULL;
|
||||
+#ifdef _WIN32
|
||||
+ cpath = (char*)malloc(MAX_PATH);
|
||||
+ GetFullPathName(path.c_str(), MAX_PATH, cpath, NULL);
|
||||
+#else
|
||||
+ cpath = realpath(path.c_str(), NULL);
|
||||
+#endif
|
||||
+ if (cpath) {
|
||||
+ out = cpath;
|
||||
+ free(cpath);
|
||||
+ }
|
||||
+ return out;
|
||||
+ }
|
||||
+
|
||||
String PluginLv2::PathToState(const String& path) {
|
||||
if (MapPath) {
|
||||
char* cstr = MapPath->abstract_path(MapPath->handle, path.c_str());
|
||||
@@ -131,9 +150,10 @@
|
||||
String PluginLv2::PathFromState(const String& path) {
|
||||
if (MapPath) {
|
||||
char* cstr = MapPath->absolute_path(MapPath->handle, path.c_str());
|
||||
- const String abstract_path(cstr);
|
||||
+ // Resolve symbolic links so SFZ sample paths load correctly
|
||||
+ const String absolute_path(RealPath(cstr));
|
||||
free(cstr);
|
||||
- return abstract_path;
|
||||
+ return absolute_path;
|
||||
}
|
||||
return path;
|
||||
}
|
Loading…
Reference in a new issue