mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 19:56:18 +00:00
[ALSA] emux - Avoid cast of function pointers
Modules: Common EMU synth Pass the proper functions instead of cast of function pointers, which can be dangerous with compiler optimizations. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
cb432379ef
commit
a57d151581
1 changed files with 29 additions and 3 deletions
|
@ -66,6 +66,29 @@ int snd_emux_new(snd_emux_t **remu)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*/
|
*/
|
||||||
|
static int sf_sample_new(void *private_data, snd_sf_sample_t *sp,
|
||||||
|
snd_util_memhdr_t *hdr,
|
||||||
|
const void __user *buf, long count)
|
||||||
|
{
|
||||||
|
snd_emux_t *emu = private_data;
|
||||||
|
return emu->ops.sample_new(emu, sp, hdr, buf, count);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static int sf_sample_free(void *private_data, snd_sf_sample_t *sp,
|
||||||
|
snd_util_memhdr_t *hdr)
|
||||||
|
{
|
||||||
|
snd_emux_t *emu = private_data;
|
||||||
|
return emu->ops.sample_free(emu, sp, hdr);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sf_sample_reset(void *private_data)
|
||||||
|
{
|
||||||
|
snd_emux_t *emu = private_data;
|
||||||
|
emu->ops.sample_reset(emu);
|
||||||
|
}
|
||||||
|
|
||||||
int snd_emux_register(snd_emux_t *emu, snd_card_t *card, int index, char *name)
|
int snd_emux_register(snd_emux_t *emu, snd_card_t *card, int index, char *name)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
@ -85,9 +108,12 @@ int snd_emux_register(snd_emux_t *emu, snd_card_t *card, int index, char *name)
|
||||||
/* create soundfont list */
|
/* create soundfont list */
|
||||||
memset(&sf_cb, 0, sizeof(sf_cb));
|
memset(&sf_cb, 0, sizeof(sf_cb));
|
||||||
sf_cb.private_data = emu;
|
sf_cb.private_data = emu;
|
||||||
sf_cb.sample_new = (snd_sf_sample_new_t)emu->ops.sample_new;
|
if (emu->ops.sample_new)
|
||||||
sf_cb.sample_free = (snd_sf_sample_free_t)emu->ops.sample_free;
|
sf_cb.sample_new = sf_sample_new;
|
||||||
sf_cb.sample_reset = (snd_sf_sample_reset_t)emu->ops.sample_reset;
|
if (emu->ops.sample_free)
|
||||||
|
sf_cb.sample_free = sf_sample_free;
|
||||||
|
if (emu->ops.sample_reset)
|
||||||
|
sf_cb.sample_reset = sf_sample_reset;
|
||||||
emu->sflist = snd_sf_new(&sf_cb, emu->memhdr);
|
emu->sflist = snd_sf_new(&sf_cb, emu->memhdr);
|
||||||
if (emu->sflist == NULL)
|
if (emu->sflist == NULL)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
Loading…
Reference in a new issue