diff options
author | Michael Vrhel <michael.vrhel@artifex.com> | 2014-09-09 16:31:31 -0700 |
---|---|---|
committer | Michael Vrhel <michael.vrhel@artifex.com> | 2014-09-09 16:39:41 -0700 |
commit | 7ea99e3a8951e265d1437a77dcfee069de0edf76 (patch) | |
tree | 8e113fea67931064e2a9338d67b26aaabab27512 /platform/winrt/mupdfwinrt/Cache.cpp | |
parent | 8a9519f2183b64fe220bcb1f6acedbe6acc190cd (diff) | |
download | mupdf-7ea99e3a8951e265d1437a77dcfee069de0edf76.tar.xz |
Rename of winrt to windows due to presence on gsview in this folder.
The contents of this folder will contain both winrt and gsview projects
which are shared in a common visual studio 2013 solution.
Diffstat (limited to 'platform/winrt/mupdfwinrt/Cache.cpp')
-rw-r--r-- | platform/winrt/mupdfwinrt/Cache.cpp | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/platform/winrt/mupdfwinrt/Cache.cpp b/platform/winrt/mupdfwinrt/Cache.cpp deleted file mode 100644 index b129710f..00000000 --- a/platform/winrt/mupdfwinrt/Cache.cpp +++ /dev/null @@ -1,120 +0,0 @@ -#include "pch.h" -#include "Cache.h" - -Cache::Cache(void) -{ - this->size = 0; - this->head = NULL; - this->tail = NULL; -} - -Cache::~Cache(void) -{ -} - -void Cache::Empty(fz_context *mu_ctx) -{ - if (this != nullptr) { - cache_entry_t *curr_entry = this->head; - - while (curr_entry != NULL) - { - cache_entry_t *old_entry = curr_entry; - curr_entry = old_entry->next; - fz_drop_display_list(mu_ctx, old_entry->dlist); - - delete old_entry; - } - this->size = 0; - this->head = NULL; - this->tail = NULL; - } -} - -void Cache::Add(int value, int width_in, int height_in, fz_display_list *dlist, - fz_context *mu_ctx) -{ - std::lock_guard<std::mutex> lock(cache_lock); - - /* If full, then delete the tail */ - if (size >= MAX_DISPLAY_CACHE_SIZE) - { - cache_entry_t *curr_entry = this->tail; - cache_entry_t *prev_entry = curr_entry->prev; - - if (prev_entry != NULL) - prev_entry->next = NULL; - else - head = NULL; - - tail = prev_entry; - - /* Decrement the caches rc of this list */ - fz_drop_display_list(mu_ctx, curr_entry->dlist); - delete curr_entry; - size--; - } - - /* Make a new entry and stick at head */ - cache_entry_t *new_entry = new cache_entry_t; - - new_entry->dlist = dlist; - new_entry->index = value; - new_entry->width = width_in; - new_entry->height = height_in; - new_entry->prev = NULL; - if (head == NULL) - { - new_entry->next = NULL; - head = new_entry; - tail = new_entry; - } - else - { - new_entry->next = head; - head->prev = new_entry; - head = new_entry; - } - size++; - /* We are going to use this item now */ - fz_keep_display_list(mu_ctx, new_entry->dlist); -} - -fz_display_list* Cache::Use(int value, int *width_out, int *height_out, fz_context *mu_ctx) -{ - std::lock_guard<std::mutex> lock(cache_lock); - cache_entry_t *curr_entry = this->head; - - while (curr_entry != NULL) - { - if (curr_entry->index == value) - break; - curr_entry = curr_entry->next; - } - if (curr_entry != NULL) - { - fz_keep_display_list(mu_ctx, curr_entry->dlist); - /* Move this to the front */ - if (curr_entry != head) - { - cache_entry_t *prev_entry = curr_entry->prev; - cache_entry_t *next_entry = curr_entry->next; - prev_entry->next = next_entry; - - if (next_entry != NULL) - next_entry->prev = prev_entry; - else - tail = prev_entry; - - curr_entry->prev = NULL; - curr_entry->next = head; - head->prev = curr_entry; - head = curr_entry; - } - *width_out = curr_entry->width; - *height_out = curr_entry->height; - return curr_entry->dlist; - } - else - return NULL; -} |