[ROOT-6445] TRootEmbeddedCanvas and TGeoManage prevent TApplication::Terminate() without user input Created: 04/Jul/14  Updated: 11/Jul/14  Resolved: 11/Jul/14

Status: Closed
Project: ROOT
Component/s: Geometry, GUI
Affects Version/s: 5.34/00
Fix Version/s: None

Type: Bug Priority: High
Reporter: Christopher Backhouse Assignee: Philippe Canal
Resolution: Fixed Votes: 0
Labels: None
Environment:

SL6


Attachments: File evd_bug.C     File example.gdml    
Development:

 Description   

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.



 Comments   
Comment by Andrei Gheata [ 07/Jul/14 ]

Hi,

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.

Best, Andrei

Comment by Philippe Canal [ 11/Jul/14 ]

Hi,

The problem has been fixed in the v5.34 patch branch and the v6 branch.

Cheers,
Philippe

Generated at Wed Sep 18 15:25:04 CEST 2019 using Jira 7.13.1#713001-sha1:5e06076c2d215a6f699b7e5c90ab2fae7ba5a1ce.