Saving jpg/gif canvases but without the X canvas display

Dear all,

I ve a gui monitor done with root and I would like to save automatically some plots. But Iam running into the following problems.

  1. The best solution would be to avoid any canvas to pop-up so that people looking at the monitor do not mess with it. I tried something like:
    gROOT->SetBatch(true);
    … do my canvases, save them…
    gROOT->SetBatch(false);
    That does nearly work, ie it saves the files as expected. Unfortunately, later on, when people try to save some other plots (not in batch mode this time), the full monitor crashes at the gif (or jpg) file creation level, ie:
    canvas->SaveAs(“my_lot.gif”) crashes the program. This used to work for years and this is related to the fact that sometime before, I did gROOT->SetBatch() and gROOT->SetBatch(false) which was not a transparent action as I would have expected. Is it a known issue ?

  2. I then tried to use a separated canvas already present in the gui., and save the files from this canvas. Of course that works in principle. But in pratice, when people (actually shifters) monitor the system, they often have a window on top of this canvas. Then the file is saved but is corrupted, ie that most of the times the file contains what the shifter was looking at and not the desired plots.

I don’t see any other solution to try… Are these known issues ? Is there any way I can fix this? Do you see an alternative that would do it?

Sorry I can’t send all the code here that is several tens of thousands lines long and that only compiles in a given framework.

Thanks in adance for your suggestions,

 Fabrice

Could you post the shortest possible script reproducing the problem?

Rene