Properly reset the internal state without leaking the filehandle

Original commit message from CVS:
Properly reset the internal state without leaking the filehandle
This commit is contained in:
Wim Taymans 2002-12-10 20:41:06 +00:00
parent 753a083ade
commit dff7f0496f
3 changed files with 8 additions and 1 deletions

View file

@ -105,6 +105,12 @@ gst_osscommon_init (GstOssCommon *common)
common->device = g_strdup ("/dev/dsp");
common->fd = -1;
gst_osscommon_reset (common);
}
void
gst_osscommon_reset (GstOssCommon *common)
{
common->law = 0;
common->endianness = G_BYTE_ORDER;
common->sign = TRUE;

View file

@ -57,6 +57,7 @@ struct _GstOssCommon
};
void gst_osscommon_init (GstOssCommon *common);
void gst_osscommon_reset (GstOssCommon *common);
gboolean gst_osscommon_open_audio (GstOssCommon *common,
GstOssOpenMode mode, gchar **error);

View file

@ -589,7 +589,7 @@ gst_osssink_change_state (GstElement *element)
case GST_STATE_PAUSED_TO_READY:
if (GST_FLAG_IS_SET (element, GST_OSSSINK_OPEN))
ioctl (osssink->common.fd, SNDCTL_DSP_RESET, 0);
gst_osscommon_init (&osssink->common);
gst_osscommon_reset (&osssink->common);
break;
case GST_STATE_READY_TO_NULL:
if (GST_FLAG_IS_SET (element, GST_OSSSINK_OPEN)) {