summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/ardour_ui.cc8
-rw-r--r--gtk2_ardour/main.cc5
-rw-r--r--libs/ardour/MSVClibardour/ardour.vcproj24
-rw-r--r--libs/ardour/plugin_manager.cc7
-rw-r--r--libs/fst/fst.h49
-rw-r--r--libs/fst/vstwin.c18
-rw-r--r--libs/gtkmm2ext/MSVCgtkmm2ext/gtkmm2ext.vcproj4
7 files changed, 91 insertions, 24 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index eebe272c15..8ea786b268 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -1013,8 +1013,10 @@ If you still wish to quit, please use the\n\n\
halt_connection.disconnect ();
AudioEngine::instance()->stop ();
#ifdef WINDOWS_VST_SUPPORT
+#ifndef PLATFORM_WINDOWS
fst_stop_threading();
#endif
+#endif
quit ();
}
@@ -2924,12 +2926,18 @@ ARDOUR_UI::load_session (const std::string& path, const std::string& snap_name,
}
#ifdef WINDOWS_VST_SUPPORT
+#ifndef PLATFORM_WINDOWS
fst_stop_threading();
#endif
+#endif
+
flush_pending ();
+
#ifdef WINDOWS_VST_SUPPORT
+#ifndef PLATFORM_WINDOWS
fst_start_threading();
#endif
+#endif
retval = 0;
out:
diff --git a/gtk2_ardour/main.cc b/gtk2_ardour/main.cc
index bb9fabb6bb..4b9136626a 100644
--- a/gtk2_ardour/main.cc
+++ b/gtk2_ardour/main.cc
@@ -139,8 +139,9 @@ sigpipe_handler (int /*signal*/)
}
#ifdef WINDOWS_VST_SUPPORT
-
+#ifndef PLATFORM_WINDOWS
extern int windows_vst_gui_init (int* argc, char** argv[]);
+#endif
/* this is called from the entry point of a wine-compiled
executable that is linked against gtk2_ardour built
@@ -165,11 +166,13 @@ int main (int argc, char *argv[])
#endif
#ifdef WINDOWS_VST_SUPPORT
+#ifndef PLATFORM_WINDOWS
/* this does some magic that is needed to make GTK and Wine's own
X11 client interact properly.
*/
windows_vst_gui_init (&argc, &argv);
#endif
+#endif
#ifdef ENABLE_NLS
cerr << "bnd txt domain [" << PACKAGE << "] to " << localedir << endl;
diff --git a/libs/ardour/MSVClibardour/ardour.vcproj b/libs/ardour/MSVClibardour/ardour.vcproj
index fde10c443c..ccf5ac8639 100644
--- a/libs/ardour/MSVClibardour/ardour.vcproj
+++ b/libs/ardour/MSVClibardour/ardour.vcproj
@@ -552,6 +552,10 @@
>
</File>
<File
+ RelativePath="..\..\fst\fst.c"
+ >
+ </File>
+ <File
RelativePath="..\globals.cc"
>
</File>
@@ -1128,6 +1132,10 @@
</FileConfiguration>
</File>
<File
+ RelativePath="..\session_vst.cc"
+ >
+ </File>
+ <File
RelativePath="..\slave.cc"
>
</File>
@@ -1228,10 +1236,26 @@
>
</File>
<File
+ RelativePath="..\vst_info_file.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\vst_plugin.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\..\fst\vstwin.c"
+ >
+ </File>
+ <File
RelativePath="..\vumeterdsp.cc"
>
</File>
<File
+ RelativePath="..\windows_vst_plugin.cc"
+ >
+ </File>
+ <File
RelativePath="..\worker.cc"
>
</File>
diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc
index 2db24ed269..7c3eae538f 100644
--- a/libs/ardour/plugin_manager.cc
+++ b/libs/ardour/plugin_manager.cc
@@ -116,10 +116,9 @@ PluginManager::PluginManager ()
char* s;
string lrdf_path;
- if (!PBD::find_file_in_search_path (
- PBD::Searchpath(Glib::build_filename(ARDOUR::ardour_dll_directory(), "fst")),
- "ardour-vst-scanner", scanner_bin_path)) {
- PBD::warning << "VST scanner app not found.'" << endmsg;
+ string scan_p = Glib::build_filename(ARDOUR::ardour_dll_directory(), "fst");
+ if (!PBD::find_file_in_search_path ( PBD::Searchpath(scan_p), "ardour-vst-scanner", scanner_bin_path)) {
+ PBD::warning << "VST scanner app (ardour-vst-scanner) not found in path " << scan_p << endmsg;
}
load_statuses ();
diff --git a/libs/fst/fst.h b/libs/fst/fst.h
index 7b9a67125e..d2b777f77a 100644
--- a/libs/fst/fst.h
+++ b/libs/fst/fst.h
@@ -9,27 +9,56 @@
#include "ardour/vst_types.h"
#include "ardour/vestige/aeffectx.h"
+#include "pbd/libpbd_visibility.h"
+
+
+/**
+ * Display FST error message.
+ *
+ * Set via fst_set_error_function(), otherwise a FST-provided
+ * default will print @a msg (plus a newline) to stderr.
+ *
+ * @param msg error message text (no newline at end).
+ */
+LIBARDOUR_API void (*fst_error_callback)(const char *msg);
+
+/**
+ * Set the @ref fst_error_callback for error message display.
+ *
+ * The FST library provides two built-in callbacks for this purpose:
+ * default_fst_error_callback() and silent_fst_error_callback().
+ */
+void fst_set_error_function (void (*func)(const char *));
+
+void fst_error (const char *fmt, ...);
+
#ifdef __cplusplus
extern "C" {
#endif
-LIBARDOUR_API int fst_init (void* possible_hmodule);
-LIBARDOUR_API void fst_exit (void);
+extern int fst_init (void* possible_hmodule);
+extern void fst_exit (void);
-LIBARDOUR_API VSTHandle* fst_load (const char*);
-LIBARDOUR_API int fst_unload (VSTHandle**);
+extern VSTHandle* fst_load (const char*);
+extern int fst_unload (VSTHandle**);
-LIBARDOUR_API VSTState * fst_instantiate (VSTHandle *, audioMasterCallback amc, void* userptr);
-LIBARDOUR_API void fst_close (VSTState *);
+extern VSTState * fst_instantiate (VSTHandle *, audioMasterCallback amc, void* userptr);
+extern void fst_close (VSTState *);
+//these funcs get called from gtk2_ardour, so need to be visible
LIBARDOUR_API int fst_run_editor (VSTState *, void* window_parent);
LIBARDOUR_API void fst_destroy_editor (VSTState *);
LIBARDOUR_API void fst_move_window_into_view (VSTState *);
+//----
+
+extern void fst_event_loop_remove_plugin (VSTState* fst);
+
+#ifndef PLATFORM_WINDOWS /* linux + wine */
+extern void fst_start_threading(void);
+extern void fst_stop_threading(void);
+#endif
-LIBARDOUR_API void fst_event_loop_remove_plugin (VSTState* fst);
-LIBARDOUR_API void fst_start_threading(void);
-LIBARDOUR_API void fst_stop_threading(void);
-LIBARDOUR_API void fst_audio_master_idle(void);
+extern void fst_audio_master_idle(void);
#ifdef __cplusplus
}
diff --git a/libs/fst/vstwin.c b/libs/fst/vstwin.c
index c07aaa09dc..37b6acd5e1 100644
--- a/libs/fst/vstwin.c
+++ b/libs/fst/vstwin.c
@@ -8,12 +8,11 @@
#include <pthread.h>
static UINT_PTR idle_timer_id = 0;
-extern char *basename(char *path);
+//extern char* basename(char *path); //
#else /* linux + wine */
#include <linux/limits.h> // PATH_MAX
-#include <libgen.h> // basename
#include <winnt.h>
#include <wine/exception.h>
#include <pthread.h>
@@ -24,6 +23,7 @@ static unsigned int idle_id = 0;
extern char * strdup (const char *);
#include <glib.h>
+#include <glibmm/miscutils.h> //basename
#include "fst.h"
struct ERect {
@@ -321,20 +321,20 @@ fst_init (void* possible_hmodule)
return 0;
}
+#ifndef PLATFORM_WINDOWS /* linux + wine */
void
fst_start_threading(void)
{
-#ifndef PLATFORM_WINDOWS /* linux + wine */
if (idle_id == 0) {
gui_quit = 0;
idle_id = g_idle_add (g_idle_call, NULL);
}
-#endif
}
+#endif
+#ifndef PLATFORM_WINDOWS /* linux + wine */
void
fst_stop_threading(void) {
-#ifndef PLATFORM_WINDOWS /* linux + wine */
if (idle_id != 0) {
gui_quit = 1;
PostQuitMessage (0);
@@ -342,8 +342,8 @@ fst_stop_threading(void) {
//g_source_remove(idle_id);
idle_id = 0;
}
-#endif
}
+#endif
void
fst_exit (void)
@@ -493,7 +493,7 @@ fst_load (const char *path)
char* period;
fhandle->nameptr = strdup (path);
fhandle->path = strdup (path);
- fhandle->name = basename(fhandle->nameptr);
+ fhandle->name = strdup (Glib::path_get_basename(fhandle->nameptr).c_str());
if ((period = strrchr (fhandle->name, '.'))) {
*period = '\0';
}
@@ -504,10 +504,10 @@ fst_load (const char *path)
return NULL;
}
- fhandle->main_entry = (main_entry_t) GetProcAddress (fhandle->dll, "main");
+ fhandle->main_entry = (main_entry_t) GetProcAddress ((HMODULE)fhandle->dll, "main");
if (fhandle->main_entry == 0) {
- if ((fhandle->main_entry = (main_entry_t) GetProcAddress (fhandle->dll, "VSTPluginMain"))) {
+ if ((fhandle->main_entry = (main_entry_t) GetProcAddress ((HMODULE)fhandle->dll, "VSTPluginMain"))) {
fprintf(stderr, "VST >= 2.4 plugin '%s'\n", path);
//PBD::warning << path << _(": is a VST >= 2.4 - this plugin may or may not function correctly with this version of Ardour.") << endmsg;
}
diff --git a/libs/gtkmm2ext/MSVCgtkmm2ext/gtkmm2ext.vcproj b/libs/gtkmm2ext/MSVCgtkmm2ext/gtkmm2ext.vcproj
index 51f7885ff4..2061b0f2b3 100644
--- a/libs/gtkmm2ext/MSVCgtkmm2ext/gtkmm2ext.vcproj
+++ b/libs/gtkmm2ext/MSVCgtkmm2ext/gtkmm2ext.vcproj
@@ -366,6 +366,10 @@
>
</File>
<File
+ RelativePath="..\paths_dialog.cc"
+ >
+ </File>
+ <File
RelativePath="..\persistent_tooltip.cc"
>
</File>