[Gajim-devel] Fallback to OSS when no soundplayer found
Zhihao Yuan
lichray at gmail.com
Mon Apr 11 18:41:36 CEST 2011
On Mon, Apr 11, 2011 at 11:39 AM, Yann Leboulanger <asterix at lagaule.org> wrote:
> On 04/11/2011 06:30 PM, Zhihao Yuan wrote:
>>
>> On Mon, Apr 11, 2011 at 11:17 AM, Yann Leboulanger<asterix at lagaule.org>
>> wrote:
>>>
>>> On 04/11/2011 06:14 PM, Zhihao Yuan wrote:
>>>>
>>>> On Mon, Apr 11, 2011 at 11:13 AM, Yann Leboulanger<asterix at lagaule.org>
>>>> wrote:
>>>>>
>>>>> On 04/11/2011 06:09 PM, Zhihao Yuan wrote:
>>>>>>
>>>>>> On Mon, Apr 11, 2011 at 11:06 AM, Yann
>>>>>> Leboulanger<asterix at lagaule.org>
>>>>>> wrote:
>>>>>>>
>>>>>>> On 04/11/2011 05:55 PM, Zhihao Yuan wrote:
>>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> Maybe for a Linux user, aplay is always available; but for many
>>>>>>>> FreeBSD users like me, we don't have any soundplay (even ossplay)
>>>>>>>> installed by default. Our own oss implementation is much better than
>>>>>>>> 4Front's, and we don't use esound or arts.
>>>>>>>>
>>>>>>>> This patch make use of wave and ossaudiodev which where built into
>>>>>>>> python, and it deal with little endian wav sound.
>>>>>>>
>>>>>>> I see 2 problems with that:
>>>>>>> 1/ it's blocking, so playing a sound blocks UI. We need to run that
>>>>>>> in
>>>>>>> a
>>>>>>> thread
>>>>>>> 2/ What happens if you try to play 2 sounds at the same time? (2
>>>>>>> contacts
>>>>>>> connects at the same time)
>>>>>>
>>>>>> Blocking can be solved by thread.
>>>>>> Mixing depends on your OSS implementation. For BSDs, our kernel OSS
>>>>>> driver has the mixing support. Linux is the only distro (AFAIK) that
>>>>>> come with a OSS which does not support mixing.
>>>>>
>>>>> So we need to use your code only under BSD
>>>>>
>>>>
>>>> Because Linux user have aplay, so the code won't run on their systems.
>>>>
>>>
>>> They may not have. That doesn't hurt to adf a test.
>>>
>>> Could you look at running that in a thread? there is a
>>> gajim.thread_interface() function that will do it.
>>
>> This class requires a GTK callback, but I don't need one here. Is
>> there a null callback for this, or can I modify this class to allow
>> such case?
>
> Yes, we can pass callback=None, and then do:
> if callback:
> gobject.idle_add(callback, output, *callback_args)
>
How about this? I used thread module instead of threading.
Tested, OK.
--
Zhihao Yuan
The best way to predict the future is to invent it.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: patch-oss-fallback.py
Type: application/octet-stream
Size: 979 bytes
Desc: not available
URL: <http://www.lagaule.org/pipermail/gajim-devel/attachments/20110411/4a5c2913/attachment-0001.obj>
More information about the Gajim-devel
mailing list