|  | @@ -404,12 +404,6 @@ int JackBoomerDriver::Open(jack_nframes_t nframes, | 
														
													
														
															
																|  |  | int bits, |  |  | int bits, | 
														
													
														
															
																|  |  | bool ignorehwbuf) |  |  | bool ignorehwbuf) | 
														
													
														
															
																|  |  | { |  |  | { | 
														
													
														
															
																|  |  | 
 |  |  |  | 
														
													
														
															
																|  |  | if (playing && !capturing) { |  |  |  | 
														
													
														
															
																|  |  | jack_error("Playback only mode is not yet supported, use duplex instead"); |  |  |  | 
														
													
														
															
																|  |  | return -1; |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | 
 |  |  |  | 
														
													
														
															
																|  |  | // Generic JackAudioDriver Open |  |  | // Generic JackAudioDriver Open | 
														
													
														
															
																|  |  | if (JackAudioDriver::Open(nframes, samplerate, capturing, playing, inchannels, outchannels, monitor, |  |  | if (JackAudioDriver::Open(nframes, samplerate, capturing, playing, inchannels, outchannels, monitor, | 
														
													
														
															
																|  |  | capture_driver_uid, playback_driver_uid, capture_latency, playback_latency) != 0) { |  |  | capture_driver_uid, playback_driver_uid, capture_latency, playback_latency) != 0) { | 
														
													
												
													
														
															
																|  | @@ -572,26 +566,6 @@ int JackBoomerDriver::Stop() | 
														
													
														
															
																|  |  | return 0; |  |  | return 0; | 
														
													
														
															
																|  |  | } |  |  | } | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | int JackBoomerDriver::Read() |  |  |  | 
														
													
														
															
																|  |  | { |  |  |  | 
														
													
														
															
																|  |  | /* |  |  |  | 
														
													
														
															
																|  |  | // Keep begin cycle time |  |  |  | 
														
													
														
															
																|  |  | JackDriver::CycleTakeBeginTime(); |  |  |  | 
														
													
														
															
																|  |  | */ |  |  |  | 
														
													
														
															
																|  |  | 
 |  |  |  | 
														
													
														
															
																|  |  | return 0; |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | 
 |  |  |  | 
														
													
														
															
																|  |  | int JackBoomerDriver::Write() |  |  |  | 
														
													
														
															
																|  |  | { |  |  |  | 
														
													
														
															
																|  |  | /* |  |  |  | 
														
													
														
															
																|  |  | // Keep begin cycle time |  |  |  | 
														
													
														
															
																|  |  | JackDriver::CycleTakeEndTime(); |  |  |  | 
														
													
														
															
																|  |  | */ |  |  |  | 
														
													
														
															
																|  |  | 
 |  |  |  | 
														
													
														
															
																|  |  | return 0; |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | 
 |  |  |  | 
														
													
														
															
																|  |  | bool JackBoomerDriver::JackBoomerDriverInput::Init() |  |  | bool JackBoomerDriver::JackBoomerDriverInput::Init() | 
														
													
														
															
																|  |  | { |  |  | { | 
														
													
														
															
																|  |  | if (fDriver->IsRealTime()) { |  |  | if (fDriver->IsRealTime()) { | 
														
													
												
													
														
															
																|  | @@ -608,12 +582,7 @@ bool JackBoomerDriver::JackBoomerDriverInput::Init() | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | bool JackBoomerDriver::JackBoomerDriverInput::Execute() |  |  | bool JackBoomerDriver::JackBoomerDriverInput::Execute() | 
														
													
														
															
																|  |  | { |  |  | { | 
														
													
														
															
																|  |  | if (fDriver->fInFD < 0) { |  |  |  | 
														
													
														
															
																|  |  | // Keep begin cycle time |  |  |  | 
														
													
														
															
																|  |  | fDriver->CycleTakeBeginTime(); |  |  |  | 
														
													
														
															
																|  |  | return true; |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | #ifdef JACK_MONITOR |  |  | #ifdef JACK_MONITOR | 
														
													
														
															
																|  |  | gCycleTable.fTable[gCycleReadCount].fBeforeRead = GetMicroSeconds(); |  |  | gCycleTable.fTable[gCycleReadCount].fBeforeRead = GetMicroSeconds(); | 
														
													
														
															
																|  |  | #endif |  |  | #endif | 
														
													
												
													
														
															
																|  | @@ -661,7 +630,13 @@ bool JackBoomerDriver::JackBoomerDriverInput::Execute() | 
														
													
														
															
																|  |  | #endif |  |  | #endif | 
														
													
														
															
																|  |  | } |  |  | } | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | fDriver->SynchronizeRead(); |  |  |  | 
														
													
														
															
																|  |  |  |  |  | // Duplex : sync with write thread | 
														
													
														
															
																|  |  |  |  |  | if (fDriver->fInFD > 0 && fDriver->fOutFD > 0) { | 
														
													
														
															
																|  |  |  |  |  | fDriver->SynchronizeRead(); | 
														
													
														
															
																|  |  |  |  |  | } else { | 
														
													
														
															
																|  |  |  |  |  | // Otherwise direct process | 
														
													
														
															
																|  |  |  |  |  | fDriver->Process(); | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  | return true; |  |  | return true; | 
														
													
														
															
																|  |  | } |  |  | } | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
												
													
														
															
																|  | @@ -748,7 +723,14 @@ bool JackBoomerDriver::JackBoomerDriverOutput::Execute() | 
														
													
														
															
																|  |  | jack_error("JackBoomerDriverOutput::Execute error bytes written = %ld", count); |  |  | jack_error("JackBoomerDriverOutput::Execute error bytes written = %ld", count); | 
														
													
														
															
																|  |  | } |  |  | } | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | fDriver->SynchronizeWrite(); |  |  |  | 
														
													
														
															
																|  |  |  |  |  | // Duplex : sync with read thread | 
														
													
														
															
																|  |  |  |  |  | if (fDriver->fInFD > 0 && fDriver->fOutFD > 0) { | 
														
													
														
															
																|  |  |  |  |  | fDriver->SynchronizeWrite(); | 
														
													
														
															
																|  |  |  |  |  | } else { | 
														
													
														
															
																|  |  |  |  |  | // Otherwise direct process | 
														
													
														
															
																|  |  |  |  |  | fDriver->CycleTakeBeginTime(); | 
														
													
														
															
																|  |  |  |  |  | fDriver->Process(); | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  | return true; |  |  | return true; | 
														
													
														
															
																|  |  | } |  |  | } | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
												
													
														
															
																|  | 
 |