(Fwd) Re: embedding ROOT

Valery Fine (fine@mail.cern.ch)
Fri, 26 Sep 1997 09:09:42 +0100


------- Forwarded Message Follows -------

On 25 Sep 97 at 23:01, Pasha Murat wrote:

>
> This is kind of issue which people will never agree upon...
> I'm trying to write a prototype of event display code
> based on ROOT graphics classes.

Have you regarded the ROOT share memory capabilites.
Of course thid doesn't reply your question directly. But would it
be more easy (and robust) to let your stand-alone program
(client) to generate the ROOT objects and let (launching not
calling) another program / server-process (ROOT) to present it by
demand and whatsoever? (By the way the last could be even remote
one).

> By design this shoudn't be a
> standalone application, instead it should be called by another
> routine: I need main to be loaded statically because otherwise
> there is no way to debug the whole system. This is nothing but
> embedding ROOT into another application. Having started from
> test/hworld.cxx I've been trying to make the code reentrant: after
> the event display routine is executed, all the windows should be
> closed.

> The example below bombs. I guess that this is happening
> because TCanvas::Close() does much more than just closing the
> window on the screen.

It should be since as I was constantly telling on this list ANY
operation with Widget/Windows is an INTERACTIVE one and NEEDS some
sort of even loop.
Leaving

theApp.Run(kTRUE);

one does leave the ROOT event loop so NO interactive operation is
allowed at this point.

The way I offered above assumes that your main would be
NON-INTERACTIVE (from ROOT point of view at least). Sure you can still
introduce your own event loop to let program to catch the external
events (i.e. you will be required to re-invent ROOT wheel) but it
will be not ROOT.

With my best regards,
Valery