]> cloud.milkyroute.net Git - dolphin.git/commit
Simplify handling of preview jobs
authorFrank Reininghaus <frank78ac@googlemail.com>
Thu, 20 Jun 2013 16:10:07 +0000 (18:10 +0200)
committerFrank Reininghaus <frank78ac@googlemail.com>
Thu, 20 Jun 2013 16:10:07 +0000 (18:10 +0200)
commit4b8c4124cb39d1b6b109ff6dbdb6536a0f2d408b
treefe80b5ee980d3f6e871329c09b43f51d59d60e51
parentfda88516e9c32ed93cb4fe47a3a9a9bf2aecc456
Simplify handling of preview jobs

This patch changes two things about the way we handle the preview jobs:

(a) Rather than passing a KFileItemList to startPreviewJob(),
    remembering the leftovers in the member variable
    m_pendingPreviewItems and then starting a new preview job for
    these, we append items that need a preview to this member, and let
    startPreviewJob() take its input from there. This simplifies the
    code greatly.

(b) To prevent that we start preview jobs with just one item and also
    that the GUI is frozen too long by startPreviewJob(), we take the
    following approach:

    * If the mime type of the first pending item is known, the function
      has probably been called by startUpdating(), which has determined
      mime types for the visible items already. startUpdating() has
      also blocked the GUI, so we just take all items at the beginning
      of the list with known mime type, and do not do any expensive
      mime type determination in startPreviewJob().

    * If the mime type of the first pending item is unknown, the
      function has probably been called by slotPreviewJobFinished(). In
      that case, we can afford to block the GUI for a short while, so
      we determine mime types for 200 ms.

REVIEW: 111008
src/kitemviews/kfileitemmodelrolesupdater.cpp
src/kitemviews/kfileitemmodelrolesupdater.h