Lines Matching defs:qxl
157 static void mix_in_fifos(qxl_screen_t *qxl)
160 struct audio_data *data = qxl->playback_opaque;
224 static int process_fifos(qxl_screen_t *qxl, struct audio_data *data, int maxlen)
229 spice_server_playback_get_buffer(&qxl->playback_sin, &data->spice_buffer, &chunk_frames);
239 mix_in_fifos(qxl);
245 spice_server_playback_put_samples(&qxl->playback_sin, data->spice_buffer);
253 static void condense_fifos(qxl_screen_t *qxl)
255 struct audio_data *data = qxl->playback_opaque;
275 static void start_watching(qxl_screen_t *qxl);
278 qxl_screen_t *qxl = opaque;
279 struct audio_data *data = qxl->playback_opaque;
284 qxl->core->timer_cancel(data->wall_timer);
304 qxl->core->watch_remove(f->watch);
316 qxl->core->watch_remove(f->watch);
326 condense_fifos(qxl);
330 spice_server_playback_start(&qxl->playback_sin);
334 if (!process_fifos(qxl, data, maxlen)) {
336 qxl->core->timer_start(data->wall_timer, PERIOD_MS);
341 start_watching(qxl);
344 qxl->core->timer_start(data->wall_timer, IDLE_MS);
349 spice_server_playback_stop(&qxl->playback_sin);
355 static void start_watching(qxl_screen_t *qxl)
357 struct audio_data *data = qxl->playback_opaque;
365 f->watch = qxl->core->watch_add(f->fd, SPICE_WATCH_EVENT_READ, read_from_fifos, qxl);
372 qxl_screen_t *qxl = opaque;
373 struct audio_data *data = qxl->playback_opaque;
378 spice_server_playback_stop(&qxl->playback_sin);
384 read_from_fifos(-1, 0, qxl);
389 static void handle_one_change(qxl_screen_t *qxl, struct inotify_event *e)
393 struct audio_data *data = qxl->playback_opaque;
408 fname = xnfalloc(strlen(e->name) + strlen(qxl->playback_fifo_dir) + 1 + 1);
409 strcpy(fname, qxl->playback_fifo_dir);
424 f->watch = qxl->core->watch_add(f->fd, SPICE_WATCH_EVENT_READ, read_from_fifos, qxl);
430 qxl_screen_t *qxl = opaque;
445 handle_one_change(qxl, e);
468 static void audio_initialize (qxl_screen_t *qxl)
471 struct audio_data *data = qxl->playback_opaque;
477 freq = spice_server_get_best_playback_rate(&qxl->playback_sin);
493 qxl_add_spice_playback_interface (qxl_screen_t *qxl)
499 if (qxl->playback_fifo_dir[0] == 0) {
505 qxl->playback_sin.base.sif = &playback_sif.base;
506 ret = spice_server_add_interface(qxl->spice_server, &qxl->playback_sin.base);
513 spice_server_set_playback_rate(&qxl->playback_sin,
514 spice_server_get_best_playback_rate(&qxl->playback_sin));
517 ret = spice_server_set_playback_compression(qxl->spice_server, 0);
525 qxl->playback_opaque = data;
526 audio_initialize(qxl);
528 data->wall_timer = qxl->core->timer_add(wall_ticker, qxl);
533 data->fifo_dir_watch = inotify_add_watch(data->dir_watch, qxl->playback_fifo_dir, IN_CREATE | IN_MOVE);
540 data->fifo_dir_qxl_watch = qxl->core->watch_add(data->dir_watch,
541 SPICE_WATCH_EVENT_READ, playback_dir_changed, qxl);