/[svn]/linuxsampler/trunk/src/drivers/audio/AudioOutputDeviceJack.cpp
ViewVC logotype

Diff of /linuxsampler/trunk/src/drivers/audio/AudioOutputDeviceJack.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2410 by schoenebeck, Sat Feb 2 18:52:15 2013 UTC revision 2412 by schoenebeck, Mon Feb 4 21:52:56 2013 UTC
# Line 80  namespace LinuxSampler { Line 80  namespace LinuxSampler {
80          // disconnect all current bindings first          // disconnect all current bindings first
81          for (int i = 0; i < Bindings.size(); i++) {          for (int i = 0; i < Bindings.size(); i++) {
82              String dst_name = Bindings[i];              String dst_name = Bindings[i];
83              int res = jack_disconnect(pChannel->pDevice->hJackClient, src_name.c_str(), dst_name.c_str());              /*int res =*/ jack_disconnect(pChannel->pDevice->hJackClient, src_name.c_str(), dst_name.c_str());
84          }          }
85          // connect new bindings          // connect new bindings
86          for (int i = 0; i < vS.size(); i++) {          for (int i = 0; i < vS.size(); i++) {
# Line 184  namespace LinuxSampler { Line 184  namespace LinuxSampler {
184       * @see AcquireChannels()       * @see AcquireChannels()
185       */       */
186      AudioOutputDeviceJack::AudioOutputDeviceJack(std::map<String,DeviceCreationParameter*> Parameters) : AudioOutputDevice(Parameters) {      AudioOutputDeviceJack::AudioOutputDeviceJack(std::map<String,DeviceCreationParameter*> Parameters) : AudioOutputDevice(Parameters) {
187          JackClient* pJackClient = JackClient::CreateAudio(((DeviceCreationParameterString*)Parameters["NAME"])->ValueAsString());          pJackClient = JackClient::CreateAudio(((DeviceCreationParameterString*)Parameters["NAME"])->ValueAsString());
188          existingJackDevices++;          existingJackDevices++;
189          pJackClient->SetAudioOutputDevice(this);          pJackClient->SetAudioOutputDevice(this);
190          hJackClient = pJackClient->hJackClient;          hJackClient = pJackClient->hJackClient;
# Line 237  namespace LinuxSampler { Line 237  namespace LinuxSampler {
237          const float rate = jack_get_sample_rate(hJackClient);          const float rate = jack_get_sample_rate(hJackClient);
238          return size / rate;          return size / rate;
239      }      }
240        
241        jack_client_t* AudioOutputDeviceJack::jackClientHandle() {
242            return hJackClient;
243        }
244    
245      void AudioOutputDeviceJack::Play() {      void AudioOutputDeviceJack::Play() {
246          csIsPlaying.PushAndUnlock(true);          csIsPlaying.PushAndUnlock(true);
# Line 261  namespace LinuxSampler { Line 265  namespace LinuxSampler {
265      uint AudioOutputDeviceJack::SampleRate() {      uint AudioOutputDeviceJack::SampleRate() {
266          return jack_get_sample_rate(hJackClient);          return jack_get_sample_rate(hJackClient);
267      }      }
268        
269        void AudioOutputDeviceJack::addListener(JackListener* listener) {
270            pJackClient->addListener(listener);
271        }
272    
273      String AudioOutputDeviceJack::Name() {      String AudioOutputDeviceJack::Name() {
274          return "JACK";          return "JACK";
# Line 290  namespace LinuxSampler { Line 298  namespace LinuxSampler {
298          return static_cast<JackClient*>(arg)->Process(nframes);          return static_cast<JackClient*>(arg)->Process(nframes);
299      }      }
300    
301      void linuxsampler_libjack_shutdown_callback(void* arg) {      void JackClient::libjackShutdownCallback(void* arg) {
302          static_cast<JackClient*>(arg)->Stop();          JackClient* jackClient = static_cast<JackClient*>(arg);
303            jackClient->Stop();
304          fprintf(stderr, "Jack: Jack server shutdown, exiting.\n");          fprintf(stderr, "Jack: Jack server shutdown, exiting.\n");
305            for (int i = 0; i < jackClient->jackListeners.size(); ++i) {
306                JackListener* listener = jackClient->jackListeners[i];
307                listener->onJackShutdown();
308            }
309      }      }
310            
311      int JackClient::libjackSampleRateCallback(jack_nframes_t nframes, void *arg) {      int JackClient::libjackSampleRateCallback(jack_nframes_t nframes, void *arg) {
# Line 315  namespace LinuxSampler { Line 328  namespace LinuxSampler {
328          client->ConfigReader.Unlock();          client->ConfigReader.Unlock();
329          return 0;          return 0;
330      }      }
331        
332        void JackClient::addListener(JackListener* listener) {
333            jackListeners.push_back(listener);
334        }
335    
336      std::map<String, JackClient*> JackClient::Clients;      std::map<String, JackClient*> JackClient::Clients;
337    
# Line 360  namespace LinuxSampler { Line 377  namespace LinuxSampler {
377          if (!hJackClient)          if (!hJackClient)
378              throw Exception("Seems Jack server is not running.");              throw Exception("Seems Jack server is not running.");
379          jack_set_process_callback(hJackClient, linuxsampler_libjack_process_callback, this);          jack_set_process_callback(hJackClient, linuxsampler_libjack_process_callback, this);
380          jack_on_shutdown(hJackClient, linuxsampler_libjack_shutdown_callback, this);          jack_on_shutdown(hJackClient, libjackShutdownCallback, this);
381          jack_set_buffer_size_callback(hJackClient, libjackBufferSizeCallback, this);          jack_set_buffer_size_callback(hJackClient, libjackBufferSizeCallback, this);
382          jack_set_sample_rate_callback(hJackClient, libjackSampleRateCallback, this);          jack_set_sample_rate_callback(hJackClient, libjackSampleRateCallback, this);
383                    

Legend:
Removed from v.2410  
changed lines
  Added in v.2412

  ViewVC Help
Powered by ViewVC