diff options
| author | Maze Winther <mazewinther@gmail.com> | 2025-08-31 13:40:41 +0200 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2025-08-31 13:40:41 +0200 |
| commit | d747fb458d2fbebd2ce007132b43cd973bd5513f (patch) | |
| tree | d887d24a8728f4fe02c1b4b493570519613d92cc /apps/web/src/stores | |
| parent | e222f15d1dd50aa50be8c7424d86aa7fedf0defc (diff) | |
| download | opencut-d747fb458d2fbebd2ce007132b43cd973bd5513f.tar.gz | |
feat: make timeline renderer 15x faster
Diffstat (limited to 'apps/web/src/stores')
| -rw-r--r-- | apps/web/src/stores/media-store.ts | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/apps/web/src/stores/media-store.ts b/apps/web/src/stores/media-store.ts index 2b7cb62e..c9e29fff 100644 --- a/apps/web/src/stores/media-store.ts +++ b/apps/web/src/stores/media-store.ts @@ -3,6 +3,7 @@ import { storageService } from "@/lib/storage/storage-service"; import { useTimelineStore } from "./timeline-store"; import { generateUUID } from "@/lib/utils"; import { MediaType, MediaFile } from "@/types/media"; +import { videoCache } from "@/lib/video-cache"; interface MediaStore { mediaFiles: MediaFile[]; @@ -165,6 +166,8 @@ export const useMediaStore = create<MediaStore>((set, get) => ({ const state = get(); const item = state.mediaFiles.find((media) => media.id === id); + videoCache.clearVideo(id); + // Cleanup object URLs to prevent memory leaks if (item?.url) { URL.revokeObjectURL(item.url); @@ -289,6 +292,8 @@ export const useMediaStore = create<MediaStore>((set, get) => ({ clearAllMedia: () => { const state = get(); + videoCache.clearAll(); + // Cleanup all object URLs state.mediaFiles.forEach((item) => { if (item.url) { |
