interim vst fixes
This commit is contained in:
@@ -1013,7 +1013,9 @@ If you still wish to quit, please use the\n\n\
|
|||||||
halt_connection.disconnect ();
|
halt_connection.disconnect ();
|
||||||
AudioEngine::instance()->stop ();
|
AudioEngine::instance()->stop ();
|
||||||
#ifdef WINDOWS_VST_SUPPORT
|
#ifdef WINDOWS_VST_SUPPORT
|
||||||
|
#ifndef PLATFORM_WINDOWS
|
||||||
fst_stop_threading();
|
fst_stop_threading();
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
quit ();
|
quit ();
|
||||||
}
|
}
|
||||||
@@ -2924,11 +2926,17 @@ ARDOUR_UI::load_session (const std::string& path, const std::string& snap_name,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WINDOWS_VST_SUPPORT
|
#ifdef WINDOWS_VST_SUPPORT
|
||||||
|
#ifndef PLATFORM_WINDOWS
|
||||||
fst_stop_threading();
|
fst_stop_threading();
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
flush_pending ();
|
flush_pending ();
|
||||||
|
|
||||||
#ifdef WINDOWS_VST_SUPPORT
|
#ifdef WINDOWS_VST_SUPPORT
|
||||||
|
#ifndef PLATFORM_WINDOWS
|
||||||
fst_start_threading();
|
fst_start_threading();
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
retval = 0;
|
retval = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -139,8 +139,9 @@ sigpipe_handler (int /*signal*/)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WINDOWS_VST_SUPPORT
|
#ifdef WINDOWS_VST_SUPPORT
|
||||||
|
#ifndef PLATFORM_WINDOWS
|
||||||
extern int windows_vst_gui_init (int* argc, char** argv[]);
|
extern int windows_vst_gui_init (int* argc, char** argv[]);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* this is called from the entry point of a wine-compiled
|
/* this is called from the entry point of a wine-compiled
|
||||||
executable that is linked against gtk2_ardour built
|
executable that is linked against gtk2_ardour built
|
||||||
@@ -165,11 +166,13 @@ int main (int argc, char *argv[])
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef WINDOWS_VST_SUPPORT
|
#ifdef WINDOWS_VST_SUPPORT
|
||||||
|
#ifndef PLATFORM_WINDOWS
|
||||||
/* this does some magic that is needed to make GTK and Wine's own
|
/* this does some magic that is needed to make GTK and Wine's own
|
||||||
X11 client interact properly.
|
X11 client interact properly.
|
||||||
*/
|
*/
|
||||||
windows_vst_gui_init (&argc, &argv);
|
windows_vst_gui_init (&argc, &argv);
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_NLS
|
#ifdef ENABLE_NLS
|
||||||
cerr << "bnd txt domain [" << PACKAGE << "] to " << localedir << endl;
|
cerr << "bnd txt domain [" << PACKAGE << "] to " << localedir << endl;
|
||||||
|
|||||||
@@ -551,6 +551,10 @@
|
|||||||
RelativePath="..\find_session.cc"
|
RelativePath="..\find_session.cc"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\fst\fst.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\globals.cc"
|
RelativePath="..\globals.cc"
|
||||||
>
|
>
|
||||||
@@ -1127,6 +1131,10 @@
|
|||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\session_vst.cc"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\slave.cc"
|
RelativePath="..\slave.cc"
|
||||||
>
|
>
|
||||||
@@ -1227,10 +1235,26 @@
|
|||||||
RelativePath="..\version.cc"
|
RelativePath="..\version.cc"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\vst_info_file.cc"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\vst_plugin.cc"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\fst\vstwin.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\vumeterdsp.cc"
|
RelativePath="..\vumeterdsp.cc"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\windows_vst_plugin.cc"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\worker.cc"
|
RelativePath="..\worker.cc"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -116,10 +116,9 @@ PluginManager::PluginManager ()
|
|||||||
char* s;
|
char* s;
|
||||||
string lrdf_path;
|
string lrdf_path;
|
||||||
|
|
||||||
if (!PBD::find_file_in_search_path (
|
string scan_p = Glib::build_filename(ARDOUR::ardour_dll_directory(), "fst");
|
||||||
PBD::Searchpath(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)) {
|
||||||
"ardour-vst-scanner", scanner_bin_path)) {
|
PBD::warning << "VST scanner app (ardour-vst-scanner) not found in path " << scan_p << endmsg;
|
||||||
PBD::warning << "VST scanner app not found.'" << endmsg;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
load_statuses ();
|
load_statuses ();
|
||||||
|
|||||||
@@ -9,27 +9,56 @@
|
|||||||
#include "ardour/vst_types.h"
|
#include "ardour/vst_types.h"
|
||||||
#include "ardour/vestige/aeffectx.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
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
LIBARDOUR_API int fst_init (void* possible_hmodule);
|
extern int fst_init (void* possible_hmodule);
|
||||||
LIBARDOUR_API void fst_exit (void);
|
extern void fst_exit (void);
|
||||||
|
|
||||||
LIBARDOUR_API VSTHandle* fst_load (const char*);
|
extern VSTHandle* fst_load (const char*);
|
||||||
LIBARDOUR_API int fst_unload (VSTHandle**);
|
extern int fst_unload (VSTHandle**);
|
||||||
|
|
||||||
LIBARDOUR_API VSTState * fst_instantiate (VSTHandle *, audioMasterCallback amc, void* userptr);
|
extern VSTState * fst_instantiate (VSTHandle *, audioMasterCallback amc, void* userptr);
|
||||||
LIBARDOUR_API void fst_close (VSTState *);
|
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 int fst_run_editor (VSTState *, void* window_parent);
|
||||||
LIBARDOUR_API void fst_destroy_editor (VSTState *);
|
LIBARDOUR_API void fst_destroy_editor (VSTState *);
|
||||||
LIBARDOUR_API void fst_move_window_into_view (VSTState *);
|
LIBARDOUR_API void fst_move_window_into_view (VSTState *);
|
||||||
|
//----
|
||||||
|
|
||||||
LIBARDOUR_API void fst_event_loop_remove_plugin (VSTState* fst);
|
extern void fst_event_loop_remove_plugin (VSTState* fst);
|
||||||
LIBARDOUR_API void fst_start_threading(void);
|
|
||||||
LIBARDOUR_API void fst_stop_threading(void);
|
#ifndef PLATFORM_WINDOWS /* linux + wine */
|
||||||
LIBARDOUR_API void fst_audio_master_idle(void);
|
extern void fst_start_threading(void);
|
||||||
|
extern void fst_stop_threading(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern void fst_audio_master_idle(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,12 +8,11 @@
|
|||||||
|
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
static UINT_PTR idle_timer_id = 0;
|
static UINT_PTR idle_timer_id = 0;
|
||||||
extern char *basename(char *path);
|
//extern char* basename(char *path); //
|
||||||
|
|
||||||
#else /* linux + wine */
|
#else /* linux + wine */
|
||||||
|
|
||||||
#include <linux/limits.h> // PATH_MAX
|
#include <linux/limits.h> // PATH_MAX
|
||||||
#include <libgen.h> // basename
|
|
||||||
#include <winnt.h>
|
#include <winnt.h>
|
||||||
#include <wine/exception.h>
|
#include <wine/exception.h>
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
@@ -24,6 +23,7 @@ static unsigned int idle_id = 0;
|
|||||||
|
|
||||||
extern char * strdup (const char *);
|
extern char * strdup (const char *);
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
#include <glibmm/miscutils.h> //basename
|
||||||
#include "fst.h"
|
#include "fst.h"
|
||||||
|
|
||||||
struct ERect {
|
struct ERect {
|
||||||
@@ -321,20 +321,20 @@ fst_init (void* possible_hmodule)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef PLATFORM_WINDOWS /* linux + wine */
|
||||||
void
|
void
|
||||||
fst_start_threading(void)
|
fst_start_threading(void)
|
||||||
{
|
{
|
||||||
#ifndef PLATFORM_WINDOWS /* linux + wine */
|
|
||||||
if (idle_id == 0) {
|
if (idle_id == 0) {
|
||||||
gui_quit = 0;
|
gui_quit = 0;
|
||||||
idle_id = g_idle_add (g_idle_call, NULL);
|
idle_id = g_idle_add (g_idle_call, NULL);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PLATFORM_WINDOWS /* linux + wine */
|
||||||
void
|
void
|
||||||
fst_stop_threading(void) {
|
fst_stop_threading(void) {
|
||||||
#ifndef PLATFORM_WINDOWS /* linux + wine */
|
|
||||||
if (idle_id != 0) {
|
if (idle_id != 0) {
|
||||||
gui_quit = 1;
|
gui_quit = 1;
|
||||||
PostQuitMessage (0);
|
PostQuitMessage (0);
|
||||||
@@ -342,8 +342,8 @@ fst_stop_threading(void) {
|
|||||||
//g_source_remove(idle_id);
|
//g_source_remove(idle_id);
|
||||||
idle_id = 0;
|
idle_id = 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
fst_exit (void)
|
fst_exit (void)
|
||||||
@@ -493,7 +493,7 @@ fst_load (const char *path)
|
|||||||
char* period;
|
char* period;
|
||||||
fhandle->nameptr = strdup (path);
|
fhandle->nameptr = strdup (path);
|
||||||
fhandle->path = 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, '.'))) {
|
if ((period = strrchr (fhandle->name, '.'))) {
|
||||||
*period = '\0';
|
*period = '\0';
|
||||||
}
|
}
|
||||||
@@ -504,10 +504,10 @@ fst_load (const char *path)
|
|||||||
return NULL;
|
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 == 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);
|
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;
|
//PBD::warning << path << _(": is a VST >= 2.4 - this plugin may or may not function correctly with this version of Ardour.") << endmsg;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -365,6 +365,10 @@
|
|||||||
RelativePath="..\motionfeedback.cc"
|
RelativePath="..\motionfeedback.cc"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\paths_dialog.cc"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\persistent_tooltip.cc"
|
RelativePath="..\persistent_tooltip.cc"
|
||||||
>
|
>
|
||||||
|
|||||||
Reference in New Issue
Block a user