v0.4.13: fix delete-while-playing race, /videoCache, config additions, name resolution
Some checks failed
build / build (push) Has been cancelled
Some checks failed
build / build (push) Has been cancelled
Crash fix (4K delete EXCEPTION_ACCESS_VIOLATION): - JavaCvBackend.stopWorker() no longer calls grabber.close() from caller thread. Only flips running=false, stops/flushes audio line, then interrupt+join(2s). The worker's own finally still closes grabber from the decoder thread, so the av_frame native plane is never freed mid-memCopy. - Validate memCopy length against ByteBuffer.capacity() AND width*height*4 before copying, and re-check running/closed inside the frameLock. Config: - max_preload_mb (default 1024) — replaces the hard-coded 512 MB cap in VideoCache. Pushed to clients at join via CachePolicyPayload. - render_distance_blocks (default 128) — replaces the hard-coded 128 in VideoAnchorRenderer.getViewDistance(). Mirrored client-side via ClientPolicy. Command rename: /videopreload → /videoCache add|list|remove - Persistent named index in cache_entries (server config). - /videoCache list prints clickable URLs (ClickEvent.OpenUrl). - /videoCache remove broadcasts DeleteCachePayload so each client purges its disk cache file. Name resolution: - /videoPlace ... <urlOrName> and the GUI save path both accept a /videoCache name in place of an http(s) URL; VideoPlayerConfig.resolveUrlOrName() does the lookup server-side before persisting to the anchor BE. Cleanup: - Drop the lowercase Brigadier aliases (videoplace, videostick, videodelete, videomute) — keep camelCase only.
This commit is contained in:
@@ -5,7 +5,7 @@ org.gradle.configuration-cache=false
|
||||
|
||||
# Mod
|
||||
mod_id=video_player
|
||||
mod_version=0.4.12
|
||||
mod_version=0.4.13
|
||||
maven_group=com.ejclaw.videoplayer
|
||||
archives_base_name=video_player
|
||||
|
||||
|
||||
Reference in New Issue
Block a user