Skip to content

Commit 8f51b30

Browse files
authored
Merge pull request #10 from Ledrunning/develop
Develop
2 parents 2cffcc4 + b9ee172 commit 8f51b30

10 files changed

Lines changed: 61 additions & 46 deletions

File tree

‎TinyPlayer.Core/Abstractions/IVideoPlayerCore.cs‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ namespace TinyPlayer.Core.Abstractions;
55

66
public interface IVideoPlayerCore
77
{
8-
void Dispose();
98
event Action<long, long>? PositionChanged;
109
event EventHandler<StreamsAnalysedEventArgs>? StreamsAnalysed;
1110
event Action<string>? ErrorOccurred;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
namespace TinyPlayer.Core.Enums;
22

33
[Flags]
4-
public enum AvFlagsType : uint
4+
public enum AvFlagTypes : uint
55
{
66
Video = 1 << 0,
77
Audio = 1 << 1,

‎TinyPlayer.Core/TinyPlayer.Core.csproj‎

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,4 @@
1616
<PackageReference Include="Serilog.Sinks.File" Version="7.0.0" />
1717
</ItemGroup>
1818

19-
<ItemGroup>
20-
<Folder Include="Enums\" />
21-
</ItemGroup>
22-
2319
</Project>

‎TinyPlayer.Core/VideoPlayerCore.cs‎

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public sealed class VideoPlayerCore : IVideoPlayerCore, IDisposable
3131
private Element? _playbin;
3232
private uint _refreshUiHandle;
3333
private readonly ILogger<VideoPlayerCore> _logger;
34+
private const string Flags = "flags";
3435

3536
public VideoPlayerCore(string uri, nint hwnd, ILogger<VideoPlayerCore> logger)
3637
{
@@ -136,7 +137,7 @@ private void InitPipeline(string uri)
136137
_playbin.Connect("audio-tags-changed", TagsCb);
137138
_playbin.Connect("text-tags-changed", TagsCb);
138139

139-
_playbin.SetProperty("flags", new Value((uint)AvFlagsType.EnableAllFlags));
140+
_playbin.SetProperty(Flags, new Value((uint)AvFlagTypes.EnableAllFlags));
140141

141142
// Waiting for the actual Paused even only then is the duration known
142143
_playbin.SetState(State.Paused);
@@ -186,15 +187,15 @@ public void SetSubtitlesEnabled(bool enabled)
186187
return;
187188
}
188189

189-
var flags = (uint)_playbin["flags"];
190+
var flags = (uint)_playbin[Flags];
190191

191192
if (enabled)
192193
{
193-
_playbin["flags"] = flags | (uint)AvFlagsType.SubText;
194+
_playbin[Flags] = flags | (uint)AvFlagTypes.SubText;
194195
}
195196
else
196197
{
197-
_playbin["flags"] = flags & ~(uint)AvFlagsType.SubText;
198+
_playbin[Flags] = flags & ~(uint)AvFlagTypes.SubText;
198199
}
199200

200201
if (!enabled)
@@ -210,10 +211,10 @@ public void SetAudioEnabled(bool enabled)
210211
return;
211212
}
212213

213-
var flags = (uint)_playbin["flags"];
214-
_playbin["flags"] = enabled
215-
? flags | (uint)AvFlagsType.Audio
216-
: flags & ~(uint)AvFlagsType.Audio;
214+
var flags = (uint)_playbin[Flags];
215+
_playbin[Flags] = enabled
216+
? flags | (uint)AvFlagTypes.Audio
217+
: flags & ~(uint)AvFlagTypes.Audio;
217218
}
218219

219220
public void SetVolume(double value)
@@ -372,7 +373,7 @@ public void SetRenderSize(int w, int h)
372373
return;
373374
}
374375

