Leleat / Tiling-Assistant

An extension which adds a Windows-like snap assist to GNOME. It also expands GNOME's 2 column tiling layout.
GNU General Public License v2.0
1.12k stars 64 forks source link

tiled mpv window snaps back to untiled state when clicking on it since gnome 46 #331

Closed sans-c closed 5 months ago

sans-c commented 6 months ago

Describe the bug When you tile mpv to a corner or to the side of the screen, that works just fine. However if you subsequently click on the mpv window, it leaves its tiled state and snaps back to the default window size.

This does not happen if you switch focus to the window by "tabbing" back to it. You need to click for this to happen.

The issue was not present with Gnome 45.x.

Steps To Reproduce

  1. play some video or stream in mpv
  2. tile mpv to a corner of the screen
  3. click on the mpv window and observe it snapping back to "normal" from being tiled.

System Info:

Journalctl logs

Error in size change accounting.

Edit: this error appears for me for pretty much every tiling operation, regardless of which application or window it is. I also have some other issues which I do not yet know how to reliably reproduce. But everything started with gnome 46. 45.x worked mostly flawlessly.

Leleat commented 6 months ago

Can you test if https://github.com/Leleat/Tiling-Assistant/pull/328 fixes it for you?

sans-c commented 6 months ago

Can you test if #328 fixes it for you?

I will try in the next few hours presumably. In the meantime, some more context. Don't know if it is related or not.

While trying to reproduce the other issues I currently have, I rapidly moved around a Firefox window without releasing it. After a while, the Window became unresponsive. In fact, all open windows were. New windows were affected too. I could click on them but I could not move or resize them. alt+F4 with the window having focus still worked.

I then tried to logout of my current session. Upon trying to login again, the shell froze after entering the first few characters of my password. I had to hard reboot my system.

After the reboot I wanted to try if that happens with Tiling Assistant being disabled. So I disabled it, again moved a window around rapidly and this time, everything was okay. I reenabled the extension and ran the test again. This time there was no issue, too! On top of that I noticed that now the behaviour I originally described here was no longer present. mpv stays tiled now. However I get lots of error logs when tiling mpv by using the mouse (and sometimes the keyboard).

Sanitized output at the end. Sorry for the verbose error description and a very inconcise report. Something seems definitely wrong, it is just hard to pin down at this moment.

log output (several dozen or hundreds of lines like this at once):

Object .Gjs_extension_moveHandler_TilePreview (0x5770b75de9e0), has been already disposed — impossible to access it. This might be caused by the object having been destroyed from C code using something such as destroy(), dispose(), or remove() vfuncs. == Stack trace for context 0x5770b425ca10 ==

0 7ffdaa25ba30 b resource:///org/gnome/shell/ui/environment.js:141 (26e87b97d290 @ 15)

1 7ffdaa25bb40 b self-hosted:221 (26e87b9709c0 @ 267)

2 7ffdaa25bc20 b resource:///org/gnome/shell/ui/environment.js:141 (26e87b97d100 @ 592)

3 7ffdaa25bcf0 b resource:///org/gnome/shell/ui/environment.js:287 (26e87b97d880 @ 19)

4 7ffdaa25bdf0 b file:///home/redacted/.local/share/gnome-shell/extensions/tiling-assistant@leleat-on-github/src/extension/moveHandler.js:924 (2d922dfaf600 @ 1266)

5 7ffdaa25bfb0 b file:///home/redacted/.local/share/gnome-shell/extensions/tiling-assistant@leleat-on-github/src/extension/moveHandler.js:528 (2d922dfa9ec0 @ 1185)

6 7ffdaa25c150 b file:///home/redacted/.local/share/gnome-shell/extensions/tiling-assistant@leleat-on-github/src/extension/moveHandler.js:391 (2d922dfa9c40 @ 1833)

7 5770b4326ac8 i resource:///org/gnome/shell/ui/init.js:21 (26e87b970bf0 @ 48)

Object .Gjs_extension_moveHandler_TilePreview (0x5770b75de9e0), has been already disposed — impossible to access it. This might be caused by the object having been destroyed from C code using something such as destroy(), dispose(), or remove() vfuncs. == Stack trace for context 0x5770b425ca10 ==

0 7ffdaa25bdf0 b file:///home/redacted/.local/share/gnome-shell/extensions/tiling-assistant@leleat-on-github/src/extension/moveHandler.js:875 (2d922dfaf600 @ 157)

1 7ffdaa25bfb0 b file:///home/redacted/.local/share/gnome-shell/extensions/tiling-assistant@leleat-on-github/src/extension/moveHandler.js:528 (2d922dfa9ec0 @ 1185)

2 7ffdaa25c150 b file:///home/redacted/.local/share/gnome-shell/extensions/tiling-assistant@leleat-on-github/src/extension/moveHandler.js:391 (2d922dfa9c40 @ 1833)

3 5770b4326ac8 i resource:///org/gnome/shell/ui/init.js:21 (26e87b970bf0 @ 48)

