It seems from the information presented that your Basically running a
multi-threaded GUI app like MFC/ WInd32 and  trying to changing
something that is being accessed concurrently ( which is bad)
 
So as your key press happens in your application GUI event thread  your
on timer is also firing in its thread and drawing your text, this means
your changing the text at the same time your trying to draw it
 
its like getting your tires changed and trying to drive at the same
time, your gonna come a cropper ;)
 
You need to do your text changes in the void render() or in an update
traversal callback, you need  be able to pass data from your key press
thread in a thread safe manner to your rendering thread  to indicate a
key was pressed and then act on that in void render() function 
 
 
 

Gordon

__________________________________________________________
Gordon Tomlinson

Product Manager 3D
Email  : gtomlinson @ overwatch.textron.com
__________________________________________________________
(C): (+1) 571-265-2612
(W): (+1) 703-437-7651

"Self defence is not a function of learning tricks 
but is a function of how quickly and intensely one 
can arouse one's instinct for survival" 
- Master Tambo Tetsura

 
 

________________________________

From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Chris
Sent: Wednesday, October 08, 2008 3:22 PM
To: OpenSceneGraph Users
Subject: Re: [osg-users] osgText crash


Sorry if I don't quite understand the GUI/render thread
distinction...(learning as I go :) 

Pseudo code for adding/deleting is as follows, (all in the same (and
only) thread,which receives GUI events)

on_key_press()
{
 toggle = ! toggle 
 if (toggle)
    addTextToScene()
else
    removeAndDeleteTextFromScene()
}

on_timer_event()     // timer event occurs 30 times a second
{ 
    renderScene() (calls the render function I quoted earlier)
}


On Wed, Oct 8, 2008 at 3:05 PM, Tomlinson, Gordon
<[EMAIL PROTECTED]> wrote:


        Were are you changing, adding, removing etc the text.
         
        You need to ensure you are updating only in the APP thread ( not
a gui thread )
        From the snippet below, you need to do this in the Render
function ( or that thread ) or in the Update traversal
         

        Gordon

        __________________________________________________________
        Gordon Tomlinson

        Product Manager 3D
        Email  : gtomlinson @ overwatch.textron.com
        __________________________________________________________
        (C): (+1) 571-265-2612
        (W): (+1) 703-437-7651

        "Self defence is not a function of learning tricks 
        but is a function of how quickly and intensely one 
        can arouse one's instinct for survival" 
        - Master Tambo Tetsura

         
         

________________________________

        From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Chris
        Sent: Wednesday, October 08, 2008 2:48 PM
        To: OpenSceneGraph Users
        Subject: Re: [osg-users] osgText crash
        
        
        Thanks Robert,
        
        I do realize it's tough to tell without seeing the code. Up to
yesterday I used osg 2.1, but just upgrade to 2.7.1 (bug still occurs).
FWIW, I'm not using the viewer setup in the examples, I use my own
osgUtil::SceneView and use cull & draw directly. Note I setup my
viewport properties on each rendered frame, as these are animated. The
basic code is like:
        
        void render()
        {
            osgProducer::OsgSceneHandler *sh =
dynamic_cast<osgProducer::OsgSceneHandler *> ( _cam.getSceneHandler() );
            osgUtil::SceneView* sv = sh->getSceneView();
            sv->setSceneData( (osg::Node *) getSceneNode(0) );
            osg::State* state = sv->getState();
            state-> dirtyColorPointer();
        
            sv->setProjectionMatrix( projection );
            sv->setViewMatrix( *_viewMatrix );
            sv->setViewport( clippedViewport.x, clippedViewport.y,
clippedViewport.xdim, clippedViewport.ydim );
        
            //sv->update(); no anims, no need to update ?
             sv->cull();
             sv->draw();
        }
        
        
        
        On Wed, Oct 8, 2008 at 2:13 PM, Robert Osfield
<[EMAIL PROTECTED]> wrote:
        

                Hi Chris,
                
                With so few details about your viewer setup and scene
graph usage the
                best we can do is guess what you might have done wrong
given other
                common mistakes we see pop up - have the DataVariance
recommendation.
                
                Another thing you could try setting the threading model
on the viewer
                by calling
                
        
viewer.setThreadingMode(osgViewer::Viewer::SingleThreaded);
                
                Again it's a long shot given we really don't know enough
about the OSG
                version you are using, which viewer library/classes and
the fact
                you're trying to control everything thing through swig
wrappers.
                
                Robert.
                

                On Wed, Oct 8, 2008 at 7:04 PM, Chris
<[EMAIL PROTECTED]> wrote:
                > I had just read the osg archive and set the text
