[asterisk-commits] rmudgett: branch 13 r420992 - /branches/13/main/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Aug 14 10:54:54 CDT 2014


Author: rmudgett
Date: Thu Aug 14 10:54:47 2014
New Revision: 420992

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=420992
Log:
channel_internal_api.c: Replace some code with ao2_replace().

Use ao2_replace() instead of ao2_cleanup(); ao2_bump().

ao2_replace() has the advantange of not altering the ref count if the
replaced pointer is the same.

Review: https://reviewboard.asterisk.org/r/3904/

Modified:
    branches/13/main/channel.c
    branches/13/main/channel_internal_api.c

Modified: branches/13/main/channel.c
URL: http://svnview.digium.com/svn/asterisk/branches/13/main/channel.c?view=diff&rev=420992&r1=420991&r2=420992
==============================================================================
--- branches/13/main/channel.c (original)
+++ branches/13/main/channel.c Thu Aug 14 10:54:47 2014
@@ -6244,8 +6244,7 @@
 				ast_format_get_sample_rate(best_src_fmt) : ast_format_get_sample_rate(best_dst_fmt);
 
 			/* pick the best signed linear format based upon what preserves the sample rate the best. */
-			ao2_ref(best_src_fmt, -1);
-			best_src_fmt = ao2_bump(ast_format_cache_get_slin_by_rate(best_sample_rate));
+			ao2_replace(best_src_fmt, ast_format_cache_get_slin_by_rate(best_sample_rate));
 		}
 	}
 

Modified: branches/13/main/channel_internal_api.c
URL: http://svnview.digium.com/svn/asterisk/branches/13/main/channel_internal_api.c?view=diff&rev=420992&r1=420991&r2=420992
==============================================================================
--- branches/13/main/channel_internal_api.c (original)
+++ branches/13/main/channel_internal_api.c Thu Aug 14 10:54:47 2014
@@ -196,9 +196,9 @@
 	int alertpipe[2];
 	struct ast_format_cap *nativeformats;         /*!< Kinds of data this channel can natively handle */
 	struct ast_format *readformat;            /*!< Requested read format (after translation) */
-	struct ast_format *writeformat;           /*!< Requested write format (after translation) */
+	struct ast_format *writeformat;           /*!< Requested write format (before translation) */
 	struct ast_format *rawreadformat;         /*!< Raw read format (before translation) */
-	struct ast_format *rawwriteformat;        /*!< Raw write format (before translation) */
+	struct ast_format *rawwriteformat;        /*!< Raw write format (after translation) */
 	unsigned int emulate_dtmf_duration;		/*!< Number of ms left to emulate DTMF for */
 #ifdef HAVE_EPOLL
 	int epfd;
@@ -828,8 +828,7 @@
 }
 void ast_channel_nativeformats_set(struct ast_channel *chan, struct ast_format_cap *value)
 {
-	ao2_cleanup(chan->nativeformats);
-	chan->nativeformats = ao2_bump(value);
+	ao2_replace(chan->nativeformats, value);
 }
 struct ast_framehook_list *ast_channel_framehooks(const struct ast_channel *chan)
 {
@@ -954,28 +953,23 @@
 }
 void ast_channel_set_oldwriteformat(struct ast_channel *chan, struct ast_format *format)
 {
-	ao2_cleanup(chan->oldwriteformat);
-	chan->oldwriteformat = ao2_bump(format);
+	ao2_replace(chan->oldwriteformat, format);
 }
 void ast_channel_set_rawreadformat(struct ast_channel *chan, struct ast_format *format)
 {
-	ao2_cleanup(chan->rawreadformat);
-	chan->rawreadformat = ao2_bump(format);
+	ao2_replace(chan->rawreadformat, format);
 }
 void ast_channel_set_rawwriteformat(struct ast_channel *chan, struct ast_format *format)
 {
-	ao2_cleanup(chan->rawwriteformat);
-	chan->rawwriteformat = ao2_bump(format);
+	ao2_replace(chan->rawwriteformat, format);
 }
 void ast_channel_set_readformat(struct ast_channel *chan, struct ast_format *format)
 {
-	ao2_cleanup(chan->readformat);
-	chan->readformat = ao2_bump(format);
+	ao2_replace(chan->readformat, format);
 }
 void ast_channel_set_writeformat(struct ast_channel *chan, struct ast_format *format)
 {
-	ao2_cleanup(chan->writeformat);
-	chan->writeformat = ao2_bump(format);
+	ao2_replace(chan->writeformat, format);
 }
 struct ast_format *ast_channel_oldwriteformat(struct ast_channel *chan)
 {




More information about the asterisk-commits mailing list