Change in Bonobo API.




Hello everyone,

    I know that it might seem strange to announce a change in the
Bonobo API here, because the API has been pretty much in a constant
state of flux the last few weeks, but this one might be hard to track
down if you don't know about it.

    Peter Wainwright found a rather serious flaw in the Bonobo
initialization mechanism.  Basically, an application would activate
its POA manager before it was actually ready to accept CORBA requests.
And so there was a race condition which could lead to a component
crashing just as it starts up.

    The solution is to separate the POA manager activation from the
rest of the initialization, so that the POA manager is only activated
when the application is actually ready to process CORBA requests.

    I have grouped the POA manager activation and the main-loop entry
into one function, bonobo_main().  If you replace your Bonobo
component/container's call to gtk_main with this function, then your
application will work with the new setup.  If, for whatever reason
(and I can't think of one myself), you want to call gtk_main()
yourself, then you can call bonobo_activate() manually to perform the
POA Manager activation.

    Many thanks to Peter for tracking down this race condition!

Best,
Nat



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]