| @@ -255,8 +255,11 @@ void AudioOutputUSB::update(void) | |||
| { | |||
| audio_block_t *left, *right; | |||
| left = receiveReadOnly(0); // input 0 = left channel | |||
| right = receiveReadOnly(1); // input 1 = right channel | |||
| // TODO: we shouldn't be writing to these...... | |||
| //left = receiveReadOnly(0); // input 0 = left channel | |||
| //right = receiveReadOnly(1); // input 1 = right channel | |||
| left = receiveWritable(0); // input 0 = left channel | |||
| right = receiveWritable(1); // input 1 = right channel | |||
| if (usb_audio_transmit_setting == 0) { | |||
| if (left) release(left); | |||
| if (right) release(right); | |||
| @@ -268,12 +271,20 @@ void AudioOutputUSB::update(void) | |||
| return; | |||
| } | |||
| if (left == NULL) { | |||
| if (right == NULL) return; | |||
| right->ref_count++; | |||
| left = right; | |||
| } else if (right == NULL) { | |||
| left->ref_count++; | |||
| right = left; | |||
| left = allocate(); | |||
| if (left == NULL) { | |||
| if (right) release(right); | |||
| return; | |||
| } | |||
| memset(left->data, 0, sizeof(left->data)); | |||
| } | |||
| if (right == NULL) { | |||
| right = allocate(); | |||
| if (right == NULL) { | |||
| release(left); | |||
| return; | |||
| } | |||
| memset(right->data, 0, sizeof(right->data)); | |||
| } | |||
| __disable_irq(); | |||
| if (left_1st == NULL) { | |||