Index: /pjproject/branches/projects/pjsua2/pjsip-apps/src/pygui/account.py
===================================================================
--- /pjproject/branches/projects/pjsua2/pjsip-apps/src/pygui/account.py	(revision 4689)
+++ /pjproject/branches/projects/pjsua2/pjsip-apps/src/pygui/account.py	(revision 4690)
@@ -52,23 +52,11 @@
 		self.deleting = False
 
-	"""
-	def findBuddy2(self, uri):
-		# TODO: proper URI comparison
-		for bud in self.buddyList:
-			if bud.cfg.uri in uri or uri in bud.cfg.uri:
-				return bud
-		return None
-	"""
-	
-	def findChat(self, uri_str, call_inst = None):
+	def findChat(self, uri_str):
 		uri = ch.ParseSipUri(uri_str)
 		if not uri: return None
 			
 		for chat in self.chatList:
-			if chat.isUriParticipant(uri):
-				if call_inst and chat.isCallRegistered(call_inst):
-					return chat
-				elif not call_inst and chat.isPrivate():
-					return chat
+			if chat.isUriParticipant(uri) and chat.isPrivate():
+				return chat
 		return None
 	
Index: /pjproject/branches/projects/pjsua2/pjsip-apps/src/pygui/chat.py
===================================================================
--- /pjproject/branches/projects/pjsua2/pjsip-apps/src/pygui/chat.py	(revision 4689)
+++ /pjproject/branches/projects/pjsua2/pjsip-apps/src/pygui/chat.py	(revision 4690)
@@ -182,7 +182,4 @@
 		return uri in self._participantList
 		
-	def isCallRegistered(self, call_inst):
-		return call_inst in self._callList
-		
 	def registerCall(self, uri_str, call_inst):
 		uri = ParseSipUri(uri_str)
@@ -200,10 +197,4 @@
 		if show_text_chat:
 			self._gui.textShowHide(True)
-
-	# helper
-	def dumpParticipantList(self):
-		print "Number of participants: %d" % (len(self._participantList))
-		for b in self._participantList:
-			print b.cfg.uri
 		
 	def addParticipant(self, uri, call_inst=None):
@@ -264,8 +255,8 @@
 			
 	def setTypingIndication(self, from_uri_str, is_typing):
-			# notify GUI
-			self._gui.textSetTypingIndication(from_uri_str, is_typing)
-			# now relay to all participants
-			self._sendTypingIndication(is_typing, from_uri_str)
+		# notify GUI
+		self._gui.textSetTypingIndication(from_uri_str, is_typing)
+		# now relay to all participants
+		self._sendTypingIndication(is_typing, from_uri_str)
 		
 	def startCall(self):
@@ -274,7 +265,8 @@
 		call_param.opt.audioCount = 1
 		call_param.opt.videoCount = 0
+		fails = []
 		for idx, p in enumerate(self._participantList):
 			# just skip if call is instantiated
-			if len(self._callList)>=idx+1 and self._callList[idx]:
+			if self._callList[idx]:
 				continue
 			
@@ -288,9 +280,11 @@
 			except:
 				self._callList[idx] = None
-				self._gui.audioUpdateState(bud.cfg.uri, gui.AudioState.FAILED)
+				self._gui.audioUpdateState(uri_str, gui.AudioState.FAILED)
+				fails.append(p)
 				
-				# kick the disconnected participant, but the last (avoid zombie chat)
-				if not self.isPrivate():
-					self.kickParticipant(p)
+		for p in fails:
+			# kick participants with call failure, but spare the last (avoid zombie chat)
+			if not self.isPrivate():
+				self.kickParticipant(p)
 			
 	def stopCall(self):
@@ -301,7 +295,4 @@
 				c.hangup(pj.CallOpParam())
 
-			if not self.isPrivate():
-				self.kickParticipant(p)
-		
 	def updateCallState(self, thecall, info = None):
 		# info is optional here, just to avoid calling getInfo() twice (in the caller and here)
Index: /pjproject/branches/projects/pjsua2/pjsip-apps/src/pygui/chatgui.py
===================================================================
--- /pjproject/branches/projects/pjsua2/pjsip-apps/src/pygui/chatgui.py	(revision 4689)
+++ /pjproject/branches/projects/pjsua2/pjsip-apps/src/pygui/chatgui.py	(revision 4690)
@@ -246,5 +246,5 @@
 		self.btnRxMute = ttk.Button(self.rxVolFrm, width=8, text='Mute', command=self._onRxMute)
 		self.btnRxMute.pack(side=tk.LEFT)
-		self.rxVol = tk.Scale(self.rxVolFrm, orient=tk.HORIZONTAL, from_=0.0, to=10.0, showvalue=0) #, tickinterval=10.0, showvalue=1)
+		self.rxVol = tk.Scale(self.rxVolFrm, orient=tk.HORIZONTAL, from_=0.0, to=10.0, showvalue=1) #, tickinterval=10.0, showvalue=1)
 		self.rxVol.set(5.0)
 		self.rxVol.bind("<ButtonRelease-1>", self._onRxVol)
