aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sound/synth/emux/emux.c32
1 files changed, 29 insertions, 3 deletions
diff --git a/sound/synth/emux/emux.c b/sound/synth/emux/emux.c
index 9e2b4c0c8a8a..2aacd8a884e5 100644
--- a/sound/synth/emux/emux.c
+++ b/sound/synth/emux/emux.c
@@ -66,6 +66,29 @@ int snd_emux_new(snd_emux_t **remu)
66 66
67/* 67/*
68 */ 68 */
69static int sf_sample_new(void *private_data, snd_sf_sample_t *sp,
70 snd_util_memhdr_t *hdr,
71 const void __user *buf, long count)
72{
73 snd_emux_t *emu = private_data;
74 return emu->ops.sample_new(emu, sp, hdr, buf, count);
75
76}
77
78static int sf_sample_free(void *private_data, snd_sf_sample_t *sp,
79 snd_util_memhdr_t *hdr)
80{
81 snd_emux_t *emu = private_data;
82 return emu->ops.sample_free(emu, sp, hdr);
83
84}
85
86static void sf_sample_reset(void *private_data)
87{
88 snd_emux_t *emu = private_data;
89 emu->ops.sample_reset(emu);
90}
91
69int snd_emux_register(snd_emux_t *emu, snd_card_t *card, int index, char *name) 92int snd_emux_register(snd_emux_t *emu, snd_card_t *card, int index, char *name)
70{ 93{
71 int err; 94 int err;
@@ -85,9 +108,12 @@ int snd_emux_register(snd_emux_t *emu, snd_card_t *card, int index, char *name)
85 /* create soundfont list */ 108 /* create soundfont list */
86 memset(&sf_cb, 0, sizeof(sf_cb)); 109 memset(&sf_cb, 0, sizeof(sf_cb));
87 sf_cb.private_data = emu; 110 sf_cb.private_data = emu;
88 sf_cb.sample_new = (snd_sf_sample_new_t)emu->ops.sample_new; 111 if (emu->ops.sample_new)
89 sf_cb.sample_free = (snd_sf_sample_free_t)emu->ops.sample_free; 112 sf_cb.sample_new = sf_sample_new;
90 sf_cb.sample_reset = (snd_sf_sample_reset_t)emu->ops.sample_reset; 113 if (emu->ops.sample_free)
114 sf_cb.sample_free = sf_sample_free;
115 if (emu->ops.sample_reset)
116 sf_cb.sample_reset = sf_sample_reset;
91 emu->sflist = snd_sf_new(&sf_cb, emu->memhdr); 117 emu->sflist = snd_sf_new(&sf_cb, emu->memhdr);
92 if (emu->sflist == NULL) 118 if (emu->sflist == NULL)
93 return -ENOMEM; 119 return -ENOMEM;