DataVariance to DYNAMIC,
                > with high hopes..unfortunately still crashes :(
                >
                > _text->setDataVariance(osg::Object::DYNAMIC);
                >
                > I create my Text in response to a keystroke, and add
it to the scene. The
                > next keystroke removes and deletes it. Each time I
create it, the initial
                > rendered text string does not change.
                >
                > ( Also set my loaded osgText::Font to DYNAMIC
DataVariance, doesn't help. )
                >
                > BTW I noticed there were some nvidia problems in the
archives; I do have an
                > NVidia driver (my machine is a Toshiba Tecra M4,
Geforge Go 6200 (three
                > years old), driver date 3/14/2005, version 7.1.4.1 )
                >
                > as per your StateSet DataVariance comment, should i do
that as well ? I'm
                > not familiar with osg's thread models, but I just call
render within my
                > app's main thread, and I dont' explicitly create other
threads myself.
                >
                > On Wed, Oct 8, 2008 at 1:21 PM, Paul Melis
<[EMAIL PROTECTED]> wrote:
                >>
                >> Robert Osfield wrote:
                >>>
                >>> Are you dynamically updating the text each frame?
If so set the
                >>> DataVariance to DYNAMIC.
                >>>
                >>
                >> Hmmm, if setting it to STATIC causes a crash like
this, might that be a
                >> design flaw?
                >>
                >> Paul
                >>
                >>> Robert.
                >>>
                >>> On Wed, Oct 8, 2008 at 6:09 PM, Chris
<[EMAIL PROTECTED]> wrote:
                >>>
                >>>>
                >>>> Hi,
                >>>>
                >>>> I'm having semi-random crash bugs when I add an
osgText drawable to my
                >>>> scene. The actual error is a mem access violation,
and it occurs after
                >>>> I've
                >>>> added & removed the node containing the drawable
from the scene a random
                >>>> number of times' (usually from 1 to 10 times)
                >>>>
                >>>> The exception occurs in the same place in the call
stack, apparently
                >>>> somewhere in my open gl .dll (nvoglnt.dll). One
thing that puzzles me is
                >>>> that I'm using SWIG, and from the call stack the
function
                >>>> PySwigObject_Check(PyObject *op) ) seems to call
into the osgUtil .dll,
                >>>> which in about 10 stack layers ends up calling
nvoglnt.dll. I don't know
                >>>> why
                >>>> 'PySwigObject_Check' would be caling the osg .dll,
(see func copied
                >>>> below),
                >>>> but maybe some sort of wierd thread confusion ?
                >>>>
                >>>> SWIGRUNTIMEINLINE int
                >>>> PySwigObject_Check(PyObject *op) {
                >>>>  return ((op)->ob_type == PySwigObject_type())
                >>>>    ||
(strcmp((op)->ob_type->tp_name,"PySwigObject") == 0);
                >>>> }
                >>>>
                >>>> The crash does NOT occur if I repeatedly
create/delete the osgText
                >>>> drawable
                >>>> but don't add it to my scene. It does not crash
during the render but
                >>>> seems
                >>>> to corrupt something that fails elsewhere
(apparently in
                >>>> 'PySwigObject_Check' )
                >>>>
                >>>> While I can't be certain it's not my code, I have
been running the same
                >>>> render code (which uses osg) now for a few years
without problems.  Note
                >>>> that I dont explictly create extra threads in my
code, beyond what osg
                >>>> might
                >>>> be doing.
                >>>>
                >>>> I thought this looked like some thread/mutex
problem, or pehaps a VC++
                >>>> STL
                >>>> problem   (anyone had these issues with osg Text
before?) I created a
                >>>> new
                >>>> version of osgText that hacks out the STL-based
'String' class used to
                >>>> 'setText', but no dice.
                >>>>
                >>>> I was running on WinXP, using compiler: Visual
Studio .net 2002.  I just
                >>>> installed Osg 2.7.1, and Visual Studio Express 9.0;
but the crash still
                >>>> occurs.
                >>>>
                >>>> TIA,
                >>>> Chris
                >>>>
                >>>> --
                >>>> www.sketch3.com
                >>>>
                >>>> _______________________________________________
                >>>> osg-users mailing list
                >>>> [email protected]
                >>>>
                >>>>
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.or
g
                >>>>
                >>>>
                >>>>
                >>>
                >>> _______________________________________________
                >>> osg-users mailing list
                >>> [email protected]
                >>>
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.or
g
                >>>
                >>
                >> _______________________________________________
                >> osg-users mailing list
                >> [email protected]
                >>
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.or
g
                >
                >
                >
                > --
                > www.sketch3.com
                >
                > _______________________________________________
                > osg-users mailing list
                > [email protected]
                >
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.or
g
                >
                >
                _______________________________________________
                osg-users mailing list
                [email protected]
        
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.or
g
                




        -- 
        www.sketch3.com
        

        _______________________________________________
        osg-users mailing list
        [email protected]
        
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.or
g
        
        




-- 
www.sketch3.com

_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to