Mercurial > mplayer.hg
view playtreeparser.h @ 24131:30028bbcb9e8
Use a single select() for both key and slave input
Previous code used two separate select() calls one after another, so
that whenever it was running select() on one set of fds events in the
other set would go unnoticed until later. Now there's a single select()
which allows reacting immediately to any input source.
The behavior of the new code differs somewhat from the old; for example
multiple fds that stay readable are no longer handled in a round-robin
fashion and the total amount the process sleeps can differ. Some tuning
might be required later.
author | uau |
---|---|
date | Sat, 25 Aug 2007 04:28:11 +0000 |
parents | 3f0d00abc073 |
children | 3baf6a2283da |
line wrap: on
line source
/// \defgroup PlaytreeParser Playtree parser /// \ingroup Playtree /// /// The playtree parser allows to read various playlist formats. It reads from /// a stream allowing to handle playlists from local files and the network. ///@{ /// \file #ifndef PLAYTREEPARSER_H #define PLAYTREEPARSER_H struct stream_st; typedef struct play_tree_parser { struct stream_st* stream; char *buffer,*iter,*line; int buffer_size , buffer_end; int deep,keep; } play_tree_parser_t; /// Create a new parser. /** \param stream The stream to read from. * \param deep Parser depth. Some formats allow including other files, * this is used to track the inclusion depth. * \return The new parser. */ play_tree_parser_t* play_tree_parser_new(struct stream_st* stream,int deep); /// Destroy a parser. void play_tree_parser_free(play_tree_parser_t* p); /// Build a playtree from the playlist opened with the parser. /** \param p The parser. * \param forced If non-zero the playlist file was explicitly * given by the user, allow falling back on * one filename per line playlist. * \return A new playtree or NULL on error. */ play_tree_t* play_tree_parser_get_play_tree(play_tree_parser_t* p, int forced); /// Wrapper for play_tree_add_basepath (add base path from file). void play_tree_add_bpf(play_tree_t* pt, char* filename); #endif ///@}