Information Panel: fix race condition (caused by multiple running PreviewJobs)
Review Request #114561 - Created Dec. 20, 2013 and submitted
In InformationPanelContent::showItem(const KFileItem& item) or InformationPanelContent::showItems(const KFileItemList& items), we either load an icon in the panel, or we start a PreviewJob to get a preview for the current item. However, if a long-running PreviewJob is active already, we load the preview that it creates later on, even though the preview might be for an item that is not hovered any more. To fix this, we can keep a pointer to the last preview job, and kill it before a new item is being shown in the panel, or a new preview job is started.
I couldn't really test it yet because my development user does not have the PDF thumbnailer (yet), and previews for other files are generated so fast here that it's hard to see the race. But I verified that the panel still works as expected when hovering items.
|m_pendingPreview makes no sense anymore with this patch, so we can safely remove it I think.||Emmanuel Pescosta|
Review request changed
Updated the patch according to Emmanuel's suggestions.
Revision 3 (+29 -19)