-Working on NSM integration: open working, but session not showing: Jack registration issue with GUI probably the cause
parent
260a1d5a0c
commit
0a9471cf54
36
src/gui.cxx
36
src/gui.cxx
|
@ -66,11 +66,15 @@ static void gui_static_read_rb(void* inst)
|
||||||
{
|
{
|
||||||
handleGuiEvents();
|
handleGuiEvents();
|
||||||
|
|
||||||
nsm_check_nowait( gui->getNsm() );
|
|
||||||
|
|
||||||
Fl::repeat_timeout( 1 / 30.f, &gui_static_read_rb, inst);
|
Fl::repeat_timeout( 1 / 30.f, &gui_static_read_rb, inst);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void gui_static_nsm_cb(void* inst)
|
||||||
|
{
|
||||||
|
nsm_check_nowait( gui->getNsm() );
|
||||||
|
Fl::repeat_timeout( 1 / 1.f, &gui_static_nsm_cb, inst);
|
||||||
|
}
|
||||||
|
|
||||||
void option_controller_cb(Fl_Widget*,void* data)
|
void option_controller_cb(Fl_Widget*,void* data)
|
||||||
{
|
{
|
||||||
LUPPP_NOTE("%s","Controller cb");
|
LUPPP_NOTE("%s","Controller cb");
|
||||||
|
@ -229,31 +233,29 @@ static int cb_nsm_open (const char *name,
|
||||||
char **out_msg,
|
char **out_msg,
|
||||||
void *userdata )
|
void *userdata )
|
||||||
{
|
{
|
||||||
//printf("nsm open()\n", out_msg[0] );
|
LUPPP_NOTE("NSM: Open, displayname: %s", display_name );
|
||||||
|
|
||||||
LUPPP_NOTE("NSM open() loading session");
|
Jack::setup( client_id );
|
||||||
//gui->getDiskReader()->readSession( fnfc.filename() );
|
|
||||||
|
|
||||||
//OSC_REPLY( "OK" );
|
|
||||||
//OSC_REPLY_P( "/nsm/client/open", "OK" );
|
|
||||||
//nsm_client_t* nsm = gui->getNsm();
|
|
||||||
|
|
||||||
//lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/reply", "ss", path, "OK" );
|
|
||||||
|
|
||||||
//lo_send_from( _NSM()->nsm_addr, _NSM()->_server, LO_TT_IMMEDIATE, "/reply", "ss", "/nsm/client/open", "OK" );
|
// load the NSM provided directory
|
||||||
|
gui->getDiskReader()->readSession( name );
|
||||||
|
|
||||||
|
// initialize the disk-writer to the same directory:
|
||||||
|
// we *always* overwrite the old save file when using NSM
|
||||||
|
gui->getDiskWriter()->initialize( name, display_name );
|
||||||
|
|
||||||
return ERR_OK;
|
return ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int cb_nsm_save ( char **out_msg, void *userdata )
|
static int cb_nsm_save ( char **out_msg, void *userdata )
|
||||||
{
|
{
|
||||||
printf("nsm save()\n");
|
LUPPP_NOTE("NSM: saving session as %s", *out_msg );
|
||||||
//do_save_stuff();
|
|
||||||
|
|
||||||
LUPPP_NOTE("%s %s","Saving session as ", out_msg[0] );
|
// disk-writer already initialized to the right directory, so just write!
|
||||||
//gui->getDiskWriter()->initialize( getenv("HOME"), out_msg );
|
|
||||||
EventStateSave e;
|
EventStateSave e;
|
||||||
//writeToDspRingbuffer( &e );
|
writeToDspRingbuffer( &e );
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -418,6 +420,10 @@ int Gui::show()
|
||||||
|
|
||||||
gui_static_read_rb( this );
|
gui_static_read_rb( this );
|
||||||
|
|
||||||
|
// only launch NSM check callbacks if NSM is setup
|
||||||
|
if ( gui->getNsm() )
|
||||||
|
gui_static_nsm_cb( this );
|
||||||
|
|
||||||
return Fl::run();
|
return Fl::run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
18
src/jack.cxx
18
src/jack.cxx
|
@ -34,8 +34,22 @@ extern Jack* jack;
|
||||||
|
|
||||||
extern int jackSamplerate;
|
extern int jackSamplerate;
|
||||||
|
|
||||||
Jack::Jack() :
|
void Jack::setup(std::string name)
|
||||||
client( jack_client_open ( "Luppp", JackNullOption , 0 , 0 ) ),
|
{
|
||||||
|
if ( jack == 0 )
|
||||||
|
{
|
||||||
|
jack = new Jack( name );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LUPPP_WARN("JACK instance already exists!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Jack::Jack( std::string name ) :
|
||||||
|
client( jack_client_open ( name.c_str(), JackNullOption , 0 , 0 ) ),
|
||||||
state( new State() ),
|
state( new State() ),
|
||||||
controllerUpdater( new ControllerUpdater() ),
|
controllerUpdater( new ControllerUpdater() ),
|
||||||
clientActive(false)
|
clientActive(false)
|
||||||
|
|
|
@ -38,9 +38,11 @@ using namespace std;
|
||||||
class Jack
|
class Jack
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Jack();
|
Jack(std::string name);
|
||||||
~Jack();
|
~Jack();
|
||||||
|
|
||||||
|
static void setup(std::string name);
|
||||||
|
|
||||||
void activate();
|
void activate();
|
||||||
/// quits the JACK client, destroying ports etc. Call only on exit of Luppp.
|
/// quits the JACK client, destroying ports etc. Call only on exit of Luppp.
|
||||||
void quit();
|
void quit();
|
||||||
|
|
17
src/main.cxx
17
src/main.cxx
|
@ -30,7 +30,6 @@ void signalHanlder(int signum)
|
||||||
signalHanlderInt = signum;
|
signalHanlderInt = signum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
bool runTests = false;
|
bool runTests = false;
|
||||||
|
@ -65,7 +64,8 @@ int main(int argc, char** argv)
|
||||||
int testResult = 0;
|
int testResult = 0;
|
||||||
|
|
||||||
// setup the testing Gui / JACK: Jack first, then GUI
|
// setup the testing Gui / JACK: Jack first, then GUI
|
||||||
jack = new Jack();
|
Jack::setup();
|
||||||
|
//jack = new Jack();
|
||||||
gui = new Gui(argv[0]);
|
gui = new Gui(argv[0]);
|
||||||
|
|
||||||
// test offline functionality
|
// test offline functionality
|
||||||
|
@ -88,12 +88,19 @@ int main(int argc, char** argv)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// setup the "real" JACK / Gui: Jack first, then GUI
|
// setup the "real" JACK / Gui: Jack first, then GUI
|
||||||
jack = new Jack();
|
|
||||||
|
|
||||||
gui = new Gui(argv[0]);
|
gui = new Gui(argv[0]);
|
||||||
|
|
||||||
|
if ( gui->getNsm() )
|
||||||
|
{
|
||||||
|
// the NSM OSC Open message will trigger Jack initialization: necessary
|
||||||
|
// to use the right name to create the JACK client.
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Jack::setup("Luppp");
|
||||||
|
jack->activate();
|
||||||
|
}
|
||||||
|
|
||||||
jack->activate();
|
|
||||||
gui->show();
|
gui->show();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -353,8 +353,6 @@ nsm_set_broadcast_callback( nsm_client_t *nsm, nsm_broadcast_callback *broadcast
|
||||||
|
|
||||||
NSM_EXPORT int _nsm_osc_open ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data )
|
NSM_EXPORT int _nsm_osc_open ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data )
|
||||||
{
|
{
|
||||||
printf("NSM OSC OPEN\n");
|
|
||||||
|
|
||||||
(void) types;
|
(void) types;
|
||||||
(void) argc;
|
(void) argc;
|
||||||
(void) msg;
|
(void) msg;
|
||||||
|
@ -387,8 +385,6 @@ NSM_EXPORT int _nsm_osc_save ( const char *path, const char *types, lo_arg **arg
|
||||||
(void) argv;
|
(void) argv;
|
||||||
(void) argc;
|
(void) argc;
|
||||||
(void) msg;
|
(void) msg;
|
||||||
|
|
||||||
printf("NSM SAVE()\n");
|
|
||||||
|
|
||||||
char *out_msg = NULL;
|
char *out_msg = NULL;
|
||||||
|
|
||||||
|
@ -401,12 +397,10 @@ NSM_EXPORT int _nsm_osc_save ( const char *path, const char *types, lo_arg **arg
|
||||||
|
|
||||||
if ( r )
|
if ( r )
|
||||||
{
|
{
|
||||||
printf("SEnding save ERROR\n");
|
|
||||||
OSC_REPLY_ERR( r, ( out_msg ? out_msg : "") );
|
OSC_REPLY_ERR( r, ( out_msg ? out_msg : "") );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("SEnding save OK\n");
|
|
||||||
OSC_REPLY( "OK" );
|
OSC_REPLY( "OK" );
|
||||||
}
|
}
|
||||||
if ( out_msg )
|
if ( out_msg )
|
||||||
|
|
Loading…
Reference in New Issue