Lines Matching defs:aio
63 select_class(struct aiomixer *aio, unsigned int n)
68 if (n >= aio->numclasses)
71 class = &aio->classes[n];
72 aio->widgets_resized = true;
73 aio->class_scroll_y = 0;
74 aio->curcontrol = 0;
75 aio->curclass = n;
78 draw_control(aio, &class->controls[i], false);
80 draw_classbar(aio);
85 select_control(struct aiomixer *aio, unsigned int n)
91 class = &aio->classes[aio->curclass];
96 lastcontrol = &class->controls[aio->curcontrol];
98 draw_control(aio, lastcontrol, false);
101 aio->curcontrol = n;
103 draw_control(aio, control, true);
105 if (aio->class_scroll_y > control->widget_y) {
106 aio->class_scroll_y = control->widget_y;
107 aio->widgets_resized = true;
111 ((getmaxy(stdscr) - 4) + aio->class_scroll_y)) {
112 aio->class_scroll_y = control->widget_y;
113 aio->widgets_resized = true;
131 slide_control(struct aiomixer *aio,
146 if (ioctl(aio->fd, AUDIO_MIXER_READ, &value) < 0)
164 if (aio->channels_unlocked) {
205 if (ioctl(aio->fd, AUDIO_MIXER_WRITE, &value) < 0)
209 draw_control(aio, control, true);
213 toggle_set(struct aiomixer *aio)
216 struct aiomixer_class *class = &aio->classes[aio->curclass];
217 struct aiomixer_control *control = &class->controls[aio->curcontrol];
225 if (ioctl(aio->fd, AUDIO_MIXER_READ, &ctrl) < 0)
230 if (ioctl(aio->fd, AUDIO_MIXER_WRITE, &ctrl) < 0)
233 draw_control(aio, control, true);
238 step_up(struct aiomixer *aio)
243 class = &aio->classes[aio->curclass];
244 control = &class->controls[aio->curcontrol];
246 if (aio->channels_unlocked &&
250 draw_control(aio, control, true);
253 select_control(aio, aio->curcontrol - 1);
257 step_down(struct aiomixer *aio)
262 class = &aio->classes[aio->curclass];
263 control = &class->controls[aio->curcontrol];
265 if (aio->channels_unlocked &&
269 draw_control(aio, control, true);
273 select_control(aio, (aio->curcontrol + 1) % class->numcontrols);
277 read_key(struct aiomixer *aio, int ch)
285 class = &aio->classes[aio->curclass];
286 resize_widgets(aio);
287 draw_header(aio);
288 draw_classbar(aio);
290 draw_control(aio,
292 aio->state == STATE_CONTROL_SELECT ?
293 (aio->curcontrol == i) : false);
298 if (aio->state == STATE_CLASS_SELECT) {
299 select_class(aio, aio->curclass > 0 ?
300 aio->curclass - 1 : aio->numclasses - 1);
301 } else if (aio->state == STATE_CONTROL_SELECT) {
302 class = &aio->classes[aio->curclass];
303 slide_control(aio,
304 &class->controls[aio->curcontrol], false);
309 if (aio->state == STATE_CLASS_SELECT) {
310 select_class(aio,
311 (aio->curclass + 1) % aio->numclasses);
312 } else if (aio->state == STATE_CONTROL_SELECT) {
313 class = &aio->classes[aio->curclass];
314 slide_control(aio,
315 &class->controls[aio->curcontrol], true);
320 if (aio->state == STATE_CONTROL_SELECT) {
321 if (aio->curcontrol == 0) {
322 class = &aio->classes[aio->curclass];
323 control = &class->controls[aio->curcontrol];
325 aio->state = STATE_CLASS_SELECT;
326 draw_control(aio, control, false);
328 step_up(aio);
334 if (aio->state == STATE_CLASS_SELECT) {
335 class = &aio->classes[aio->curclass];
337 aio->state = STATE_CONTROL_SELECT;
338 select_control(aio, 0);
340 } else if (aio->state == STATE_CONTROL_SELECT) {
341 step_down(aio);
346 if (aio->state == STATE_CONTROL_SELECT)
347 toggle_set(aio);
350 select_class(aio, 0);
353 select_class(aio, 1);
356 select_class(aio, 2);
359 select_class(aio, 3);
362 select_class(aio, 4);
365 select_class(aio, 5);
368 select_class(aio, 6);
371 select_class(aio, 7);
374 select_class(aio, 8);
378 if (aio->state == STATE_CONTROL_SELECT) {
379 class = &aio->classes[aio->curclass];
380 control = &class->controls[aio->curcontrol];
381 aio->state = STATE_CLASS_SELECT;
382 draw_control(aio, control, false);
387 aio->channels_unlocked = !aio->channels_unlocked;
388 if (aio->state == STATE_CONTROL_SELECT) {
389 class = &aio->classes[aio->curclass];
390 control = &class->controls[aio->curcontrol];
392 draw_control(aio, control, true);
397 draw_screen(aio);
402 process_device_select(struct aiomixer *aio, unsigned int num_devices)
416 open_device(aio, device_path);
465 open_device(struct aiomixer *aio, const char *device)
469 if ((aio->fd = open(device, O_RDWR)) < 0)
472 if (ioctl(aio->fd, AUDIO_GETDEV, &aio->mixerdev) < 0)
475 aio->state = STATE_CLASS_SELECT;
477 aiomixer_parse(aio);
479 create_widgets(aio);
481 draw_header(aio);
482 select_class(aio, 0);
483 draw_screen(aio);
486 if (read_key(aio, ch) != 0)
502 struct aiomixer *aio;
509 if ((aio = malloc(sizeof(struct aiomixer))) == NULL) {
519 aio->channels_unlocked = true;
542 aio->use_colour = true;
545 aio->use_colour = false;
548 aio->use_colour = false;
550 if (aio->use_colour) {
562 open_device(aio, mixer_device);
575 process_device_select(aio, mixer_count);
577 open_device(aio, _PATH_MIXER);
582 close(aio->fd);
583 free(aio);