fix: Moved debouncer again for buffering issues

This commit is contained in:
PartyDonut 2025-10-09 20:12:10 +02:00
parent 9cf5e99184
commit e8f85c13df
2 changed files with 26 additions and 26 deletions

View file

@ -7,6 +7,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/media_playback_model.dart'; import 'package:fladder/models/media_playback_model.dart';
import 'package:fladder/models/playback/playback_model.dart'; import 'package:fladder/models/playback/playback_model.dart';
import 'package:fladder/providers/settings/video_player_settings_provider.dart'; import 'package:fladder/providers/settings/video_player_settings_provider.dart';
import 'package:fladder/util/debouncer.dart';
import 'package:fladder/wrappers/media_control_wrapper.dart'; import 'package:fladder/wrappers/media_control_wrapper.dart';
final mediaPlaybackProvider = StateProvider<MediaPlaybackModel>((ref) => MediaPlaybackModel()); final mediaPlaybackProvider = StateProvider<MediaPlaybackModel>((ref) => MediaPlaybackModel());
@ -30,25 +31,29 @@ class VideoPlayerNotifier extends StateNotifier<MediaControlsWrapper> {
MediaPlaybackModel get playbackState => ref.read(mediaPlaybackProvider); MediaPlaybackModel get playbackState => ref.read(mediaPlaybackProvider);
final Debouncer debouncer = Debouncer(const Duration(milliseconds: 125));
void init() async { void init() async {
await state.dispose(); debouncer.run(() async {
await state.init(); await state.dispose();
await state.init();
for (final s in subscriptions) { for (final s in subscriptions) {
s.cancel(); s.cancel();
} }
final subscription = state.stateStream?.listen((value) { final subscription = state.stateStream?.listen((value) {
updateBuffering(value.buffering); updateBuffering(value.buffering);
updateBuffer(value.buffer); updateBuffer(value.buffer);
updatePlaying(value.playing); updatePlaying(value.playing);
updatePosition(value.position); updatePosition(value.position);
updateDuration(value.duration); updateDuration(value.duration);
});
if (subscription != null) {
subscriptions.add(subscription);
}
}); });
if (subscription != null) {
subscriptions.add(subscription);
}
} }
Future<void> updateBuffering(bool event) async => Future<void> updateBuffering(bool event) async =>

View file

@ -18,7 +18,6 @@ import 'package:fladder/providers/settings/client_settings_provider.dart';
import 'package:fladder/providers/settings/video_player_settings_provider.dart'; import 'package:fladder/providers/settings/video_player_settings_provider.dart';
import 'package:fladder/providers/video_player_provider.dart'; import 'package:fladder/providers/video_player_provider.dart';
import 'package:fladder/src/video_player_helper.g.dart' hide PlaybackState; import 'package:fladder/src/video_player_helper.g.dart' hide PlaybackState;
import 'package:fladder/util/debouncer.dart';
import 'package:fladder/util/localization_helper.dart'; import 'package:fladder/util/localization_helper.dart';
import 'package:fladder/wrappers/players/base_player.dart'; import 'package:fladder/wrappers/players/base_player.dart';
import 'package:fladder/wrappers/players/lib_mdk.dart' import 'package:fladder/wrappers/players/lib_mdk.dart'
@ -54,8 +53,6 @@ class MediaControlsWrapper extends BaseAudioHandler implements VideoPlayerContro
bool initializedWrapper = false; bool initializedWrapper = false;
final Debouncer debouncer = Debouncer(const Duration(seconds: 2));
Future<void> init() async { Future<void> init() async {
if (!initializedWrapper) { if (!initializedWrapper) {
initializedWrapper = true; initializedWrapper = true;
@ -77,15 +74,13 @@ class MediaControlsWrapper extends BaseAudioHandler implements VideoPlayerContro
); );
} }
debouncer.run(() { final player = switch (ref.read(videoPlayerSettingsProvider).wantedPlayer) {
final player = switch (ref.read(videoPlayerSettingsProvider).wantedPlayer) { PlayerOptions.libMDK => LibMDK(),
PlayerOptions.libMDK => LibMDK(), PlayerOptions.libMPV => LibMPV(),
PlayerOptions.libMPV => LibMPV(), PlayerOptions.nativePlayer => NativePlayer(),
PlayerOptions.nativePlayer => NativePlayer(), };
};
setup(player); setup(player);
});
} }
Future<void> dispose() async => _player?.dispose(); Future<void> dispose() async => _player?.dispose();