From e8f85c13df6fb1d643c237cc4c8a80396e82bdd5 Mon Sep 17 00:00:00 2001 From: PartyDonut Date: Thu, 9 Oct 2025 20:12:10 +0200 Subject: [PATCH] fix: Moved debouncer again for buffering issues --- lib/providers/video_player_provider.dart | 35 ++++++++++++++---------- lib/wrappers/media_control_wrapper.dart | 17 ++++-------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/lib/providers/video_player_provider.dart b/lib/providers/video_player_provider.dart index 97c9aca..1505b86 100644 --- a/lib/providers/video_player_provider.dart +++ b/lib/providers/video_player_provider.dart @@ -7,6 +7,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:fladder/models/media_playback_model.dart'; import 'package:fladder/models/playback/playback_model.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'; final mediaPlaybackProvider = StateProvider((ref) => MediaPlaybackModel()); @@ -30,25 +31,29 @@ class VideoPlayerNotifier extends StateNotifier { MediaPlaybackModel get playbackState => ref.read(mediaPlaybackProvider); + final Debouncer debouncer = Debouncer(const Duration(milliseconds: 125)); + void init() async { - await state.dispose(); - await state.init(); + debouncer.run(() async { + await state.dispose(); + await state.init(); - for (final s in subscriptions) { - s.cancel(); - } + for (final s in subscriptions) { + s.cancel(); + } - final subscription = state.stateStream?.listen((value) { - updateBuffering(value.buffering); - updateBuffer(value.buffer); - updatePlaying(value.playing); - updatePosition(value.position); - updateDuration(value.duration); + final subscription = state.stateStream?.listen((value) { + updateBuffering(value.buffering); + updateBuffer(value.buffer); + updatePlaying(value.playing); + updatePosition(value.position); + updateDuration(value.duration); + }); + + if (subscription != null) { + subscriptions.add(subscription); + } }); - - if (subscription != null) { - subscriptions.add(subscription); - } } Future updateBuffering(bool event) async => diff --git a/lib/wrappers/media_control_wrapper.dart b/lib/wrappers/media_control_wrapper.dart index 621d006..7c7a687 100644 --- a/lib/wrappers/media_control_wrapper.dart +++ b/lib/wrappers/media_control_wrapper.dart @@ -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/video_player_provider.dart'; 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/wrappers/players/base_player.dart'; import 'package:fladder/wrappers/players/lib_mdk.dart' @@ -54,8 +53,6 @@ class MediaControlsWrapper extends BaseAudioHandler implements VideoPlayerContro bool initializedWrapper = false; - final Debouncer debouncer = Debouncer(const Duration(seconds: 2)); - Future init() async { if (!initializedWrapper) { initializedWrapper = true; @@ -77,15 +74,13 @@ class MediaControlsWrapper extends BaseAudioHandler implements VideoPlayerContro ); } - debouncer.run(() { - final player = switch (ref.read(videoPlayerSettingsProvider).wantedPlayer) { - PlayerOptions.libMDK => LibMDK(), - PlayerOptions.libMPV => LibMPV(), - PlayerOptions.nativePlayer => NativePlayer(), - }; + final player = switch (ref.read(videoPlayerSettingsProvider).wantedPlayer) { + PlayerOptions.libMDK => LibMDK(), + PlayerOptions.libMPV => LibMPV(), + PlayerOptions.nativePlayer => NativePlayer(), + }; - setup(player); - }); + setup(player); } Future dispose() async => _player?.dispose();