fix: Moved Debouncer for player setup

This commit is contained in:
PartyDonut 2025-10-09 15:25:26 +02:00
parent dd98bad61c
commit 9cf5e99184
2 changed files with 14 additions and 15 deletions

View file

@ -15,7 +15,6 @@ import 'package:fladder/providers/shared_provider.dart';
import 'package:fladder/providers/user_provider.dart'; import 'package:fladder/providers/user_provider.dart';
import 'package:fladder/providers/video_player_provider.dart'; import 'package:fladder/providers/video_player_provider.dart';
import 'package:fladder/src/player_settings_helper.g.dart' as pigeon; import 'package:fladder/src/player_settings_helper.g.dart' as pigeon;
import 'package:fladder/util/debouncer.dart';
final videoPlayerSettingsProvider = final videoPlayerSettingsProvider =
StateNotifierProvider<VideoPlayerSettingsProviderNotifier, VideoPlayerSettingsModel>((ref) { StateNotifierProvider<VideoPlayerSettingsProviderNotifier, VideoPlayerSettingsModel>((ref) {
@ -29,8 +28,6 @@ class VideoPlayerSettingsProviderNotifier extends StateNotifier<VideoPlayerSetti
final Ref ref; final Ref ref;
final Debouncer debouncer = Debouncer(const Duration(seconds: 2));
@override @override
set state(VideoPlayerSettingsModel value) { set state(VideoPlayerSettingsModel value) {
final oldState = super.state; final oldState = super.state;
@ -38,7 +35,6 @@ class VideoPlayerSettingsProviderNotifier extends StateNotifier<VideoPlayerSetti
ref.read(sharedUtilityProvider).videoPlayerSettings = value; ref.read(sharedUtilityProvider).videoPlayerSettings = value;
if (!kIsWeb && Platform.isAndroid) { if (!kIsWeb && Platform.isAndroid) {
final userData = ref.read(userProvider); final userData = ref.read(userProvider);
pigeon.PlayerSettingsPigeon().sendPlayerSettings( pigeon.PlayerSettingsPigeon().sendPlayerSettings(
pigeon.PlayerSettings( pigeon.PlayerSettings(
enableTunneling: value.enableTunneling, enableTunneling: value.enableTunneling,
@ -65,11 +61,9 @@ class VideoPlayerSettingsProviderNotifier extends StateNotifier<VideoPlayerSetti
); );
} }
debouncer.run(() { if (!oldState.playerSame(value)) {
if (!oldState.playerSame(value)) { ref.read(videoPlayerProvider.notifier).init();
ref.read(videoPlayerProvider.notifier).init(); }
}
});
} }
void setScreenBrightness(double? value) async { void setScreenBrightness(double? value) async {

View file

@ -18,6 +18,7 @@ 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'
@ -53,6 +54,8 @@ 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;
@ -74,13 +77,15 @@ class MediaControlsWrapper extends BaseAudioHandler implements VideoPlayerContro
); );
} }
final player = switch (ref.read(videoPlayerSettingsProvider).wantedPlayer) { debouncer.run(() {
PlayerOptions.libMDK => LibMDK(), final player = switch (ref.read(videoPlayerSettingsProvider).wantedPlayer) {
PlayerOptions.libMPV => LibMPV(), PlayerOptions.libMDK => LibMDK(),
PlayerOptions.nativePlayer => NativePlayer(), PlayerOptions.libMPV => LibMPV(),
}; PlayerOptions.nativePlayer => NativePlayer(),
};
setup(player); setup(player);
});
} }
Future<void> dispose() async => _player?.dispose(); Future<void> dispose() async => _player?.dispose();