void Loader::Impl::createPixmap()
{
- if (!cached_item_.get() || !params_.display || status_ != Loaded)
+ if (!params_.display || status_ != Loaded)
return;
+ if (!cached_item_.get()) {
+ LYXERR(Debug::GRAPHICS, "pixmap not cached yet");
+ return;
+ }
+
+ if (!cached_item_->image()) {
+ // There must have been a problem reading the file.
+ LYXERR(Debug::GRAPHICS, "Graphics file not loaded.");
+ return;
+ }
+
image_.reset(cached_item_->image()->clone());
bool const success = image_->setPixmap(params_);
if (status_ != WaitingToLoad)
return;
- if (cached_item_->tryDisplayFormat())
+ if (cached_item_->tryDisplayFormat()) {
+ status_ = Loaded;
+ createPixmap();
return;
+ }
LoaderQueue::get().touch(cached_item_);
}