Lines Matching refs:node
44 int snd_utils_get_int(struct snd_node *node, const char *prop, int *val) in snd_utils_get_int() argument
46 if (!node || !node->card_node || !node->dev_node) in snd_utils_get_int()
49 return node->get_int(node->dev_node, prop, val); in snd_utils_get_int()
52 int snd_utils_get_str(struct snd_node *node, const char *prop, char **val) in snd_utils_get_str() argument
54 if (!node || !node->card_node || !node->dev_node) in snd_utils_get_str()
57 return node->get_str(node->dev_node, prop, val); in snd_utils_get_str()
60 void snd_utils_put_dev_node(struct snd_node *node) in snd_utils_put_dev_node() argument
62 if (!node) in snd_utils_put_dev_node()
65 if (node->card_node) in snd_utils_put_dev_node()
66 node->put_card(node->card_node); in snd_utils_put_dev_node()
68 if (node->dl_hdl) in snd_utils_put_dev_node()
69 dlclose(node->dl_hdl); in snd_utils_put_dev_node()
71 free(node); in snd_utils_put_dev_node()
74 enum snd_node_type snd_utils_get_node_type(struct snd_node *node) in snd_utils_get_node_type() argument
78 if (!node || !node->card_node || !node->dev_node) in snd_utils_get_node_type()
81 node->get_int(node->dev_node, "type", &val); in snd_utils_get_node_type()
87 static int snd_utils_resolve_symbols(struct snd_node *node) in snd_utils_resolve_symbols() argument
89 void *dl = node->dl_hdl; in snd_utils_resolve_symbols()
92 SND_DLSYM(dl, node->get_card, "snd_card_def_get_card", err); in snd_utils_resolve_symbols()
95 SND_DLSYM(dl, node->put_card, "snd_card_def_put_card", err); in snd_utils_resolve_symbols()
98 SND_DLSYM(dl, node->get_node, "snd_card_def_get_node", err); in snd_utils_resolve_symbols()
101 SND_DLSYM(dl, node->get_int, "snd_card_def_get_int", err); in snd_utils_resolve_symbols()
104 SND_DLSYM(dl, node->get_str, "snd_card_def_get_str", err); in snd_utils_resolve_symbols()
113 struct snd_node *node; in snd_utils_get_dev_node() local
116 node = calloc(1, sizeof(*node)); in snd_utils_get_dev_node()
117 if (!node) in snd_utils_get_dev_node()
120 node->dl_hdl = dlopen("libsndcardparser.so", RTLD_NOW); in snd_utils_get_dev_node()
121 if (!node->dl_hdl) { in snd_utils_get_dev_node()
125 rc = snd_utils_resolve_symbols(node); in snd_utils_get_dev_node()
129 node->card_node = node->get_card(card); in snd_utils_get_dev_node()
130 if (!node->card_node) in snd_utils_get_dev_node()
133 node->dev_node = node->get_node(node->card_node, in snd_utils_get_dev_node()
135 if (!node->dev_node) in snd_utils_get_dev_node()
138 return node; in snd_utils_get_dev_node()
141 node->put_card(node->card_node); in snd_utils_get_dev_node()
144 dlclose(node->dl_hdl); in snd_utils_get_dev_node()
147 free(node); in snd_utils_get_dev_node()