I've localized the problem much more.

I built EQ without optmizations and realized the following.

My co::LocalNode deriving-class also derives from QObject so it can expose
the signal/slot mechanism.

I create my call back like this:



> co::CommandFunc<CommandClient> commandFunc((CommandClient*)(this),
> &CommandClient::_handleClientCommand);
> 

Then I step through the code and in co::dispatcher::registerCommand() I
realize that there is a call to 



> _registerCommand( command, Dispatcher::Func( func ),destinationQueue );
> 

Dispatcher::Func(func) will static_cast the "_object" pointer in the functor
to co::Dispatcher* (resulting in a pointer offset by 16 bytes). Then in my
callback function the "this" pointer still points to the co::Dispatcher*
pointer from above, but the pointer is no longer valid (previewing the
contents in VS2008 looks weird). However, if I runtime-edit the pointer to
point to the original CommandClient* pointer, everything works perfectly....

Stefan do you have any insight on how to pursue this further?

--
View this message in context: 
http://software.1713.n2.nabble.com/Affecting-Collage-objects-outside-an-Equalizer-application-tp7301888p7324086.html
Sent from the Equalizer - Parallel Rendering mailing list archive at Nabble.com.

_______________________________________________
eq-dev mailing list
[email protected]
http://www.equalizergraphics.com/cgi-bin/mailman/listinfo/eq-dev
http://www.equalizergraphics.com

Reply via email to