summaryrefslogtreecommitdiff
path: root/winrt/mupdfwinrt/Cache.h
blob: 0763dba46c6f06f67972dc6af11ad59e07bb474f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#pragma once

#include <mutex>
extern "C" {
	#include "mupdf/fitz.h"
}

#define MAX_DISPLAY_CACHE_SIZE 3

typedef struct cache_entry_s cache_entry_t;

struct cache_entry_s
{
	fz_display_list *dlist;
	cache_entry_t *next;
	cache_entry_t *prev;
	int index;
};

class Cache
{
private:
	int size;
	cache_entry_t *head;
	cache_entry_t *tail;
	std::mutex cache_lock;

public:
	Cache(void);
	~Cache(void);
	fz_display_list* UseEntry(int value, fz_context *mu_ctx);
	void AddEntry(int value, fz_display_list *dlist, fz_context *mu_ctx);
	void Empty(fz_context *mu_ctx);
};