Пример #1
0
void
pdf_debugstore(pdf_store *store)
{
	pdf_item *item;
	pdf_item *next;
	struct refkey *key;
	int i;

	printf("-- resource store contents --\n");

	for (i = 0; i < fz_hashlen(store->hash); i++)
	{
		key = fz_hashgetkey(store->hash, i);
		item = fz_hashgetval(store->hash, i);
		if (key && item)
		{
			printf("store[%d] (%d %d R) = %p\n", i, key->oid, key->gen, item->val);
		}
	}

	for (item = store->root; item; item = next)
	{
		next = item->next;
		printf("store[*] ");
		fz_debugobj(item->key);
		printf(" = %p\n", item->val);
	}

	store->root = nil;
}
Пример #2
0
void
pdf_emptystore(pdf_store *store)
{
	pdf_item *item;
	pdf_item *next;
	struct refkey *key;
	int i;

	for (i = 0; i < fz_hashlen(store->hash); i++)
	{
		key = fz_hashgetkey(store->hash, i);
		item = fz_hashgetval(store->hash, i);
		if (item)
		{
			fz_dropobj(item->key);
			dropitem(key->kind, item->val);
			fz_free(item);
		}
	}

	fz_emptyhash(store->hash);

	for (item = store->root; item; item = next)
	{
		next = item->next;
		fz_dropobj(item->key);
		dropitem(item->kind, item->val);
		fz_free(item);
	}

	store->root = nil;
}
Пример #3
0
void
pdf_emptystore(pdf_store *store)
{
	pdf_item *item;
	pdf_item *next;
	struct refkey *key;
	void *val;
	int i;
	for (i = 0; i < fz_hashlen(store->hash); i++)
	{
		key = fz_hashgetkey(store->hash, i);
		val = fz_hashgetval(store->hash, i);
		if (val) {
#ifdef PSP
			if (key->kind == PDF_KIMAGE)
				printf("es 1.2 - I %p\n", val);
#endif
			dropitem(key->kind, val);
		}
	}
	fz_emptyhash(store->hash);
	for (item = store->root; item; item = next)
	{
		next = item->next;
		fz_dropobj(item->key);
		dropitem(item->kind, item->val);
		fz_free(item);
	}
	store->root = nil;
}
Пример #4
0
void
pdf_evictageditems(pdf_store *store)
{
	pdf_item *item;
	pdf_item *next;
	pdf_item *prev;
	struct refkey *key;
	int i;

	for (i = 0; i < fz_hashlen(store->hash); i++)
	{
		key = fz_hashgetkey(store->hash, i);
		item = fz_hashfind(store->hash, key);
		if (item && item->age > itemmaxage(item->kind))
		{
			fz_hashremove(store->hash, key);
			evictitem(item);
		}
	}

	prev = nil;
	for (item = store->root; item; item = next)
	{
		next = item->next;
		if (item->age > itemmaxage(item->kind))
		{
			if (!prev)
				store->root = next;
			else
				prev->next = next;
			evictitem(item);
		}
		else
			prev = item;
	}
}