Remove page cache, proper 64 bit filesize and apply upstream 1648

This commit is contained in:
jpirnay
2026-04-15 17:20:36 +02:00
parent a5dd44b3e0
commit 201aef565b
8 changed files with 216 additions and 624 deletions
+3 -19
View File
@@ -14,14 +14,11 @@
bool Xtc::load() {
LOG_DBG("XTC", "Loading XTC: %s", filepath.c_str());
// Ensure the per-book cache exists before the parser tries to create page_table.bin.
setupCacheDir();
// Initialize parser
parser.reset(new xtc::XtcParser());
// Open XTC file and initialize its cache-backed page table
xtc::XtcError err = parser->open(filepath.c_str(), cachePath.c_str());
// Open XTC file
xtc::XtcError err = parser->open(filepath.c_str());
if (err != xtc::XtcError::OK) {
LOG_ERR("XTC", "Failed to load: %s", xtc::errorToString(err));
parser.reset();
@@ -106,7 +103,7 @@ bool Xtc::hasChapters() const {
return parser->hasChapters();
}
const std::vector<xtc::ChapterInfo>& Xtc::getChapters() const {
const std::vector<xtc::ChapterInfo>& Xtc::getChapters() {
static const std::vector<xtc::ChapterInfo> kEmpty;
if (!loaded || !parser) {
return kEmpty;
@@ -202,7 +199,6 @@ bool Xtc::generateCoverBmp() const {
uint8_t* rowBuffer = static_cast<uint8_t*>(malloc(dstRowSize));
if (!rowBuffer) {
free(pageBuffer);
coverBmp.close();
return false;
}
@@ -258,7 +254,6 @@ bool Xtc::generateCoverBmp() const {
}
}
coverBmp.close();
free(pageBuffer);
LOG_DBG("XTC", "Generated cover BMP: %s", getCoverBmpPath().c_str());
@@ -319,9 +314,7 @@ bool Xtc::generateThumbBmp(int height) const {
size_t bytesRead = src.read(buffer, sizeof(buffer));
dst.write(buffer, bytesRead);
}
dst.close();
}
src.close();
}
LOG_DBG("XTC", "Copied cover to thumb (no scaling needed)");
return Storage.exists(getThumbBmpPath(height).c_str());
@@ -375,7 +368,6 @@ bool Xtc::generateThumbBmp(int height) const {
uint8_t* rowBuffer = static_cast<uint8_t*>(malloc(rowSize));
if (!rowBuffer) {
free(pageBuffer);
thumbBmp.close();
return false;
}
@@ -482,7 +474,6 @@ bool Xtc::generateThumbBmp(int height) const {
}
free(rowBuffer);
thumbBmp.close();
free(pageBuffer);
LOG_DBG("XTC", "Generated thumb BMP (%dx%d): %s", thumbWidth, thumbHeight, getThumbBmpPath(height).c_str());
@@ -545,11 +536,4 @@ xtc::XtcError Xtc::getLastError() const {
return xtc::XtcError::FILE_NOT_FOUND;
}
return parser->getLastError();
}
void Xtc::prefetchPages(uint32_t pageIndex) const {
if (!loaded || !parser) {
return;
}
parser->prefetchWindow(pageIndex);
}