diff --git a/src/add-ons/kernel/drivers/audio/echo/echo.cpp b/src/add-ons/kernel/drivers/audio/echo/echo.cpp index cce50947fc..4e39cbc088 100644 --- a/src/add-ons/kernel/drivers/audio/echo/echo.cpp +++ b/src/add-ons/kernel/drivers/audio/echo/echo.cpp @@ -409,7 +409,7 @@ int32 echo_int(void *arg) #ifdef MIDI_SUPPORT if (midiReceived) - release_sem(card->midi.midi_ready_sem); + release_sem_etc(card->midi.midi_ready_sem, 1, B_DO_NOT_RESCHEDULE); #endif LIST_FOREACH(stream, &card->streams, next) { diff --git a/src/add-ons/kernel/drivers/audio/echo/midi.cpp b/src/add-ons/kernel/drivers/audio/echo/midi.cpp index 803108935a..ebbdde2500 100644 --- a/src/add-ons/kernel/drivers/audio/echo/midi.cpp +++ b/src/add-ons/kernel/drivers/audio/echo/midi.cpp @@ -108,6 +108,8 @@ midi_control( void * data, size_t len) { + LOG(("midi_control()\n")); + return B_ERROR; } @@ -124,6 +126,8 @@ midi_read( DWORD midiData; LONGLONG timestamp; + LOG(("midi_read()\n")); + if (acquire_sem(card->midi.midi_ready_sem) != B_OK) return B_ERROR; @@ -131,6 +135,8 @@ midi_read( if (err == ECHOSTATUS_OK) { *nread = 1; *(PDWORD)ptr = midiData; + LOG(("midi_read() : 0x%lx\n", midiData)); + return B_OK; } return B_ERROR; } @@ -146,6 +152,8 @@ midi_write( echo_dev *card = (echo_dev *) cookie; ECHOSTATUS err; + LOG(("midi_write()\n")); + err = card->pEG->WriteMidi(*nwritten, (PBYTE)ptr, nwritten); return (err != ECHOSTATUS_OK) ? B_ERROR : B_OK; }