/[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 379 by persson, Sun Feb 13 18:02:29 2005 UTC revision 880 by schoenebeck, Tue Jun 27 22:57:37 2006 UTC
# Line 3  Line 3 
3   *   LinuxSampler - modular, streaming capable sampler                     *   *   LinuxSampler - modular, streaming capable sampler                     *
4   *                                                                         *   *                                                                         *
5   *   Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck   *   *   Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck   *
6     *   Copyright (C) 2005, 2006 Christian Schoenebeck                        *
7   *                                                                         *   *                                                                         *
8   *   This program is free software; you can redistribute it and/or modify  *   *   This program is free software; you can redistribute it and/or modify  *
9   *   it under the terms of the GNU General Public License as published by  *   *   it under the terms of the GNU General Public License as published by  *
# Line 74  namespace LinuxSampler { Line 75  namespace LinuxSampler {
75      }      }
76    
77      void AudioOutputDeviceJack::AudioChannelJack::ParameterJackBindings::OnSetValue(std::vector<String> vS) {      void AudioOutputDeviceJack::AudioChannelJack::ParameterJackBindings::OnSetValue(std::vector<String> vS) {
78          // TODO: we should remove all existing bindings before we connect new ones here          String src_name = ((DeviceCreationParameterString*)pChannel->pDevice->Parameters["NAME"])->ValueAsString() + ":" +
79          String src_name = "LinuxSampler:" + ((DeviceRuntimeParameterString*)pChannel->Parameters["NAME"])->ValueAsString();                            ((DeviceRuntimeParameterString*)pChannel->Parameters["NAME"])->ValueAsString();
80            // disconnect all current bindings first
81            for (int i = 0; i < Bindings.size(); i++) {
82                String dst_name = Bindings[i];
83                int res = jack_disconnect(pChannel->pDevice->hJackClient, src_name.c_str(), dst_name.c_str());
84            }
85            // connect new bindings
86          for (int i = 0; i < vS.size(); i++) {          for (int i = 0; i < vS.size(); i++) {
87              String dst_name = vS[i];              String dst_name = vS[i];
88              int res = jack_connect(pChannel->pDevice->hJackClient, src_name.c_str(), dst_name.c_str());              int res = jack_connect(pChannel->pDevice->hJackClient, src_name.c_str(), dst_name.c_str());
89              if (res == EEXIST) throw AudioOutputException("Jack: Connection to port '" + dst_name + "' already established");              if (res == EEXIST) throw AudioOutputException("Jack: Connection to port '" + dst_name + "' already established");
90              else if (res)      throw AudioOutputException("Jack: Cannot connect port '" + src_name + "' to port '" + dst_name + "'");              else if (res)      throw AudioOutputException("Jack: Cannot connect port '" + src_name + "' to port '" + dst_name + "'");
91          }          }
92            // remember bindings
93            Bindings = vS;
94      }      }
95    
96      String AudioOutputDeviceJack::AudioChannelJack::ParameterJackBindings::Name() {      String AudioOutputDeviceJack::AudioChannelJack::ParameterJackBindings::Name() {
# Line 120  namespace LinuxSampler { Line 129  namespace LinuxSampler {
129          InitWithDefault(); // use default name          InitWithDefault(); // use default name
130      }      }
131    
132      AudioOutputDeviceJack::ParameterName::ParameterName(String s) throw (LinuxSamplerException) : DeviceCreationParameterString(s) {      AudioOutputDeviceJack::ParameterName::ParameterName(String s) throw (Exception) : DeviceCreationParameterString(s) {
133      }      }
134    
135      String AudioOutputDeviceJack::ParameterName::Description() {      String AudioOutputDeviceJack::ParameterName::Description() {
# Line 147  namespace LinuxSampler { Line 156  namespace LinuxSampler {
156          return (existingJackDevices) ? "LinuxSampler" + ToString(existingJackDevices) : "LinuxSampler";          return (existingJackDevices) ? "LinuxSampler" + ToString(existingJackDevices) : "LinuxSampler";
157      }      }
158    
159      void AudioOutputDeviceJack::ParameterName::OnSetValue(String s) throw (LinuxSamplerException) {      void AudioOutputDeviceJack::ParameterName::OnSetValue(String s) throw (Exception) {
160          // not possible, as parameter is fix          // not possible, as parameter is fix
161      }      }
162    
# Line 169  namespace LinuxSampler { Line 178  namespace LinuxSampler {
178       */       */
179      AudioOutputDeviceJack::AudioOutputDeviceJack(std::map<String,DeviceCreationParameter*> Parameters) : AudioOutputDevice(Parameters) {      AudioOutputDeviceJack::AudioOutputDeviceJack(std::map<String,DeviceCreationParameter*> Parameters) : AudioOutputDevice(Parameters) {
180          if (((DeviceCreationParameterString*)Parameters["NAME"])->ValueAsString().size() >= jack_client_name_size())          if (((DeviceCreationParameterString*)Parameters["NAME"])->ValueAsString().size() >= jack_client_name_size())
181              throw LinuxSamplerException("JACK client name too long");              throw Exception("JACK client name too long");
182    
183          if ((hJackClient = jack_client_new(((DeviceCreationParameterString*)Parameters["NAME"])->ValueAsString().c_str())) == 0)          if ((hJackClient = jack_client_new(((DeviceCreationParameterString*)Parameters["NAME"])->ValueAsString().c_str())) == 0)
184              throw AudioOutputException("Seems Jack server not running.");              throw AudioOutputException("Seems Jack server not running.");
# Line 216  namespace LinuxSampler { Line 225  namespace LinuxSampler {
225      }      }
226    
227      bool AudioOutputDeviceJack::IsPlaying() {      bool AudioOutputDeviceJack::IsPlaying() {
228          csIsPlaying.GetUnsafe();          return csIsPlaying.GetUnsafe();
229      }      }
230    
231      void AudioOutputDeviceJack::Stop() {      void AudioOutputDeviceJack::Stop() {
# Line 248  namespace LinuxSampler { Line 257  namespace LinuxSampler {
257      }      }
258    
259      String AudioOutputDeviceJack::Version() {      String AudioOutputDeviceJack::Version() {
260         String s = "$Revision: 1.16 $";         String s = "$Revision: 1.20 $";
261         return s.substr(11, s.size() - 13); // cut dollar signs, spaces and CVS macro keyword         return s.substr(11, s.size() - 13); // cut dollar signs, spaces and CVS macro keyword
262      }      }
263    

Legend:
Removed from v.379  
changed lines
  Added in v.880

  ViewVC Help
Powered by ViewVC