sound: Simplify feeder_remove()

Sponsored by:	The FreeBSD Foundation
MFC after:	2 days
Reviewed by:	dev_submerge.ch, markj, emaste
Differential Revision:	https://reviews.freebsd.org/D46100

(cherry picked from commit 00172d20070a544e0514cce9f94475c5525fd15e)
This commit is contained in:
Christos Margiolis 2024-07-27 14:55:57 +03:00
parent 9b5e6dfe18
commit a9e27006db
4 changed files with 10 additions and 15 deletions

View file

@ -1324,8 +1324,7 @@ chn_init(struct snddev_info *d, struct pcm_channel *parent, kobj_class_t cls,
return (c);
fail:
while (feeder_remove(c) == 0)
;
feeder_remove(c);
if (c->devinfo && CHANNEL_FREE(c->methods, c->devinfo))
sndbuf_free(b);
if (bs)
@ -1356,8 +1355,7 @@ chn_kill(struct pcm_channel *c)
chn_trigger(c, PCMTRIG_ABORT);
CHN_UNLOCK(c);
}
while (feeder_remove(c) == 0)
;
feeder_remove(c);
if (CHANNEL_FREE(c->methods, c->devinfo))
sndbuf_free(b);
sndbuf_destroy(bs);

View file

@ -248,18 +248,16 @@ feeder_add(struct pcm_channel *c, struct feeder_class *fc, struct pcm_feederdesc
return 0;
}
int
void
feeder_remove(struct pcm_channel *c)
{
struct pcm_feeder *f;
if (c->feeder == NULL)
return -1;
f = c->feeder;
c->feeder = c->feeder->source;
feeder_destroy(f);
return 0;
while (c->feeder != NULL) {
f = c->feeder;
c->feeder = c->feeder->source;
feeder_destroy(f);
}
}
struct pcm_feeder *

View file

@ -60,7 +60,7 @@ u_int32_t snd_fmtbest(u_int32_t fmt, u_int32_t *fmts);
int feeder_add(struct pcm_channel *c, struct feeder_class *fc,
struct pcm_feederdesc *desc);
int feeder_remove(struct pcm_channel *c);
void feeder_remove(struct pcm_channel *c);
struct pcm_feeder *feeder_find(struct pcm_channel *c, u_int32_t type);
void feeder_printchain(struct pcm_feeder *head);
int feeder_chain(struct pcm_channel *);

View file

@ -588,8 +588,7 @@ feeder_chain(struct pcm_channel *c)
CHN_LOCKASSERT(c);
/* Remove everything first. */
while (feeder_remove(c) == 0)
;
feeder_remove(c);
KASSERT(c->feeder == NULL, ("feeder chain not empty"));