]> sigrok.org Git - libsigrok.git/commitdiff
alsa: Use std_dev_clear().
authorUwe Hermann <redacted>
Fri, 31 May 2013 13:28:43 +0000 (15:28 +0200)
committerUwe Hermann <redacted>
Sun, 2 Jun 2013 14:46:17 +0000 (16:46 +0200)
hardware/alsa/api.c
hardware/alsa/protocol.c
hardware/alsa/protocol.h

index 69a78ad2f022fa545b3a9ae206c008f054c1b7c8..aeac8713541c17e4f369cabe9bbf5142e57e9238 100644 (file)
@@ -36,17 +36,19 @@ static const int32_t hwcaps[] = {
 SR_PRIV struct sr_dev_driver alsa_driver_info;
 static struct sr_dev_driver *di = &alsa_driver_info;
 
-static int clear_instances(void)
+static void clear_helper(void *priv)
 {
-       struct drv_context *drvc;
+       struct dev_context *devc;
 
-       if (!(drvc = di->priv))
-               return SR_OK;
+       devc = priv;
 
-       g_slist_free_full(drvc->instances, (GDestroyNotify)alsa_dev_inst_clear);
-       drvc->instances = NULL;
+       snd_pcm_hw_params_free(devc->hw_params);
+       g_free((void *)devc->samplerates);
+}
 
-       return SR_OK;
+static int clear_instances(void)
+{
+       return std_dev_clear(di, clear_helper);
 }
 
 static int init(struct sr_context *sr_ctx)
@@ -121,9 +123,7 @@ static int dev_close(struct sr_dev_inst *sdi)
 
 static int cleanup(void)
 {
-       clear_instances();
-
-       return SR_OK;
+       return clear_instances();
 }
 
 static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
index 70a5e68606905ebb9b7a75bd09c68b9b2a90b356..eea2f5bd427159faff0ee160f4474952659037e8 100644 (file)
@@ -282,22 +282,6 @@ SR_PRIV GSList *alsa_scan(GSList *options, struct sr_dev_driver *di)
        return devices;
 }
 
-/*
- * Helper to be used with g_slist_free_full(); for properly freeing an alsa
- * dev instance.
- */
-SR_PRIV void alsa_dev_inst_clear(struct sr_dev_inst *sdi)
-{
-       struct dev_context *devc;
-
-       if (!(devc = sdi->priv))
-               return;
-
-       snd_pcm_hw_params_free(devc->hw_params);
-       g_free((void*)devc->samplerates);
-       sr_dev_inst_free(sdi);
-}
-
 /**
  * Set the samplerate of the ALSA device.
  *
index 17578594716295f6bd62de8425af177edd7e409d..e844bc740afabed26327654f0deb0c25b5ac5bce 100644 (file)
@@ -52,11 +52,8 @@ struct dev_context {
 };
 
 SR_PRIV GSList *alsa_scan(GSList *options, struct sr_dev_driver *di);
-SR_PRIV void alsa_dev_inst_clear(struct sr_dev_inst *sdi);
-
 SR_PRIV int alsa_set_samplerate(const struct sr_dev_inst *sdi,
                                uint64_t newrate);
-
 SR_PRIV int alsa_receive_data(int fd, int revents, void *cb_data);
 
 #endif