Re: [osg-users] OSG Qt integration and thread safety

2013-11-07 Thread Trajce Nikolov NICK
Hi Jan, Your approach isn't safe. OSG is *not threadsafe*. Or, rather, it is not threadsafe from arbitrary modifications. If you want to be safe, the only time when modifications to the scene graph may happen is before or after the frame() is invoked, not while frame() is running. On Wed, Nov

Re: [osg-users] OSG Qt integration and thread safety

2013-11-07 Thread Trajce Nikolov NICK
Hi Jan, You can modify the scenegraph in the update traversal as well. Like I did in the TerraPage (txp) loader. In the Cull traversall I collect info for what is to be modified and then in the update traversal I update the scenegraph safely. Just a note Nick On Thu, Nov 7, 2013 at 9:33 AM,

Re: [osg-users] OSG Qt integration and thread safety

2013-11-07 Thread Deniz Koçak
Hi Trajce, I think Jan's answer [1] in the first mail mentions a similar solution. Setting a flag (by using userdata of the drawable may be) and updating the drawable in the osg::Drawable::UpdateCallback (of course by checking the flag) MAY solve the problem. It seems that, thrusting the Qt's

Re: [osg-users] OSG Qt integration and thread safety

2013-11-07 Thread Trajce Nikolov NICK
Hi Deniz, yes I read Jan has mentioned this. Have a look in the osgdb_txp loader in TXPNode::traverse() for inspiration if helps a bit Nick On Thu, Nov 7, 2013 at 9:40 AM, Deniz Koçak lend...@gmail.com wrote: Hi Trajce, I think Jan's answer [1] in the first mail mentions a similar

Re: [osg-users] OSG Qt integration and thread safety

2013-11-07 Thread Deniz Koçak
Thank you Trajce. On Thu, Nov 7, 2013 at 10:59 AM, Trajce Nikolov NICK trajce.nikolov.n...@gmail.com wrote: Hi Deniz, yes I read Jan has mentioned this. Have a look in the osgdb_txp loader in TXPNode::traverse() for inspiration if helps a bit Nick On Thu, Nov 7, 2013 at 9:40 AM, Deniz

Re: [osg-users] OSG Qt integration and thread safety

2013-11-07 Thread Jan Ciger
Hi, On Thu, Nov 7, 2013 at 9:35 AM, Trajce Nikolov NICK trajce.nikolov.n...@gmail.com wrote: You can modify the scenegraph in the update traversal as well. Like I did in the TerraPage (txp) loader. In the Cull traversall I collect info for what is to be modified and then in the update

Re: [osg-users] OSG Qt integration and thread safety

2013-11-07 Thread Jan Ciger
On Thu, Nov 7, 2013 at 9:40 AM, Deniz Koçak lend...@gmail.com wrote: It seems that, thrusting the Qt's Signal/Slot mechanism is not a good option as Jan pointed. I think the trouble is that you are expecting it to do something that it isn't meant to do. Perhaps you have confused the

[osg-users] OSG Qt integration and thread safety

2013-11-06 Thread Deniz Koçak
Hi All, I have a problem with a short description, but with a long story. My problem is simply the crash of my application while drawing dynamic lines on screen. Here comes the story; I am using OpenSceneGraph (tried both 3.1.4 and 3.2.0) and Qt 4.x with Visual Studio 2010. *

Re: [osg-users] OSG Qt integration and thread safety

2013-11-06 Thread Jan Ciger
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Hello Deniz, On 11/06/2013 07:07 PM, Deniz Koçak wrote: This is already a long mail, still I have more to say, many code to post, but I am not sure where should I begin. I can provide as much as possible. However, before ending my e-mail, I would

Re: [osg-users] OSG Qt integration and thread safety

2013-11-06 Thread Deniz Koçak
Hi Jan, Thanks for your answer. However, the ambiguous part for me is the second paragraph of your answer. frame() is being called by the slot which is connected to timeout() signal of QTimer. As far as I know, frame() should not return before drawing the drawables with dynamic data variance and

Re: [osg-users] OSG Qt integration and thread safety

2013-11-06 Thread Jan Ciger
On Wed, Nov 6, 2013 at 11:12 PM, Deniz Koçak lend...@gmail.com wrote: Hi Jan, Thanks for your answer. However, the ambiguous part for me is the second paragraph of your answer. frame() is being called by the slot which is connected to timeout() signal of QTimer. As far as I know, frame()