2020
2121#include < locale.h>
2222
23+ #include " xpa.h"
2324#include " engine.h"
2425#include " ParallelThread.h"
2526#define STANDALONE
@@ -31,6 +32,9 @@ class NeuralRack : public TextEntry
3132{
3233public:
3334 Widget_t* TopWin;
35+ #if defined(HAVE_PA)
36+ XPa* xpa;
37+ #endif
3438
3539 NeuralRack () : engine() {
3640 workToDo.store (false , std::memory_order_release);
@@ -48,6 +52,9 @@ class NeuralRack : public TextEntry
4852 ui->f_index = 0 ;
4953 title = " NeuralRack" ;
5054 currentPreset = " Default" ;
55+ #if defined(HAVE_PA)
56+ xpa = nullptr ;
57+ #endif
5158 for (int i = 0 ;i<CONTROLS;i++)
5259 ui->widget [i] = NULL ;
5360 getConfigFilePath ();
@@ -61,6 +68,15 @@ class NeuralRack : public TextEntry
6168 // cleanup();
6269 }
6370
71+ #if defined(HAVE_PA)
72+ void setXPa (XPa* xpa_, bool isASIO) {
73+ xpa = xpa_;
74+ #if defined(_WIN32)
75+ if (!isASIO) ASIOPannel->state = 4 ;
76+ #endif
77+ }
78+ #endif
79+
6480 void startGui () {
6581 main_init (&ui->main );
6682 set_custom_theme (ui);
@@ -78,7 +94,14 @@ class NeuralRack : public TextEntry
7894 ui->win ->scale .gravity = NORTHWEST;
7995 plugin_create_controller_widgets (ui," standalone" );
8096
81- Widget_t* EngineMenu = menubar_add_menu (Menu, " Engine" );
97+ EngineMenu = menubar_add_menu (Menu, " Engine" );
98+ #if defined(HAVE_PA)
99+ #if defined(_WIN32)
100+ ASIOPannel = menu_add_entry (EngineMenu, " ASIO Pannel" );
101+ ASIOPannel->parent_struct = (void *)this ;
102+ ASIOPannel->func .button_release_callback = asio_callback;
103+ #endif
104+ #endif
82105 Widget_t* QuitMenu = menu_add_entry (EngineMenu, " Quit" );
83106 QuitMenu->parent_struct = (void *)this ;
84107 QuitMenu->func .button_release_callback = quit_callback;
@@ -427,6 +450,8 @@ class NeuralRack : public TextEntry
427450 Widget_t* PresetLoadMenu;
428451 Widget_t* ShowValues;
429452 Widget_t* AutoConnect;
453+ Widget_t* EngineMenu;
454+ Widget_t* ASIOPannel;
430455 int processCounter;
431456 bool settingsHaveChanged;
432457 bool disableAutoConnect;
@@ -474,6 +499,18 @@ class NeuralRack : public TextEntry
474499 }
475500 }
476501
502+ #if defined(HAVE_PA)
503+ static void asio_callback (void *w_, void * item_, void * user_data) {
504+ Widget_t *w = (Widget_t*)w_;
505+ if (w->flags & HAS_POINTER){
506+ #if defined(_WIN32)
507+ NeuralRack *self = static_cast <NeuralRack*>(w->parent_struct );
508+ self->xpa ->showAsioPannel ((HWND) self->TopWin );
509+ #endif
510+ }
511+ }
512+ #endif
513+
477514 static void openSite (std::string url) {
478515 std::string op = " " ;
479516 #if defined(__linux__) || defined(__FreeBSD__) || \
0 commit comments