----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://git.reviewboard.kde.org/r/125217/ -----------------------------------------------------------
Review request for KDE Frameworks, Albert Astals Cid and Michael Pyne. Repository: kcoreaddons Description ------- The use of KDirWatch from KSycoca exposed that KDirWatch was really not thread-safe. The internal singleton design brings a ton of races between KDirWatch instances. Easy solution: one "singleton" per thread, using QThreadStorage. The main impact is on memory management; the "singleton" is no longer refcounted but simply deleted at the end of the thread, by QThreadStorage (including for the main thread). Since this happens at ~QApp time, we need to zero the d pointer of KDirWatch::self(), which is deleted by a global-static dtor later on. Diffs ----- src/lib/io/kdirwatch.h f1593e73898c3610c2a560714ed608367120afa8 src/lib/io/kdirwatch.cpp 5e015c10cb99dbe4a21f944d4c0d0b364f2a7263 src/lib/io/kdirwatch_p.h b2ac9d419bb0b0939a4eaa235a55634482db1cc6 Diff: https://git.reviewboard.kde.org/r/125217/diff/ Testing ------- unittests in kcoreaddons still pass, but now kservice's ksycocathreadtest passes every time, unlike before. Thanks, David Faure
_______________________________________________ Kde-frameworks-devel mailing list Kde-frameworks-devel@kde.org https://mail.kde.org/mailman/listinfo/kde-frameworks-devel