Revision 818d802...

Go back to digest for 23rd February 2014

Features in User Interface

Aaron J. Seigo committed changes in [sprinter] /:

implement paged results

a BIG rather non-atomic commit, but it's unfortunately all intertwined:

* syncedMatches in RunnerSessionData needs to be sync'd across threads always
* that means more locks, including reads, particularly matches()
* this locks from the GUI thread when the sync is happening,
which means the lock must be recursive
* syncMatches now has to operate on an offset
* setMatches has to operate on an offset
* RunnerSessionThreaed::requestFurtherMatches -> continueMatching, for clarity
* RunnerSessionThread::startQuery can optionally clear matchers or not
* this allows only clearing when fetching more when the previous cycle has completed
(fetching more when the runner hasn't returned yet as it is doesn't make sense)

this is all predicated on the idea that fetching more results is alaways
in series: it makes no sense to fetch more results if previous results haven't
been received .. and random access paging doesn't make sense either since
with multiple runners possibly in action with undetermined results it is
not possible to know what "page 10" means globally, so one can only ever
ask for more matches

File Changes

Modified 6 files
  •   sprinter/querysession.cpp
  •   sprinter/querysessionthread_p.cpp
  •   sprinter/querysessionthread_p.h
  •   sprinter/runnersessiondata.cpp
  •   sprinter/runnersessiondata.h
  •   sprinter/runnersessiondata_p.h
6 files changed in total