}
if (timeri->private_free)
timeri->private_free(timeri);
- if (timeri->owner)
- kfree(timeri->owner);
+ kfree(timeri->owner);
kfree(timeri);
if (timer && timer->card)
module_put(timer->card->module);
static void snd_timer_free_system(snd_timer_t *timer)
{
- if (timer->private_data)
- kfree(timer->private_data);
+ kfree(timer->private_data);
}
static int snd_timer_register_system(void)
if (tu->qused >= tu->queue_size) {
tu->overrun++;
} else {
- memcpy(&tu->queue[tu->qtail++], tread, sizeof(*tread));
+ memcpy(&tu->tqueue[tu->qtail++], tread, sizeof(*tread));
+ tu->qtail %= tu->queue_size;
tu->qused++;
}
}
spin_lock(&tu->qlock);
snd_timer_user_append_to_tqueue(tu, &r1);
spin_unlock(&tu->qlock);
+ kill_fasync(&tu->fasync, SIGIO, POLL_IN);
+ wake_up(&tu->qchange_sleep);
}
static void snd_timer_user_tinterrupt(snd_timer_instance_t *timeri,
fasync_helper(-1, file, 0, &tu->fasync);
if (tu->timeri)
snd_timer_close(tu->timeri);
- if (tu->queue)
- kfree(tu->queue);
- if (tu->tqueue)
- kfree(tu->tqueue);
+ kfree(tu->queue);
+ kfree(tu->tqueue);
kfree(tu);
}
return 0;