Re: MonkeyMedia (GStreamer) in the gnome libraries
- From: Christian Fredrik Kalager Schaller <Uraeus linuxrising org>
- To: Jorn Baayen <jorn nl linux org>
- Cc: desktop-devel-list gnome org
- Subject: Re: MonkeyMedia (GStreamer) in the gnome libraries
- Date: 14 May 2002 20:35:19 +0200
This is really cool Jorn. Arik has commited a new nautilus view to the
gst-player code in GStreamer cvs so that might actually end up working
better than the current one.
I guess putting this in before 2.0 is out of the question (no matter how
much I personally would like that :), but if this change needs a API
change maybe we should mark the part of the API that will need to be
change when this stuff goes in at 2.0.x/2.2 as deprecated before
releasing 2.0?
Btw, I will make some alternate RPMS containing these patches for those
of us wanting to live on the bleeding edge :)
Christian
On Tue, 2002-05-14 at 20:23, Jorn Baayen wrote:
> Hey,
>
> I just hacked a few patches together that port the gnome libraries and
> the settings daemon to use MonkeyMedia (a thin library on top of
> gstreamer to make music playback Really Easy[tm], with some extra
> goodies as well. Lives in the monkey-sound module in cvs.), this has the
> advantage that you can now play any kind of sound file supported by
> gstreamer in gnome, and that gnome isn't esound-dependant anymore.
> (GStreamer still supports audio output to esound, in case you were
> wondering).
>
> I also have a quick port of the nautilus musicview to this stuff ready,
> just needs some brushing up.
>
> I needed to change the gnome-sound api a little though, since it had
> some esound specific bits in there (esound connections and stuff like
> that).
>
> IMHO it would be great if something like this could be in a future gnome
> release, being forces to use esd sucks and it's fun to be able to play
> an ogg on startup ;)
>
> Let me know what you think,
> Jorn
> ----
>
> ? =
> ? stamp-h1
> ? libgnome/.gnome-init.c.swp
> Index: ChangeLog
> ===================================================================
> RCS file: /cvs/gnome/libgnome/ChangeLog,v
> retrieving revision 1.205
> diff -u -r1.205 ChangeLog
> --- ChangeLog 13 May 2002 17:11:54 -0000 1.205
> +++ ChangeLog 14 May 2002 17:57:49 -0000
> @@ -1,3 +1,14 @@
> +2002-05-14 Jorn Baayen <jorn nl linux org>
> +
> + * configure.in:
> + * libgnome/gnome-init.c:
> + * libgnome/gnome-program.c:
> + * libgnome/gnome-sound.c:
> + * libgnome/gnome-sound.h:
> + * libgnome/gnome-triggers.c:
> + * libgnome/libgnome-2.0.pc.in:
> + * schemas/desktop_gnome_sound.schemas: port sound code to MonkeyMedia
> +
> 2002-05-13 Anders Carlsson <andersca gnu org>
>
> * configure.in: Release 1.117.0
> Index: configure.in
> ===================================================================
> RCS file: /cvs/gnome/libgnome/configure.in,v
> retrieving revision 1.121
> diff -u -r1.121 configure.in
> --- configure.in 13 May 2002 17:11:54 -0000 1.121
> +++ configure.in 14 May 2002 17:57:49 -0000
> @@ -83,23 +83,9 @@
> dnl
> dnl Start of pkg-config checks
> dnl
> -dnl We first check for esound and audiofile (which has conditional
> -dnl support built in)
> -dnl
> -
> -AUDIOFILE_MODULE="audiofile >= 0.2.3"
> -ESOUND_MODULE="esound >= 0.2.25"
> -PKG_CHECK_MODULES(SOUND_TEST, $ESOUND_MODULE $AUDIOFILE_MODULE, [
> - AC_DEFINE(HAVE_LIBAUDIOFILE)
> - AC_DEFINE(HAVE_ESD)
> -],[
> - AUDIOFILE_MODULE=""
> - ESOUND_MODULE=""
> -])
>
> PKG_CHECK_MODULES(LIBGNOME, glib-2.0 >= 2.0.1 gmodule-2.0 >= 2.0.1 gnome-vfs-2.0 >= 1.9.13 \
> -libxml-2.0 >= 2.4.20 libbonobo-2.0 >= 1.116.0 gconf-2.0 >= 1.1.9 \
> -$AUDIOFILE_MODULE $ESOUND_MODULE)
> +libxml-2.0 >= 2.4.20 libbonobo-2.0 >= 1.116.0 gconf-2.0 >= 1.1.9 monkey-media >= 0.5.0)
>
> PKG_CHECK_MODULES(HELP_VFS_MODULE, glib-2.0 >= 2.0.1 gmodule-2.0 >= 2.0.1 gnome-vfs-2.0 >= 1.9.13 gnome-vfs-module-2.0 >= 1.9.13 \
> libxml-2.0 >= 2.4.20 libbonobo-2.0 >= 1.116.0)
> Index: doc/reference/tmpl/gnome-sound.sgml
> ===================================================================
> RCS file: /cvs/gnome/libgnome/doc/reference/tmpl/gnome-sound.sgml,v
> retrieving revision 1.3
> diff -u -r1.3 gnome-sound.sgml
> --- doc/reference/tmpl/gnome-sound.sgml 6 Oct 2001 16:15:34 -0000 1.3
> +++ doc/reference/tmpl/gnome-sound.sgml 14 May 2002 17:57:49 -0000
> @@ -26,6 +26,7 @@
>
> </para>
>
> +<!-- # Unused Parameters # -->
> @hostname:
>
>
> @@ -41,24 +42,8 @@
>
> </para>
>
> + uri:
> +<!-- # Unused Parameters # -->
> @filename:
> -
> -
> -<!-- ##### FUNCTION gnome_sound_sample_load ##### -->
> -<para>
> -
> -</para>
> -
> - sample_name:
> - filename:
> - Returns:
> -
> -
> -<!-- ##### FUNCTION gnome_sound_connection_get ##### -->
> -<para>
> -
> -</para>
> -
> - Returns:
>
>
> Index: libgnome/gnome-init.c
> ===================================================================
> RCS file: /cvs/gnome/libgnome/libgnome/gnome-init.c,v
> retrieving revision 1.102
> diff -u -r1.102 gnome-init.c
> --- libgnome/gnome-init.c 29 Apr 2002 11:12:54 -0000 1.102
> +++ libgnome/gnome-init.c 14 May 2002 17:57:49 -0000
> @@ -158,7 +158,7 @@
> * libgnome
> *****************************************************************************/
>
> -enum { ARG_DISABLE_SOUND = 1, ARG_ENABLE_SOUND, ARG_ESPEAKER, ARG_VERSION };
> +enum { ARG_DISABLE_SOUND = 1, ARG_ENABLE_SOUND, ARG_VERSION };
>
> static char *gnome_user_dir = NULL;
> static char *gnome_user_private_dir = NULL;
> @@ -218,14 +218,6 @@
> switch(reason) {
> case POPT_CALLBACK_REASON_OPTION:
> switch(opt->val) {
> - case ARG_ESPEAKER:
> - g_value_init (&value, G_TYPE_STRING);
> - g_value_set_string (&value, opt->arg);
> - g_object_set_property (G_OBJECT (program),
> - GNOME_PARAM_ESPEAKER, &value);
> - g_value_unset (&value);
> - break;
> -
> case ARG_DISABLE_SOUND:
> g_value_init (&value, G_TYPE_BOOLEAN);
> g_value_set_boolean (&value, FALSE);
> @@ -314,8 +306,7 @@
> GnomeModuleInfo *mod_info)
> {
> GValue value = { 0 };
> - gboolean enable_val = TRUE, create_dirs_val = TRUE;
> - char *espeaker_val = NULL;
> + gboolean enable_val = TRUE, create_dirs_val = TRUE;
>
> g_value_init (&value, G_TYPE_BOOLEAN);
> g_object_get_property (G_OBJECT (program),
> @@ -330,15 +321,8 @@
> enable_val = g_value_get_boolean (&value);
> g_value_unset (&value);
>
> - g_value_init (&value, G_TYPE_STRING);
> - g_object_get_property (G_OBJECT (program),
> - GNOME_PARAM_ESPEAKER, &value);
> - espeaker_val = g_value_dup_string (&value);
> - g_value_unset (&value);
> -
> -
> if (enable_val) {
> - gnome_sound_init(espeaker_val);
> + gnome_sound_init();
> }
>
> libgnome_userdir_setup (create_dirs_val);
> @@ -362,11 +346,6 @@
>
> { "enable-sound", '\0', POPT_ARG_NONE,
> NULL, ARG_ENABLE_SOUND, N_("Enable sound server usage"), NULL},
> -
> - { "espeaker", '\0', POPT_ARG_STRING,
> - NULL, ARG_ESPEAKER, N_("Host:port on which the sound server to use is"
> - " running"),
> - N_("HOSTNAME:PORT")},
>
> {"version", '\0', POPT_ARG_NONE, NULL, ARG_VERSION },
>
> Index: libgnome/gnome-program.c
> ===================================================================
> RCS file: /cvs/gnome/libgnome/libgnome/gnome-program.c,v
> retrieving revision 1.57
> diff -u -r1.57 gnome-program.c
> --- libgnome/gnome-program.c 22 Mar 2002 16:02:45 -0000 1.57
> +++ libgnome/gnome-program.c 14 May 2002 17:57:50 -0000
> @@ -75,7 +75,6 @@
> gchar *prop_app_datadir;
> gboolean prop_create_directories;
> gboolean prop_enable_sound;
> - gchar *prop_espeaker;
>
> gchar **gnome_path;
>
> @@ -109,7 +108,6 @@
> PROP_APP_SYSCONFDIR,
> PROP_CREATE_DIRECTORIES,
> PROP_ENABLE_SOUND,
> - PROP_ESPEAKER,
> PROP_POPT_TABLE,
> PROP_POPT_FLAGS,
> PROP_POPT_CONTEXT,
> @@ -203,10 +201,6 @@
> case PROP_ENABLE_SOUND:
> program->_priv->prop_enable_sound = g_value_get_boolean (value);
> break;
> - case PROP_ESPEAKER:
> - g_free (program->_priv->prop_espeaker);
> - program->_priv->prop_espeaker = g_value_dup_string (value);
> - break;
> default: {
> GObjectSetPropertyFunc set_func;
>
> @@ -281,9 +275,6 @@
> case PROP_ENABLE_SOUND:
> g_value_set_boolean (value, program->_priv->prop_enable_sound);
> break;
> - case PROP_ESPEAKER:
> - g_value_set_string (value, program->_priv->prop_espeaker);
> - break;
> default: {
> GObjectSetPropertyFunc get_func;
>
> @@ -581,16 +572,6 @@
> (G_PARAM_READABLE | G_PARAM_WRITABLE |
> G_PARAM_CONSTRUCT_ONLY)));
>
> - g_object_class_install_property
> - (object_class,
> - PROP_ESPEAKER,
> - g_param_spec_string (GNOME_PARAM_ESPEAKER,
> - _("Espeaker"),
> - _("How to connect to esd"),
> - NULL,
> - (G_PARAM_READABLE | G_PARAM_WRITABLE |
> - G_PARAM_CONSTRUCT_ONLY)));
> -
> object_class->finalize = gnome_program_finalize;
> }
>
> @@ -648,8 +629,6 @@
> self->_priv->prop_app_sysconfdir = NULL;
> g_free (self->_priv->prop_app_datadir);
> self->_priv->prop_app_datadir = NULL;
> - g_free (self->_priv->prop_espeaker);
> - self->_priv->prop_espeaker = NULL;
>
> g_strfreev (self->_priv->gnome_path);
> self->_priv->gnome_path = NULL;
> Index: libgnome/gnome-sound.c
> ===================================================================
> RCS file: /cvs/gnome/libgnome/libgnome/gnome-sound.c,v
> retrieving revision 1.32
> diff -u -r1.32 gnome-sound.c
> --- libgnome/gnome-sound.c 8 Jan 2002 21:17:34 -0000 1.32
> +++ libgnome/gnome-sound.c 14 May 2002 17:57:50 -0000
> @@ -1,5 +1,6 @@
> /*
> * Copyright (C) 1997-1998 Stuart Parmenter and Elliot Lee
> + * Copyright (C) 2002 Jorn Baayen
> * All rights reserved.
> *
> * This file is part of the Gnome Library.
> @@ -28,527 +29,136 @@
> #include "libgnome.h"
> #include "gnome-sound.h"
>
> -#include <stdio.h>
> -#include <stdlib.h>
> -#include <unistd.h>
> -#include <time.h>
> -
> -#ifdef HAVE_ESD
> -#include <esd.h>
> -#endif
> -
> -#ifdef HAVE_ESD
> -static char *esound_hostname = NULL;
> -static gboolean esound_hostname_null_ok = FALSE;
> -static int gnome_sound_connection = -1;
> -#endif
> -
> -typedef struct _sample
> - {
> - int rate, format, samples, id, size;
> - short *data;
> - }
> -GnomeSoundSample;
> +#include <monkey-media.h>
> +#include <libgnomevfs/gnome-vfs-utils.h>
>
> -#ifndef HAVE_LIBAUDIOFILE
> -typedef struct _WAVFormatChunk
> - {
> - char chunkID[4];
> - int chunkSize;
> -
> - unsigned int dwSamplesPerSec;
> - unsigned int dwAvgBytesPerSec;
> - short wFormatTag;
> - unsigned short wChannels;
> - unsigned short wBlockAlign;
> - unsigned short wBitsPerSample;
> - }
> -WAVFormatChunk;
> +#include <stdlib.h>
>
> -#ifdef WORDS_BIGENDIAN
> -#define SWAP_SHORT( x ) x = ( ( x & 0x00ff ) << 8 ) | ( ( x >> 8 ) & 0x00ff )
> -#define SWAP_LONG( x ) x = ( ( ( x & 0x000000ff ) << 24 ) |\
> -( ( x & 0x0000ff00 ) << 8 ) |\
> -( ( x & 0x00ff0000 ) >> 8 ) |\
> -( ( x & 0xff000000 ) >> 24 ) )
> -#endif
> +static MonkeyMediaMixer *mixer = NULL;
> +static GHashTable *cache = NULL;
>
> /**
> - * gnome_sound_sample_load_wav:
> - * @file: filename to try loading a WAV file from.
> - *
> - * Used to load a .wav file into esound.
> - *
> - * Returns a GnomeSoundSample or NULL if file did not exist.
> + * gnome_sound_play:
> + * @uri URI containing the sound sample.
> *
> + * Plays the audio stored in @uri, if possible. Fail quietly if playing is
> + * not possible (due to missing sound support or for other reasons).
> */
> -#ifdef HAVE_ESD
> -static GnomeSoundSample *
> -gnome_sound_sample_load_wav(const char *file)
> +void
> +gnome_sound_play (const char * uri)
> {
> - FILE *f;
> - GnomeSoundSample *s;
> - char buf[4];
> - WAVFormatChunk fmt;
> - int skipl = 0;
> - int skipr = 0;
> - char bytes = 0;
> - char stereo = 0;
> - int len;
> -
> - /* int count; */
> -
> - f = fopen (file, "r");
> - if (!f)
> - return NULL;
> - s = g_malloc (sizeof (GnomeSoundSample));
> - if (!s)
> - {
> - fclose (f);
> - return NULL;
> - }
> - s->rate = 44100;
> - s->format = ESD_STREAM | ESD_PLAY;
> - s->samples = 0;
> - s->data = NULL;
> - s->id = 0;
> - fread (buf, 1, 4, f);
> - if ((buf[0] != 'R') ||
> - (buf[1] != 'I') ||
> - (buf[2] != 'F') ||
> - (buf[3] != 'F'))
> - {
> - /* not a RIFF WAV file */
> - fclose (f);
> - g_free (s);
> - return NULL;
> - }
> - fread (buf, 1, 4, f);
> - fread (buf, 1, 4, f);
> - fread (fmt.chunkID, 1, 4, f);
> - fread (&(fmt.chunkSize), 1, 4, f);
> -
> -#ifdef WORDS_BIGENDIAN
> - SWAP_LONG (fmt.chunkSize);
> -#endif
> -
> - if ((fmt.chunkID[0] == 'f') &&
> - (fmt.chunkID[1] == 'm') &&
> - (fmt.chunkID[2] == 't') &&
> - (fmt.chunkID[3] == ' ') &&
> - 16 == fmt.chunkSize)
> - /* fmt chunk */
> - {
> - fread (&(fmt.wFormatTag), 1, 2, f);
> - fread (&(fmt.wChannels), 1, 2, f);
> - fread (&(fmt.dwSamplesPerSec), 1, 4, f);
> - fread (&(fmt.dwAvgBytesPerSec), 1, 4, f);
> - fread (&(fmt.wBlockAlign), 1, 2, f);
> - fread (&(fmt.wBitsPerSample), 1, 2, f);
> -#ifdef WORDS_BIGENDIAN
> - SWAP_SHORT (fmt.wFormatTag);
> - SWAP_SHORT (fmt.wChannels);
> - SWAP_LONG (fmt.dwSamplesPerSec);
> - SWAP_LONG (fmt.dwAvgBytesPerSec);
> - SWAP_SHORT (fmt.wBlockAlign);
> - SWAP_SHORT (fmt.wBitsPerSample);
> -#endif
> -
> - if (fmt.wFormatTag != 1)
> - {
> - /* unknown WAV encoding format - exit */
> - fclose (f);
> - g_free (s);
> - return NULL;
> - }
> - skipl = 0;
> - skipr = 0;
> - bytes = 0;
> - stereo = 0;
> - if (fmt.wChannels == 1)
> - s->format |= ESD_MONO;
> - else if (fmt.wChannels == 2)
> - {
> - stereo = 1;
> - s->format |= ESD_STEREO;
> - }
> - else
> - {
> - stereo = 1;
> - s->format |= ESD_STEREO;
> - if (fmt.wChannels == 3)
> - {
> - skipl = 0;
> - skipr = 1;
> - }
> - else if (fmt.wChannels == 4)
> - {
> - skipl = 0;
> - skipr = 2;
> - }
> - else if (fmt.wChannels == 4)
> - {
> - skipl = 0;
> - skipr = 2;
> - }
> - else if (fmt.wChannels == 6)
> - {
> - skipl = 3;
> - skipr = 1;
> - }
> - else
> - {
> - /* unknown channel encoding */
> - fclose (f);
> - g_free (s);
> - return NULL;
> - }
> - }
> - s->rate = fmt.dwSamplesPerSec;
> - if (fmt.wBitsPerSample <= 8)
> - {
> - bytes = 1;
> - s->format |= ESD_BITS8;
> - }
> - else if (fmt.wBitsPerSample <= 16)
> - s->format |= ESD_BITS16;
> - else
> - {
> - /* unknown bits encoding encoding */
> - fclose (f);
> - g_free (s);
> - return NULL;
> - }
> - }
> - for (;;)
> - {
> - if (fread (buf, 1, 4, f) &&
> - fread (&len, 4, 1, f))
> - {
> -#ifdef WORDS_BIGENDIAN
> - SWAP_LONG (len);
> -#endif
> -
> - if ((buf[0] != 'd') ||
> - (buf[1] != 'a') ||
> - (buf[2] != 't') ||
> - (buf[3] != 'a'))
> - fseek (f, len, SEEK_CUR);
> - else
> - {
> - s->data = g_malloc (len);
> - if (!s->data)
> - {
> - fclose (f);
> - g_free (s);
> - return NULL;
> - }
> - if ((skipl == 0) && (skipr == 0))
> - {
> - fread (s->data, len, 1, f);
> -#ifdef WORDS_BIGENDIAN
> - if (fmt.wBitsPerSample > 8 && fmt.wBitsPerSample <= 16)
> - {
> - char *tmp;
> - char tmpval;
> - int i;
> -
> - tmp = (char *) (s->data);
> -
> - for (i = 0; i < len; i++)
> - {
> - tmpval = tmp[i];
> - tmp[i] = tmp[i + 1];
> - tmp[i + 1] = tmpval;
> - }
> - }
> -#endif
> - }
> - else
> - {
> - }
> - s->samples = len;
> - if (stereo)
> - s->samples /= 2;
> - if (!bytes)
> - s->samples /= 2;
> - fclose (f);
> - return s;
> - }
> - }
> - else
> - {
> - fclose (f);
> - return NULL;
> - }
> - }
> - fclose (f);
> - g_free (s);
> - if (s->data)
> - g_free (s->data);
> + MonkeyMediaAudioStream *stream;
> + char *real_uri;
> +
> + if (mixer == NULL)
> + return;
> +
> + real_uri = gnome_vfs_get_uri_from_local_path (uri);
> + stream = monkey_media_audio_stream_new (real_uri, NULL);
> + g_free (real_uri);
> + if (stream == NULL)
> + return;
> +
> + monkey_media_mixer_append_audio_stream (mixer, stream);
> + monkey_media_mixer_set_playing_audio_stream (mixer, stream);
> + monkey_media_mixer_set_state (mixer, MONKEY_MEDIA_MIXER_STATE_PLAYING);
>
> - return NULL;
> + /* mixer holds a reference */
> + g_object_unref (G_OBJECT (stream));
> }
> -#endif
> -#endif
>
> -#ifdef HAVE_ESD
> -/*
> - * This does delayed initialization of Esound
> +/**
> + * gnome_sound_init:
> + *
> + * Initialize the sound system.
> */
> -static gboolean
> -use_sound (void)
> +void
> +gnome_sound_init(void)
> {
> - if (gnome_sound_connection == -1){
> - if (esound_hostname || esound_hostname_null_ok){
> - gnome_sound_connection = esd_open_sound (esound_hostname);
> - if (gnome_sound_connection == -1){
> - g_free (esound_hostname);
> - esound_hostname = NULL;
> - esound_hostname_null_ok = FALSE;
> - return FALSE;
> - }
> - }
> - }
> - return TRUE;
> + monkey_media_init (NULL, NULL);
> +
> + mixer = monkey_media_mixer_new (NULL);
> + if (mixer == NULL)
> + return;
> }
> -#endif
>
> -#if defined(HAVE_LIBAUDIOFILE) && defined(HAVE_ESD)
> -#include <audiofile.h>
> -
> -static GnomeSoundSample *
> -gnome_sound_sample_load_audiofile(const char *file)
> +static void
> +gnome_sound_unref_stream (char *key, GObject *stream, gpointer unused)
> {
> - AFfilehandle in_file;
> - GnomeSoundSample *s;
> - int in_format, in_width, in_channels;
> - double in_rate;
> - int bytes_per_frame;
> - AFframecount frame_count, frames_read;
> -
> - int out_bits, out_channels, out_rate;
> - int out_mode = ESD_STREAM, out_func = ESD_PLAY;
> - esd_format_t out_format;
> -
> - in_file = afOpenFile(file, "r", NULL);
> - if(!in_file)
> - return NULL;
> -
> - frame_count = afGetFrameCount(in_file, AF_DEFAULT_TRACK);
> - in_channels = afGetChannels(in_file, AF_DEFAULT_TRACK);
> - in_rate = afGetRate (in_file, AF_DEFAULT_TRACK);
> - afGetSampleFormat (in_file, AF_DEFAULT_TRACK, &in_format, &in_width);
> - if (in_width == 8)
> - out_bits = ESD_BITS8;
> - else if (in_width == 16)
> - out_bits = ESD_BITS16;
> - else {
> - g_warning ("only sample widths of 8 and 16 supported");
> - return NULL;
> - }
> -
> - bytes_per_frame = in_width / 8;
> -
> - if (in_channels == 1)
> - out_channels = ESD_MONO;
> - else if (in_channels == 2)
> - out_channels = ESD_STEREO;
> - else {
> - g_warning ("only 1 or 2 channel samples supported");
> - return NULL;
> - }
> -
> - out_format = out_bits | out_channels | out_mode | out_func;
> -
> - out_rate = (int) in_rate;
> -
> - s = g_new0 (GnomeSoundSample, 1);
> -
> - s->rate = out_rate;
> - s->format = out_format;
> - s->samples = frame_count;
> - s->data = g_malloc(frame_count * in_channels * bytes_per_frame);
> - s->id = 0;
> -
> - frames_read = afReadFrames(in_file, AF_DEFAULT_TRACK, s->data,
> - frame_count * in_channels);
> -
> - afCloseFile(in_file);
> -
> - return s;
> + g_object_unref (stream);
> + g_free (key);
> }
> -#endif
>
> -
> -/**
> - * gnome_sound_sample_load:
> - * @sample_name: The name of the sample.
> - * @filename: The filename where the audio is stored.
> - *
> - * Loads the audio from @filename and load it into the esd cache for later
> - * playing. Programs will rarely want to call this function directly. Use
> - * gnome_sound_play() instead for fire and forget sound playing.
> +/**
> + * gnome_sound_shutdown:
> *
> - * Returns: The esound sample_id or %-1 if the sample was unable to be cached
> - * for esound.
> + * Shuts down the gnome sound support.
> */
> -int
> -gnome_sound_sample_load(const char *sample_name, const char *filename)
> +void
> +gnome_sound_shutdown (void)
> {
> -#ifdef HAVE_ESD
> - GnomeSoundSample *s = NULL;
> - int sample_id;
> - int size;
> - int confirm = 0;
> -
> - if (!use_sound ())
> - return -2;
> -
> - if(!filename || !*filename)
> - return -2;
> -
> -#ifdef HAVE_LIBAUDIOFILE
> - s = gnome_sound_sample_load_audiofile(filename);
> -#else
> - s = gnome_sound_sample_load_wav(filename);
> -#endif
> - if(s)
> - goto playsamp;
> -
> - /* XXX: Add handlers for more formats here */
> -
> - playsamp:
> - if (!s)
> - return -1;
> -
> - size = s->samples;
> - if (s->format & ESD_STEREO)
> - size *= 2;
> - if (s->format & ESD_BITS16)
> - size *= 2;
> -
> - if (gnome_sound_connection >= 0)
> - {
> - if (s->data)
> - {
> - /* "name" of all samples is currently "E", should be name of sound
> - * file, or event type, for later identification */
> - s->id = esd_sample_cache (gnome_sound_connection, s->format, s->rate,
> - size, (char *)sample_name);
> - write (gnome_sound_connection, s->data, size);
> - confirm = esd_confirm_sample_cache (gnome_sound_connection);
> - if (s->id <= 0 || confirm != s->id)
> - {
> - g_warning ("error caching sample <%d>!\n", s->id);
> - s->id = 0;
> - }
> - g_free (s->data);
> - s->data = NULL;
> - }
> - }
> -
> - sample_id = s->id;
> -
> - g_free(s->data); g_free(s);
> -
> - return sample_id;
> -#else
> - return -1;
> -#endif
> + if (cache != NULL) {
> + g_hash_table_foreach (cache, (GHFunc) gnome_sound_unref_stream, NULL);
> + g_hash_table_destroy (cache);
> + cache = NULL;
> + }
> +
> + monkey_media_shutdown ();
> }
>
> /**
> - * gnome_sound_play:
> - * @filename: File containing the sound sample.
> + * gnome_sound_cache:
> *
> - * Plays the audio stored in @filename, if possible. Fail quietly if playing is
> - * not possible (due to missing sound support or for other reasons).
> + * Cache an audio stream.
> + *
> + * @uri: URI to be loaded
> + * @sndname: Name in the cache
> */
> -void
> -gnome_sound_play (const char * filename)
> +void
> +gnome_sound_cache (const char * uri, const char * sndname)
> {
> -#ifdef HAVE_ESD
> - char buf[256];
> - int sample;
> - static guint cookie = 0;
> -
> - if(!use_sound ())
> + MonkeyMediaAudioStream *stream;
> + char *real_uri;
> + gpointer origname, origstream;
> +
> + if (cache == NULL)
> + cache = g_hash_table_new (g_str_hash, g_str_equal);
> +
> + real_uri = gnome_vfs_get_uri_from_local_path (uri);
> + stream = monkey_media_audio_stream_new (real_uri, NULL);
> + g_free (real_uri);
> + if (stream == NULL)
> return;
>
> - if (cookie == 0)
> - cookie = rand ();
> + /* free old one */
> + if (g_hash_table_lookup_extended (cache, sndname, &origname, &origstream)) {
> + g_free (origname);
> + g_object_unref (G_OBJECT (origstream));
> + }
>
> - g_snprintf(buf, sizeof(buf), "%d-%u-%d",
> - getpid(), cookie++, rand ());
> -
> - /* overflow, make sure we don't reinit with rand again */
> - if (cookie == 0)
> - cookie = 1;
> -
> - sample = gnome_sound_sample_load (buf, filename);
> -
> - esd_sample_play(gnome_sound_connection, sample);
> - fsync (gnome_sound_connection);
> - esd_sample_free(gnome_sound_connection, sample);
> -#endif
> + g_hash_table_insert (cache, g_strdup (sndname), stream);
> }
>
> /**
> - * gnome_sound_init:
> - * @hostname: Hostname where esd daemon resides.
> + * gnome_sound_play_cached:
> *
> - * Initialize the esd connection.
> - */
> -void
> -gnome_sound_init(const char *hostname)
> -{
> -#ifdef HAVE_ESD
> - srand(time(NULL));
> - g_free (esound_hostname);
> - if (hostname)
> - esound_hostname = g_strdup (hostname);
> - else
> - esound_hostname_null_ok = TRUE;
> -#endif
> -}
> -
> -/**
> - * gnome_sound_shutdown:
> + * Play a cached audio stream
> *
> - * Shuts down the gnome sound support.
> + * @sndname: name of the cached stream
> */
> void
> -gnome_sound_shutdown(void)
> +gnome_sound_play_cached (const char * sndname)
> {
> -#ifdef HAVE_ESD
> - g_free (esound_hostname);
> - esound_hostname = NULL;
> - if(gnome_sound_connection >= 0){
> - esd_close(gnome_sound_connection);
> - gnome_sound_connection = -1;
> - }
> -#endif
> -}
> + MonkeyMediaAudioStream *stream;
>
> -/**
> - * gnome_sound_connection_get:
> - *
> - * Rarely needed to by programs directly, this function may be useful if a
> - * program has cached a sample with gnome_sound_sample_load() and now wishes to
> - * call esd_sample_play() to play the sample.
> - *
> - * Returns: the file descriptor of our esound connection or %-1
> - * on error.
> - **/
> -int
> -gnome_sound_connection_get (void)
> -{
> -#ifdef HAVE_ESD
> - if ( ! use_sound ())
> - return -1;
> - return gnome_sound_connection;
> -#else
> - return -1;
> -#endif
> + if (cache == NULL)
> + return;
> +
> + stream = g_hash_table_lookup (cache, sndname);
> + if (stream == NULL)
> + return;
> +
> + monkey_media_mixer_append_audio_stream (mixer, stream);
> + monkey_media_mixer_set_playing_audio_stream (mixer, stream);
> + monkey_media_mixer_set_state (mixer, MONKEY_MEDIA_MIXER_STATE_PLAYING);
> }
> Index: libgnome/gnome-sound.h
> ===================================================================
> RCS file: /cvs/gnome/libgnome/libgnome/gnome-sound.h,v
> retrieving revision 1.18
> diff -u -r1.18 gnome-sound.h
> --- libgnome/gnome-sound.h 3 Sep 2001 06:42:03 -0000 1.18
> +++ libgnome/gnome-sound.h 14 May 2002 17:57:50 -0000
> @@ -1,5 +1,6 @@
> /*
> * Copyright (C) 1997-1998 Stuart Parmenter and Elliot Lee
> + * Copyright (C) 2002 Jorn Baayen
> * All rights reserved.
> *
> * This file is part of the Gnome Library.
> @@ -30,20 +31,19 @@
>
> G_BEGIN_DECLS
>
> -/* Use this with the Esound functions */
> -int gnome_sound_connection_get (void);
> +/* Initialize sound system */
> +void gnome_sound_init (void);
>
> -/* Initialize esd connection */
> -void gnome_sound_init(const char *hostname);
> +/* Closes sound system */
> +void gnome_sound_shutdown (void);
>
> -/* Closes esd connection */
> -void gnome_sound_shutdown(void);
> +/* Plays a stream */
> +void gnome_sound_play (const char * uri);
>
> -/* Returns the Esound sample ID for the sample */
> -int gnome_sound_sample_load(const char *sample_name, const char *filename);
> +/* Stream caching */
> +void gnome_sound_cache (const char * uri, const char * sndname);
>
> -/* Loads sample, plays sample, frees sample */
> -void gnome_sound_play (const char * filename);
> +void gnome_sound_play_cached (const char * sndname);
>
> G_END_DECLS
>
> Index: libgnome/gnome-triggers.c
> ===================================================================
> RCS file: /cvs/gnome/libgnome/libgnome/gnome-triggers.c,v
> retrieving revision 1.48
> diff -u -r1.48 gnome-triggers.c
> --- libgnome/gnome-triggers.c 25 Jan 2002 20:08:02 -0000 1.48
> +++ libgnome/gnome-triggers.c 14 May 2002 17:57:51 -0000
> @@ -32,9 +32,6 @@
> #include "gnome-config.h"
> #include "gnome-util.h"
> #include "gnome-sound.h"
> -#ifdef HAVE_ESD
> - #include <esd.h>
> -#endif
>
> #include <unistd.h>
> #include <stdio.h>
> @@ -182,7 +179,7 @@
> * should be activated, 'section' is a colon-separated list indicating
> * which part of the "message classification tree" this trigger will
> * be activated for, 'type' is either "command" (run the command
> - * specified in 'params') or 'play' (play the esd sound sample named
> + * specified in 'params') or 'play' (play the sound sample named
> * 'params').
> *
> * Returns 0 on success. 1 otherwise.
> @@ -412,28 +409,7 @@
> static void
> gnome_triggers_play_sound(const char *sndname)
> {
> -#ifdef HAVE_ESD
> - int sid;
> - static GHashTable *sound_ids = NULL;
> -
> - if(gnome_sound_connection_get () < 0) return;
> -
> - if(!sound_ids)
> - sound_ids = g_hash_table_new(g_str_hash, g_str_equal);
> -
> - sid = GPOINTER_TO_INT(g_hash_table_lookup(sound_ids, sndname));
> -
> - if(!sid) {
> - sid = esd_sample_getid(gnome_sound_connection_get (), sndname);
> - if(sid >= 0) sid++;
> - g_hash_table_insert(sound_ids, g_strdup(sndname), GINT_TO_POINTER(sid));
> - }
> -
> - if(sid < 0) return;
> - sid--;
> - esd_sample_play(gnome_sound_connection_get (), sid);
> -#endif
> - /* If there's no esound, this is just a no-op */
> + gnome_sound_play_cached(sndname);
> }
>
> /**
> @@ -595,14 +571,9 @@
> const char *level,
> const char *supinfo[])
> {
> -#if defined(HAVE_ESD)
> - if(gnome_sound_connection_get () == -1)
> - return;
> -
> if(t->u.media.cache_id >= 0)
> - esd_sample_play(gnome_sound_connection_get (), t->u.media.cache_id);
> + gnome_sound_play_cached(t->u.media.cache_id);
> else if(t->u.media.cache_id == -1)
> gnome_sound_play(t->u.media.file);
> -#endif
> }
>
> Index: libgnome/libgnome-2.0.pc.in
> ===================================================================
> RCS file: /cvs/gnome/libgnome/libgnome/libgnome-2.0.pc.in,v
> retrieving revision 1.13
> diff -u -r1.13 libgnome-2.0.pc.in
> --- libgnome/libgnome-2.0.pc.in 30 Oct 2001 17:28:46 -0000 1.13
> +++ libgnome/libgnome-2.0.pc.in 14 May 2002 17:57:51 -0000
> @@ -5,7 +5,7 @@
>
> Name: libgnome
> Description: libgnome
> -Requires: glib-2.0 ORBit-2.0 libbonobo-2.0 gconf-2.0 gnome-vfs-2.0
> +Requires: glib-2.0 ORBit-2.0 libbonobo-2.0 gconf-2.0 gnome-vfs-2.0 monkey-media
> Version: @VERSION@
> Libs: -L${libdir} -lgnome-2
> Cflags: -I${includedir}/libgnome-2.0
> Index: schemas/desktop_gnome_sound.schemas
> ===================================================================
> RCS file: /cvs/gnome/libgnome/schemas/desktop_gnome_sound.schemas,v
> retrieving revision 1.1
> diff -u -r1.1 desktop_gnome_sound.schemas
> --- schemas/desktop_gnome_sound.schemas 26 Mar 2002 15:49:37 -0000 1.1
> +++ schemas/desktop_gnome_sound.schemas 14 May 2002 17:57:51 -0000
> @@ -2,17 +2,6 @@
> <gconfschemafile>
> <schemalist>
> <schema>
> - <applyto>/desktop/gnome/sound/enable_esd</applyto>
> - <key>/schemas/desktop/gnome/sound/enable_esd</key>
> - <owner>gnome</owner>
> - <type>bool</type>
> - <default>false</default>
> - <locale name="C">
> - <short>Enable ESD</short>
> - <long>Enable sound server startup.</long>
> - </locale>
> - </schema>
> - <schema>
> <applyto>/desktop/gnome/sound/event_sounds</applyto>
> <key>/schemas/desktop/gnome/sound/event_sounds</key>
> <owner>gnome</owner>
> ----
>
> ? stamp-h1
> Index: ChangeLog
> ===================================================================
> RCS file: /cvs/gnome/libgnomeui/ChangeLog,v
> retrieving revision 1.171
> diff -u -r1.171 ChangeLog
> --- ChangeLog 13 May 2002 20:18:39 -0000 1.171
> +++ ChangeLog 14 May 2002 17:47:58 -0000
> @@ -1,3 +1,8 @@
> +2002-05-14 Jorn Baayen <jorn nl linux org>
> +
> + * configure.in:
> + * libgnomeui/gnome-ui-init.c: remove esd stuff
> +
> 2002-05-13 Anders Carlsson <andersca gnu org>
>
> * configure.in: Release 1.117.0
> Index: configure.in
> ===================================================================
> RCS file: /cvs/gnome/libgnomeui/configure.in,v
> retrieving revision 1.94
> diff -u -r1.94 configure.in
> --- configure.in 13 May 2002 20:18:39 -0000 1.94
> +++ configure.in 14 May 2002 17:47:58 -0000
> @@ -54,20 +54,7 @@
> dnl Start of pkg-config checks
> dnl
>
> -dnl We first check for esound and audiofile (which has conditional
> -dnl support built in)
> -dnl
> -AUDIOFILE_MODULE="audiofile >= 0.2.3"
> -ESOUND_MODULE="esound >= 0.2.25"
> -PKG_CHECK_MODULES(SOUND_TEST, $ESOUND_MODULE $AUDIOFILE_MODULE, [
> - AC_DEFINE(HAVE_LIBAUDIOFILE)
> - AC_DEFINE(HAVE_ESD)
> -],[
> - AUDIOFILE_MODULE=""
> - ESOUND_MODULE=""
> -])
> -
> -GNOMEUI_MODULES="libgnome-2.0 >= 1.116.0 libgnomecanvas-2.0 >= 1.116.0 libbonoboui-2.0 >= 1.116.0 gconf-2.0 >= 1.1.10"
> +GNOMEUI_MODULES="libgnome-2.0 >= 1.116.0 libgnomecanvas-2.0 >= 1.116.0 libbonoboui-2.0 >= 1.116.0 gconf-2.0 >= 1.1.10 monkey-media >= 0.5.0"
> PKG_CHECK_MODULES(LIBGNOMEUI, $GNOMEUI_MODULES)
> AC_SUBST(LIBGNOMEUI_CFLAGS)
> AC_SUBST(LIBGNOMEUI_LIBS)
> Index: libgnomeui/gnome-ui-init.c
> ===================================================================
> RCS file: /cvs/gnome/libgnomeui/libgnomeui/gnome-ui-init.c,v
> retrieving revision 1.178
> diff -u -r1.178 gnome-ui-init.c
> --- libgnomeui/gnome-ui-init.c 14 Mar 2002 00:23:01 -0000 1.178
> +++ libgnomeui/gnome-ui-init.c 14 May 2002 17:47:59 -0000
> @@ -276,7 +276,6 @@
> libgnomeui_segv_setup (app, FALSE);
> }
>
> -#ifdef HAVE_ESD
> static gboolean
> relay_gtk_signal(GSignalInvocationHint *hint,
> guint n_param_values,
> @@ -307,19 +306,14 @@
>
> return TRUE;
> }
> -#endif
>
> static void
> initialize_gtk_signal_relay (void)
> {
> -#ifdef HAVE_ESD
> gpointer iter_signames;
> char *signame;
> char *ctmp, *ctmp2;
>
> - if (gnome_sound_connection_get () < 0)
> - return;
> -
> if (!gnome_config_get_bool ("/sound/system/settings/event_sounds=true"))
> return;
>
> @@ -381,7 +375,6 @@
> g_free(signame);
> }
> gnome_config_pop_prefix ();
> -#endif
> }
>
> static void
> ----
>
> ? stamp-h1
> ? help/C/omf_timestamp
> Index: ChangeLog
> ===================================================================
> RCS file: /cvs/gnome/gnome-control-center/ChangeLog,v
> retrieving revision 1.488
> diff -u -r1.488 ChangeLog
> --- ChangeLog 12 May 2002 08:59:56 -0000 1.488
> +++ ChangeLog 14 May 2002 18:01:14 -0000
> @@ -1,3 +1,11 @@
> +2002-05-14 Jorn Baayen <jorn nl linux org>
> +
> + * configure.in:
> + * capplets/sound/sound-properties-capplet.c:
> + * capplets/sound/sound-properties.glade:
> + * gnome-settings-daemon/gnome-settings-sound.c: port to new
> + gnome-sound stuff
> +
> 2002-05-12 Anders Carlsson <andersca gnu org>
>
> * configure.in: Require a new libglade.
> Index: configure.in
> ===================================================================
> RCS file: /cvs/gnome/gnome-control-center/configure.in,v
> retrieving revision 1.334
> diff -u -r1.334 configure.in
> --- configure.in 12 May 2002 08:59:56 -0000 1.334
> +++ configure.in 14 May 2002 18:01:14 -0000
> @@ -51,11 +51,11 @@
> COMMON_MODULES="gtk+-2.0 gconf-2.0 libgnomeui-2.0 libglade-2.0 >= 1.99.12 libbonobo-2.0 libbonoboui-2.0 libglade-2.0 gconf-2.0 gnome-desktop-2.0"
> PKG_CHECK_MODULES(CAPPLET, $COMMON_MODULES)
> PKG_CHECK_MODULES(GNOMECC, $COMMON_MODULES libxml-2.0 gnome-desktop-2.0 gnome-vfs-2.0)
> -PKG_CHECK_MODULES(GNOME_SETTINGS_DAEMON, gtk+-2.0 gconf-2.0 libgnomeui-2.0 esound)
> +PKG_CHECK_MODULES(GNOME_SETTINGS_DAEMON, gtk+-2.0 gconf-2.0 libgnomeui-2.0 monkey-media >= 0.5.0)
> PKG_CHECK_MODULES(OLD_CAPPLET, libgnomeui-2.0 libglade-2.0)
> PKG_CHECK_MODULES(GNOME, libgnomeui-2.0)
> PKG_CHECK_MODULES(VFS_CAPPLET, $COMMON_MODULES gnome-vfs-module-2.0 gnome-vfs-2.0)
> -PKG_CHECK_MODULES(SOUND_CAPPLET, esound)
> +PKG_CHECK_MODULES(SOUND_CAPPLET, monkey-media >= 0.5.0)
>
> CAPPLET_LIBS="$CAPPLET_LIBS $x_libs"
> GNOMECC_LIBS="$GNOMECC_LIBS $x_libs"
> Index: capplets/sound/sound-properties-capplet.c
> ===================================================================
> RCS file: /cvs/gnome/gnome-control-center/capplets/sound/sound-properties-capplet.c,v
> retrieving revision 1.31
> diff -u -r1.31 sound-properties-capplet.c
> --- capplets/sound/sound-properties-capplet.c 8 May 2002 15:24:50 -0000 1.31
> +++ capplets/sound/sound-properties-capplet.c 14 May 2002 18:01:14 -0000
> @@ -92,9 +92,6 @@
> {
> GObject *peditor;
>
> - peditor = gconf_peditor_new_boolean (NULL, "/desktop/gnome/sound/enable_esd", WID ("enable_toggle"), NULL);
> - gconf_peditor_widget_set_guard (GCONF_PROPERTY_EDITOR (peditor), WID ("events_toggle"));
> - gconf_peditor_widget_set_guard (GCONF_PROPERTY_EDITOR (peditor), WID ("events_vbox"));
> peditor = gconf_peditor_new_boolean (NULL, "/desktop/gnome/sound/event_sounds", WID ("events_toggle"), NULL);
> }
>
> @@ -114,7 +111,6 @@
> gboolean val_bool, def;
>
> client = gconf_client_get_default ();
> - COPY_FROM_LEGACY (bool, "/desktop/gnome/sound/enable_esd", "/sound/system/settings/start_esd=false");
> COPY_FROM_LEGACY (bool, "/desktop/gnome/sound/event_sounds", "/sound/system/settings/event_sounds=false");
> g_object_unref (G_OBJECT (client));
> }
> Index: capplets/sound/sound-properties.glade
> ===================================================================
> RCS file: /cvs/gnome/gnome-control-center/capplets/sound/sound-properties.glade,v
> retrieving revision 1.7
> diff -u -r1.7 sound-properties.glade
> --- capplets/sound/sound-properties.glade 28 Mar 2002 01:10:53 -0000 1.7
> +++ capplets/sound/sound-properties.glade 14 May 2002 18:01:14 -0000
> @@ -30,24 +30,6 @@
> <property name="visible">yes</property>
>
> <child>
> - <widget class="GtkCheckButton" id="enable_toggle">
> - <property name="can_focus">yes</property>
> - <property name="label" translatable="yes">E_nable sound server startup</property>
> - <property name="active">no</property>
> - <property name="draw_indicator">yes</property>
> - <property name="visible">yes</property>
> - <property name="use_underline">yes</property>
> -
> - <signal name="toggled" handler="enable_toggled_cb" />
> - </widget>
> - <packing>
> - <property name="padding">0</property>
> - <property name="expand">no</property>
> - <property name="fill">no</property>
> - </packing>
> - </child>
> -
> - <child>
> <widget class="GtkCheckButton" id="events_toggle">
> <property name="can_focus">yes</property>
> <property name="label" translatable="yes">_Sounds for events</property>
> Index: gnome-settings-daemon/gnome-settings-sound.c
> ===================================================================
> RCS file: /cvs/gnome/gnome-control-center/gnome-settings-daemon/gnome-settings-sound.c,v
> retrieving revision 1.6
> diff -u -r1.6 gnome-settings-sound.c
> --- gnome-settings-daemon/gnome-settings-sound.c 30 Apr 2002 09:45:05 -0000 1.6
> +++ gnome-settings-daemon/gnome-settings-sound.c 14 May 2002 18:01:15 -0000
> @@ -6,6 +6,8 @@
> *
> * Written by Rachel Hestilow <hestilow ximian com>
> *
> + * Ported to MonkeyMedia by Jorn Baayen <jorn nl linux org>
> + *
> * This program is free software; you can redistribute it and/or modify
> * it under the terms of the GNU General Public License as published by
> * the Free Software Foundation; either version 2, or (at your option)
> @@ -29,7 +31,6 @@
> #include <string.h>
> #include <stdlib.h>
> #include <time.h>
> -#include <esd.h>
> #include <sys/types.h>
>
> #include <gconf/gconf-client.h>
> @@ -42,50 +43,6 @@
> #include "gnome-settings-sound.h"
> #include "gnome-settings-daemon.h"
>
> -/* start_esd
> - *
> - * Start the Enlightenment Sound Daemon.
> - */
> -static void
> -start_esd (void)
> -{
> - int esdpid;
> - static const char *esd_cmdline[] = {"esd", "-nobeeps", NULL};
> - char *tmpargv[3];
> - char argbuf[32];
> - time_t starttime;
> - GnomeClient *client = gnome_master_client ();
> -
> - g_print (_("Starting esd\n"));
> - esdpid = gnome_execute_async (NULL, 2, (char **)esd_cmdline);
> - g_snprintf (argbuf, sizeof (argbuf), "%d", esdpid);
> - tmpargv[0] = "kill"; tmpargv[1] = argbuf; tmpargv[2] = NULL;
> - gnome_client_set_shutdown_command (client, 2, tmpargv);
> - starttime = time (NULL);
> - gnome_sound_init (NULL);
> -
> - while (gnome_sound_connection_get () < 0
> - && ((time(NULL) - starttime) < 4))
> - {
> -#ifdef HAVE_USLEEP
> - usleep(1000);
> -#endif
> - gnome_sound_init(NULL);
> - }
> -}
> -
> -/* stop_esd
> - *
> - * Stop the Enlightenment Sound Daemon.
> - */
> -static void
> -stop_esd (void)
> -{
> - g_print (_("Stopping esd\n"));
> - /* Can't think of a way to do this reliably, so we fake it for now */
> - esd_standby (gnome_sound_connection_get ());
> -}
> -
> /* reload_foreach_cb
> *
> * For a given SoundEvent, reload the sound file associate with the event.
> @@ -94,15 +51,8 @@
> reload_foreach_cb (SoundEvent *event, gpointer data)
> {
> gchar *file, *tmp, *key;
> - int sid;
>
> key = sound_event_compose_key (event);
> - /* We need to free up the old sample, because
> - * esd allows multiple samples with the same name,
> - * putting memory to waste. */
> - sid = esd_sample_getid(gnome_sound_connection_get (), key);
> - if (sid >= 0)
> - esd_sample_free(gnome_sound_connection_get (), sid);
>
> if (!event->file || !strcmp (event->file, ""))
> return;
> @@ -121,12 +71,8 @@
> return;
> }
>
> - sid = gnome_sound_sample_load (key, file);
> + gnome_sound_cache (file, key);
>
> - if (sid < 0)
> - g_warning (_("Couldn't load sound file %s as sample %s"),
> - file, key);
> -
> g_free (key);
> }
>
> @@ -139,19 +85,12 @@
> static int event_changed_old = 0;
> int event_changed_new;
>
> - gboolean enable_esd;
> gboolean event_sounds;
>
> client = gconf_client_get_default ();
>
> - enable_esd = gconf_client_get_bool (client, "/desktop/gnome/sound/enable_esd", NULL);
> event_sounds = gconf_client_get_bool (client, "/desktop/gnome/sound/event_sounds", NULL);
> event_changed_new = gconf_client_get_int (client, "/desktop/gnome/sound/event_changed", NULL);
> -
> - if (enable_esd && gnome_sound_connection_get () < 0)
> - start_esd ();
> - else if (!enable_esd)
> - stop_esd ();
>
> if (!inited || event_changed_old != event_changed_new)
> {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]