375-
var overlay = ((Bin)_playbin)?.GetByInterface(VideoOverlayAdapter.GType);
376+
var overlay = ((Bin)_playbin).GetByInterface(VideoOverlayAdapter.GType);
376377
if (overlay == null)
377378
{
378379
return;

‎TinyPlayer.Desktop/App.xaml.cs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public partial class App
3131
// https://docs.microsoft.com/dotnet/core/extensions/logging
3232
private static readonly IHost _host = Host
3333
.CreateDefaultBuilder()
34-
.UseSerilog((context, config) => // ← вот это
34+
.UseSerilog((context, config) =>
3535
{
3636
config
3737
.MinimumLevel.Debug()
@@ -101,7 +101,7 @@ private async void OnExit(object sender, ExitEventArgs e)
101101
}
102102
finally
103103
{
104-
Log.CloseAndFlush();
104+
await Log.CloseAndFlushAsync();
105105
_host.Dispose();
106106
}
107107
}

‎TinyPlayer.Desktop/View/MainWindow.xaml‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,13 @@
120120
Height="35"
121121
Margin="0,0,6,0"
122122
Appearance="Primary"
123-
Command="{Binding StopCommand}"
124-
Content="■"
125-
FontSize="24" />
123+
Command="{Binding StopCommand}">
124+
<ui:Button.Style>
125+
<Style BasedOn="{StaticResource {x:Type ui:Button}}" TargetType="ui:Button">
126+
<Setter Property="Icon" Value="{ui:SymbolIcon Symbol=Stop24}" />
127+
</Style>
128+
</ui:Button.Style>
129+
</ui:Button>
126130

127131
<!-- Mute -->
128132
<ui:Button

‎TinyPlayer.Desktop/ViewModel/BaseViewModel.cs‎

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,26 @@ public abstract class BaseViewModel : ObservableObject, IDisposable
1414

1515
public readonly List<StreamItem> AllSubtitleTracks = [];
1616

17+
private bool _disposed;
18+
19+
protected virtual void Dispose(bool disposing)
20+
{
21+
if (_disposed)
22+
return;
23+
24+
if (disposing)
25+
{
26+
Core?.Dispose();
27+
Core = null;
28+
}
29+
30+
_disposed = true;
31+
}
32+
1733
public void Dispose()
1834
{
19-
Core?.Dispose();
20-
Core = null;
35+
Dispose(true);
36+
GC.SuppressFinalize(this);
2137
}
2238

2339
protected virtual void OpenFile(Action<string> loadUri)
@@ -28,7 +44,7 @@ protected virtual void OpenFile(Action<string> loadUri)
2844
Filter = "Video|*.mp4;*.mkv;*.avi;*.mov;*.wmv;*.flv;*.webm|All files|*.*"
2945
};
3046

31-
if (dlg.ShowDialog() != true)
47+
if (!dlg.ShowDialog().HasValue)
3248
{
3349
return;
3450
}

‎TinyPlayer.Desktop/ViewModel/MainViewModel.cs‎

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,7 @@ private void ToggleFullscreen()
4949

5050
if (!isFullscreen)
5151
{
52-
// Switch to fullscreen — first set to None, then Maximised;
53-
// otherwise the taskbar won't be hidden
52+
// Switch to fullscreen first set to None, then Maximised otherwise the taskbar won't be hidden
5453
WindowStyle = WindowStyle.None;
5554
WindowState = WindowState.Maximized;
5655
TitleBarVisibility = Visibility.Collapsed;
@@ -118,22 +117,22 @@ private void LoadUri(string uri)
118117
TimeText = FormatTime(cur, dur);
119118
});
120119

121-
Core?.StreamsAnalysed -= OnStreamsAnalysed;
122-
Core?.StreamsAnalysed += OnStreamsAnalysed;
120+
Core.StreamsAnalysed -= OnStreamsAnalysed;
121+
Core.StreamsAnalysed += OnStreamsAnalysed;
123122

124-
Core?.ErrorOccurred += msg =>
123+
Core.ErrorOccurred += msg =>
125124
Application.Current?.Dispatcher.Invoke(() =>
126125
MessageBox.Show(msg, "Playback error",
127126
MessageBoxButton.OK, MessageBoxImage.Error));
128127

