1: For the first issue
If we are busy building or updating a tag file in the background, Symbol Coloring will shut down until that is done. So it can seem like it isn't working, but it really is just not working "yet".
I don't believe that is the issue. The _UpdateSymbolColoring() function returns visible current, off-screen current, visible other, off-screen other. I'm seeing a visible chunk being colored, but not containing the whole visible area. Say I scroll up 10 lines, those 10 lines are not colored when coloring finally appears. Then I see on the mini-map the above code colored and then below being colored without the entire visible chunk being updated. I can scroll all over but that chunk (10 lines in the example) will never be colored until symbol coloring is forced reset for the buffer.
2: For the second issue I'll rephrase my question. Is the thread used for calling pfnCallback parameter of _set_timer() the same as the one that is doing the symbol coloring? If not, are they guaranteed to not be called at the same time to protect overwriting
p_window_id? My timer function scans through all showing buffers and applies some coloring to the ones that contain a certain unique BufferInfo key (much like symbol coloring does). If the timer function is being called at the same time as symbol coloring, I believe they could each be overwriting each other; causing my timer function to 'switch' to a different buffer mid process.