Re: [osg-users] full screen mode in osgviewer and options in command line
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 [EMAIL PROTECTED] 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 [EMAIL PROTECTED] 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_ptrosg::ApplicationUsage usage = new osg::ApplicationUsage; viewer.getUsage(*usage); usage-write(std::cout, helpType);
[osg-users] full screen mode in osgviewer and options in command line
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:[EMAIL PROTECTED] http://www.plopbyte.net ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] full screen mode in osgviewer and options in command line
here the debug log when i hit f for the fullscreen cull() cull() got SceneView 0x805abc8 end cull() 0x805a450 end draw() 0x805a450 draw() 0x805a450 draw() got SceneView 0x805abc8 *Expose x=0x3 y=0x1a5 width=0x261, height=0x3 Expose x=0x3 y=0x1a8 width=0x3, height=0x50 Expose x=0x3 y=0x1f8 width=0x3, height=0x118 Expose x=0x326 y=0x1f8 width=0x3, height=0x118 Expose x=0x3 y=0x310 width=0x326, height=0x3 Expose x=0x264 y=0x18b width=0xd8, height=0x6d *cull() cull() got SceneView 0x805a630 end cull() 0x805a450 end draw() 0x805a450 draw() 0x805a450 draw() got SceneView 0x805a630 Cedric Pinson 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:[EMAIL PROTECTED] http://www.plopbyte.net ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] full screen mode in osgviewer and options in command line
Hi Cedric, Which version of the OSG are you working against? What window manager are you using? On 10/3/07, Cedric Pinson [EMAIL PROTECTED] 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:[EMAIL PROTECTED] http://www.plopbyte.net ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] full screen mode in osgviewer and options in command line
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() 0x8058a900xb7eef200 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 [EMAIL PROTECTED] 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:[EMAIL PROTECTED] http://www.plopbyte.net ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org -- +33 (0) 6 63 20 03 56 Cedric Pinson mailto:[EMAIL PROTECTED] http://www.plopbyte.net ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] full screen mode in osgviewer and options in command line
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_ptrosg::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 [EMAIL PROTECTED] 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() 0x8058a900xb7eef200 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 [EMAIL PROTECTED] 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:[EMAIL PROTECTED] http://www.plopbyte.net ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org -- +33 (0) 6 63 20 03 56 Cedric Pinson mailto:[EMAIL PROTECTED] http://www.plopbyte.net ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org -- +33 (0) 6 63 20 03 56 Cedric Pinson mailto:[EMAIL PROTECTED] http://www.plopbyte.net ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] full screen mode in osgviewer and options in command line
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 [EMAIL PROTECTED] 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_ptrosg::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 [EMAIL PROTECTED] 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() 0x8058a900xb7eef200 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 [EMAIL PROTECTED] 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:[EMAIL PROTECTED] http://www.plopbyte.net ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org -- +33 (0) 6 63 20 03 56 Cedric Pinson mailto:[EMAIL PROTECTED] http://www.plopbyte.net ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org -- +33 (0) 6 63 20 03 56 Cedric Pinson mailto:[EMAIL PROTECTED] http://www.plopbyte.net ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] full screen mode in osgviewer and options in command line
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 [EMAIL PROTECTED] 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 [EMAIL PROTECTED] 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_ptrosg::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 [EMAIL PROTECTED] 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