pcm: Move prepare action to xrun handling

Signed-off-by: Ricardo Biehl Pasquali <pasqualirb@gmail.com>
diff --git a/src/pcm.c b/src/pcm.c
index f854a94..43e8279 100644
--- a/src/pcm.c
+++ b/src/pcm.c
@@ -704,9 +704,6 @@
     x.result = 0;
     for (;;) {
         if (!pcm->running) {
-            int prepare_error = pcm_prepare(pcm);
-            if (prepare_error)
-                return prepare_error;
             if (ioctl(pcm->fd, SNDRV_PCM_IOCTL_WRITEI_FRAMES, &x))
                 return oops(pcm, errno, "cannot write initial data");
             pcm->running = 1;
@@ -722,6 +719,8 @@
                 pcm->underruns++;
                 if (pcm->flags & PCM_NORESTART)
                     return -EPIPE;
+                if (pcm_prepare(pcm))
+                    return -EPIPE;
                 continue;
             }
             return oops(pcm, errno, "cannot write stream data");