fix(ci): stabilize analyzer and linux builds
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user