Why do we disable esd in libgnome?

Dan Nicholson dbn.lists at gmail.com
Tue Feb 3 01:31:37 UTC 2009


On Mon, Feb 2, 2009 at 4:59 PM, Bastien Nocera <bnocera at redhat.com> wrote:
> On Mon, 2009-02-02 at 10:20 -0800, Dan Nicholson wrote:
>> On Mon, Feb 2, 2009 at 9:05 AM, Bastien Nocera <bnocera at redhat.com> wrote:
>> > On Mon, 2009-02-02 at 07:18 -0800, Dan Nicholson wrote:
>> > <snip>
>> >> What about the possibility of rewriting gnome_sound* to use libsydney?
>> >> I know it's not the most exciting work available, but that would some
>> >> to be the correct long term fix. It's not like the libgnome API can go
>> >> away prior to GNOME-3.0.
>> >
>> > It's not possible to provide an ABI or API compatible replacement,
>> > because gnome_sound_* exports some esound specific APIs. For example,
>> > gnome_sound_connection_get () and gnome_sound_sample_load().
>> >
>> > So if you're going to change the semantics, the apps will need to be
>> > fixed. And if the applications need to be fixed, I don't see the
>> > difference between rewriting the few lines of code to use libcanberra
>> > and adapting it for a libgnome API with different semantics.
>>
>> Well, it seems like you could easily just keep most of the stub/noops
>> for non-esd and create a canberra-specific path for
>> gnome_sound_play(). That would probably cover most of the apps that
>> just do a fire and forget gnome_sound_play(file). That would be API
>> compatible with the non-esd libgnome.
>
> It's already just stubs, and it would break apps that rely on
> gnome_sound_connection_get () and gnome_sound_sample_load() to work. I
> also don't think we're interested in keeping libgnomeui in the future.

That's exactly my point. Since ESD support has been removed in fedora,
anyone trying to do gnome_sound_connection_get() will just get -1 back
anyway. Furthermore, the gnome_sound_play() docs say that the sound
may or may not play. So, why not just make it play a file with
libcanberra? If it fails, oh well. You're in exactly the same
situation you're in now. It seems pretty easy to me:

void gnome_sound_play(const char *filename)
{
#ifdef HAVE_LIBCANBERRA_GTK
    ca_context_play(ca_gtk_context_get(), 0, CA_PROP_MEDIA_FILENAME,
filename, NULL);
#endif
}

I understand not wanting to write new apps to use gnome_sound_play
since it's deprecated. But it's existing API that can't be removed.
Why not have it work for apps that haven't been ported yet (or can't
be ported)?

> I'd rather spend time answering questions on how to make libcanberra
> work with your app rather than spending time doing a half-working
> work-around in libgnome.

Sure. I would not suggest that new apps use gnome_sound*.

--
Dan




More information about the fedora-devel-list mailing list