Some of the connections we make are doing cross-thread calls, but in functions which exist on objects which live inside the same thread. Consequently, connect can't auto-detect that they need to be queued, and we end up sometimes (and during searches regularly) crashing because updates happen at the wrong time. I am unsure whether this is quite all of them, but with this patch the search functionality is much less crashy.
Details
- Reviewers
apol - Group Reviewers
Discover Software Store - Commits
- R134:639bf33c0192: Queue some connections which cannot be autodetected
Diff Detail
- Repository
- R134 Discover Software Store
- Lint
Lint Skipped - Unit
Unit Tests Skipped
Yeah, the crashes happen when forwarding the data updates to the view, which has potentially changed in the meantime.
libdiscover/backends/KNSBackend/KNSBackend.cpp | ||
---|---|---|
330 | Then maybe it's KNS that should be syncing? Or even have KNSCore emit from the object's thread: |
libdiscover/backends/KNSBackend/KNSBackend.cpp | ||
---|---|---|
330 | This requires a fix in KNS, which has been pushed to master. We now require (current) master of KNS, so i'll update that for the cmake package find bit as well :) |
Changed the KNS backend's main queued connection to somewhere a tiny bit more central. This causes us to require KNewStuff master, but we already require a bunch of master stuff elsewhere, so, you know, not so big an issue anyway :)