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:
foxyzandClaude Opus 5.5 committed 2026-10-15 18:01:44 +03:00
1 parent e537f9d5f8
commit ea607c1a52
29 files changed
+873 -168

No files matched your search

+9
View File
@@ -2,6 +2,8 @@
#include <flutter/flutter_view_controller.h>
#include <windows.h>
#include <cstdio>
#include "flutter_window.h"
#include "utils.h"
@@ -38,6 +40,13 @@ int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
::DispatchMessage(&msg);
}
// The window closed through WM_CLOSE (the app disposed its mpv players
// and left first), so the engine and plugins were torn down inside the
// loop. End here without the CRT exit and DLL_PROCESS_DETACH: a driver
// or libmpv detach handler can hang waiting on threads that are gone.
// Nothing is left to flush but stdio.
fflush(nullptr);
::CoUninitialize();
::TerminateProcess(::GetCurrentProcess(), EXIT_SUCCESS);
return EXIT_SUCCESS;
}