X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=grab_client.h;h=59ba697ede885c73c548a0e885bc816eb2a35284;hp=e66e9b2473fbad067742278dbaac5c6f770b7c28;hb=1d7a26dca86a639db694663738ccc01acaa88aba;hpb=2ed89c59f0efcd0a2763f47c7d3455663241e623 diff --git a/grab_client.h b/grab_client.h index e66e9b24..59ba697e 100644 --- a/grab_client.h +++ b/grab_client.h @@ -1,60 +1,49 @@ /* * Copyright (C) 2006 Andre Noll * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + * Licensed under the GPL v2. For licencing details see COPYING. */ /** \file grab_client.h exported symbols from grab_client.c */ #include "config.h" + /** - * handle blocking writes for the grab client fds - * - * - pedantic: close fd if write would block - * - sloppy: ignore the data and do not write - * - aggressive: write anyway (default) - * + * How to handle blocking writes for the grab client fds. */ -enum grab_mode {GRAB_PEDANTIC, GRAB_SLOPPY, GRAB_AGGRESSIVE}; +enum grab_mode { + /** Ignore the data and do not write. */ + GM_SLOPPY, + /** Write anyway (default). */ + GM_AGGRESSIVE, + /** Close fd if write would block. */ + GM_PEDANTIC, +}; -/** describes one active grab client - * - * \sa filter_callback, filter_node::callbacks - */ +/** Flags specified as arguments to the grab command. */ +enum grab_flags { + /** Stop grabbing if audio file changes. */ + GF_ONE_SHOT = 1, +}; + +/** Describes one active grab client. */ struct grab_client { -/** the file descriptor to send the grabbed stream to */ + /* The value of the -p option. */ + char *parent; + /** The file descriptor to send the grabbed stream to. */ int fd; -/** the command line options for this grab client */ - struct grab_client_args_info *conf; -/** pedantic, sloppy, or aggressive, computed from command line */ + /** See \ref grab_mode. */ enum grab_mode mode; -/** non-zero if the write() to \a fd failed */ - int error; -/** the number of the desired audio format, computed from command line */ - int audio_format_num; -/** the callback data which gets attached to a suitable filter_node */ - struct filter_callback fcb; -/** all grab clients belong either to a filter node or to the inactive list */ + /** Flags given at the command line. */ + enum grab_flags flags; + /** The point of the grab client's node in the buffer tree. */ + struct btr_node *btrn; + /* The task of this grab client. */ + struct task task; + /** All grab clients belong either to a filter node or to the inactive list. */ struct list_head node; -/** the number of command line options */ - int argc; -/** pointers to the command line options */ - char **argv; }; -__malloc struct grab_client *grab_client_new(int fd, int argc, char **argv, int *err); -void activate_inactive_grab_clients(int slot, int audio_format_num, struct list_head *filter_list); -void activate_grab_client(struct grab_client *gc, struct filter_node *fn); +int grab_client_new(int fd, int argc, char **argv); +void activate_grab_clients(void); void init_grabbing(void);