aboutsummaryrefslogtreecommitdiff
path: root/src/dicache.h
diff options
context:
space:
mode:
authorJorge Arellano Cid <jcid@dillo.org>2014-06-24 08:19:18 -0400
committerJorge Arellano Cid <jcid@dillo.org>2014-06-24 08:19:18 -0400
commit855bdb7290c4d82af4831596d39b73efe2a0f6dc (patch)
tree3aacc905439e80884dc797b77c320801ffae0dc6 /src/dicache.h
parenta53102d108d53fec583d73f3d4349b78a48a714d (diff)
Moved dicache entry removal to a_Dicache_cleanup()
This allows keeping the decompressed image entry until a_Dicache_cleanup() removes it. With the added SurvCleanup variable that controls how many cleanup passes the entry is kept, it is now possible to tune the dicache. For instance: SurvCleanup=0 same as without patch (negligible difference). SurvCleanup=1 allows Back and Forward reuse entries for adjacent pages. SurvCleanup=2 all the above, plus one more pass of lifetime. The default is SurvCleanup=3 (experimental). Example: If you read a newspaper with lots of images, this caching allows to click an article, read it, and go back *quickly* using the same tab. It is experimental because there may be other simple approaches that serve well/better these kind of usage patterns.
Diffstat (limited to 'src/dicache.h')
-rw-r--r--src/dicache.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/dicache.h b/src/dicache.h
index f1819b12..0390d214 100644
--- a/src/dicache.h
+++ b/src/dicache.h
@@ -26,8 +26,9 @@ typedef enum {
typedef struct DICacheEntry {
DilloUrl *url; /* Image URL for this entry */
- uint_t width, height; /* As taken from image data */
DilloImgType type; /* Image type */
+ uint_t width, height; /* As taken from image data */
+ int SurvCleanup; /* Cleanup-pass survival for unused images */
uchar_t *cmap; /* Color map */
void *v_imgbuf; /* Void pointer to an Imgbuf object */
uint_t TotalSize; /* Amount of memory the image takes up */
@@ -38,9 +39,9 @@ typedef struct DICacheEntry {
int version; /* Version number, used for different
versions of the same URL image */
+ uint_t DecodedSize; /* Size of already decoded data */
CA_Callback_t Decoder; /* Client function */
void *DecoderData; /* Client function data */
- uint_t DecodedSize; /* Size of already decoded data */
struct DICacheEntry *next; /* Link to the next "newer" version */
} DICacheEntry;