commit 13e626836587c3e4820df5f8095e03aa4734e783
parent b45a8930b1a5defd12dfc0861f5b1f0678425fed
Author: kernelkind <kernelkind@gmail.com>
Date: Sat, 22 Nov 2025 21:08:56 -0700
feat(media-loading): new TexturesCache
Signed-off-by: kernelkind <kernelkind@gmail.com>
Diffstat:
2 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/crates/notedeck/src/imgcache.rs b/crates/notedeck/src/imgcache.rs
@@ -1,6 +1,7 @@
-use crate::media::gif::ensure_latest_texture_from_cache;
+use crate::media::gif::{ensure_latest_texture_from_cache, AnimatedImgTexCache};
use crate::media::images::ImageType;
-use crate::media::AnimationMode;
+use crate::media::static_imgs::StaticImgTexCache;
+use crate::media::{AnimationMode, BlurCache};
use crate::urls::{UrlCache, UrlMimes};
use crate::ImageMetadata;
use crate::ObfuscationType;
@@ -104,6 +105,26 @@ impl TexturesCacheOld {
}
}
+pub struct TexturesCache {
+ pub static_image: StaticImgTexCache,
+ pub blurred: BlurCache,
+ pub animated: AnimatedImgTexCache,
+}
+
+impl TexturesCache {
+ pub fn new(base_dir: PathBuf) -> Self {
+ Self {
+ static_image: StaticImgTexCache::new(
+ base_dir.join(MediaCache::rel_dir(MediaCacheType::Image)),
+ ),
+ blurred: Default::default(),
+ animated: AnimatedImgTexCache::new(
+ base_dir.join(MediaCache::rel_dir(MediaCacheType::Gif)),
+ ),
+ }
+ }
+}
+
fn handle_occupied(state: &mut TextureStateInternal, use_loading: bool) {
let TextureStateInternal::Pending(promise) = state else {
return;
diff --git a/crates/notedeck/src/lib.rs b/crates/notedeck/src/lib.rs
@@ -56,7 +56,7 @@ pub use i18n::{CacheStats, FluentArgs, FluentValue, LanguageIdentifier, Localiza
pub use imgcache::{
get_render_state, Animation, AnimationOld, GifState, GifStateMap, ImageFrame, Images,
LatestTexture, LoadableTextureState, MediaCache, MediaCacheType, RenderState, TextureFrame,
- TextureState, TextureStateOld, TexturedImage, TexturesCacheOld,
+ TextureState, TextureStateOld, TexturedImage, TexturesCache, TexturesCacheOld,
};
pub use jobs::{
BlurhashParams, Job, JobError, JobIdOld, JobParams, JobParamsOwned, JobPool, JobState,