add asynchronous vfs refresh
AbandonedPublic

Authored by nmel on Jan 6 2017, 4:57 PM.

Details

Reviewers
abika
janlepper
Group Reviewers
Krusader
Maniphest Tasks
T5017: Avoid nested event dispatching
Summary

This is still unfinished.
For early review.

Diff Detail

Lint
Lint Skipped
Unit
Unit Tests Skipped
janlepper updated this revision to Diff 9802.Jan 6 2017, 4:57 PM
janlepper retitled this revision from to add asynchronous vfs refresh.
janlepper updated this object.
janlepper edited the test plan for this revision. (Show Details)
janlepper added a reviewer: abika.
janlepper set the repository for this revision to R167 Krusader.
janlepper added a project: Krusader.
janlepper changed the edit policy from "All Users" to "Krusader (Project)".
janlepper changed the visibility from "Krusader (Project)" to "Public (No Login Required)".Jan 9 2017, 9:11 PM
janlepper added a dependent revision: Restricted Differential Revision.Jan 10 2017, 12:38 AM
janlepper updated this revision to Diff 9953.Jan 10 2017, 2:23 AM
janlepper removed R167 Krusader as the repository for this revision.
janlepper set the repository for this revision to R167 Krusader.
janlepper removed a dependent revision: Restricted Differential Revision.Jan 10 2017, 2:37 AM

Unfortunately I don't have this area studied enough yet to consult the direction. But I certainly can test your code and report issues:). So far I found some regarding refreshing:

  • external changes aren't reflected (I have to manual refresh Ctrl+R to see them)
  • undo action will not refresh view after it is done

But I understand it is a work in progress, so please say if it is too soon to test these "corner" cases. Anyway, thanks for Your work!

Unfortunately I don't have this area studied enough yet to consult the direction. But I certainly can test your code and report issues:). So far I found some regarding refreshing:

  • external changes aren't reflected (I have to manual refresh Ctrl+R to see them)
  • undo action will not refresh view after it is done

    But I understand it is a work in progress, so please say if it is too soon to test these "corner" cases. Anyway, thanks for Your work!

Thanks for testing :)
Yes it's a bit early for these kinds of tests - also the new startRefresh() method isn't yet called anywhere.
I temporarily disabled using default_vfs::refreshLocal() for local paths - that's why you don't get automatic updates.

bcooksley changed the edit policy from "Krusader (Project)" to "All Users".Jan 11 2017, 9:59 PM

Please don't restrict the reviews!

abika edited edge metadata.Jan 15 2017, 9:45 PM

I'm actually unsure if there is any benefit for a "real" async refresh. The panel currently depends on it and the Qt event loop prevents an UI freeze during a long refresh.

palant added a subscriber: palant.Feb 3 2017, 12:14 PM
In D3994#77448, @abika wrote:

I'm actually unsure if there is any benefit for a "real" async refresh. The panel currently depends on it and the Qt event loop prevents an UI freeze during a long refresh.

The thing with temporary event loops is: they don't nest well. You have a long refresh spinning an event loop. Now what if one of the events being processed does the same and spins an event loop of its own for a while? The refresh won't be done until that second event loop is finished. And if the two actions deadlock each other you will keep spinning these event loops forever.

nmel commandeered this revision.Mar 18 2018, 6:15 AM
nmel added a reviewer: janlepper.
nmel abandoned this revision.Mar 18 2018, 6:17 AM

Since this is unfinished and, in fact, abandoned as nobody worked on this for more than a year, I'm closing this revision for now. Feel free to re-open once you have the next code iteration on the issue.