diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-03 19:17:04 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-03 19:17:04 +0300 |
| commit | 30c2b0fe8232cc748ab2bded6ab4d76febe32425 (patch) | |
| tree | 985578b326a1ff8fe7af395bf08471857376b8fc /web/css/player.css | |
| parent | 687b86cdeef2192272f0945ddd496322a9113f9e (diff) | |
fix(admin): fix rescan goroutine lifecycle and race on shared ScanProgress
- Protect adminService scan state (cancel func + progress pointer) with sync.Mutex.
- Allocate fresh ScanProgress per trigger and pass it to the scanner,
eliminating races on the previously shared progress struct.
- Cancel previous scan context before starting a new one.
- Add tests for cancellation, fresh progress per scan, concurrent triggers,
and empty progress when never started.
- Fix race-prone tests by polling Running==true before waiting for completion.
Diffstat (limited to 'web/css/player.css')
| -rw-r--r-- | web/css/player.css | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/web/css/player.css b/web/css/player.css index c6070f9..0f468f9 100644 --- a/web/css/player.css +++ b/web/css/player.css @@ -137,6 +137,27 @@ background: var(--player-stage-bg); } +/* Image viewer inside player */ +.player .media-image { + width: 100%; + height: 100%; + object-fit: contain; + display: block; + transition: transform 0.15s ease; + user-select: none; +} +.player .media-image.hidden { + display: none; +} + +/* Show/hide controls per media type */ +.player.has-image .video-only { + display: none !important; +} +.player:not(.has-image) .image-only { + display: none !important; +} + /* Overlay controls */ .player .controls { flex: 0 0 auto; |
