Multiple panels on startup, cause found, maybe

I don't know if anyone has definitely found the cause of the multiple
panel problem but I think I know what is going on.

Consider the following.

panel starts.  

It calls goad_server_register.  

goad_server_register forks a child that will eventually become the

goad_server_register returns before the name server is exec'ed.

panel continues and starts an applet.

The panel call goad_server_register, but the original name server still
   hasn't started.

Now the applet call to goad_server_register starts another name server
   which runs first, before the panel one.  Of course the panel isn't
   registered and so goad starts the process.  Poof, two panels.

I believe variations of this can then explain the many clocks and panels
problem as well.  I haven't been able to trace this, but this is a guess
looking at the code.  It seems that there needs to be a lock when a name
server is starting so no one else tries to start one.  Additionally
goad_server_register should only return after the name server is finished
starting and is running.  I am not sure if this is already the case since
I haven't traced through to see how all the ORBit calls work in goad.c.  

Manish Vachharajani               Some Haiku: A crash reduces
<>                   your expensive computer
                                              to a simple stone - Unknown

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