diff --git a/ChangeLog b/ChangeLog index d2113ea6..1a8468d2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -22,6 +22,10 @@ Florian Faber Jackdmp changes log --------------------------- +2008-09-04 Stephane Letz + + * Correct JackNetDriver initialization. + 2008-09-03 Stephane Letz * Implement DBUS entry points to handle internal clients, add new commands in jack_control." diff --git a/common/JackNetDriver.cpp b/common/JackNetDriver.cpp index bef4f3e3..8b0f0745 100644 --- a/common/JackNetDriver.cpp +++ b/common/JackNetDriver.cpp @@ -31,11 +31,15 @@ namespace Jack { JackNetDriver::JackNetDriver ( const char* name, const char* alias, JackLockedEngine* engine, JackSynchro* table, const char* ip, int port, int mtu, int midi_input_ports, int midi_output_ports, - const char* net_name, uint transport_sync, char network_mode ) + char* net_name, uint transport_sync, char network_mode ) : JackAudioDriver ( name, alias, engine, table ), JackNetSlaveInterface ( ip, port ) { jack_log ( "JackNetDriver::JackNetDriver ip %s, port %d", ip, port ); - + + // Use the hostname if no name parameter was given + if (strcmp(net_name, "") == 0) + GetHostName(net_name, JACK_CLIENT_NAME_SIZE); + fParams.fMtu = mtu; fParams.fSendMidiChannels = midi_input_ports; fParams.fReturnMidiChannels = midi_output_ports; @@ -647,8 +651,7 @@ namespace Jack { char multicast_ip[16]; strcpy ( multicast_ip, DEFAULT_MULTICAST_IP ); - char name[JACK_CLIENT_NAME_SIZE]; - GetHostName ( name, JACK_CLIENT_NAME_SIZE ); + char net_name[JACK_CLIENT_NAME_SIZE]; int udp_port = DEFAULT_PORT; int mtu = 1500; uint transport_sync = 1; @@ -660,9 +663,11 @@ namespace Jack int midi_output_ports = 0; bool monitor = false; char network_mode = 'n'; - const JSList* node; const jack_driver_param_t* param; + + net_name[0] = 0; + for ( node = params; node; node = jack_slist_next ( node ) ) { param = ( const jack_driver_param_t* ) node->data; @@ -690,7 +695,7 @@ namespace Jack midi_output_ports = param->value.i; break; case 'n' : - strncpy ( name, param->value.str, JACK_CLIENT_NAME_SIZE ); + strncpy ( net_name, param->value.str, JACK_CLIENT_NAME_SIZE ); break; case 't' : transport_sync = param->value.ui; @@ -713,7 +718,7 @@ namespace Jack Jack::JackDriverClientInterface* driver = new Jack::JackWaitThreadedDriver( new Jack::JackNetDriver("system", "net_pcm", engine, table, multicast_ip, udp_port, mtu, - midi_input_ports, midi_output_ports, name, transport_sync, network_mode)); + midi_input_ports, midi_output_ports, net_name, transport_sync, network_mode)); if (driver->Open (period_size, sample_rate, 1, 1, audio_capture_ports, audio_playback_ports, monitor, "from_master_", "to_master_", 0, 0) == 0) { return driver; diff --git a/common/JackNetDriver.h b/common/JackNetDriver.h index 000116b8..24e94fcb 100644 --- a/common/JackNetDriver.h +++ b/common/JackNetDriver.h @@ -71,7 +71,7 @@ namespace Jack public: JackNetDriver ( const char* name, const char* alias, JackLockedEngine* engine, JackSynchro* table, const char* ip, int port, int mtu, int midi_input_ports, int midi_output_ports, - const char* master_name, uint transport_sync, char network_master_mode ); + char* net_name, uint transport_sync, char network_master_mode ); ~JackNetDriver(); int Open ( jack_nframes_t frames_per_cycle, jack_nframes_t rate, bool capturing, bool playing,