clutter_actor_set_child_below_sibling: assertion 'child->priv->parent == self' failed Object .Gjs_extension_moveHandler_TilePreview (0x5770b75de9e0), has been already disposed — impossible to access it. This might be caused by the object having been destroyed from C code using something such as destroy(), dispose(), or remove() vfuncs. == Stack trace for context 0x5770b425ca10 ==

0 7ffdaa25a720 b file:///home/redacted/.local/share/gnome-shell/extensions/tiling-assistant@leleat-on-github/src/extension/moveHandler.js:875 (2d922dfaf600 @ 157)

1 7ffdaa25a8e0 b file:///home/redacted/.local/share/gnome-shell/extensions/tiling-assistant@leleat-on-github/src/extension/moveHandler.js:528 (2d922dfa9ec0 @ 1185)

2 7ffdaa25aa80 b file:///home/redacted/.local/share/gnome-shell/extensions/tiling-assistant@leleat-on-github/src/extension/moveHandler.js:391 (2d922dfa9c40 @ 1833)

3 5770b4326ca0 i file:///home/redacted/.local/share/gnome-shell/extensions/tiling-assistant@leleat-on-github/src/extension/tilingWindowManager.js:210 (2d922dfb9740 @ 1432)

4 5770b4326be0 i file:///home/redacted/.local/share/gnome-shell/extensions/tiling-assistant@leleat-on-github/src/extension/moveHandler.js:264 (2d922dfa9ab0 @ 495)

5 5770b4326b58 i file:///home/redacted/.local/share/gnome-shell/extensions/tiling-assistant@leleat-on-github/src/extension/moveHandler.js:233 (2d922dfa9a60 @ 48)

6 5770b4326ac8 i resource:///org/gnome/shell/ui/init.js:21 (26e87b970bf0 @ 48)

clutter_actor_set_child_below_sibling: assertion 'child->priv->parent == self' failed Object .Gjs_extension_moveHandler_TilePreview (0x5770b75de9e0), has been already disposed — impossible to access it. This might be caused by the object having been destroyed from C code using something such as destroy(), dispose(), or remove() vfuncs. == Stack trace for context 0x5770b425ca10 ==

0 7ffdaa25a720 b file:///home/redacted/.local/share/gnome-shell/extensions/tiling-assistant@leleat-on-github/src/extension/moveHandler.js:875 (2d922dfaf600 @ 157)

1 7ffdaa25a8e0 b file:///home/redacted/.local/share/gnome-shell/extensions/tiling-assistant@leleat-on-github/src/extension/moveHandler.js:528 (2d922dfa9ec0 @ 1185)

2 7ffdaa25aa80 b file:///home/redacted/.local/share/gnome-shell/extensions/tiling-assistant@leleat-on-github/src/extension/moveHandler.js:391 (2d922dfa9c40 @ 1833)

3 5770b4326ca0 i file:///home/redacted/.local/share/gnome-shell/extensions/tiling-assistant@leleat-on-github/src/extension/tilingWindowManager.js:210 (2d922dfb9740 @ 1432)

4 5770b4326be0 i file:///home/redacted/.local/share/gnome-shell/extensions/tiling-assistant@leleat-on-github/src/extension/moveHandler.js:264 (2d922dfa9ab0 @ 495)

5 5770b4326b58 i file:///home/redacted/.local/share/gnome-shell/extensions/tiling-assistant@leleat-on-github/src/extension/moveHandler.js:233 (2d922dfa9a60 @ 48)

6 5770b4326ac8 i resource:///org/gnome/shell/ui/init.js:21 (26e87b970bf0 @ 48)

clutter_actor_set_child_below_sibling: assertion 'child->priv->parent == self' failed Error in size change accounting.

sans-c commented 6 months ago

Okay, so in a quick test https://github.com/Leleat/Tiling-Assistant/pull/328 seems to resolve the issue. I will keep an eye out for other errors however and report back.

Yet a little more context: also with the git version spawning a new window or opening a new program results in

meta_window_set_stack_position_no_sync: assertion 'window->stack_position >= 0' failed

Basically every tiling operation results in

Error in size change accounting.

If you need any more info or if I should open another issue, let me know. I'll see how everything works for now.

Leleat commented 6 months ago

Error in size change accounting.

This is caused by me (mis)using GNOME's window animation and has been around since basically day one. If you disable the tiling animations in T-A's settings, that error message will disappear. In the past the only issue that may have caused is window appearing frozen when using the "layout" feature (https://github.com/Leleat/Tiling-Assistant/issues/304).

sans-c commented 6 months ago

Error in size change accounting.

..disable the tiling animations in T-A's settings, that error message will disappear.

Which setting are you referring too? I can't seem to find one. If you are talking about "Active Window Hint", this setting does not appear to address the error.

In the past the only issue that may have caused is window appearing frozen when using the "layout" feature (#304).

Until now I didn't even know about the advanced/experimental features. :D I haven't used them. So the culprit must have beein something else.

Leleat commented 5 months ago

So the said MR landed which should fix mpv 'untiling' when being clicked. In the other issue you said that all your other problems also disappeared (which I find weird since the linked MR is pretty innocent but okay...). So I am closing this. If you encounter other bugs, feel free to respond here or open a new issue.