SVN commit 935291 by dfaure: Make ksycoca threadsafe. Summary of changes: - OOo design for the 4 ways to access ksycoca data (mmap, qfile, shared mem, dummy qbuffer), which also allows to have a KConfig key for choosing the technology to use. - per-thread KSycoca::self() and per-thread sycoca factories, using QThreadStorage. This way ksycoca updates are handled by each thread at its own pace (assuming it has an event loop). - threaded unit test: two in kservicetest, plus the standalone ksycocathreadtest.cpp
=> KRunner and kdevelop (and others) can now use KService and KMimeType and K*TypeTrader from threads without a mutex. (If in doubt about races in your threads, I suggest valgrind --tool=helgrind, using valgrind svn preferrably. You'll hit some races in Qt that I reported recently though) CCMAIL: ro...@kde.org, plasma-devel@kde.org M +20 -25 kdecore/services/kmimetypefactory.cpp M +0 -2 kdecore/services/kmimetypefactory.h M +41 -49 kdecore/services/kservicefactory.cpp M +1 -3 kdecore/services/kservicefactory.h M +20 -26 kdecore/services/kservicegroupfactory.cpp M +0 -2 kdecore/services/kservicegroupfactory.h M +28 -33 kdecore/services/kservicetypefactory.cpp M +0 -3 kdecore/services/kservicetypefactory.h M +13 -3 kdecore/services/kservicetypeprofile.cpp M +9 -4 kdecore/sycoca/kprotocolinfofactory.cpp M +3 -6 kdecore/sycoca/kprotocolinfofactory.h M +288 -254 kdecore/sycoca/ksycoca.cpp M +42 -21 kdecore/sycoca/ksycoca.h A kdecore/sycoca/ksycocadevices_p.h branches/work/~dfaure/kdelibs-ksycoca-threadsafety/kdecore/sycoca/ksycocadevices_p.h#935278 [License: LGPL (v2/3+eV)] M +1 -1 kdecore/sycoca/ksycocadict.cpp M +3 -1 kdecore/sycoca/ksycocadict.h M +21 -16 kdecore/sycoca/ksycocafactory.cpp M +60 -4 kdecore/sycoca/ksycocafactory.h M +1 -0 kdecore/tests/CMakeLists.txt M +1 -1 kdecore/tests/kmimetypetest.cpp M +88 -8 kdecore/tests/kservicetest.cpp M +8 -0 kdecore/tests/kservicetest.h M +1 -0 kdecore/tests/ksycocadicttest.cpp A kdecore/tests/ksycocathreadtest.cpp branches/work/~dfaure/kdelibs-ksycoca-threadsafety/kdecore/tests/ksycocathreadtest.cpp#935287 [License: LGPL (v2/3+eV)] M +2 -0 kded/kbuildmimetypefactory.cpp M +4 -0 kded/kbuildservicefactory.cpp M +2 -0 kded/kbuildservicegroupfactory.cpp M +39 -36 kded/kbuildsycoca.cpp M +4 -1 kded/kbuildsycoca.h M +12 -13 kded/kctimefactory.cpp M +2 -1 kded/kded.cpp M +1 -1 kded/kmimefileparser.cpp M +1 -1 kded/test/kmimeassociationstest.cpp M +2 -2 kded/vfolder_menu.cpp M +1 -1 kio/kio/kbuildsycocaprogressdialog.cpp M +6 -6 kio/kio/kmimetypechooser.cpp M +1 -1 kio/kio/kmimetypechooser.h _______________________________________________ Plasma-devel mailing list Plasma-devel@kde.org https://mail.kde.org/mailman/listinfo/plasma-devel