D8043: KDirWatch : make methods virtual

2017-09-30 Thread René J . V . Bertin
rjvbb abandoned this revision. REPOSITORY R244 KCoreAddons REVISION DETAIL https://phabricator.kde.org/D8043 To: rjvbb, #frameworks, mwolff, dfaure Cc: dhaumann, cfeck, dfaure, mwolff, kde-frameworks-devel

D8043: KDirWatch : make methods virtual

2017-09-29 Thread René J . V . Bertin
rjvbb added a comment. OK, my bad, `fsWatcher` is a `KDirWatchPrivate` member, not a global and not a static member either. Apologies for that - but it doesn't change the symptoms I'm seeing. REPOSITORY R244 KCoreAddons REVISION DETAIL https://phabricator.kde.org/D8043 To: rjvbb,

D8043: KDirWatch : make methods virtual

2017-09-29 Thread René J . V . Bertin
rjvbb added a comment. Hmmm, I'll double-check. I didn't really go beyond the thought that it seemed to make sense to use a single watcher instance if most of the time you'll be watching items that live on a single disk. > Could it be that QFSW itself uses a single static object

D8043: KDirWatch : make methods virtual

2017-09-29 Thread René J . V . Bertin
rjvbb added a comment. I did see some symptoms that could only be explained by a memory layout change (and apparently caused by this patch). Shame I didn't notice that before posting (I only tested with recompiled code). Would it be possible to change the name of this virtualised class

D8043: KDirWatch : make methods virtual

2017-09-29 Thread David Faure
dfaure added a comment. > Using a KDirWatch per thread would still mean that they can be accessing the shared QFSW instance concurrently. Are you sure it's shared? d->fsWatcher isn't static. Could it be that QFSW itself uses a single static object internally? In that case it's QSFW

D8043: KDirWatch : make methods virtual

2017-09-28 Thread Dominik Haumann
dhaumann added a comment. @rjvbb you are changing the memory layout of instances of this class. All applications that use this class / library will break without recompiling. The KDE Frameworks guarantee binary compatibility backwards. See:

D8043: KDirWatch : make methods virtual

2017-09-28 Thread Christoph Feck
cfeck added a comment. ABI is broken for any derived class, because the added virtual increases the size of the object. The changed offsets would require all code that uses the derived class to be recompiled. REPOSITORY R244 KCoreAddons REVISION DETAIL https://phabricator.kde.org/D8043

D8043: KDirWatch : make methods virtual

2017-09-28 Thread René J . V . Bertin
rjvbb added a comment. In a (big) nutshell: https://phabricator.kde.org/D7995. KDevelop currently uses a single KDirWatch per open project that is fed with a single `addDir` call which adds all folders under the project directory (and all files, which it shouldn't). This is fine on

D8043: KDirWatch : make methods virtual

2017-09-28 Thread René J . V . Bertin
rjvbb added a comment. TBH I was indeed expecting all kinds of hell raining down when I rebuilt the framework with this change, in the form of mysterious linker errors about virtual thunks and what have you. Not so, no symbols are missing from libKF5CoreAddons because of this patch, so

D8043: KDirWatch : make methods virtual

2017-09-28 Thread David Faure
dfaure requested changes to this revision. dfaure added a comment. In addition to being BIC, this is not the way to add thread safety. Either the class should be threadsafe (and then it should use mutexes internally) or it doesn't need to be threadsafe (and that can just be documented).

D8043: KDirWatch : make methods virtual

2017-09-28 Thread Milian Wolff
mwolff requested changes to this revision. mwolff added a comment. This revision now requires changes to proceed. this is not abi compatible, cannot be done -2 REPOSITORY R244 KCoreAddons REVISION DETAIL https://phabricator.kde.org/D8043 To: rjvbb, #frameworks, mwolff Cc: mwolff,

D8043: KDirWatch : make methods virtual

2017-09-28 Thread René J . V . Bertin
rjvbb set the repository for this revision to R244 KCoreAddons. rjvbb added a subscriber: kde-frameworks-devel. REPOSITORY R244 KCoreAddons REVISION DETAIL https://phabricator.kde.org/D8043 To: rjvbb, #frameworks Cc: kde-frameworks-devel

D8043: KDirWatch : make methods virtual

2017-09-28 Thread René J . V . Bertin
rjvbb updated this revision to Diff 20056. rjvbb edited the test plan for this revision. rjvbb added a comment. CHANGES SINCE LAST UPDATE https://phabricator.kde.org/D8043?vs=20046=20056 REVISION DETAIL https://phabricator.kde.org/D8043 AFFECTED FILES src/lib/io/kdirwatch.h To:

D8043: KDirWatch : make methods virtual

2017-09-28 Thread René J . V . Bertin
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