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, Trajce Nikolov NICK < trajce.nikolov.n...@gmail.com> wrote: > 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 6, 2013 at 9:19 PM, Jan Ciger <jan.ci...@gmail.com> wrote: > >> -----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 like to >> > ask if this approach is safe or not? I mean, I call frame() method >> > within a Qt slot and again update related datas within another Qt >> > slot. Qt has a main loop (GUI thread) of course, and is it possible >> > to cause a race-condition with OSG, because it has its own >> > threading model? Please ask if you need more information and of >> > course you will, I would be glad to tell more. >> >> 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. >> >> If your GUI is modifying the vertex array from the Qt slot, that is, >> by definition, asynchronous - you have no idea when the user presses >> that button. Which may well be during the rendering when OSG is using >> that data structure. If you are clearing the vertex array while the >> size of the array is still set, it will go boom. >> >> One way to solve this is to use the slot to only modify a buffer/set a >> flag and then use e.g. an update callback on the affected OSG node to >> pick up the changes and implement them in the scene graph when it is >> safe (during update traversal). >> >> Regards, >> >> J. >> -----BEGIN PGP SIGNATURE----- >> Version: GnuPG v1.4.14 (GNU/Linux) >> Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ >> >> iD8DBQFSeqRWn11XseNj94gRAuBdAKDuE2rxjaXltXEWg4g2Mka1ZBqVIgCfbKju >> vGG9MllrwxlDZjkUd1HHg+8= >> =S3At >> -----END PGP SIGNATURE----- >> _______________________________________________ >> osg-users mailing list >> osg-users@lists.openscenegraph.org >> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >> > > > > -- > trajce nikolov nick > -- trajce nikolov nick
_______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org