Index: mapper/src/Mapper_OSS.c
@@ -964,6 +964,13 @@
 
 BEGIN("Mapper_ReadEvent");
 
+#ifdef __FreeBSD__
+    /* on FreeBSD the read() will block when there is no data available... */
+    out = 0;
+    ioctl(seqfd, SNDCTL_SEQ_GETINCOUNT, &out);
+    if (!out)
+        RETURN_BOOL(False);
+#endif
     if ( ( out = read(seqfd, &InBytes, sizeof(InBytes)) ) <= 0 )
         RETURN_BOOL(False);
 
