interim vst fixes
authorunknown <Ben>
Fri, 11 Apr 2014 15:48:12 +0000 (10:48 -0500)
committerunknown <Ben>
Fri, 11 Apr 2014 19:23:29 +0000 (14:23 -0500)
gtk2_ardour/ardour_ui.cc
gtk2_ardour/main.cc
libs/ardour/MSVClibardour/ardour.vcproj
libs/ardour/plugin_manager.cc
libs/fst/fst.h
libs/fst/vstwin.c
libs/gtkmm2ext/MSVCgtkmm2ext/gtkmm2ext.vcproj

index eebe272c151b9b11035450b22c99246de456206b..8ea786b2687c83b09519050293bc292444a81253 100644 (file)
@@ -1013,7 +1013,9 @@ 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,11 +2926,17 @@ 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;
 
index bb9fabb6bb3fed0034d9de2b062a9fe46d69fa36..4b9136626a1ae5617aadb14413e27d92ad36a302 100644 (file)
@@ -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;
index fde10c443cb2c899f3c939cd7e0eae7cfa8346c1..ccf5ac8639a7f51955d325dfa79044ed67b20901 100644 (file)
                                RelativePath="..\find_session.cc"
                                >
                        </File>
+                       <File
+                               RelativePath="..\..\fst\fst.c"
+                               >
+                       </File>
                        <File
                                RelativePath="..\globals.cc"
                                >
                                        />
                                </FileConfiguration>
                        </File>
+                       <File
+                               RelativePath="..\session_vst.cc"
+                               >
+                       </File>
                        <File
                                RelativePath="..\slave.cc"
                                >
                                RelativePath="..\version.cc"
                                >
                        </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"
                                >
index 2db24ed269c6c4dc5aa690aba8dc76fbc5b3c8b5..7c3eae538f9531fa9e17b20a2a796c2ebb4b3c6b 100644 (file)
@@ -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 ();
index 7b9a67125e5b381e2aab97105b5c51667522a9e9..d2b777f77aee008a7433d8a3565565b79066992f 100644 (file)
@@ -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
 }
index c07aaa09dcd01d7d7d8e8ff8be1aed348e7df4c7..37b6acd5e146229ab7627f2972ba0f74c6013a15 100644 (file)
@@ -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;
                        }
index 51f7885ff4671724967bbc7090b3c6be2ff876cf..2061b0f2b35a3e0b6380e23b4f548a96598d2cc2 100644 (file)
                                RelativePath="..\motionfeedback.cc"
                                >
                        </File>
+                       <File
+                               RelativePath="..\paths_dialog.cc"
+                               >
+                       </File>
                        <File
                                RelativePath="..\persistent_tooltip.cc"
                                >