mirror of
https://github.com/digital-jellyfish/Virtu.git
synced 2024-11-23 03:33:44 +00:00
Added ApplicationBase.InitializeOutOfBrowserUpdate to Silverlight library.
Fixed race condition in DirectSound wrapper; between SetVolume and Uninitialize. --HG-- extra : convert_revision : svn%3Affd33b8c-2492-42e0-bdc5-587b920b7d6d/trunk%4050691
This commit is contained in:
parent
bf2c8e9b43
commit
5485e01e02
@ -29,9 +29,12 @@ public void Dispose()
|
||||
public void SetVolume(double volume)
|
||||
{
|
||||
int attenuation = (volume < 0.01) ? (int)BufferVolume.Min : (int)Math.Floor(100 * 20 * Math.Log10(volume)); // 100 db
|
||||
if (_buffer != null)
|
||||
lock (_bufferLock)
|
||||
{
|
||||
_buffer.SetVolume(attenuation);
|
||||
if (_buffer != null)
|
||||
{
|
||||
_buffer.SetVolume(attenuation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -116,11 +119,14 @@ private void UpdateBuffer(int offset, int count, BufferLock flags, Action<IntPtr
|
||||
|
||||
private void Uninitialize()
|
||||
{
|
||||
if (_buffer != null)
|
||||
lock (_bufferLock)
|
||||
{
|
||||
_buffer.Stop();
|
||||
Marshal.ReleaseComObject(_buffer);
|
||||
_buffer = null;
|
||||
if (_buffer != null)
|
||||
{
|
||||
_buffer.Stop();
|
||||
Marshal.ReleaseComObject(_buffer);
|
||||
_buffer = null;
|
||||
}
|
||||
}
|
||||
if (_device != null)
|
||||
{
|
||||
@ -157,6 +163,7 @@ private void Run() // com mta thread
|
||||
private IntPtr _window;
|
||||
private IDirectSound _device;
|
||||
private IDirectSoundBuffer _buffer;
|
||||
private object _bufferLock = new object();
|
||||
private Action<IntPtr, int> _updater;
|
||||
|
||||
private AutoResetEvent _position1Event = new AutoResetEvent(false);
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Diagnostics;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
#if WINDOWS_PHONE
|
||||
@ -24,6 +25,17 @@ public ApplicationBase(string name)
|
||||
//AppDomain.CurrentDomain.UnhandledException += OnAppDomainUnhandledException;
|
||||
}
|
||||
|
||||
#if !WINDOWS_PHONE
|
||||
protected void InitializeOutOfBrowserUpdate()
|
||||
{
|
||||
if (IsRunningOutOfBrowser)
|
||||
{
|
||||
CheckAndDownloadUpdateCompleted += OnApplicationCheckAndDownloadUpdateCompleted;
|
||||
CheckAndDownloadUpdateAsync();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if WINDOWS_PHONE
|
||||
protected void InitializePhoneApplication()
|
||||
{
|
||||
@ -53,6 +65,27 @@ private string GetExceptionCaption(string title, bool isTerminating = false)
|
||||
return caption.ToString();
|
||||
}
|
||||
|
||||
#if !WINDOWS_PHONE
|
||||
private void OnApplicationCheckAndDownloadUpdateCompleted(object sender, CheckAndDownloadUpdateCompletedEventArgs e)
|
||||
{
|
||||
if (e.Error != null)
|
||||
{
|
||||
if (e.Error is PlatformNotSupportedException)
|
||||
{
|
||||
MessageBox.Show("An application update is available, but it requires the latest version of Silverlight.");
|
||||
}
|
||||
else if (Debugger.IsAttached)
|
||||
{
|
||||
Debugger.Break();
|
||||
}
|
||||
}
|
||||
else if (e.UpdateAvailable)
|
||||
{
|
||||
MessageBox.Show("An application update was downloaded. Restart the application to run the latest version.");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
private void OnApplicationUnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
|
||||
{
|
||||
MessageBox.Show(e.ExceptionObject.ToString(), GetExceptionCaption("Application Exception"), MessageBoxButton.OK);
|
||||
|
@ -8,6 +8,7 @@ public MainApp() :
|
||||
base("Virtu")
|
||||
{
|
||||
InitializeComponent();
|
||||
InitializeOutOfBrowserUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user