diff options
author | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-06-16 18:54:30 +0000 |
---|---|---|
committer | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-06-16 18:54:30 +0000 |
commit | ea5a74f18bf3fc8f013718409de934279f1f2560 (patch) | |
tree | 1dd57b8b026f8601093e89d231d739594d6b7288 /include/asterisk/linkedlists.h | |
parent | d2292f0eca49f9ec9297bab8aa9c551557213662 (diff) |
Merged revisions 200991 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r200991 | kpfleming | 2009-06-16 12:05:38 -0500 (Tue, 16 Jun 2009) | 11 lines
Improve support for media paths that can generate multiple frames at once.
There are various media paths in Asterisk (codec translators and UDPTL, primarily)
that can generate more than one frame to be generated when the application calling
them expects only a single frame. This patch addresses a number of those cases,
at least the primary ones to solve the known problems. In addition it removes the
broken TRACE_FRAMES support, fixes a number of bugs in various frame-related API
functions, and cleans up various code paths affected by these changes.
https://reviewboard.asterisk.org/r/175/
........
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@201056 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'include/asterisk/linkedlists.h')
-rw-r--r-- | include/asterisk/linkedlists.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/include/asterisk/linkedlists.h b/include/asterisk/linkedlists.h index e9492cc16..52d1c5304 100644 --- a/include/asterisk/linkedlists.h +++ b/include/asterisk/linkedlists.h @@ -779,6 +779,30 @@ struct { \ #define AST_RWLIST_APPEND_LIST AST_LIST_APPEND_LIST /*! + \brief Inserts a whole list after a specific entry in a list + \param head This is a pointer to the list head structure + \param list This is a pointer to the list to be inserted. + \param elm This is a pointer to the entry after which the new list should + be inserted. + \param field This is the name of the field (declared using AST_LIST_ENTRY()) + used to link entries of the lists together. + + Note: The source list (the \a list parameter) will be empty after + calling this macro (the list entries are \b moved to the target list). + */ +#define AST_LIST_INSERT_LIST_AFTER(head, list, elm, field) do { \ + (list)->last->field.next = (elm)->field.next; \ + (elm)->field.next = (list)->first; \ + if ((head)->last == elm) { \ + (head)->last = (list)->last; \ + } \ + (list)->first = NULL; \ + (list)->last = NULL; \ +} while(0) + +#define AST_RWLIST_INSERT_LIST_AFTER AST_LIST_INSERT_LIST_AFTER + +/*! * \brief Removes and returns the head entry from a list. * \param head This is a pointer to the list head structure * \param field This is the name of the field (declared using AST_LIST_ENTRY()) |