Skip to content
Draft
Changes from 5 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
e6ba3b1
Fix playback state update in PlatformUpdateSource method
ne0rrmatrix Feb 9, 2026
3068069
Update player state handling to use Media3 constants
ne0rrmatrix Feb 10, 2026
a56c0ec
Update src/CommunityToolkit.Maui.MediaElement/Views/MediaManager.andr…
ne0rrmatrix Feb 10, 2026
fbc466a
Update src/CommunityToolkit.Maui.MediaElement/Views/MediaManager.andr…
ne0rrmatrix Feb 10, 2026
7e85726
Update src/CommunityToolkit.Maui.MediaElement/Views/MediaManager.andr…
ne0rrmatrix Feb 10, 2026
b4b73cf
Update player state handling to use Media3 constants
ne0rrmatrix Feb 10, 2026
c2c08f0
Refactor playback state management.
ne0rrmatrix Feb 10, 2026
9f7e621
Add null check
ne0rrmatrix Feb 10, 2026
ff01b96
Update src/CommunityToolkit.Maui.MediaElement/Views/MediaManager.andr…
ne0rrmatrix Feb 10, 2026
957d2bf
Update src/CommunityToolkit.Maui.MediaElement/Views/MediaManager.andr…
ne0rrmatrix Feb 10, 2026
a1d3f2f
Update playback state handling and error reporting
ne0rrmatrix Feb 10, 2026
b1e750f
Update src/CommunityToolkit.Maui.MediaElement/Views/MediaManager.andr…
ne0rrmatrix Feb 10, 2026
d342148
Fix failed state bug
ne0rrmatrix Feb 11, 2026
f02e88f
Refactor player state handling and error reporting in MediaManager
ne0rrmatrix Feb 11, 2026
ad2e317
Refactor error handling and update source logic in MediaManager
ne0rrmatrix Feb 11, 2026
66509cc
Merge branch 'main' into FixAutoPlay
ne0rrmatrix Feb 11, 2026
b495897
Merge branch 'main' into FixAutoPlay
ne0rrmatrix Feb 12, 2026
3dcaf3e
Merge branch 'main' into FixAutoPlay
ne0rrmatrix Feb 17, 2026
284701b
Merge branch 'main' into FixAutoPlay
ne0rrmatrix Feb 27, 2026
0c75755
Merge branch 'main' into FixAutoPlay
ne0rrmatrix Mar 8, 2026
b35e541
Merge branch 'main' into FixAutoPlay
ne0rrmatrix Mar 11, 2026
e136b4c
Merge branch 'main' into FixAutoPlay
ne0rrmatrix Mar 12, 2026
4ae7956
Merge branch 'main' into FixAutoPlay
ne0rrmatrix Mar 18, 2026
79d4e3d
Merge branch 'main' into FixAutoPlay
ne0rrmatrix Mar 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -94,32 +94,16 @@ public void OnPlayerStateChanged(bool playWhenReady, int playbackState)

var newState = playbackState switch
{
PlaybackState.StateFastForwarding
or PlaybackState.StateRewinding
or PlaybackState.StateSkippingToNext
or PlaybackState.StateSkippingToPrevious
or PlaybackState.StateSkippingToQueueItem
or PlaybackState.StatePlaying => playWhenReady
? MediaElementState.Playing
: MediaElementState.Paused,

PlaybackState.StatePaused => MediaElementState.Paused,

PlaybackState.StateConnecting
or PlaybackState.StateBuffering => MediaElementState.Buffering,

PlaybackState.StateNone => MediaElementState.None,
PlaybackState.StateStopped => MediaElement.CurrentState is not MediaElementState.Failed
? MediaElementState.Stopped
: MediaElementState.Failed,

PlaybackState.StateError => MediaElementState.Failed,

BasePlayer.InterfaceConsts.StateBuffering => MediaElementState.Buffering,
BasePlayer.InterfaceConsts.StateReady => playWhenReady ? MediaElementState.Playing : MediaElementState.Paused,
BasePlayer.InterfaceConsts.StateEnded => MediaElementState.Stopped,
BasePlayer.InterfaceConsts.StateIdle => MediaElement.CurrentState == MediaElementState.None ? MediaElementState.None : MediaElementState.Stopped,
_ => MediaElementState.None,
};

MediaElement.CurrentStateChanged(newState);
if (playbackState is readyState)

if (playbackState == BasePlayer.InterfaceConsts.StateReady)
{
MediaElement.Duration = TimeSpan.FromMilliseconds(Player.Duration < 0 ? 0 : Player.Duration);
MediaElement.Position = TimeSpan.FromMilliseconds(Player.CurrentPosition < 0 ? 0 : Player.CurrentPosition);
Expand Down Expand Up @@ -369,15 +353,15 @@ protected virtual async partial ValueTask PlatformUpdateSource()
return;
}

MediaElement.CurrentStateChanged(MediaElementState.Opening);
Player.PlayWhenReady = MediaElement.ShouldAutoPlay;
cancellationTokenSource ??= new();
// ConfigureAwait(true) is required to prevent crash on startup
var result = await SetPlayerData(cancellationTokenSource.Token).ConfigureAwait(true);
var item = result?.Build();

if (item?.MediaMetadata is not null)
if (item is not null)
{
MediaElement.CurrentStateChanged(MediaElementState.Opening);
Player.SetMediaItem(item);
Player.Prepare();
hasSetSource = true;
Expand Down
Loading