diff options
author | Diego 'Flameeyes' Pettenò <flameeyes@gmail.com> | 2007-03-26 11:48:00 +0000 |
---|---|---|
committer | Diego 'Flameeyes' Pettenò <flameeyes@gmail.com> | 2007-03-26 11:48:00 +0000 |
commit | 0f40cfbc8e2ce03b42ce2cf732388b9e8cf50e75 (patch) | |
tree | 27c4a62f97ddf3e0a60b2283aff7110f01f895f5 /src | |
parent | 91f91ec1332e1bc2a1434a1658d825a16ed56ff8 (diff) | |
download | xine-lib-0f40cfbc8e2ce03b42ce2cf732388b9e8cf50e75.tar.gz xine-lib-0f40cfbc8e2ce03b42ce2cf732388b9e8cf50e75.tar.bz2 |
Send an event when the amp value or amp mute change. Patch by reinhard Nissl. Also bump the libtool version info.
CVS patchset: 8749
CVS date: 2007/03/26 11:48:00
Diffstat (limited to 'src')
-rw-r--r-- | src/xine-engine/xine_interface.c | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/src/xine-engine/xine_interface.c b/src/xine-engine/xine_interface.c index 1861df7c0..e58d9ed61 100644 --- a/src/xine-engine/xine_interface.c +++ b/src/xine-engine/xine_interface.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: xine_interface.c,v 1.103 2007/02/22 16:04:45 dgp85 Exp $ + * $Id: xine_interface.c,v 1.104 2007/03/26 11:48:01 dgp85 Exp $ * * convenience/abstraction layer, functions to implement * libxine's public interface @@ -341,6 +341,24 @@ int xine_port_send_gui_data (xine_video_port_t *vo, type, data); } +static void send_audio_amp_event_internal(xine_stream_t *stream) +{ + xine_event_t event; + xine_audio_level_data_t data; + + data.left + = data.right + = stream->audio_out->get_property (stream->audio_out, AO_PROP_AMP); + data.mute + = stream->audio_out->get_property (stream->audio_out, AO_PROP_AMP_MUTE); + + event.type = XINE_EVENT_AUDIO_AMP_LEVEL; + event.data = &data; + event.data_length = sizeof (data); + + xine_event_send(stream, &event); +} + void xine_set_param (xine_stream_t *stream, int param, int value) { /* Avoid crashing */ if ( ! stream ) { @@ -412,15 +430,21 @@ void xine_set_param (xine_stream_t *stream, int param, int value) { case XINE_PARAM_AUDIO_AMP_LEVEL: stream->xine->port_ticket->acquire(stream->xine->port_ticket, 0); - if (stream->audio_out) - stream->audio_out->set_property (stream->audio_out, AO_PROP_AMP, value); + if (stream->audio_out) { + int old_value = stream->audio_out->get_property (stream->audio_out, AO_PROP_AMP); + if (old_value != stream->audio_out->set_property (stream->audio_out, AO_PROP_AMP, value)) + send_audio_amp_event_internal(stream); + } stream->xine->port_ticket->release(stream->xine->port_ticket, 0); break; case XINE_PARAM_AUDIO_AMP_MUTE: stream->xine->port_ticket->acquire(stream->xine->port_ticket, 0); - if (stream->audio_out) - stream->audio_out->set_property (stream->audio_out, AO_PROP_AMP_MUTE, value); + if (stream->audio_out) { + int old_value = stream->audio_out->get_property (stream->audio_out, AO_PROP_AMP_MUTE); + if (old_value != stream->audio_out->set_property (stream->audio_out, AO_PROP_AMP_MUTE, value)) + send_audio_amp_event_internal(stream); + } stream->xine->port_ticket->release(stream->xine->port_ticket, 0); break; |