Re: [PATCH v2 7/9] ALSA: line6: Allow processing of raw incoming messages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 19 Aug 2016 00:20:37 +0200,
Andrej Krutak wrote:
> 
> Not all PODs use MIDI via USB data interface, thus allow avoiding
> that code and instead using direct processing.
> 
> Signed-off-by: Andrej Krutak <dev@xxxxxxxxx>
> ---
>  sound/usb/line6/driver.c | 59 ++++++++++++++++++++++++++++--------------------
>  sound/usb/line6/driver.h |  8 ++++---
>  sound/usb/line6/midi.c   |  2 +-
>  3 files changed, 40 insertions(+), 29 deletions(-)
> 
> diff --git a/sound/usb/line6/driver.c b/sound/usb/line6/driver.c
> index 9b16777..853a143 100644
> --- a/sound/usb/line6/driver.c
> +++ b/sound/usb/line6/driver.c
> @@ -290,26 +290,31 @@ static void line6_data_received(struct urb *urb)
>  	if (urb->status == -ESHUTDOWN)
>  		return;
>  
> -	done =
> -	    line6_midibuf_write(mb, urb->transfer_buffer, urb->actual_length);
> +	if (line6->properties->capabilities & LINE6_CAP_CONTROL_MIDI) {
> +		done =
> +			line6_midibuf_write(mb, urb->transfer_buffer, urb->actual_length);
>  
> -	if (done < urb->actual_length) {
> -		line6_midibuf_ignore(mb, done);
> -		dev_dbg(line6->ifcdev, "%d %d buffer overflow - message skipped\n",
> -			done, urb->actual_length);
> -	}
> +		if (done < urb->actual_length) {
> +			line6_midibuf_ignore(mb, done);
> +			dev_dbg(line6->ifcdev, "%d %d buffer overflow - message skipped\n",
> +				done, urb->actual_length);
> +		}
>  
> -	for (;;) {
> -		done =
> -		    line6_midibuf_read(mb, line6->buffer_message,
> -				       LINE6_MESSAGE_MAXLEN);
> +		for (;;) {
> +			done =
> +				line6_midibuf_read(mb, line6->buffer_message,
> +						LINE6_MESSAGE_MAXLEN);
>  
> -		if (done == 0)
> -			break;
> +			if (done == 0)
> +				break;
>  
> -		line6->message_length = done;
> -		line6_midi_receive(line6, line6->buffer_message, done);
> +			line6->message_length = done;
> +			line6_midi_receive(line6, line6->buffer_message, done);
>  
> +			if (line6->process_message)
> +				line6->process_message(line6);
> +		}
> +	} else {
>  		if (line6->process_message)
>  			line6->process_message(line6);
>  	}

Both if and else run the same code (line6->process_message) here at
the end.  That is, this can be outside the if block.

Also, the patch should be also before the actual usage, i.e. patch 5.


Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux