[asterisk-commits] oej: branch oej/tilghman-chanvar-backport r234491 - in /team/oej/tilghman-cha...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Sun Dec 13 06:08:43 CST 2009


Author: oej
Date: Sun Dec 13 06:08:39 2009
New Revision: 234491

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=234491
Log:
Resolve conflict, reset automerge

Modified:
    team/oej/tilghman-chanvar-backport/   (props changed)
    team/oej/tilghman-chanvar-backport/apps/app_meetme.c

Propchange: team/oej/tilghman-chanvar-backport/
------------------------------------------------------------------------------
    automerge = http://www.codename-pineapple.org/

Propchange: team/oej/tilghman-chanvar-backport/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Sun Dec 13 06:08:39 2009
@@ -1,1 +1,1 @@
-/branches/1.4:1-234310
+/branches/1.4:1-234457

Modified: team/oej/tilghman-chanvar-backport/apps/app_meetme.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/tilghman-chanvar-backport/apps/app_meetme.c?view=diff&rev=234491&r1=234490&r2=234491
==============================================================================
--- team/oej/tilghman-chanvar-backport/apps/app_meetme.c (original)
+++ team/oej/tilghman-chanvar-backport/apps/app_meetme.c Sun Dec 13 06:08:39 2009
@@ -1489,6 +1489,35 @@
 	return (chan->_state == AST_STATE_UP);
 }
 
+static void send_talking_event(struct ast_channel *chan, struct ast_conference *conf, struct ast_conf_user *user, int talking)
+{
+	ast_channel_manager_event(chan, NULL, EVENT_FLAG_CALL, "MeetmeTalking", 
+	      "Channel: %s\r\n"
+	      "Uniqueid: %s\r\n"
+	      "Meetme: %s\r\n"
+	      "Usernum: %d\r\n"
+	      "Status: %s\r\n",
+	      chan->name, chan->uniqueid, conf->confno, user->user_no, talking ? "on" : "off");
+}
+
+static void set_user_talking(struct ast_channel *chan, struct ast_conference *conf, struct ast_conf_user *user, int talking, int monitor)
+{
+	int last_talking = user->talking;
+	if (last_talking == talking)
+		return;
+
+	user->talking = talking;
+
+	if (monitor) {
+		/* Check if talking state changed. Take care of -1 which means unmonitored */
+		int was_talking = (last_talking > 0);
+		int now_talking = (talking > 0);
+		if (was_talking != now_talking) {
+			send_talking_event(chan, conf, user, now_talking);
+		}
+	}
+}
+
 static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int confflags, char *optargs[])
 {
 	struct ast_conf_user *user = NULL;
@@ -1993,6 +2022,11 @@
 					break;
 				}
 
+				/* Indicate user is not talking anymore - change him to unmonitored state */
+				if ((confflags & (CONFFLAG_MONITORTALKER | CONFFLAG_OPTIMIZETALKER))) {
+					set_user_talking(chan, conf, user, -1, confflags & CONFFLAG_MONITORTALKER);
+				}
+
 				ast_channel_manager_event(chan, NULL, EVENT_FLAG_CALL, "MeetmeMute", 
 						"Channel: %s\r\n"
 						"Uniqueid: %s\r\n"
@@ -2071,27 +2105,11 @@
 							user->talking = 0;
 
 						res = ast_dsp_silence(dsp, f, &totalsilence);
-						if (!user->talking && totalsilence < MEETME_DELAYDETECTTALK) {
-							user->talking = 1;
-							if (confflags & CONFFLAG_MONITORTALKER)
-								ast_channel_manager_event(chan, NULL, EVENT_FLAG_CALL, "MeetmeTalking",
-								      "Channel: %s\r\n"
-								      "Uniqueid: %s\r\n"
-								      "Meetme: %s\r\n"
-								      "Usernum: %d\r\n"
-								      "Status: on\r\n",
-								      chan->name, chan->uniqueid, conf->confno, user->user_no);
+						if (totalsilence < MEETME_DELAYDETECTTALK) {
+							set_user_talking(chan, conf, user, 1, confflags & CONFFLAG_MONITORTALKER);
 						}
-						if (user->talking && totalsilence > MEETME_DELAYDETECTENDTALK) {
-							user->talking = 0;
-							if (confflags & CONFFLAG_MONITORTALKER)
-								ast_channel_manager_event(chan, NULL, EVENT_FLAG_CALL, "MeetmeTalking",
-								      "Channel: %s\r\n"
-								      "Uniqueid: %s\r\n"
-								      "Meetme: %s\r\n"
-								      "Usernum: %d\r\n"
-								      "Status: off\r\n",
-								      chan->name, chan->uniqueid, conf->confno, user->user_no);
+						if (totalsilence > MEETME_DELAYDETECTENDTALK) {
+							set_user_talking(chan, conf, user, 0, confflags & CONFFLAG_MONITORTALKER);
 						}
 					}
 					if (using_pseudo) {




More information about the asterisk-commits mailing list