On Mon, Feb 2, 2009 at 4:59 PM, Bastien Nocera <bnocera(a)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(a)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