Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
theweavr committed Dec 19, 2017
1 parent 6c1404e commit 1683795
Show file tree
Hide file tree
Showing 14 changed files with 94 additions and 134 deletions.
7 changes: 0 additions & 7 deletions BreadPlayer.Core/BreadPlayer.Core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -109,9 +109,6 @@
<Compile Include="Common\PasswordStorage.cs" />
<Compile Include="Engines\BASSEngine\BassEqualizer.cs" />
<Compile Include="Engines\BASSEngine\BassEqualizerBand.cs" />
<Compile Include="Engines\FMODEngine\FmodEqualizer.cs" />
<Compile Include="Engines\FMODEngine\FmodEqualizerBand.cs" />
<Compile Include="Engines\FMODEngine\FMODPlayerEngine.cs" />
<Compile Include="Events\MediaAboutToEndEventArgs.cs" />
<Compile Include="Events\MediaEndedEventArgs.cs" />
<Compile Include="Events\MediaStateChangedEventArgs.cs" />
Expand All @@ -138,10 +135,6 @@
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\BreadPlayer.Fmod\BreadPlayer.Fmod.csproj">
<Project>{875a50a9-6a3d-4e7c-8213-ff45cd34d2e0}</Project>
<Name>BreadPlayer.Fmod</Name>
</ProjectReference>
<ProjectReference Include="..\BreadPlayer.Common\BreadPlayer.Common.csproj">
<Project>{47af841a-4b78-490d-8915-7f58cdbdbeb3}</Project>
<Name>BreadPlayer.Common</Name>
Expand Down
113 changes: 58 additions & 55 deletions BreadPlayer.Extensions/ThreadSafeObservableCollection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -163,62 +163,45 @@ public void ReplaceRange(IEnumerable<T> collection)
throw new ArgumentNullException("collection");
}

Sync.EnterWriteLock();
Clear();
foreach (var i in collection)
SafeEnterWriteLock<object>(() =>
{
Insert(base.Count - 1, i);
}

Sync.ExitWriteLock();
Clear();
foreach (var i in collection)
{
Insert(base.Count - 1, i);
}
return null;
});
}

private void DoClear()
{
if (!Sync.IsWriteLockHeld)
SafeEnterWriteLock<object>(() =>
{
Sync.EnterWriteLock();
}

base.Clear();
Sync.ExitWriteLock();
base.Clear();
return null;
});
}

public new bool Contains(T item)
{
if (!Sync.IsReadLockHeld)
{
Sync.EnterReadLock();
}

var result = base.Contains(item);
Sync.ExitReadLock();
return result;
return SafeEnterReadLock(() => base.Contains(item));
}

public new void CopyTo(T[] array, int arrayIndex)
{
Sync.EnterWriteLock();
base.CopyTo(array, arrayIndex);
Sync.ExitWriteLock();
SafeEnterWriteLock<object>(() =>
{
base.CopyTo(array, arrayIndex);
return null;
});
}

public new int Count
{
get
{
if (!Sync.IsWriteLockHeld)
{
Sync.EnterReadLock();
}

var result = base.Count;
if (Sync.IsReadLockHeld)
{
Sync.ExitReadLock();
}

return result;
return SafeEnterReadLock(() => base.Count);
}
}
public int FastCount
Expand Down Expand Up @@ -246,18 +229,12 @@ public int FastCount

private bool DoRemove(T item)
{
Sync.EnterWriteLock();
var result = base.Remove(item);
Sync.ExitWriteLock();
return result;
return SafeEnterWriteLock(() => base.Remove(item));
}

public new int IndexOf(T item)
{
Sync.EnterReadLock();
var result = base.IndexOf(item);
Sync.ExitReadLock();
return result;
return SafeEnterReadLock(() => base.IndexOf(item));
}

public new async void Insert(int index, T item)
Expand All @@ -267,13 +244,11 @@ private bool DoRemove(T item)

private void DoInsert(int index, T item)
{
if (!Sync.IsWriteLockHeld)
SafeEnterWriteLock<object>(() =>
{
Sync.EnterWriteLock();
}

base.Insert(index, item);
Sync.ExitWriteLock();
base.Insert(index, item);
return null;
});
}

