Stabilisation quick fixes: orderly close, visible version and update band, chat pop-ups on, Windows shaders and hwdec, render logs
- Close: hide the window, dispose every player, thumbnail job and the sound engine, leave, then close normally; Linux runner _exit (the NVIDIA EGL exit handler crashed 10/10 closes, 0/41 now); Windows tears down inside the message loop, then TerminateProcess; watchdogs. - Version under the Settings tab; an update band instead of a dot, never over a video; checks at start and every 4 hours. - Chat pop-ups default to All again. - Shader read-back compared as a list (old mpv joins with ','), so Windows stops turning shaders off; Windows hwdec auto-copy. - Render diagnostics (`mpv: render` lines); RAM-only demuxer cache pin silences the file-cache warning; a volume readout test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e537f9d5f8
commit
ea607c1a52
29 files changed
+873
-168
No files matched your search
@@ -68,14 +68,14 @@ void main() {
|
||||
coord.toasts.value = [];
|
||||
});
|
||||
|
||||
Future<void> pumpShell(WidgetTester tester, Size size) async {
|
||||
Future<void> pumpShell(WidgetTester tester, Size size, {UpdateController? updates}) async {
|
||||
tester.view.physicalSize = size;
|
||||
tester.view.devicePixelRatio = 1;
|
||||
addTearDown(tester.view.reset);
|
||||
await tester.pumpWidget(MaterialApp(
|
||||
theme: ThemeData.dark(),
|
||||
home: AppShell(
|
||||
updates: UpdateController(currentVersion: '0.0.0-dev'),
|
||||
updates: updates ?? UpdateController(currentVersion: '0.0.0-dev'),
|
||||
autoUpdateCheck: false,
|
||||
windowControls: false,
|
||||
videoBuilder: (context, controls) => const FakeVideo(),
|
||||
@@ -93,6 +93,36 @@ void main() {
|
||||
member('f', 'Finn'),
|
||||
];
|
||||
|
||||
group('version and update bar', () {
|
||||
testWidgets('the version under Settings; the bar on the tabs, off the full player until the video ends',
|
||||
(tester) async {
|
||||
final updates = UpdateController(currentVersion: '0.0.0-dev');
|
||||
await pumpShell(tester, const Size(1280, 800), updates: updates);
|
||||
expect(find.text('dev run'), findsOneWidget);
|
||||
expect(find.byKey(const ValueKey('update-bar')), findsNothing);
|
||||
updates.status.value = const UpdateStatus(UpdatePhase.available,
|
||||
manifest: UpdateManifest(version: '9.9.9', protocol: 1, url: 'http://x/a.tgz', notes: ''),
|
||||
canInstall: true);
|
||||
await tester.pumpAndSettle();
|
||||
expect(find.byKey(const ValueKey('update-bar')), findsOneWidget);
|
||||
online(party);
|
||||
await tester.pumpAndSettle();
|
||||
expect(find.byKey(const ValueKey('update-bar')), findsNothing);
|
||||
final r = coord.serverState.value!;
|
||||
coord.serverState.value = StateBroadcast(
|
||||
eventId: 2,
|
||||
transport: 'finished',
|
||||
position: 0,
|
||||
serverTime: r.serverTime,
|
||||
mediaId: r.mediaId,
|
||||
media: r.media,
|
||||
members: r.members,
|
||||
);
|
||||
await tester.pumpAndSettle();
|
||||
expect(find.byKey(const ValueKey('update-bar')), findsOneWidget);
|
||||
});
|
||||
});
|
||||
|
||||
group('party strip', () {
|
||||
testWidgets('offline: Join and Host, no party', (tester) async {
|
||||
await pumpShell(tester, const Size(1280, 800));
|
||||
|
||||
Reference in new issue
Block a user