notedeck

One damus client to rule them all
git clone git://jb55.com/notedeck
Log | Files | Refs | README | LICENSE

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:
Mcrates/notedeck/src/imgcache.rs | 25+++++++++++++++++++++++--
Mcrates/notedeck/src/lib.rs | 2+-
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,