From af32e1a0dafecf60ffdaf5e78b4987522d17ab40 Mon Sep 17 00:00:00 2001 From: bsp2 Date: Sat, 27 Oct 2018 19:15:02 +0200 Subject: [PATCH] Linux: redirect Dprintf to /tmp/vst2_log.txt (debug) --- src/vst2_main.cpp | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/src/vst2_main.cpp b/src/vst2_main.cpp index f5d6fa32..1fe1feef 100644 --- a/src/vst2_main.cpp +++ b/src/vst2_main.cpp @@ -148,6 +148,23 @@ struct PluginMutex { #include #include #include // fesetround() +#include + +static FILE *logfile; +#undef Dprintf +#define Dprintf log_printf + +static void log_printf(const char *logData, ...) { + static char buf[16*1024]; + va_list va; + va_start(va, logData); + vsprintf(buf, logData, va); + va_end(va); + printf(buf); + fputs(buf, logfile); + fflush(logfile); +} + // #define _GNU_SOURCE #include @@ -689,7 +706,6 @@ public: } void closeEffect(void) { - closeEditor(); // (todo) use mutex @@ -998,18 +1014,26 @@ public: } bool setProgramChunk(size_t _size, uint8_t *_addr) { + Dprintf("xxx vstrack_plugin:setProgramChunk: 1\n"); setGlobals(); + Dprintf("xxx vstrack_plugin:setProgramChunk: 2\n"); lockAudio(); + Dprintf("xxx vstrack_plugin:setProgramChunk: 3\n"); vst2_set_shared_plugin_tls_globals(); + Dprintf("xxx vstrack_plugin:setProgramChunk: 4\n"); #if 0 Dprintf("xxx vstrack_plugin:setProgramChunk: size=%u\n", _size); #endif lglw_glcontext_push(rack::global_ui->window.lglw); + Dprintf("xxx vstrack_plugin:setProgramChunk: 5\n"); bool r = rack::global_ui->app.gRackWidget->loadPatchFromString((const char*)_addr); + Dprintf("xxx vstrack_plugin:setProgramChunk: 6\n"); rack::global_ui->ui.gScene->step(); // w/o this the patch is bypassed + Dprintf("xxx vstrack_plugin:setProgramChunk: 7\n"); lglw_glcontext_pop(rack::global_ui->window.lglw); - Dprintf("xxx vstrack_plugin:setProgramChunk: r=%d\n", r); + Dprintf("xxx vstrack_plugin:setProgramChunk: 8 r=%d\n", r); unlockAudio(); + Dprintf("xxx vstrack_plugin:setProgramChunk: 9\n"); return r; } @@ -1102,6 +1126,7 @@ public: } void redraw(void) { +#if 1 setGlobals(); if(lglw_window_is_visible(rack::global_ui->window.lglw)) @@ -1116,6 +1141,7 @@ public: // Restore the DAW's GL context lglw_glcontext_pop(rack::global_ui->window.lglw); } +#endif } #ifdef YAC_LINUX @@ -1690,6 +1716,7 @@ VstIntPtr VSTPluginDispatcher(VSTPlugin *vstPlugin, // // { r = wrapper->setProgramChunk(size_t(value), (uint8_t*)ptr) ? 1 : 0; // // } + Dprintf("xxx vstrack_plugin: effSetChunk LEAVE\n"); break; case effShellGetNextPlugin: @@ -2205,6 +2232,11 @@ void vst2_idle_detect_mode_get(int *_mode) { * Implementation of the main entry point of the plugin */ VST_EXPORT VSTPlugin *VSTPluginMain(VSTHostCallback vstHostCallback) { + +#ifdef YAC_LINUX + logfile = fopen("/tmp/vst2_log.txt", "w"); +#endif + Dprintf("vstrack_plugin: called VSTPluginMain... \n"); #if 0