mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 17:20:36 +00:00
ext/alsa/gstalsa.c: handle case better where a soundcard can't pause
Original commit message from CVS: * ext/alsa/gstalsa.c: (gst_alsa_change_state), (gst_alsa_close_audio): handle case better where a soundcard can't pause * ext/ogg/gstoggdemux.c: don't crash when we get events but don't have pads yet
This commit is contained in:
parent
e888bd8780
commit
f49d8faa28
3 changed files with 22 additions and 10 deletions
|
@ -1,3 +1,11 @@
|
|||
2004-04-01 Benjamin Otte <otte@gnome.org>
|
||||
|
||||
* ext/alsa/gstalsa.c: (gst_alsa_change_state),
|
||||
(gst_alsa_close_audio):
|
||||
handle case better where a soundcard can't pause
|
||||
* ext/ogg/gstoggdemux.c:
|
||||
don't crash when we get events but don't have pads yet
|
||||
|
||||
2004-04-01 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||
|
||||
* sys/oss/gstosselement.c: (gst_osselement_probe_caps):
|
||||
|
@ -130,7 +138,6 @@
|
|||
* ext/kio/kiosrc.cpp: (process_events):
|
||||
update handling event processing if inside KDE - untested
|
||||
|
||||
>>>>>>> 1.489
|
||||
2004-03-29 David Schleef <ds@schleef.org>
|
||||
|
||||
* ext/hermes/gsthermescolorspace.c: (plugin_init): decrease rank
|
||||
|
|
|
@ -894,7 +894,7 @@ out:
|
|||
static GstElementStateReturn
|
||||
gst_alsa_change_state (GstElement * element)
|
||||
{
|
||||
int err;
|
||||
int err = 0;
|
||||
GstAlsa *this;
|
||||
|
||||
g_return_val_if_fail (element != NULL, FALSE);
|
||||
|
@ -931,10 +931,12 @@ gst_alsa_change_state (GstElement * element)
|
|||
if ((err = snd_pcm_pause (this->handle, 1)) < 0) {
|
||||
GST_ERROR_OBJECT (this, "Error pausing sound: %s",
|
||||
snd_strerror (err));
|
||||
return GST_STATE_FAILURE;
|
||||
GST_ALSA_CAPS_SET (this, GST_ALSA_CAPS_PAUSE, 0);
|
||||
goto cant_pause;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
cant_pause:
|
||||
/* if device doesn't know how to pause, we just stop */
|
||||
if (GST_FLAG_IS_SET (element, GST_ALSA_RUNNING))
|
||||
gst_alsa_stop_audio (this);
|
||||
|
@ -1402,6 +1404,9 @@ gst_alsa_close_audio (GstAlsa * this)
|
|||
g_free (this->cardname);
|
||||
this->cardname = NULL;
|
||||
}
|
||||
GST_ALSA_CAPS_SET (this, GST_ALSA_CAPS_PAUSE, 0);
|
||||
GST_ALSA_CAPS_SET (this, GST_ALSA_CAPS_RESUME, 0);
|
||||
GST_ALSA_CAPS_SET (this, GST_ALSA_CAPS_SYNC_START, 0);
|
||||
GST_FLAG_UNSET (this, GST_ALSA_OPEN);
|
||||
|
||||
return TRUE;
|
||||
|
|
|
@ -90,9 +90,11 @@ GstOggChain;
|
|||
#define CURRENT_CHAIN(ogg) (&g_array_index ((ogg)->chains, GstOggChain, (ogg)->current_chain))
|
||||
#define FOR_PAD_IN_CURRENT_CHAIN(ogg, _pad, ...) G_STMT_START{ \
|
||||
GSList *_walk; \
|
||||
for (_walk = CURRENT_CHAIN (ogg)->pads; _walk; _walk = g_slist_next (_walk)) { \
|
||||
GstOggPad *_pad = (GstOggPad *) _walk->data; \
|
||||
__VA_ARGS__ \
|
||||
if ((ogg)->current_chain != -1) { \
|
||||
for (_walk = CURRENT_CHAIN (ogg)->pads; _walk; _walk = g_slist_next (_walk)) { \
|
||||
GstOggPad *_pad = (GstOggPad *) _walk->data; \
|
||||
__VA_ARGS__ \
|
||||
} \
|
||||
} \
|
||||
}G_STMT_END
|
||||
|
||||
|
@ -374,8 +376,7 @@ gst_ogg_demux_src_event (GstPad * pad, GstEvent * event)
|
|||
|
||||
GST_OGG_SET_STATE (ogg, GST_OGG_STATE_SEEK);
|
||||
FOR_PAD_IN_CURRENT_CHAIN (ogg, pad,
|
||||
pad->flags |= GST_OGG_PAD_NEEDS_DISCONT;
|
||||
);
|
||||
pad->flags |= GST_OGG_PAD_NEEDS_DISCONT;);
|
||||
GST_DEBUG_OBJECT (ogg, "initiating seeking to offset %" G_GUINT64_FORMAT,
|
||||
offset);
|
||||
ogg->seek_pad = cur;
|
||||
|
@ -422,8 +423,7 @@ gst_ogg_demux_handle_event (GstPad * pad, GstEvent * event)
|
|||
gst_event_unref (event);
|
||||
GST_FLAG_UNSET (ogg, GST_OGG_FLAG_WAIT_FOR_DISCONT);
|
||||
FOR_PAD_IN_CURRENT_CHAIN (ogg, pad,
|
||||
pad->flags |= GST_OGG_PAD_NEEDS_DISCONT;
|
||||
);
|
||||
pad->flags |= GST_OGG_PAD_NEEDS_DISCONT;);
|
||||
break;
|
||||
case GST_EVENT_EOS:
|
||||
if (ogg->state == GST_OGG_STATE_SETUP) {
|
||||
|
|
Loading…
Reference in a new issue