Index: uspace/app/wavplay/dplay.c
===================================================================
--- uspace/app/wavplay/dplay.c	(revision 018ab5018108207fc0601a6f793a0b0bb0a6995c)
+++ uspace/app/wavplay/dplay.c	(revision 6136393f3d898c507e44c0f77c15ebe50f76fef6)
@@ -91,4 +91,5 @@
 		ipc_callid_t callid = async_get_call(&call);
 		switch(IPC_GET_IMETHOD(call)) {
+		case PCM_EVENT_PLAYBACK_STARTED:
 		case PCM_EVENT_FRAMES_PLAYED:
 			printf("%u frames\n", IPC_GET_ARG1(call));
@@ -128,5 +129,6 @@
 	assert(pb);
 	assert(pb->device);
-	pb->buffer.position = pb->buffer.base;
+	const size_t buffer_part = pb->buffer.size / BUFFER_PARTS;
+	pb->buffer.position = pb->buffer.base + buffer_part;
 	printf("Registering event callback\n");
 	int ret = audio_pcm_register_event_callback(pb->device,
@@ -139,7 +141,7 @@
 	    sampling_rate, pcm_sample_format_str(format), channels);
 	const size_t bytes = fread(pb->buffer.base, sizeof(uint8_t),
-	    pb->buffer.size, pb->source);
-	if (bytes != pb->buffer.size)
-		bzero(pb->buffer.base + bytes, pb->buffer.size - bytes);
+	    buffer_part, pb->source);
+	if (bytes != buffer_part)
+		bzero(pb->buffer.base + bytes, buffer_part - bytes);
 	printf("Buffer data ready.\n");
 	fibril_mutex_lock(&pb->mutex);
