Details
-
Task
-
Resolution: Fixed
-
P2: Important
-
None
-
None
Description
The Class View plugin isn't currently in a good state and needs refactoring. This would include:
1. Some methods are being called from different threads, without any synchronization, like: ParserTreeItem::convertTo().
2. QStandardItem instances are being created in non-gui thread, while QStandardItem class is not marked as reentrant, so we can't assume it will work correctly in our use case.
3. Instances of QIcon class are being copied inside non-gui thread and later they are passed to main thread. We also can't assume that even copying is safe in this scenario.
4. (maybe) Add a possibility of canceling the thread.
Attachments
For Gerrit Dashboard: QTCREATORBUG-25317 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
333247,12 | Simplify interface of classes in ClassViewPlugin | master | qt-creator/qt-creator | Status: MERGED | +2 | 0 |
333342,3 | Simplify interface of classes in ClassViewPlugin | master | qt-creator/qt-creator | Status: MERGED | +2 | 0 |
334236,3 | ClassView: don't clear project's file list cache when files removed | master | qt-creator/qt-creator | Status: MERGED | +2 | 0 |
334248,5 | ClassView: Consolidate project caches into one | master | qt-creator/qt-creator | Status: MERGED | +2 | 0 |
334291,10 | ClassView: Consolidate document caches into one | master | qt-creator/qt-creator | Status: MERGED | +2 | 0 |
334300,6 | ClassView: Add missing locks | master | qt-creator/qt-creator | Status: ABANDONED | 0 | 0 |
334347,9 | ClassView: Clear the documentCache, too, when reset was requested | master | qt-creator/qt-creator | Status: MERGED | +2 | 0 |
334578,6 | ClassView: Don't lock the mutex while parsing | master | qt-creator/qt-creator | Status: MERGED | +2 | 0 |
334584,6 | ClassView: Get rid of project and document mutexes | master | qt-creator/qt-creator | Status: MERGED | +2 | 0 |
334619,4 | ClassView: Remove unused ParserTreeItem::operator= | master | qt-creator/qt-creator | Status: MERGED | +2 | 0 |
334701,10 | ClassView: Minimize the mutating API of ParserTreeItem | master | qt-creator/qt-creator | Status: MERGED | +2 | 0 |
334721,6 | ClassView: Use only const pointers to ParserTreeItems | master | qt-creator/qt-creator | Status: MERGED | +2 | 0 |
334722,2 | ClassView: Optimize operator== of internal data | master | qt-creator/qt-creator | Status: MERGED | +2 | 0 |
334724,6 | ClassView: Stop the running timer in Parser thread on close | master | qt-creator/qt-creator | Status: MERGED | +2 | 0 |
334807,3 | WIP: Prepare the major refactor | master | qt-creator/qt-creator | Status: ABANDONED | -2 | 0 |
334828,2 | ClassView: Move the GUI related code out of Parser | master | qt-creator/qt-creator | Status: MERGED | +2 | 0 |
334859,3 | ClassView: Fix a crash when switching sessions | master | qt-creator/qt-creator | Status: MERGED | +2 | 0 |
334872,4 | ClassView: Delete Parser object from inside parser's thread | master | qt-creator/qt-creator | Status: MERGED | +2 | 0 |
335051,4 | ClassView: Remove unused includes | master | qt-creator/qt-creator | Status: MERGED | +2 | 0 |
335061,4 | ClassView: Reparse the tree when files are removed | master | qt-creator/qt-creator | Status: MERGED | +2 | 0 |
335185,7 | ClassView: Move delaying of update into the main thread | master | qt-creator/qt-creator | Status: MERGED | +2 | 0 |
336882,9 | ClassView: Fix a possible crash on session switch | 4.15 | qt-creator/qt-creator | Status: MERGED | +2 | 0 |