This patch restores Symbol Browser with a fully threaded implementation.
The worker thread creates and maintains two non-GUI trees. The tree class (CCTree) has almost the same interface of wxTreeCtrl, so the existing code only need a few changes.
When one of the trees changes the worker thread transfer it to the main thread using CallAfter(). The longest function called lasts less than a millisecond (and it is called once per tree refresh).
To prevent flooding the message queue I have used a semaphore, communication stops until CallAfter() is processed by the main thread.
ollydbg has created a pre-release version including this patch so it can be easily tested.
Hello Miguel Gimenez .
Thanks for your effort.
I used your patch together with the Code::Blocks SVN revision 12240 also used for the last nightly of C::B from December the 13th 2020.
Are you interested in specific details which may support your work?
Stay well and healthy,
Eckard Klotz.
The tree refreshing is slower because the first version of the patch did it in a loop within the main thread (freezing the UI), while the threaded version must do it using the message queue.
This patch won't be in a nightly until enough people test it successfully and a developer decides to commit it. I think that nightlies are good precisely for this kind of testing, but it is my personal opinion.
Diff:
I am trying it myself now, too. Lets see if there are negative side-effects. Nice effort though!
Please nag me from time to time if progress seems stalled...
Any progress?. Other users haven't reported problems so far...
Applied in SVN as I didn't see any issues. Thank you!
As reported in the forum there is a typo inside conditional code (disabled by default); in classbrowser.cpp:1188 there is only one colon in the scope operator.
OK - this is fixed. Id did not occur to me as I had fixed that in my working copy but not the one from which I committed to the repo... :-/