Hi Paul,

type "view" 2 times to get 2 views.
close the first window, i always press 'f' to get out of fullscreen,
type "view" again.. turns up black.

Maybe this is my driver?
I'm using the default ubuntu Nvidia driver. Also, running Compiz in
the background..


Regards,

David Johansson



On Thu, Aug 14, 2008 at 3:08 PM, Paul Melis <[EMAIL PROTECTED]> wrote:
> I've tried a different series of entering "view" one or more times, followed
> by closing one or more of the shown windows and repeating. But I've not seen
> any "black windows" yet. What is the sequence that reproduces the problem
> for you?
>
> This is on Linux, nVidia 96.43.01 driver
>
> Paul
>
> David Johansson wrote:
>>
>> Hi Robert,
>>
>> Here is code that produces the problem.
>>
>> I'm building/running on Ubuntu 8.04 with osg 2.4
>>
>> #include <iostream>
>> #include <vector>
>> #include <string>
>> #include <osg/Node>
>> #include <OpenThreads/Thread>
>> #include <osgDB/ReadFile>
>> #include <osgViewer/Viewer>
>> #include <osgViewer/ViewerEventHandlers>
>> class viewerThread: public OpenThreads::Thread
>> {
>> public:
>>        viewerThread( osg::Node* n ): OpenThreads::Thread(), _scene(n){}
>>        virtual void run(){
>>                osgViewer::Viewer viewer;
>>                _pViewer = &viewer;
>>                viewer.addEventHandler(new osgViewer::StatsHandler());
>>                viewer.addEventHandler(new osgViewer::ThreadingHandler());
>>                viewer.addEventHandler(new osgViewer::WindowSizeHandler());
>>                viewer.setSceneData(_scene);
>>
>>  viewer.setThreadingModel(osgViewer::Viewer::ThreadPerContext);
>>                viewer.run();
>>                _pViewer = NULL;
>>        }
>>        void cancelViewer(){
>>                if( _pViewer != NULL )
>>                        _pViewer->setDone( true );
>>                }
>> private:
>>        osg::Node* _scene;
>>        osgViewer::Viewer* _pViewer;
>>
>> };
>>
>> int main(int argc, wchar_t* argv[])
>> {
>>        std::vector<viewerThread*> garbage;
>>        osg::ref_ptr<osg::Node> n = osgDB::readNodeFile("cow.osg");
>>        if( !n ) return -1;
>>        bool bRun = true;
>>        do{
>>                std::wstring wsCommand;
>>                std::wcout << L"Enter Command : ";
>>                std::getline( std::wcin, wsCommand, L'\n' );
>>
>>                if( wsCommand == L"quit" ){
>>                        bRun = false;
>>                }else if ( wsCommand == L"view" ){
>>                        viewerThread* vThread = new viewerThread( n.get()
>> );
>>                        garbage.push_back( vThread );
>>                        vThread->startThread();
>>                }
>>        }while( bRun );
>>
>>        for( unsigned int i = 0; i < garbage.size(); i++ ){
>>                viewerThread* p = garbage.at( i );
>>                p->cancelViewer();
>>                p->cancel();
>>                while ( p->isRunning() )
>>                {
>>                        OpenThreads::Thread::microSleep(50);
>>                }
>>                delete p;
>>        }
>>        garbage.clear();
>>        return 1;
>> }
>>
>> Regards,
>>
>> David Johansson
>>
>>
>> On Thu, Aug 14, 2008 at 10:14 AM, Robert Osfield
>> <[EMAIL PROTECTED]> wrote:
>>
>>>
>>> Hi David,
>>>
>>> I really don't know what is up with your usage, there really isn't
>>> enough info about how you set up things to know where things are going
>>> astray.
>>>
>>> A window being black suggest to be that rendering itself hasn't
>>> started yet, just that the window has been realized.  The osgViewer
>>> doesn't support multiple viewers sharing a single GraphicsContext
>>> (this is what you should use osgViewer::CompositeViewer for so you can
>>> have multiple views sharing a single context).
>>>
>>> Robert.
>>>
>>> On Wed, Aug 13, 2008 at 7:09 PM, David Johansson <[EMAIL PROTECTED]>
>>> wrote:
>>>
>>>>
>>>> Hi Everyone,
>>>>
>>>> I have a problem with threading and osg::Viewer.
>>>>
>>>> Basically i create and recreate a bunch of threads that runs a new
>>>> Viewer instance and the problem is that the viewers 'draw area' turns
>>>> up black if i ever close a Viewer.
>>>>
>>>> Thread1 creates Window1 - viewing Node1 - OK.
>>>> Thread2 creates Window2 - viewing Node1 - Ok.
>>>> User closes Window1
>>>> Thread1 dies.
>>>> Thread3 creates Window3 - viewing Node1 -- Will turn up black
>>>> Thread4 creates Window4 - viewing Node1 -- All Ok..
>>>> Thread5 creates Window5 - viewing Node1 -- Also Ok
>>>> User closes window 2
>>>> Thread2 dies.
>>>> Thread6 creates Window6 - viewing Node1 -- Will turn up black
>>>> Thread7 creates Window7 - viewing Node1 -- Ok again.
>>>> User closes all windows
>>>> Thread3 - 7 dies.
>>>> Thread8 creates Window8 - viewing Node1 -- Black.
>>>> Thread9 creates Window9 - viewing Node1 -- Black.
>>>> Thread10 creates Window10 - viewing Node1 -- Black.
>>>> Thread11 creates Window11 - viewing Node1 -- Black.
>>>> Thread12 creates Window12 - viewing Node1 -- Black.
>>>> Thread13 creates Window13 - viewing Node1 -- Ok!
>>>>
>>>> I noticed that After closing all windows, i had 5 windows running that
>>>> acctually showed something(5 new Contexts??). After that i had to
>>>> create 5 threads (that were black) until getting a new view that
>>>> wasn't black.
>>>>
>>>> Looking through the code my guess is that "graphicsContexts" are
>>>> getting reused, however not reset or something like that.
>>>>
>>>> This is the code i use to set-up my viewers:
>>>>
>>>> osgViewer::Viewer viewer;
>>>> viewer.addEventHandler(new osgViewer::StatsHandler());
>>>> viewer.addEventHandler(new osgViewer::ThreadingHandler());
>>>> viewer.addEventHandler(new osgViewer::WindowSizeHandler());
>>>> viewer.setSceneData(g);
>>>> viewer.setThreadingModel(osgViewer::Viewer::ThreadPerContext); /**/
>>>> viewer.run();
>>>>
>>>> Any help would be great!
>>>>
>>>> Regards,
>>>>
>>>> David Johansson
>>>> _______________________________________________
>>>> osg-users mailing list
>>>> [email protected]
>>>>
>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>>
>>>>
>>>
>>> _______________________________________________
>>> osg-users mailing list
>>> [email protected]
>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>
>>>
>>
>> _______________________________________________
>> osg-users mailing list
>> [email protected]
>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>
>>
>
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to