On 10/4/07, Cedric Pinson <[EMAIL PROTECTED]> wrote:
> Hi
> It's a patch to have fullscreen toggle working on gnome, it concerns
> only X11 implementation.
> the problem:
> when i run osgviewer i can't go in windowed mode. When i want to go in
> windowed mode the screen flash i see the viewport (only the gl viewport
> not the window) to have the size of the window size asked by osg and the
> frame after. It fails and rest in fullscreen. After some test i saw that
> the problem was the MOTIF decoration setup. Metacity seems to not handle
> correctly the window if there is no decoration.
>
> answer:
> The idea is to not use the MOTIF decoration setup, and to send an ICCM
> fullscreen event when it's appropriate. It means if the window has the
> size of the screen and the decoration wanted is false then we send the
> fullscreen event, else we send the event to disable the fullscreen mode.
> The problem of this method is you can't have a window in a windowed
> mode  without decoration. It's not a perfect solution.
>
> I tested it with compositviewer and osgviewer and it works great. I know
> that most of WM now use ICCM features so i hope it will not be a problem
> on other WM. Some feedback will be appreciate on others windows manager.
>
> Thanks to [EMAIL PROTECTED] for the piece of code.
>
>
> Cheers
>
>
> --
> +33 (0) 6 63 20 03 56  Cedric Pinson mailto:[EMAIL PROTECTED] 
> http://www.plopbyte.net

Hi Cedric,

I have some comments on the changes:  I don't believe the motif hints
are the problem per se, but your original comment about the
isFullScreen test in ViewerEventHandlers is correct.  The motif
decoration hints actually do work for me with GNOME/metacity, and can
be used to get a non-fullscreen, undecorated window.  The problem is
that when you remove decorations and attempt to resize the window to
fullscreen without using the fullscreen hint, metacity makes the
window smaller than screen size to account for the panels.  The
toggleFullscreen in ViewerEventHandlers then fails to recognize that
the window is "fullscreen" since the window manager modified the
requested window size, so toggleFullscreen tries to make the window
fullscreen on every toggle.

The behavior you saw with the GL viewport not matching the window size
is probably a consequence of the way resizing is implemented in
GraphicsWindowX11.  The setWindowRectangleImplementation assumes it
will get the requested size and adds a usleep to wait for the window
manager.  I think this is a hack around the asynchronous nature of
Xlib.  Really, the resize should not be assumed to work and should not
be acted on (resizing the GL context) until a ConfigureNotify event is
received with the actual new size of the window.  The window manager
can refuse the resize altogether or it can resize to a different size
than was requested.

-- 
Leif Delgass
[EMAIL PROTECTED]
_______________________________________________
osg-submissions mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org

Reply via email to