static int snd_opl3_synth_unuse(void *private_data, struct snd_seq_port_subscribe * info) { struct snd_opl3 *opl3 = private_data; snd_opl3_synth_cleanup(opl3); if (info->sender.client != SNDRV_SEQ_CLIENT_SYSTEM) snd_opl3_synth_use_dec(opl3); return 0; }
/* close OSS sequencer */ static int snd_opl3_close_seq_oss(struct snd_seq_oss_arg *arg) { struct snd_opl3 *opl3; snd_assert(arg != NULL, return -ENXIO); opl3 = arg->private_data; snd_opl3_synth_cleanup(opl3); snd_opl3_synth_use_dec(opl3); return 0; }
/* close OSS sequencer */ static int snd_opl3_close_seq_oss(struct snd_seq_oss_arg *arg) { struct snd_opl3 *opl3; if (snd_BUG_ON(!arg)) return -ENXIO; opl3 = arg->private_data; snd_opl3_synth_cleanup(opl3); snd_opl3_synth_use_dec(opl3); return 0; }