mate-desktop / marco

MATE default window manager
https://mate-desktop.org
GNU General Public License v2.0
197 stars 87 forks source link

Regression in marco 1.24: Breaks toggle-fullscreen feature in FreeRDP (X11) #607

Open sunweaver opened 4 years ago

sunweaver commented 4 years ago

Expected behaviour

When connecting to a fullscreen (Windows) RDP session using xfreerdp (as found in Debian testing these days), you can hit ctrl+alt+enter in the RDP session and the session window toggles from fullscreen to a windowed RDP session. Hitting ctrl+alt+enter again lets the RDP session toggle back into full screen mode.

Actual behaviour

The fullscreen RDP session flickers when ctrl+alt+enter gets hit (one can see the desktop shell for the fraction of a second) and then the RDP session comes back to fullscreen. The user cannot leave the fullscreen RDP session other than logging out of the RDP server and ending the session.

Steps to reproduce the behaviour

Install MATE 1.24 with marco 1.24 on a Debian testing (or any other recent Linux) and connect to a Windows RDP server using xfreerdp:

xfreerdp /f +toggle-fullscreen /d:<DOMAIN> /u:<USER> /v:<SERVER> /cert-ignore

The used xfreerdp is freerdp2 2.0.0~git20190204.1.2693389a+dfsg1-2 [1]. The +toggle-fullscreen option normally is the default, listing it in the above command anyway, to be sure.

Once the RDP session has come up, hit ctrl+alt+enter. You should see a flickering and then you are back in fullscreen RDP again.

Then downgrade marco on the client to 1.22.4. Try the above again and hitting ctrl+alt+enter should then toggle fullscreen / windowed session mode all fine.

MATE general version

1.24

Package version

1.24.0

Linux Distribution

Debian testing/unstable

Link to downstream report of your Distribution

none

[1] http://snapshot.debian.org/package/freerdp2/2.0.0%7Egit20190204.1.2693389a%2Bdfsg1-2/

sunweaver commented 4 years ago

@bmiklautz: Highlighting Bernhard Miklautz on this regression in marco. Bernhard is one of the leading FreeRDP upstream developers.

sunweaver commented 3 years ago

@vkareh have you already noticed this bug? Do you have any idea which of the commits between 1.24.1 and 1.22.4 might be responsible for this change of behaviour in FreeRDP?

pabs3 commented 3 years ago

I have bisected this issue and found that it was caused by this commit:

https://github.com/mate-desktop/marco/commit/bf89c4c4221f060006a2fef93c72ce9d949adcec

pabs3 commented 3 years ago

This is the issue that caused this commit to be added:

https://github.com/mate-desktop/marco/issues/316

pabs3 commented 3 years ago

I noticed that not calling meta_window_move_resize_internal in the fullscreen-legacy case does prevent this issue, but then the window doesn't get decorations the first time it switches out of fullscreen, subsequent switches out of fullscreen do get decorated though.

pabs3 commented 3 years ago

@bmiklautz:

I modified FreeRDP to comment out all of the XMoveWindow calls within the xf_SetWindowFullscreen function and this fixed the issue perfectly for me.

I tried moving the XMoveWindow calls after setting the fullscreen state, but that did not work for me.

(I only tested the single-monitor case for these tests)

Are there window managers where setting a window as full-screen does not also resize it to the correct size of the current monitor?

bmiklautz commented 3 years ago

@pabs3 unfortunately. Full screen handling is a mess it's handled differently almost everywhere ;(.