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";
|
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 = [
|
buildInputs = [
|
||||||
alsaLib asio autoconf automake bison jackaudio libgig libsndfile
|
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
|
have questions on the subject, that are not yet covered by the
|
||||||
FAQ, please contact us.
|
FAQ, please contact us.
|
||||||
'';
|
'';
|
||||||
license = licenses.gpl2;
|
license = licenses.proprietary;
|
||||||
maintainers = [ maintainers.goibhniu ];
|
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