qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Sound & Win98


From: malc
Subject: Re: [Qemu-devel] Sound & Win98
Date: Mon, 26 Jul 2004 01:06:04 +0000 (UTC)

On Sun, 25 Jul 2004, Joe Menola wrote:

> On Sun July 25 2004 5:25 am, Nicolas Wu wrote:
> > I had the same compile error as lindsay, but found this
> > alternative patch that works:
> >
> > http://www.h7.dion.ne.jp/~qemu-win/download/qemu-0.6.0-6_aqemu.patch.gz
> >
> > most of the time it works with win98, but occasionally crashes; though
> > it would appear to be sporadic :(
> >
> > nick
>
> I also have not been able to apply cleanly the previous patch I recommended
> since version 0.5.5. The link you provided a patch which applied cleanly.
>
> Tested on WinXP
> Sound works but XP crashes on 2nd sound event. Console output:
> audio: write audio
> system error: Unknown error 2996
> Aborted
>
> Win98
> Device manager reports that sb is present and working. However, I get no
> sound. Testing from Control Panel>Sounds Properties>Preveiw>play...the play
> button "greys out" and the stop button gets focus. No sound is produced, and
> there's no output to console. It remains in this state until the stop button
> is pushed. Perhaps I missed something in my 98 configuration?
>
> Using cvs updated Sun 25 Jul 2004, 13:49
> KDE 3.2.3 with arts set to use OSS audio device.

Thank you for this detailed bug report.

Following patch (which must be applied after qemu-0.6.0-6_aqemu.patch.gz
will definitely workaround 1st problem and might help with 2nd.

It would be interesting to know if "Unknown error 2996" goes away if
vanilla OSS/ALSA is used.

P.S. The only missing information is the name of the soundcard.

--- oss.c       Mon Jul 26 01:00:48 2004
+++ ../qq/oss.c Mon Jul 26 01:04:45 2004
@@ -796,12 +796,13 @@
         play = MIN (left, bytes);
         written = write (s->fd, (void *) ((uint32_t) s->buf + s->rpos),
play);

-        if (-1 == written) {
+        if (written < 0) {
             if (EAGAIN == errno || EINTR == errno) {
                 return;
             }
             else {
-                ERRFail ("write audio");
+               fprintf (stderr, "write failed, errno=%d\n", errno);
+               return;
             }
         }

@@ -895,6 +896,9 @@
             elapsed += s->leftover;
         }
     }
+
+    if (elapsed < 1024)
+        return 0;

     if (elapsed > free) {
         lwarn ("audio can not keep up elapsed %d free %d\n", elapsed,
free);

-- 
mailto:address@hidden




reply via email to

[Prev in Thread] Current Thread [Next in Thread]