fix(ci): stabilize analyzer and linux builds

This commit is contained in:
edde746
2026-05-20 19:10:46 +02:00
parent 5d6f34f756
commit f565684842
4 changed files with 46 additions and 108 deletions
+42 -4
View File
@@ -554,8 +554,27 @@ jobs:
- name: Install Linux dependencies
run: |
sudo apt-get update
sudo apt-get install -y clang cmake meson ninja-build pkg-config nasm libgtk-3-dev libevdev-dev liblzma-dev libstdc++-12-dev libasound2-dev libass-dev libfreetype-dev libfontconfig-dev libfribidi-dev libharfbuzz-dev libepoxy-dev libegl-dev libgl-dev libgnutls28-dev libpipewire-0.3-dev libva-dev libvdpau-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev libxss-dev libxpresent-dev libxkbcommon-dev libpulse-dev libdbus-1-dev libdrm-dev libgbm-dev libwayland-dev wayland-protocols liblcms2-dev ruby ruby-dev rubygems build-essential rpm libarchive-tools imagemagick libcurl4-openssl-dev
packages=(
clang cmake meson ninja-build pkg-config nasm libgtk-3-dev libevdev-dev liblzma-dev
libstdc++-12-dev libasound2-dev libass-dev libfreetype-dev libfontconfig-dev libfribidi-dev
libharfbuzz-dev libepoxy-dev libegl-dev libgl-dev libgnutls28-dev libpipewire-0.3-dev
libva-dev libvdpau-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev
libxss-dev libxpresent-dev libxkbcommon-dev libpulse-dev libdbus-1-dev libdrm-dev
libgbm-dev libwayland-dev wayland-protocols liblcms2-dev ruby ruby-dev rubygems
build-essential rpm libarchive-tools imagemagick libcurl4-openssl-dev
)
for attempt in 1 2 3; do
if sudo apt-get update -o Acquire::Retries=3 && sudo apt-get install -y -o Acquire::Retries=3 "${packages[@]}"; then
exit 0
fi
sudo apt-get clean
sudo rm -rf /var/lib/apt/lists/*
sleep $((attempt * 15))
done
exit 1
- name: Cache libmpv build
id: libmpv-cache
@@ -669,8 +688,27 @@ jobs:
- name: Install Linux dependencies
run: |
sudo apt-get update
sudo apt-get install -y clang cmake meson ninja-build pkg-config nasm libgtk-3-dev libevdev-dev liblzma-dev libstdc++-12-dev libasound2-dev libass-dev libfreetype-dev libfontconfig-dev libfribidi-dev libharfbuzz-dev libepoxy-dev libegl-dev libgl-dev libgnutls28-dev libpipewire-0.3-dev libva-dev libvdpau-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev libxss-dev libxpresent-dev libxkbcommon-dev libpulse-dev libdbus-1-dev libdrm-dev libgbm-dev libwayland-dev wayland-protocols liblcms2-dev ruby ruby-dev rubygems build-essential rpm libarchive-tools imagemagick libcurl4-openssl-dev
packages=(
clang cmake meson ninja-build pkg-config nasm libgtk-3-dev libevdev-dev liblzma-dev
libstdc++-12-dev libasound2-dev libass-dev libfreetype-dev libfontconfig-dev libfribidi-dev
libharfbuzz-dev libepoxy-dev libegl-dev libgl-dev libgnutls28-dev libpipewire-0.3-dev
libva-dev libvdpau-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev
libxss-dev libxpresent-dev libxkbcommon-dev libpulse-dev libdbus-1-dev libdrm-dev
libgbm-dev libwayland-dev wayland-protocols liblcms2-dev ruby ruby-dev rubygems
build-essential rpm libarchive-tools imagemagick libcurl4-openssl-dev
)
for attempt in 1 2 3; do
if sudo apt-get update -o Acquire::Retries=3 && sudo apt-get install -y -o Acquire::Retries=3 "${packages[@]}"; then
exit 0
fi
sudo apt-get clean
sudo rm -rf /var/lib/apt/lists/*
sleep $((attempt * 15))
done
exit 1
- name: Cache libmpv build
id: libmpv-cache
+3 -3
View File
@@ -225,9 +225,9 @@ extension _VideoPlayerBuildMethods on VideoPlayerScreenState {
return Video(
player: player!,
controls: (context) => plexVideoControlsBuilder(
player!,
_currentMetadata,
controls: (context) => PlexVideoControls(
player: player!,
metadata: _currentMetadata,
onNext: onNext,
onPrevious: onPrevious,
availableVersions: _availableVersions,
+1 -2
View File
@@ -201,8 +201,7 @@ class SideNavigationRailState extends State<SideNavigationRail> with MountedSetS
static const double _defaultIconSize = 22.0;
static const Duration _collapseDelay = Duration(milliseconds: 150);
static double collapsedWidthForContext(BuildContext context) =>
PlatformDetector.isTV() ? tvCollapsedWidth : collapsedWidth;
static double collapsedWidthForContext(BuildContext _) => PlatformDetector.isTV() ? tvCollapsedWidth : collapsedWidth;
static double horizontalPaddingForContext(BuildContext context, {required bool isCollapsed}) {
if (!isCollapsed) return _horizontalPadding;
@@ -76,105 +76,6 @@ part 'parts/playback_input.dart';
part 'parts/track_controls.dart';
part 'parts/visibility.dart';
/// Custom video controls builder for Plex with chapter, audio, and subtitle support
Widget plexVideoControlsBuilder(
Player player,
MediaItem metadata, {
VoidCallback? onNext,
VoidCallback? onPrevious,
List<MediaVersion>? availableVersions,
int? selectedMediaIndex,
String? selectedMediaSourceId,
TranscodeQualityPreset selectedQualityPreset = TranscodeQualityPreset.original,
bool serverSupportsTranscoding = false,
bool isTranscoding = false,
bool isOfflinePlayback = false,
List<MediaAudioTrack> sourceAudioTracks = const [],
int? selectedAudioStreamId,
List<MediaSubtitleTrack> sourceSubtitleTracks = const [],
int? selectedSubtitleStreamId,
int? sourcePartId,
VoidCallback? onTogglePIPMode,
int boxFitMode = 0,
VoidCallback? onCycleBoxFitMode,
VoidCallback? onCycleAudioTrack,
VoidCallback? onCycleSubtitleTrack,
Function(AudioTrack)? onAudioTrackChanged,
Function(SubtitleTrack)? onSubtitleTrackChanged,
Function(SubtitleTrack)? onSecondarySubtitleTrackChanged,
Future<void> Function(Duration position)? onSeekRequested,
Function(Duration position)? onSeekCompleted,
VoidCallback? onBack,
void Function({required bool skipAutoPlayCountdown})? onReachedEnd,
bool canControl = true,
ValueNotifier<bool>? hasFirstFrame,
FocusNode? playNextFocusNode,
ValueNotifier<bool>? controlsVisible,
ShaderService? shaderService,
VoidCallback? onShaderChanged,
ScrubFrame? Function(Duration time)? thumbnailDataBuilder,
bool isLive = false,
String? liveChannelName,
CaptureBuffer? captureBuffer,
bool isAtLiveEdge = true,
double streamStartEpoch = 0,
int? currentPositionEpoch,
ValueChanged<int>? onLiveSeek,
VoidCallback? onJumpToLive,
bool isAmbientLightingEnabled = false,
VoidCallback? onToggleAmbientLighting,
required PlayerToastController toastController,
}) {
return PlexVideoControls(
player: player,
metadata: metadata,
toastController: toastController,
onNext: onNext,
onPrevious: onPrevious,
availableVersions: availableVersions ?? [],
selectedMediaIndex: selectedMediaIndex ?? 0,
selectedMediaSourceId: selectedMediaSourceId,
selectedQualityPreset: selectedQualityPreset,
serverSupportsTranscoding: serverSupportsTranscoding,
isTranscoding: isTranscoding,
isOfflinePlayback: isOfflinePlayback,
sourceAudioTracks: sourceAudioTracks,
selectedAudioStreamId: selectedAudioStreamId,
sourceSubtitleTracks: sourceSubtitleTracks,
selectedSubtitleStreamId: selectedSubtitleStreamId,
sourcePartId: sourcePartId,
boxFitMode: boxFitMode,
onTogglePIPMode: onTogglePIPMode,
onCycleBoxFitMode: onCycleBoxFitMode,
onCycleAudioTrack: onCycleAudioTrack,
onCycleSubtitleTrack: onCycleSubtitleTrack,
onAudioTrackChanged: onAudioTrackChanged,
onSubtitleTrackChanged: onSubtitleTrackChanged,
onSecondarySubtitleTrackChanged: onSecondarySubtitleTrackChanged,
onSeekRequested: onSeekRequested,
onSeekCompleted: onSeekCompleted,
onBack: onBack,
onReachedEnd: onReachedEnd,
canControl: canControl,
hasFirstFrame: hasFirstFrame,
playNextFocusNode: playNextFocusNode,
controlsVisible: controlsVisible,
shaderService: shaderService,
onShaderChanged: onShaderChanged,
thumbnailDataBuilder: thumbnailDataBuilder,
isLive: isLive,
liveChannelName: liveChannelName,
captureBuffer: captureBuffer,
isAtLiveEdge: isAtLiveEdge,
streamStartEpoch: streamStartEpoch,
currentPositionEpoch: currentPositionEpoch,
onLiveSeek: onLiveSeek,
onJumpToLive: onJumpToLive,
isAmbientLightingEnabled: isAmbientLightingEnabled,
onToggleAmbientLighting: onToggleAmbientLighting,
);
}
@visibleForTesting
({
List<MediaVersion> availableVersions,