|  |  | @@ -354,24 +354,24 @@ int JackEngine::ClientExternalNew(const char* name, int* ref, int* shared_engine | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (!fSynchroTable[refnum]->Allocate(name, 0)) { | 
		
	
		
			
			|  |  |  | jack_error("Cannot allocate synchro"); | 
		
	
		
			
			|  |  |  | goto error; | 
		
	
		
			
			|  |  |  | jack_error("Cannot allocate synchro"); | 
		
	
		
			
			|  |  |  | goto error1; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (client->Open(name, refnum, shared_client) < 0) { | 
		
	
		
			
			|  |  |  | jack_error("Cannot open client"); | 
		
	
		
			
			|  |  |  | goto error; | 
		
	
		
			
			|  |  |  | goto error1; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (!fSignal->TimedWait(5 * 1000000)) { | 
		
	
		
			
			|  |  |  | // Failure if RT thread is not running (problem with the driver...) | 
		
	
		
			
			|  |  |  | jack_error("Driver is not running"); | 
		
	
		
			
			|  |  |  | goto error; | 
		
	
		
			
			|  |  |  | goto error2; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (NotifyAddClient(client, name, refnum) < 0) { | 
		
	
		
			
			|  |  |  | jack_error("Cannot notify add client"); | 
		
	
		
			
			|  |  |  | goto error; | 
		
	
		
			
			|  |  |  | goto error2; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | fClientTable[refnum] = client; | 
		
	
	
		
			
				|  |  | @@ -379,10 +379,13 @@ int JackEngine::ClientExternalNew(const char* name, int* ref, int* shared_engine | 
		
	
		
			
			|  |  |  | *shared_engine = fEngineControl->GetShmIndex(); | 
		
	
		
			
			|  |  |  | *shared_graph_manager = fGraphManager->GetShmIndex(); | 
		
	
		
			
			|  |  |  | *ref = refnum; | 
		
	
		
			
			|  |  |  | return 0; | 
		
	
		
			
			|  |  |  | return 0; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | error1: | 
		
	
		
			
			|  |  |  | fGraphManager->ReleaseRefNum(refnum); | 
		
	
		
			
			|  |  |  | return -1; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | error: | 
		
	
		
			
			|  |  |  | fGraphManager->ReleaseRefNum(refnum); | 
		
	
		
			
			|  |  |  | error2: | 
		
	
		
			
			|  |  |  | ClientCloseAux(refnum, client, false); | 
		
	
		
			
			|  |  |  | client->Close(); | 
		
	
		
			
			|  |  |  | return -1; | 
		
	
	
		
			
				|  |  | 
 |