129-
Core?.EndOfStream += () =>
128+
Core.EndOfStream += () =>
130129
Application.Current?.Dispatcher.Invoke(() =>
131130
{
132131
SetPosition(0);
133132
TimeText = FormatTime(0, Duration);
134133
});
135134

136-
Core?.StateChanged += state =>
135+
Core.StateChanged += state =>
137136
Application.Current?.Dispatcher.BeginInvoke(() =>
138137
{
139138
IsPlaying = state == State.Playing;

‎TinyPlayer.Tests/Core/AvFlagsTypeTests.cs‎

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,35 +8,35 @@ public class AvFlagsTypeTests
88
public void EnableAllFlags_ContainsAllCoreFlags()
99
{
1010
// Arrage & Act
11-
var all = AvFlagsType.EnableAllFlags;
11+
var all = AvFlagTypes.EnableAllFlags;
1212

1313
// Assert
14-
Assert.True(all.HasFlag(AvFlagsType.Video));
15-
Assert.True(all.HasFlag(AvFlagsType.Audio));
16-
Assert.True(all.HasFlag(AvFlagsType.SubText));
14+
Assert.True(all.HasFlag(AvFlagTypes.Video));
15+
Assert.True(all.HasFlag(AvFlagTypes.Audio));
16+
Assert.True(all.HasFlag(AvFlagTypes.SubText));
1717
}
1818

1919
[Fact]
2020
public void DisableSubtitles_DoesNotContainSubtitleFlag()
2121
{
2222
// Arrange & Act
23-
var value = AvFlagsType.DisableSubtitles;
23+
var value = AvFlagTypes.DisableSubtitles;
2424

2525
// Assert
26-
Assert.True(value.HasFlag(AvFlagsType.Video));
27-
Assert.True(value.HasFlag(AvFlagsType.Audio));
28-
Assert.False(value.HasFlag(AvFlagsType.SubText));
26+
Assert.True(value.HasFlag(AvFlagTypes.Video));
27+
Assert.True(value.HasFlag(AvFlagTypes.Audio));
28+
Assert.False(value.HasFlag(AvFlagTypes.SubText));
2929
}
3030

3131
[Fact]
3232
public void DisableAudio_DoesNotContainAudioFlag()
3333
{
3434
// Arrange & Act
35-
var value = AvFlagsType.DisableAudio;
35+
var value = AvFlagTypes.DisableAudio;
3636

3737
// Assert
38-
Assert.True(value.HasFlag(AvFlagsType.Video));
39-
Assert.True(value.HasFlag(AvFlagsType.SubText));
40-
Assert.False(value.HasFlag(AvFlagsType.Audio));
38+
Assert.True(value.HasFlag(AvFlagTypes.Video));
39+
Assert.True(value.HasFlag(AvFlagTypes.SubText));
40+
Assert.False(value.HasFlag(AvFlagTypes.Audio));
4141
}
4242
}

‎TinyPlayer.Tests/Core/CoreModelTests.cs‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ public void StreamsAnalysedEventArgs_StoresProvidedValues()
3838
public void AvFlagsType_EnableAllFlags_ContainsVideoAudioAndSubtitle()
3939
{
4040
// Arrange & Act
41-
var flags = AvFlagsType.EnableAllFlags;
41+
var flags = AvFlagTypes.EnableAllFlags;
4242

4343
// Assert
44-
Assert.True(flags.HasFlag(AvFlagsType.Video));
45-
Assert.True(flags.HasFlag(AvFlagsType.Audio));
46-
Assert.True(flags.HasFlag(AvFlagsType.SubText));
44+
Assert.True(flags.HasFlag(AvFlagTypes.Video));
45+
Assert.True(flags.HasFlag(AvFlagTypes.Audio));
46+
Assert.True(flags.HasFlag(AvFlagTypes.SubText));
4747
}
4848
}

0 commit comments

Comments
 (0)