Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F148009057
D53553.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D53553.diff
View Options
diff --git a/sys/dev/sound/pcm/channel.c b/sys/dev/sound/pcm/channel.c
--- a/sys/dev/sound/pcm/channel.c
+++ b/sys/dev/sound/pcm/channel.c
@@ -1257,7 +1257,7 @@
chn_vpc_reset(c, SND_VOL_C_PCM, 1);
CHN_UNLOCK(c);
- fc = feeder_getclass(NULL);
+ fc = feeder_getclass(FEEDER_ROOT);
if (fc == NULL) {
device_printf(d->dev, "%s(): failed to get feeder class\n",
__func__);
diff --git a/sys/dev/sound/pcm/feeder.h b/sys/dev/sound/pcm/feeder.h
--- a/sys/dev/sound/pcm/feeder.h
+++ b/sys/dev/sound/pcm/feeder.h
@@ -49,7 +49,7 @@
};
void feeder_register(void *p);
-struct feeder_class *feeder_getclass(struct pcm_feederdesc *desc);
+struct feeder_class *feeder_getclass(u_int32_t type);
u_int32_t snd_fmtscore(u_int32_t fmt);
u_int32_t snd_fmtbestbit(u_int32_t fmt, u_int32_t *fmts);
diff --git a/sys/dev/sound/pcm/feeder.c b/sys/dev/sound/pcm/feeder.c
--- a/sys/dev/sound/pcm/feeder.c
+++ b/sys/dev/sound/pcm/feeder.c
@@ -44,7 +44,6 @@
struct feedertab_entry {
SLIST_ENTRY(feedertab_entry) link;
struct feeder_class *feederclass;
- struct pcm_feederdesc *desc;
};
static SLIST_HEAD(, feedertab_entry) feedertab;
@@ -56,12 +55,12 @@
struct feeder_class *fc = p;
struct feedertab_entry *fte;
- KASSERT(fc->desc == NULL, ("first feeder not root: %s", fc->name));
+ KASSERT(fc->desc.type == FEEDER_ROOT,
+ ("first feeder not root: %s", fc->name));
SLIST_INIT(&feedertab);
fte = malloc(sizeof(*fte), M_FEEDER, M_WAITOK | M_ZERO);
fte->feederclass = fc;
- fte->desc = NULL;
SLIST_INSERT_HEAD(&feedertab, fte, link);
}
@@ -75,7 +74,6 @@
fte = malloc(sizeof(*fte), M_FEEDER, M_WAITOK | M_ZERO);
fte->feederclass = fc;
- fte->desc = &fc->desc;
SLIST_INSERT_HEAD(&feedertab, fte, link);
}
@@ -92,14 +90,6 @@
}
}
-static int
-cmpdesc(struct pcm_feederdesc *n, struct pcm_feederdesc *m)
-{
- return ((n->type == m->type) &&
- ((n->in == 0) || (n->in == m->in)) &&
- ((n->out == 0) || (n->out == m->out)));
-}
-
static void
feeder_destroy(struct pcm_feeder *f)
{
@@ -143,17 +133,15 @@
}
struct feeder_class *
-feeder_getclass(struct pcm_feederdesc *desc)
+feeder_getclass(u_int32_t type)
{
struct feedertab_entry *fte;
SLIST_FOREACH(fte, &feedertab, link) {
- if ((desc == NULL) && (fte->desc == NULL))
- return fte->feederclass;
- if ((fte->desc != NULL) && (desc != NULL) && cmpdesc(desc, fte->desc))
- return fte->feederclass;
+ if (fte->feederclass->desc.type == type)
+ return (fte->feederclass);
}
- return NULL;
+ return (NULL);
}
int
@@ -431,7 +419,7 @@
.name = "feeder_root",
.methods = feeder_root_methods,
.size = sizeof(struct pcm_feeder),
- .desc = { 0 },
+ .desc = { FEEDER_ROOT, 0, 0 },
.data = NULL,
};
/*
diff --git a/sys/dev/sound/pcm/feeder_chain.c b/sys/dev/sound/pcm/feeder_chain.c
--- a/sys/dev/sound/pcm/feeder_chain.c
+++ b/sys/dev/sound/pcm/feeder_chain.c
@@ -148,7 +148,7 @@
desc->in = 0;
desc->out = 0;
- fc = feeder_getclass(desc);
+ fc = feeder_getclass(FEEDER_FORMAT);
if (fc == NULL) {
device_printf(c->dev,
"%s(): can't find feeder_format\n", __func__);
@@ -220,7 +220,7 @@
desc->in = 0;
desc->out = 0;
- fc = feeder_getclass(desc);
+ fc = feeder_getclass(FEEDER_RATE);
if (fc == NULL) {
device_printf(c->dev,
"%s(): can't find feeder_rate\n", __func__);
@@ -297,7 +297,7 @@
desc->in = 0;
desc->out = 0;
- fc = feeder_getclass(desc);
+ fc = feeder_getclass(FEEDER_MATRIX);
if (fc == NULL) {
device_printf(c->dev,
"%s(): can't find feeder_matrix\n", __func__);
@@ -353,7 +353,7 @@
desc->in = 0;
desc->out = 0;
- fc = feeder_getclass(desc);
+ fc = feeder_getclass(FEEDER_VOLUME);
if (fc == NULL) {
device_printf(c->dev,
"%s(): can't find feeder_volume\n", __func__);
@@ -420,7 +420,7 @@
desc->in = 0;
desc->out = 0;
- fc = feeder_getclass(desc);
+ fc = feeder_getclass(FEEDER_EQ);
if (fc == NULL) {
device_printf(c->dev,
"%s(): can't find feeder_eq\n", __func__);
@@ -462,7 +462,7 @@
struct feeder_class *fc;
int ret;
- fc = feeder_getclass(NULL);
+ fc = feeder_getclass(FEEDER_ROOT);
if (fc == NULL) {
device_printf(c->dev,
"%s(): can't find feeder_root\n", __func__);
@@ -499,7 +499,7 @@
desc->in = 0;
desc->out = 0;
- fc = feeder_getclass(desc);
+ fc = feeder_getclass(FEEDER_MIXER);
if (fc == NULL) {
device_printf(c->dev,
"%s(): can't find feeder_mixer\n", __func__);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Mar 16, 4:23 AM (10 h, 59 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29753236
Default Alt Text
D53553.diff (4 KB)
Attached To
Mode
D53553: sound: Simplify feeder_getclass()
Attached
Detach File
Event Timeline
Log In to Comment