From 839c920cf99abb705ac68095537880e01a1123cb Mon Sep 17 00:00:00 2001 From: Latif Khalifa Date: Mon, 16 May 2011 13:18:59 +0000 Subject: [PATCH] Couple of voice tweaks git-svn-id: https://radegast.googlecode.com/svn/trunk@861 f7a694da-4d33-11de-9ad6-1127a62b9fcd --- Radegast/GUI/Consoles/DebugConsole.Designer.cs | 7 ++++ Radegast/GUI/Consoles/VoiceConsole.cs | 57 +++++++++++++++++++++----- Radegast/GUI/Consoles/VoiceConsole.resx | 54 ++++++++++++------------ 3 files changed, 81 insertions(+), 37 deletions(-) diff --git a/Radegast/GUI/Consoles/DebugConsole.Designer.cs b/Radegast/GUI/Consoles/DebugConsole.Designer.cs index 3c3cc39..682e278 100644 --- a/Radegast/GUI/Consoles/DebugConsole.Designer.cs +++ b/Radegast/GUI/Consoles/DebugConsole.Designer.cs @@ -44,6 +44,13 @@ namespace Radegast /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { + if (InvokeRequired) + { + if (!instance.MonoRuntime || IsHandleCreated) + Invoke((System.Windows.Forms.MethodInvoker)(() => Dispose(disposing))); + return; + } + if (disposing && (components != null)) { components.Dispose(); diff --git a/Radegast/GUI/Consoles/VoiceConsole.cs b/Radegast/GUI/Consoles/VoiceConsole.cs index 2f2ace1..2580ddf 100644 --- a/Radegast/GUI/Consoles/VoiceConsole.cs +++ b/Radegast/GUI/Consoles/VoiceConsole.cs @@ -105,9 +105,12 @@ namespace Radegast private void Stop() { participants.Clear(); + gateway.Stop(); + UnregisterClientEvents(); session = null; + gateway = null; SetProgress(VoiceGateway.ConnectionState.None); - gateway.Stop(); + GC.Collect(); } /// @@ -149,6 +152,8 @@ namespace Radegast private void RegisterClientEvents() { + instance.Names.NameUpdated += new EventHandler(Names_NameUpdated); + // Voice hooks gateway.OnSessionCreate += new EventHandler(gateway_OnSessionCreate); @@ -164,6 +169,8 @@ namespace Radegast private void UnregisterClientEvents() { + instance.Names.NameUpdated -= new EventHandler(Names_NameUpdated); + gateway.OnSessionCreate -= new EventHandler(gateway_OnSessionCreate); gateway.OnSessionRemove -= @@ -176,6 +183,28 @@ namespace Radegast new EventHandler(gateway_OnAuxGetRenderDevicesResponse); } + void Names_NameUpdated(object sender, UUIDNameReplyEventArgs e) + { + if (InvokeRequired) + { + if (IsHandleCreated || !instance.MonoRuntime) + BeginInvoke((MethodInvoker)(() => Names_NameUpdated(sender, e))); + return; + } + + lock (participants) + { + foreach (var name in e.Names) + { + if (participants.Items.ContainsKey(name.Key.ToString())) + { + participants.Items[name.Key.ToString()].Text = name.Value; + ((VoiceParticipant)participants.Items[name.Key.ToString()].Tag).Name = name.Value; + } + } + } + } + #region Connection Status void gateway_OnAuxGetRenderDevicesResponse(object sender, VoiceGateway.VoiceDevicesEventArgs e) { @@ -244,21 +273,25 @@ namespace Radegast void gateway_OnSessionRemove(object sender, EventArgs e) { VoiceSession s = sender as VoiceSession; - if (session != s || session==null) - return; + if (s == null) return; + + s.OnParticipantAdded -= new EventHandler(session_OnParticipantAdded); + s.OnParticipantRemoved -= new EventHandler(session_OnParticipantRemoved); + s.OnParticipantUpdate -= new EventHandler(session_OnParticipantUpdate); + + if (session != s) return; BeginInvoke(new MethodInvoker(delegate() { participants.Clear(); - session.OnParticipantAdded -= new EventHandler(session_OnParticipantAdded); - session.OnParticipantRemoved -= new EventHandler(session_OnParticipantRemoved); - session.OnParticipantUpdate -= new EventHandler(session_OnParticipantUpdate); - gateway.MicMute = true; + if (gateway != null) + { + gateway.MicMute = true; + } micMute.Checked = true; session = null; - SetProgress(VoiceGateway.ConnectionState.AccountLogin); })); } @@ -273,10 +306,11 @@ namespace Radegast // Supply the name based on the UUID. p.Name = instance.Names.Get(p.ID); - if (participants.Items.ContainsKey(p.Name)) + if (participants.Items.ContainsKey(p.ID.ToString())) return; ListViewItem item = new ListViewItem(p.Name); + item.Name = p.ID.ToString(); item.Tag = p; item.StateImageIndex = (int)TalkState.Idle; @@ -513,7 +547,10 @@ namespace Radegast private void micMute_CheckedChanged(object sender, EventArgs e) { - gateway.MicMute = micMute.Checked; + if (gateway != null) + { + gateway.MicMute = micMute.Checked; + } } } diff --git a/Radegast/GUI/Consoles/VoiceConsole.resx b/Radegast/GUI/Consoles/VoiceConsole.resx index 1ed005a..bc558ac 100644 --- a/Radegast/GUI/Consoles/VoiceConsole.resx +++ b/Radegast/GUI/Consoles/VoiceConsole.resx @@ -121,37 +121,37 @@ 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 @@ -165,7 +165,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACk - CAAAAk1TRnQBSQFMAgEBAwEAAQQBAAEEAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAwEAARQBAAEUAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA -- 2.11.0