[ROOT-6445] TRootEmbeddedCanvas and TGeoManage prevent TApplication::Terminate() without user input Created: 04/Jul/14 Updated: 11/Jul/14 Resolved: 11/Jul/14
|Reporter:||Christopher Backhouse||Assignee:||Philippe Canal|
The autoadvance feature of the NOvA event display stopped working when we updated from ROOT 5.34.12 to 5.34.18
When a TTimer fires, we quit out of the event loop, move to the next record in the input file, and restart the loop. We found that TApplication::Terminate() wasn't taking effect unless the mouse was being moved over the window.
The attached short program reproduces the issue. An incrementing number should be printed to stdout, once per second. This doesn't work unless the mouse is being moved over the canvas in the window.
Oddly, both the TRootEmbeddedCanvas and the TGeoManager are necessary to cause this problem. Remove one or the other and the printed number increments fine on its own as intended.
|Comment by Andrei Gheata [ 07/Jul/14 ]|
What changed with this respect in TGeoManager was exposing TThread::SelfId even in single thread mode. Replacing TGeoManager::Import with TThread::SelfId() in your example reveals the same problem. Since I'm not an expert in the event loop, I'm temporarily reassigning this.
|Comment by Philippe Canal [ 11/Jul/14 ]|
The problem has been fixed in the v5.34 patch branch and the v6 branch.