示例#1
0
// Constructor.
drumkv1widget_lv2::drumkv1widget_lv2 ( drumkv1_lv2 *pDrumk,
	LV2UI_Controller controller, LV2UI_Write_Function write_function )
	: drumkv1widget()
{
	m_pDrumkUi = new drumkv1_lv2ui(pDrumk, controller, write_function);

#ifdef CONFIG_LV2_EXTERNAL_UI
	m_external_host = NULL;
#endif
#ifdef CONFIG_LV2_UI_IDLE
	m_bIdleClosed = false;
#endif

	for (uint32_t i = 0; i < drumkv1::NUM_PARAMS; ++i)
		m_params_def[i] = true;

	// May initialize the scheduler/work notifier.
	initSchedNotifier();

	// Initial update, always...
	refreshElements();
	activateElement();
}
示例#2
0
ErrVal
RtpBuffer::PushElement(Element element){

	int difference=1;
	int pos=0;
	//printf("Valors de la cua RTP abans del push: start:%d, end:%d, elements:%d\n",buffer.start,buffer.end,buffer.elements);

	if(buffer.elements>0)
		if(buffer.end>0)
			difference=element.Sequence_num-buffer.element[buffer.end-1].Sequence_num;
		else
			difference=element.Sequence_num-buffer.element[MAX_ELEMENTS-1].Sequence_num;


	//printf("Difference = %d\n",difference);
	//Cal ordenar un cop es posen
	if(difference==1){ //Si no hi ha hagut cap desordre al enviar paquets

		buffer.element[buffer.end]=element;
		
		if(buffer.end<MAX_ELEMENTS-1)
			buffer.end++;
		else
			buffer.end=0;
		
		if(buffer.elements<MAX_ELEMENTS){
			buffer.elements++;
			return Err::m_nOK;
		}
		else{
			printf("ERROR: Fora del buffer !!\n");
			return Err::m_nEndOfBuffer;			
		}
	}
	else{ // Hi ha hagut algun desordre a l'enviament
		pos=buffer.end+difference-1;

		// El paquet rebut és anterior al ultim de la cua. No hem de modificar el END ni el ELEMENTS
		if(difference<0){// El paquet rebut és anterior al ultim de la cua i la posició on posar el element dona la volta a la cua . Cal modificar la posició pos
			//printf("paquet anterior\n");
			//printf("pos=%d\n",pos);
			if(pos<0){
				pos=MAX_ELEMENTS+pos;
				
			}

			//printf("Out of range:%d",OutOfRange(pos));
			if(OutOfRange(pos)){ //Si la posició és anterior al primer element de la cua hem de reduir el START i augmentar el ELEMENTS
				//Només si no dona la volta
				buffer.start=pos;
				refreshElements();
			}
		}

		// El paquet és posterior al ultim. Augmentem en consonància el END i el ELEMENTS
		if(difference>0){ 
		
		//	printf("paquet posterior\n");
			if(pos>=MAX_ELEMENTS) // La nova posició dóna la volta a la cua
				pos-=MAX_ELEMENTS;
			
			
			//actualitzem END i ELEMENTS
			
			if(buffer.end+=difference<MAX_ELEMENTS)
				buffer.end+=difference-1;
			else
				buffer.end=buffer.end+difference-MAX_ELEMENTS;



			if(buffer.elements+difference<=MAX_ELEMENTS)
				buffer.elements+=difference;
			else{
				return Err::m_nEndOfBuffer;
		//		printf("Fora del buffer\n");
			}


		}
		
		//printf("posem el paquet desordenat a la pos= %d\n",pos);

		buffer.element[pos]=element;

		
		
	}
	
	//printf("Valors de la cua despres del push: start:%d, end:%d, elements:%d\n",buffer.start,buffer.end,buffer.elements);
	
	return Err::m_nOK;
	}