Skip to content

Commit dd323b6

Browse files
committed
Avoid querying details that locks up the player
1 parent d1e4f68 commit dd323b6

1 file changed

Lines changed: 15 additions & 7 deletions

File tree

src/UnfoldedCircle.OppoBluRay/WebSocket/OppoWebSocketHandler.EntityEvent.cs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -173,11 +173,12 @@ await Task.WhenAll(
173173
_ => State.On
174174
};
175175

176+
var isMovie = discTypeResponse.Value.Result is DiscType.BlueRayMovie or DiscType.DVDVideo or DiscType.UltraHDBluRay;
176177
if (playbackStatusResponse is { Result: PlaybackStatus.Play or PlaybackStatus.Pause } && discTypeResponse.Value && discTypeResponse.Value.Result is not DiscType.UnknownDisc and not DiscType.DataDisc)
177178
{
178179
(repeatMode, shuffle) = GetRepeatMode(await oppoClientHolder.Client.QueryRepeatModeAsync(cancellationToken));
179180

180-
if (discTypeResponse.Value.Result is DiscType.BlueRayMovie or DiscType.DVDVideo or DiscType.UltraHDBluRay)
181+
if (isMovie)
181182
{
182183
elapsedResponse = oppoClientHolder.ClientKey.UseChapterLengthForMovies
183184
? await oppoClientHolder.Client.QueryChapterElapsedTimeAsync(cancellationToken)
@@ -214,13 +215,20 @@ await Task.WhenAll(
214215
else
215216
coverUri = null;
216217

217-
audioTypeResponse = await oppoClientHolder.Client.QueryAudioTypeAsync(cancellationToken);
218-
subtitleTypeResponse = await oppoClientHolder.Client.QuerySubtitleTypeAsync(cancellationToken);
219-
if (oppoClientHolder.ClientKey.Model is OppoModel.UDP203 or OppoModel.UDP205)
218+
// if we're at 0, then we're at a title screen, and querying details will produce errors and lock up the player
219+
if (elapsedResponse is not { Result: 0 } && remainingResponse is not { Result: 0 })
220220
{
221-
threeDStatusResponse = await oppoClientHolder.Client.QueryThreeDStatusAsync(cancellationToken);
222-
hdrStatusResponse = await oppoClientHolder.Client.QueryHDRStatusAsync(cancellationToken);
223-
aspectRatioResponse = await oppoClientHolder.Client.QueryAspectRatioAsync(cancellationToken);
221+
audioTypeResponse = await oppoClientHolder.Client.QueryAudioTypeAsync(cancellationToken);
222+
if (isMovie)
223+
{
224+
subtitleTypeResponse = await oppoClientHolder.Client.QuerySubtitleTypeAsync(cancellationToken);
225+
if (oppoClientHolder.ClientKey.Model is OppoModel.UDP203 or OppoModel.UDP205)
226+
{
227+
threeDStatusResponse = await oppoClientHolder.Client.QueryThreeDStatusAsync(cancellationToken);
228+
hdrStatusResponse = await oppoClientHolder.Client.QueryHDRStatusAsync(cancellationToken);
229+
aspectRatioResponse = await oppoClientHolder.Client.QueryAspectRatioAsync(cancellationToken);
230+
}
231+
}
224232
}
225233
}
226234
}

0 commit comments

Comments
 (0)