Index: uspace/app/dplay/dplay.c
===================================================================
--- uspace/app/dplay/dplay.c	(revision 1240bb95c3c231d45558da9d7acd93c3557996db)
+++ uspace/app/dplay/dplay.c	(revision d93a5a6f23a66f3bd465072c0740c2c53ca28d0a)
@@ -112,4 +112,7 @@
 		const size_t bytes = fread(pb->buffer.position, sizeof(uint8_t),
 		   buffer_part, pb->source);
+		if (bytes == 0) {
+			audio_pcm_stop_playback(pb->device, pb->buffer.id);
+		}
 		bzero(pb->buffer.position + bytes, buffer_part - bytes);
 		pb->buffer.position += buffer_part;
@@ -117,10 +120,4 @@
 		if (pb->buffer.position >= (pb->buffer.base + pb->buffer.size))
 			pb->buffer.position = pb->buffer.base;
-		if (bytes == 0) {
-			fibril_mutex_lock(&pb->mutex);
-			pb->playing = false;
-			fibril_condvar_signal(&pb->cv);
-			fibril_mutex_unlock(&pb->mutex);
-		}
 	}
 }
@@ -152,7 +149,4 @@
 	    fibril_condvar_wait(&pb->cv, &pb->mutex));
 
-	audio_pcm_stop_playback(pb->device, pb->buffer.id);
-	for (pb->playing = true; pb->playing;
-		fibril_condvar_wait(&pb->cv, &pb->mutex));
 	fibril_mutex_unlock(&pb->mutex);
 	printf("\n");
