From a2c03bc4c183a094d019762334f44ce6a9082b1a Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Sun, 28 Oct 2018 21:05:46 +0100 Subject: Add --preload option. --- src/inkview-window.cpp | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'src/inkview-window.cpp') diff --git a/src/inkview-window.cpp b/src/inkview-window.cpp index 7f4826ae6..6567828cd 100644 --- a/src/inkview-window.cpp +++ b/src/inkview-window.cpp @@ -23,17 +23,25 @@ InkviewWindow::InkviewWindow(const Gio::Application::type_vec_files files, bool fullscreen, bool recursive, int timer, - double scale) + double scale, + bool preload + ) : _files(files) , _fullscreen(fullscreen) , _recursive(recursive) , _timer(timer) , _scale(scale) + , _preload(preload) , _index(-1) , _view(nullptr) , _controlwindow(nullptr) { _files = create_file_list(_files); + + if (_preload) { + preload_documents(); + } + _documents.resize( _files.size(), nullptr); // We keep _documents and _files in sync. // Callbacks @@ -167,6 +175,24 @@ InkviewWindow::load_document() return document; } + + +void +InkviewWindow::preload_documents() +{ + for (auto it =_files.begin(); it != _files.end(); ) { + + SPDocument* document = + SPDocument::createNewDoc ((*it)->get_parse_name().c_str(), true, false); + if (document) { + _documents.push_back(document); + ++it; + } else { + it = _files.erase(it); + } + } +} + static std::string window_markup = R"( -- cgit v1.2.3