From d1deea43570dfd5bd32b7040f89cf3c971df3b9a Mon Sep 17 00:00:00 2001 From: Michal Ratajsky Date: Sat, 9 Jan 2016 20:08:32 +0100 Subject: oss: Improve cleaning code and guard against incorrect use --- backends/oss/oss-device.c | 34 ++++++---------------------------- 1 file changed, 6 insertions(+), 28 deletions(-) (limited to 'backends/oss/oss-device.c') diff --git a/backends/oss/oss-device.c b/backends/oss/oss-device.c index d408c80..582c837 100644 --- a/backends/oss/oss-device.c +++ b/backends/oss/oss-device.c @@ -170,6 +170,7 @@ struct _OssDevicePrivate GList *streams; OssStream *input; OssStream *output; + gboolean loaded; }; enum { @@ -181,7 +182,6 @@ static guint signals[N_SIGNALS] = { 0, }; static void oss_device_class_init (OssDeviceClass *klass); static void oss_device_init (OssDevice *device); -static void oss_device_dispose (GObject *object); static void oss_device_finalize (GObject *object); G_DEFINE_TYPE (OssDevice, oss_device, MATE_MIXER_TYPE_DEVICE) @@ -208,7 +208,6 @@ oss_device_class_init (OssDeviceClass *klass) MateMixerDeviceClass *device_class; object_class = G_OBJECT_CLASS (klass); - object_class->dispose = oss_device_dispose; object_class->finalize = oss_device_finalize; device_class = MATE_MIXER_DEVICE_CLASS (klass); @@ -237,26 +236,12 @@ oss_device_init (OssDevice *device) OssDevicePrivate); } -static void -oss_device_dispose (GObject *object) -{ - OssDevice *device; - - device = OSS_DEVICE (object); - - g_clear_object (&device->priv->input); - g_clear_object (&device->priv->output); - - G_OBJECT_CLASS (oss_device_parent_class)->dispose (object); -} - static void oss_device_finalize (GObject *object) { OssDevice *device = OSS_DEVICE (object); - if (device->priv->fd != -1) - close (device->priv->fd); + oss_device_close (device); g_free (device->priv->path); @@ -301,6 +286,7 @@ oss_device_open (OssDevice *device) gint ret; g_return_val_if_fail (OSS_IS_DEVICE (device), FALSE); + g_return_val_if_fail (device->priv->fd != -1, FALSE); g_debug ("Opening device %s (%s)", device->priv->path, @@ -337,17 +323,6 @@ fail: return FALSE; } -gboolean -oss_device_is_open (OssDevice *device) -{ - g_return_val_if_fail (OSS_IS_DEVICE (device), FALSE); - - if (device->priv->fd != -1) - return TRUE; - - return FALSE; -} - void oss_device_close (OssDevice *device) { @@ -408,6 +383,7 @@ oss_device_load (OssDevice *device) guint i; g_return_if_fail (OSS_IS_DEVICE (device)); + g_return_if_fail (device->priv->loaded == FALSE); name = mate_mixer_device_get_name (MATE_MIXER_DEVICE (device)); @@ -511,6 +487,8 @@ oss_device_load (OssDevice *device) * changed and therefore when to start the rapid polling. */ device->priv->poll_tag = create_poll_source (device, OSS_POLL_NORMAL); + + device->priv->loaded = TRUE; } const gchar * -- cgit v1.2.1