mirror of
https://github.com/openharmony/third_party_tinyalsa.git
synced 2026-07-18 21:34:26 -04:00
tinyalsa: add mixer_consume_event
mixer_consume_event consumes subscribed events from the mixer in order to allow monitoring of mixer control value changed.
This commit is contained in:
committed by
Rohit kumar
parent
d5fea77414
commit
eb89b17af8
@@ -136,6 +136,7 @@ int mixer_ctl_get_range_min(const struct mixer_ctl *ctl);
|
||||
|
||||
int mixer_ctl_get_range_max(const struct mixer_ctl *ctl);
|
||||
|
||||
int mixer_consume_event(struct mixer *mixer);
|
||||
#if defined(__cplusplus)
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
+21
@@ -535,6 +535,27 @@ int mixer_wait_event(struct mixer *mixer, int timeout)
|
||||
}
|
||||
}
|
||||
|
||||
/** Consume a mixer event.
|
||||
* If mixer_subscribe_events has been called,
|
||||
* mixer_wait_event will identify when a control value has changed.
|
||||
* This function will clear a single event from the mixer so that
|
||||
* further events can be alerted.
|
||||
*
|
||||
* @param mixer A mixer handle.
|
||||
* @returns 0 on success. -errno on failure.
|
||||
* @ingroup libtinyalsa-mixer
|
||||
*/
|
||||
int mixer_consume_event(struct mixer *mixer) {
|
||||
struct snd_ctl_event ev;
|
||||
ssize_t count = read(mixer->fd, &ev, sizeof(ev));
|
||||
// Exporting the actual event would require exposing snd_ctl_event
|
||||
// via the header file, and all associated structs.
|
||||
// The events generally tell you exactly which value changed,
|
||||
// but reading values you're interested isn't hard and simplifies
|
||||
// the interface greatly.
|
||||
return (count >= 0) ? 0 : -errno;
|
||||
}
|
||||
|
||||
static unsigned int mixer_grp_get_count(struct mixer_ctl_group *grp)
|
||||
{
|
||||
if (!grp)
|
||||
|
||||
Reference in New Issue
Block a user