[osg-users] full screen mode in osgviewer and options in command line

Cedric Pinson mornifle at plopbyte.net
Thu Oct 4 03:01:29 PDT 2007


Replacing the  MOTIF_HINT code by the code provided by Leif make 
fullscreen working for me without stacking problem. But i don't know how 
it will work on other plateform.



Cedric Pinson wrote:
> I will test that. On my computer the toogle fullscreen does not work. it 
> fails to go in windowed mode. I tried last day to check what could be a 
> problem. I saw that if there is always a 'window decoration' it could 
> work. i mean the switch work one time. the second time it does not work 
> because of the isFullscreen is false (the size of window is not equal to 
> the size of screen because of window decoration). The code i hacked 
> GraphicsWindowX11::setWindowDecorationImplementation() and when i 
> disable the no decoration it works. so my next step could be to replace 
> the MOTIF_WM_HINTS to something in EWMH hint.
>
> I am not a X11 expert so if you have suggestions i ll take them.
> Cedric
>
> Leif Delgass wrote:
>   
>> Robert and Cedric,
>>
>> I reported a fullscreen issue with GNOME (metacity WM) in the thread
>> Robert mentions.  For me, entering and leaving fullscreen mode works,
>> but the fullscreen window appears under the GNOME panels at the top
>> and bottom of the screen.  The fix for this is to use a fullscreen WM
>> hint that metacity honors.  I'm not sure if this qualifies as high
>> priority for 2.2 though.  Depending on the implementation,
>> incorporating the fix could involve changes to the GraphicsWindow
>> interface and all the platform-specific implementations.
>>
>> I have code to set fullscreen using the EWMH hint (see below), but
>> haven't had time to make a clean fix for submission yet.  I think the
>> simplest option might be to have a separate fullscreen state setting
>> method in the platform specific classes.  Another option is to add the
>> notion of a stacking-order trait and consider fullscreen as the
>> combination of 3 traits: no decoration, screen size window, and
>> top-level stacking.  I'm not sure about other platforms, but the EWMH
>> spec includes some additional stacking properties in addition to the
>> fullscreen state (e.g. above normal windows but below panels, and
>> below normal windows).  Then toggling fullscreen could be done
>> automatically when the corresponding traits are set.  If anyone else
>> wants to work on this, the code to set the fullscreen hint (using a
>> ClientMessage event sent to the root window) looks like this (where
>> isFullScreen is a bool set to the desired state):
>>
>> Display* display = getDisplayToUse();
>>
>> Atom netWMStateAtom = XInternAtom(display, "_NET_WM_STATE", True);
>> Atom netWMStateFullscreenAtom = XInternAtom(display,
>> "_NET_WM_STATE_FULLSCREEN", True);
>>
>> if (netWMStateAtom != None && netWMStateFullscreenAtom != None) {
>>     XEvent xev;
>>     xev.xclient.type = ClientMessage;
>>     xev.xclient.serial = 0;
>>     xev.xclient.send_event = True;
>>     xev.xclient.window = _window;
>>     xev.xclient.message_type = netWMStateAtom;
>>     xev.xclient.format = 32;
>>     xev.xclient.data.l[0] = isFullScreen ? 1 : 0;
>>     xev.xclient.data.l[1] = netWMStateFullscreenAtom;
>>     xev.xclient.data.l[2] = 0;
>>
>>     XSendEvent(display, RootWindow(display, DefaultScreen(display)),
>> False,  SubstructureRedirectMask | SubstructureNotifyMask, &xev);
>> }
>>
>> -Leif
>>
>> On 10/3/07, Robert Osfield <robert.osfield at gmail.com> wrote:
>>   
>>     
>>> HI Cedric,
>>>
>>> Changing the order would be fine.  This would also apply to the camera
>>> manipulators too.  If you make some changes and your happy just post
>>> me the complete changed file and I'll do a review of it.  This is
>>> pretty low priority issue though.
>>>
>>> The window resize issue you talk about much high priority issue and
>>> one that it'd be nice to fix for 2.2.  Since I don't have Gnome here I
>>> can't chase after this one so I'd appreciate it if yourself or others
>>> can chase this one done.
>>>
>>> Cheers,
>>> Robert.
>>>
>>> On 10/3/07, Cedric Pinson <mornifle at plopbyte.net> wrote:
>>>     
>>>       
>>>> I checked the --help-keys option of osgviewer, in fact everything is
>>>> here to work but all EventHandler are created after the
>>>> process of options.
>>>>
>>>> i tested with something like that and it report the keys i know it
>>>> changes the order of created HandlerEvent. But what do you think ?
>>>>
>>>>     // add the window size toggle handler
>>>>     viewer.addEventHandler(new osgViewer::WindowSizeHandler);
>>>>
>>>>     // if user request help write it out to cout.
>>>>     bool helpAll = arguments.read("--help-all");
>>>>     unsigned int helpType = ((helpAll || arguments.read("-h") ||
>>>> arguments.read("--help"))? osg::ApplicationUsage::COMMAND_LINE_OPTION :
>>>> 0 ) |
>>>>                             ((helpAll ||  arguments.read("--help-env"))?
>>>> osg::ApplicationUsage::ENVIRONMENTAL_VARIABLE : 0 ) |
>>>>                             ((helpAll ||
>>>> arguments.read("--help-keys"))?
>>>> osg::ApplicationUsage::KEYBOARD_MOUSE_BINDING : 0 );
>>>>
>>>>     if (helpType)
>>>>     {
>>>>         arguments.getApplicationUsage()->write(std::cout, helpType);
>>>>         osg::ref_ptr<osg::ApplicationUsage> usage = new
>>>> osg::ApplicationUsage;
>>>>         viewer.getUsage(*usage);
>>>>         usage->write(std::cout, helpType);
>>>>         return 1;
>>>>     }
>>>>
>>>>
>>>> Robert Osfield wrote:
>>>>       
>>>>         
>>>>> HI Cederic,
>>>>>
>>>>> Have a look through Septembers archives as there was another thread
>>>>> about problems under that I believe under Gnome.
>>>>>
>>>>> I use KDE myself and everything is working fine so its a window
>>>>> manager issue - i.e. its not supporting how
>>>>> osgViewer::GraphicsWindowX11.cpp is try to to change the window
>>>>> dimensions and decoration.
>>>>>
>>>>> Robert.
>>>>>
>>>>> On 10/3/07, Cedric Pinson <mornifle at plopbyte.net> wrote:
>>>>>
>>>>>         
>>>>>           
>>>>>> I use the last version of the svn. from this morning. i use gnome
>>>>>> environnement.
>>>>>> I think the log in my previous are wrong.
>>>>>>
>>>>>> GraphicsContext::getWindowingSystemInterface() 0x8058a90        0xb7eef200
>>>>>> draw() 0x805a450
>>>>>> Screen resolution = 640x480
>>>>>> cull()
>>>>>> cull() got SceneView 0x805abc8
>>>>>> end cull() 0x805a450
>>>>>> draw() got SceneView 0x805abc8
>>>>>> end draw() 0x805a450
>>>>>> draw() 0x805a450
>>>>>> UnmapNotify event recieved
>>>>>> ReparentNotify event recieved
>>>>>> MapNotify
>>>>>> MapNotify x=0 y=0 width=1440, height=900
>>>>>> Expose x=0 y=0 width=1440, height=900
>>>>>> ConfigureNotify x=0 y=0 width=1440, height=900
>>>>>>
>>>>>>
>>>>>> Robert Osfield wrote:
>>>>>>
>>>>>>           
>>>>>>             
>>>>>>> Hi Cedric,
>>>>>>>
>>>>>>> Which version of the OSG are you working against?  What window manager
>>>>>>> are you using?
>>>>>>>
>>>>>>> On 10/3/07, Cedric Pinson <mornifle at plopbyte.net> wrote:
>>>>>>>
>>>>>>>
>>>>>>>             
>>>>>>>               
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I have a strange behviour when i ran osgviewer it start in fullscreen
>>>>>>>> mode and when i tried to disable fullscreen to go in window mode with
>>>>>>>> the key F. it does not success to make the switch. I will dig but i
>>>>>>>> would like to know if i am alone or not.
>>>>>>>>
>>>>>>>> and i saw that
>>>>>>>> osgviewer --help-keys
>>>>>>>> Usage: osgviewerd [options] filename ...
>>>>>>>>
>>>>>>>> can someone report the same behaviour ?
>>>>>>>>
>>>>>>>> Cedric
>>>>>>>>
>>>>>>>> --
>>>>>>>> +33 (0) 6 63 20 03 56  Cedric Pinson mailto:mornifle at plopbyte.net http://www.plopbyte.net
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> osg-users mailing list
>>>>>>>> osg-users at lists.openscenegraph.org
>>>>>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>               
>>>>>>>>                 
>>>>>>> _______________________________________________
>>>>>>> osg-users mailing list
>>>>>>> osg-users at lists.openscenegraph.org
>>>>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>>>>>
>>>>>>>
>>>>>>>             
>>>>>>>               
>>>>>> --
>>>>>> +33 (0) 6 63 20 03 56  Cedric Pinson mailto:mornifle at plopbyte.net http://www.plopbyte.net
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> osg-users mailing list
>>>>>> osg-users at lists.openscenegraph.org
>>>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>>>>
>>>>>>
>>>>>>           
>>>>>>             
>>>>> _______________________________________________
>>>>> osg-users mailing list
>>>>> osg-users at lists.openscenegraph.org
>>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>>>
>>>>>         
>>>>>           
>>>> --
>>>> +33 (0) 6 63 20 03 56  Cedric Pinson mailto:mornifle at plopbyte.net http://www.plopbyte.net
>>>>
>>>>
>>>> _______________________________________________
>>>> osg-users mailing list
>>>> osg-users at lists.openscenegraph.org
>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>>
>>>>       
>>>>         
>>> _______________________________________________
>>> osg-users mailing list
>>> osg-users at lists.openscenegraph.org
>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>
>>>     
>>>       
>>   
>>     
>
>   

-- 
+33 (0) 6 63 20 03 56  Cedric Pinson mailto:mornifle at plopbyte.net http://www.plopbyte.net





More information about the osg-users mailing list