After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 723029 - glxgears fullscreen not rendered full
glxgears fullscreen not rendered full
Status: RESOLVED FIXED
Product: mutter
Classification: Core
Component: general
3.10.x
Other Linux
: Normal normal
: ---
Assigned To: mutter-maint
mutter-maint
: 722977 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2014-01-26 16:30 UTC by Philipp Leonhardt
Modified: 2014-03-11 17:04 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Fix identification of CSD windows when checking whether to force fullscreen (1.34 KB, patch)
2014-03-06 00:04 UTC, Owen Taylor
needs-work Details | Review
Fix identification of CSD windows when checking whether to force fullscreen (3.34 KB, patch)
2014-03-11 16:36 UTC, Owen Taylor
committed Details | Review
Fix identification of CSD windows when checking whether to force fullscreen (2.82 KB, patch)
2014-03-11 16:37 UTC, Owen Taylor
committed Details | Review

Description Philipp Leonhardt 2014-01-26 16:30:03 UTC
When using
# glxgears -fullscreen
on Gnome 3.10, the window is not rendered in fullscreen.
There is always the top panel visible.
Don't know if this problem has impact of the glxgears performance while measuring FPS.
Comment 1 drago01 2014-01-31 11:32:38 UTC
(In reply to comment #0)
> When using
> # glxgears -fullscreen
> on Gnome 3.10, the window is not rendered in fullscreen.
> There is always the top panel visible.

I can reproduce that will have a look.

> Don't know if this problem has impact of the glxgears performance while
> measuring FPS.

glxgears is the wrong tool if your aim is to measure performance. The numbers you get are meaningless.
Comment 2 drago01 2014-01-31 11:54:38 UTC
_NET_WM_STATE(ATOM) = _NET_WM_STATE_MAXIMIZED_HORZ, _NET_WM_STATE_MAXIMIZED_VERT
WM_STATE(WM_STATE):
		window state: Normal
		icon window: 0x0
_NET_WM_DESKTOP(CARDINAL) = 0
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW
WM_ICON_NAME(STRING) = "glxgears"
WM_NAME(STRING) = "glxgears"
WM_NORMAL_HINTS(WM_SIZE_HINTS):
		user specified location: 0, 0
		user specified size: 3600 by 1080
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x2, 0x172d200, 0x0, 0x4a242030, 0x172be40

So it does not mark the window as fullscreen it just re sized it to an the full screen size and is not an override redirect window. So it does not match anything we consider fullscreen.
Comment 3 Jasper St. Pierre (not reading bugmail) 2014-01-31 14:09:26 UTC
We have heuristics to solve this case:

https://git.gnome.org/browse/mutter/tree/src/core/constraints.c#n420

Why aren't they working?
Comment 4 Owen Taylor 2014-03-05 23:44:11 UTC
(In reply to comment #3)
> We have heuristics to solve this case:
> 
> https://git.gnome.org/browse/mutter/tree/src/core/constraints.c#n420
> 
> Why aren't they working?

Because of:

commit 4eeeb1557a3a0caff6ef1debd92aeb541ae1b556
Author: Giovanni Campagna <gcampagn@redhat.com>
Date:   Thu Sep 26 10:33:06 2013 +0200

    constraints: don't apply fullscreen workarounds for CSD windows
    
    If you maximize a CSD window on a monitor without struts, it ends
    up taking the whole monitor size, but it doesn't mean that the
    application wants to fullscreen.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=708718

That added a check on window->decorated to the heuristic, but a window which is !window->decorated is *not* necessarily CSD window - in fact, a window doing old-style fullscreen very likely turns off decoration.

I'm not really sure what to do here - probably if a CSD window actually set a property declaring it as such, and maybe also giving decoration size (useful for cascading) that would be good.

A *hack* is that any GTK+ CSD window will have _GTK_FRAME_EXTENTS set, even if the extents are zero. Maybe that's good enough for now.
Comment 5 Owen Taylor 2014-03-05 23:53:41 UTC
*** Bug 722977 has been marked as a duplicate of this bug. ***
Comment 6 Owen Taylor 2014-03-06 00:04:17 UTC
Created attachment 271052 [details] [review]
Fix identification of CSD windows when checking whether to force fullscreen

We try to exempt CSD windows from being forced fullscreen if they are
undecorated and the size of the screen; however, we also catch almost
all windows that *do* need to be forced fullscreen in this check, since
they also have decorations turned off.

Identify actual CSD windows by checking whether _GTK_FRAME_EXTENTS is set -
GTK+ will always set this on CSD windows even if they have no invisible
borders or shadows at the current time.
Comment 7 Florian Müllner 2014-03-06 00:24:25 UTC
Review of attachment 271052 [details] [review]:

OK.
Comment 8 Jasper St. Pierre (not reading bugmail) 2014-03-06 01:33:49 UTC
Review of attachment 271052 [details] [review]:

I think we should probably have meta_window_is_client_decorated so we can adjust the heuristics in the future.

Martin Graesslin discussed such a "proper" property here: https://mail.gnome.org/archives/wm-spec-list/2014-February/msg00000.html
Comment 9 Owen Taylor 2014-03-11 16:36:40 UTC
Created attachment 271536 [details] [review]
Fix identification of CSD windows when checking whether to force fullscreen

We try to exempt CSD windows from being forced fullscreen if they are
undecorated and the size of the screen; however, we also catch almost
all windows that *do* need to be forced fullscreen in this check, since
they also have decorations turned off.

Identify actual CSD windows by checking whether _GTK_FRAME_EXTENTS is set -
GTK+ will always set this on CSD windows even if they have no invisible
borders or shadows at the current time.

We explicitly turn off the legacy-fullscreen check for native wayland windows
so we don't start legacy-fullscreening them if the new
meta_window_is_client_decorated() is later made more accurate.
Comment 10 Owen Taylor 2014-03-11 16:37:30 UTC
Created attachment 271537 [details] [review]
Fix identification of CSD windows when checking whether to force fullscreen

We try to exempt CSD windows from being forced fullscreen if they are
undecorated and the size of the screen; however, we also catch almost
all windows that *do* need to be forced fullscreen in this check, since
they also have decorations turned off.

Identify actual CSD windows by checking whether _GTK_FRAME_EXTENTS is set -
GTK+ will always set this on CSD windows even if they have no invisible
borders or shadows at the current time.
Comment 11 Jasper St. Pierre (not reading bugmail) 2014-03-11 16:48:11 UTC
Review of attachment 271536 [details] [review]:

Looks good.
Comment 12 Jasper St. Pierre (not reading bugmail) 2014-03-11 16:48:22 UTC
Review of attachment 271537 [details] [review]:

Looks good as well.
Comment 13 Owen Taylor 2014-03-11 17:04:34 UTC
Attachment 271536 [details] pushed as 2cf80bc - Fix identification of CSD windows when checking whether to force fullscreen
Attachment 271537 [details] pushed as 2cf80bc - Fix identification of CSD windows when checking whether to force fullscreen