[Top][All Lists]

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

Re: [Gap-dev-discuss] Cynthiune OpenBSD Sndio Bundle

From: Sebastian Reitenbach
Subject: Re: [Gap-dev-discuss] Cynthiune OpenBSD Sndio Bundle
Date: Mon, 28 May 2012 18:15:21 +0200
User-agent: SOGoMail 1.3.15

On Sunday, May 27, 2012 08:50 CEST, Riccardo Mottola <address@hidden> wrote: 
> Hi,
> On 05/25/12 17:50, Sebastian Reitenbach wrote:
> > Hi,
> >
> > I added some locking similar like done in the AO output bundle to the Sndio 
> > Bundle.
> > Now it seems to work well for me. I tested a couple of different file types 
> > with different
> > rates. I can randomly double click songs, or let it automatically jump 
> > between the
> > test files now, and it correctly picks up the right stuff.
> >
> > Tested on i386 so far, macppc tests will follow.
> >
> > Riccardo, can you test if it works for you?
> It compiles, bout I couldn't play anything, e application did somehow 
> hang the whole sound subsystem, I couldn't use mixerctl, I had to kill 
> Cynthiune. I will try again and see if I can isolate the problem.
> Before your patch, sndio was almost working for me: it did play, 
> although strangely it had a worse quality than the OSS backend! More 
> crackling, electronic sound, very strange!

I made some more changes to the Sndio backend. I found that when playing a 
file, and then stopping and restarting, the sound card did not got initialized 
again. This comes from Player.m. When you stop music playing, and play another
song, which has the same rate/channels/endiannes, then it doesn't call the
prepareDeviceWithChannels:... method again. But since when stopping playing
sio_close() was called, the initialization was gone. 
When then restarting, the Player.m seems to assume, the device is still 
correctly. To fix that problem, I now unconditionally call
the prepareDeviceWithChannels: from openDevice. I save the info about 
in the Sndio backend bundle each time prepareDeviceWithChannels is called, so 
that openDevice 
then later knows with which values to call the other method.

Why it hangs for you, I don't really know. Do you can try with sndiod running 
and not running,
and see whether it makes a difference? Do you can run Cynthiune in gdb, and see 
where it 
is hanging?


> Riccardo

reply via email to

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