D8043: KDirWatch : make methods virtual

René J.V. Bertin noreply at phabricator.kde.org
Thu Sep 28 20:13:11 UTC 2017


rjvbb created this revision.
rjvbb added a reviewer: Frameworks.
rjvbb added a project: Frameworks.

REVISION SUMMARY
  KDirWatch is not current thread-safe which can cause problems when feeding or deleting directories in a multi-threaded approach. In addition, the class uses a single QFileSystemWatcher instance (`fsWatcher`) when using the `QFSWatch` method.
  
  Thus, as a function of which internal method is being used, multi-thread access should be protected with a mutex that can either be a regular class variable or needs to be a static class variable.
  
  Making the KDirWatch instance methods virtual allows to derive KDirWatch in a specialised class which adds e.g. the appropriate mutex, with minimal modification of existing code and without having to burden applications that use the class in a strictly single-threaded approach with mutex'ing overhead.

TEST PLAN
  Tested (on Mac): works as expected. Code can continue to use the result of functions returning a derived class pointer as `KDirWatch*` and still benefit from thread-safeties in the derived class.
  CD

REPOSITORY
  R244 KCoreAddons

REVISION DETAIL
  https://phabricator.kde.org/D8043

AFFECTED FILES
  src/lib/io/kdirwatch.h

To: rjvbb, #frameworks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20170928/a152980a/attachment.html>


More information about the Kde-frameworks-devel mailing list