Which workaround for strange KFileDialog behavior (recent files on server)?
Juergen Pfennig <[email protected]> Sat, 9 Oct 2004 19:43:19 +0200
| Newsgroups | gmane.comp.kde.devel.optimize |
|---|---|
| Message-ID | <[email protected]> |
Hello, I am working on a Multi-Media-Center Software (zapdvb) and from time to time I find strange things in KDE. This time the problem is the Open File Dialog. When somebody regularely records movies from DVB, the next idea will be to set up a video server. Such a server will have several disks, disks would consume electrical power (which will cost as much as the disk itself after a few years). So the solution is to let the disks spin down if unused. Linux can do this, so long so good. Now back to KDE. Think of an app that plays videos from that server (like zapdvb using MPlayer or Kaffeine does) and that the Open File Dialog is used. The dialog remembers a file history. After a while the history will have a lot of entries (around 10?). No comes the bad thing: The user will notice after a while that it takes longer and longer until the dialog pops up (it can take a minute). The reason is: KDE seems to try to validate the "Recent File History" even if the files are not in a local file system. For our video server scenario this implies that usually all disks need to spin up and eventually need to be mounted (all together this can take a minute). This behavior unveils a KDE design problem. As a workaround in my application I simply remove the "Recent File History" entry from kdialogrc - but this is not a very good solution. Could you imagine some "checkIfFileIsLocal()" call in KDE? This call should canonicalize path arguments and compare it against a cached list of mount points. Any tips or ideas? I should mention here that the proposed "checkIfFileIsLocal()" call should also be use by Konqueror which causes the same problem for directory listings (algorithm: do not try to read .directory on remote volumes unless it is known the the containing folder was accessed before and cache any .directory information once that it was loaded). Yours Jürgen