public new async void RemoveAt(int index)
Expand All @@ -298,10 +273,7 @@ private void DoRemoveAt(int index)
{
get
{
Sync.EnterReadLock();
var result = base[index];
Sync.ExitReadLock();
return result;
return SafeEnterReadLock(() => base[index]);
}
set
{
Expand All @@ -320,7 +292,38 @@ public IEnumerable<T> AsLocked()
{
return new ThreadSafeObservableCollectionEnumerableWrapper<T>(this);
}

private TResult SafeEnterWriteLock<TResult>(Func<TResult> action)
{
if (!Sync.IsWriteLockHeld)
{
Sync.EnterWriteLock();
}

var result = action();

if (!Sync.IsWriteLockHeld)
{
Sync.ExitWriteLock();
}

return result;
}
private TResult SafeEnterReadLock<TResult>(Func<TResult> action)
{
if (!Sync.IsReadLockHeld)
{
Sync.EnterReadLock();
}

var result = action.Invoke();

if (Sync.IsReadLockHeld)
{
Sync.ExitReadLock();
}

return result;
}
}

public class ThreadSafeObservableCollectionEnumerableWrapper<T> : IEnumerable<T>
Expand Down
Binary file removed BreadPlayer.Views.UWP/Assets/lib/ARM/fmod_ARM.dll
Binary file not shown.
Binary file removed BreadPlayer.Views.UWP/Assets/lib/x64/fmod_X64.dll
Binary file not shown.
Binary file removed BreadPlayer.Views.UWP/Assets/lib/x86/fmod_X86.dll
Binary file not shown.
12 changes: 0 additions & 12 deletions BreadPlayer.Views.UWP/BreadPlayer.Views.UWP.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -422,10 +422,6 @@
<Link>bass_fx.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Assets\lib\x86\fmod_X86.dll">
<Link>fmod_x86.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup Condition="'$(Platform)' == 'x64'">
<Content Include="Assets\lib\x64\bass.dll">
Expand All @@ -436,10 +432,6 @@
<Link>bass_fx.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Assets\lib\x64\fmod_X64.dll">
<Link>fmod_x64.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup Condition="'$(Platform)' == 'ARM'">
<Content Include="Assets\lib\ARM\bass.dll">
Expand All @@ -450,10 +442,6 @@
<Link>bass_fx.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Assets\lib\ARM\fmod_ARM.dll">
<Link>fmod_ARM.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
Expand Down
27 changes: 14 additions & 13 deletions BreadPlayer.Views.UWP/BundleArtifacts/Upload/arm.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
MainPackage=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\Upload\BreadPlayer.Views.UWP_2.7.7.0_ARM.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_language-de.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_language-fa.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_language-fr.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_language-pl.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_language-ru.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_scale-100.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_scale-125.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_scale-140.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_scale-150.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_scale-180.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_scale-240.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_scale-400.appx
MainPackage=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\Upload\BreadPlayer.Views.UWP_2.7.8.0_ARM.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_language-ar.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_language-de.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_language-fa.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_language-fr.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_language-pl.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_language-ru.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_scale-100.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_scale-125.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_scale-140.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_scale-150.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_scale-180.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_scale-240.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_scale-400.appx
2 changes: 1 addition & 1 deletion BreadPlayer.Views.UWP/BundleArtifacts/Upload/x64.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
MainPackage=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\x64\Release\Upload\BreadPlayer.Views.UWP_2.7.7.0_x64.appx
MainPackage=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\x64\Release\Upload\BreadPlayer.Views.UWP_2.7.8.0_x64.appx
2 changes: 1 addition & 1 deletion BreadPlayer.Views.UWP/BundleArtifacts/Upload/x86.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
MainPackage=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\x86\Release\Upload\BreadPlayer.Views.UWP_2.7.7.0_x86.appx
MainPackage=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\x86\Release\Upload\BreadPlayer.Views.UWP_2.7.8.0_x86.appx
27 changes: 14 additions & 13 deletions BreadPlayer.Views.UWP/BundleArtifacts/arm.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
MainPackage=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_ARM.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_language-de.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_language-fa.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_language-fr.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_language-pl.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_language-ru.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_scale-100.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_scale-125.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_scale-140.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_scale-150.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_scale-180.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_scale-240.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.7.0_scale-400.appx
MainPackage=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_ARM.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_language-ar.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_language-de.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_language-fa.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_language-fr.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_language-pl.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_language-ru.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_scale-100.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_scale-125.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_scale-140.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_scale-150.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_scale-180.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_scale-240.appx
ResourcePack=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\BreadPlayer.Views.UWP_2.7.8.0_scale-400.appx
2 changes: 1 addition & 1 deletion BreadPlayer.Views.UWP/BundleArtifacts/x64.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
MainPackage=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\x64\Release\BreadPlayer.Views.UWP_2.7.7.0_x64.appx
MainPackage=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\x64\Release\BreadPlayer.Views.UWP_2.7.8.0_x64.appx
2 changes: 1 addition & 1 deletion BreadPlayer.Views.UWP/BundleArtifacts/x86.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
MainPackage=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\x86\Release\BreadPlayer.Views.UWP_2.7.7.0_x86.appx
MainPackage=C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\x86\Release\BreadPlayer.Views.UWP_2.7.8.0_x86.appx
2 changes: 1 addition & 1 deletion BreadPlayer.Views.UWP/_pkginfo.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\Upload\BreadPlayer.Views.UWP_2.7.7.0\BreadPlayer.Views.UWP_2.7.7.0_x86_x64_arm.appxbundle
C:\Users\Arkane Elayne\Source\Repos\BreadPlayer\BreadPlayer.Views.UWP\bin\ARM\Release\Upload\BreadPlayer.Views.UWP_2.7.8.0\BreadPlayer.Views.UWP_2.7.8.0_x86_x64_arm.appxbundle
Loading

0 comments on commit 1683795

Please sign in to comment.