Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Xephyr resizeable window goes into a loop #1248

Closed
totaam opened this issue Jul 7, 2016 · 10 comments
Closed

Xephyr resizeable window goes into a loop #1248

totaam opened this issue Jul 7, 2016 · 10 comments

Comments

@totaam
Copy link
Collaborator

totaam commented Jul 7, 2016

Issue migrated from trac ticket # 1248

component: server | priority: major | resolution: invalid | keywords: x11 Xephyr resize

2016-07-07 12:44:36: antoine created the issue


Just start Xephyr as a child: --start=Xephyr -resizeable, then it goes into a spin as soon as you try to resize it. Log attached.

@totaam
Copy link
Collaborator Author

totaam commented Jul 7, 2016

2016-07-07 12:45:22: antoine uploaded file Xephyr-resize-loop.log (20.5 KiB)

log of server endless resize loop

@totaam
Copy link
Collaborator Author

totaam commented Jul 7, 2016

2016-07-07 13:34:43: antoine changed status from new to assigned

@totaam
Copy link
Collaborator Author

totaam commented Jul 7, 2016

2016-07-07 13:34:43: antoine commented


Sequence of events from the log sample above:

  • client sends _process_configure_window with the new dimensions
  • updateprop fires the notification, which triggers XpraServer._window_resized_signaled where we correctly detect that the window geometry matches the desktop manager's value (which we just updated from the client)
  • the _do_update_client_geometry sends a ConfigureNotify, which we ignore on the corral window: we only invalidate the pixmap, on the client window we end up in resize_corral_window which is a no-op since the dimensions match

All further events follow the same pattern. That's before the problem occurs.
At some point we stop resizing yet the stream of ConfigureNotify events does not stop: whilst we resize the corral window (up or down), Xephyr is busy resizing its own window to match, and then we try to match this size.. causing the loop:

resize_corral_window() resize from (712, 481) to (705, 480)
resize_corral_window() resize from (705, 480) to (712, 481)
resize_corral_window() resize from (712, 481) to (705, 480)

etc

Maybe #723 would help with this? Or this patch: ephyr: Don't configure window while responding to configure events

@totaam
Copy link
Collaborator Author

totaam commented Jul 7, 2016

2016-07-07 13:38:04: antoine uploaded file Xephyr-resize-loop2.log (24.5 KiB)

actual ConfigureNotify loop

@totaam
Copy link
Collaborator Author

totaam commented Jul 7, 2016

2016-07-07 17:25:46: antoine uploaded file rate-limit-corral-resize.patch (2.4 KiB)

trying to rate limit corral window resizing

@totaam
Copy link
Collaborator Author

totaam commented Jul 7, 2016

2016-07-07 17:59:38: antoine uploaded file Xephyr-resize.patch (2.0 KiB)

upstream patch

@totaam
Copy link
Collaborator Author

totaam commented Jul 7, 2016

2016-07-07 18:04:07: antoine changed status from assigned to closed

@totaam
Copy link
Collaborator Author

totaam commented Jul 7, 2016

2016-07-07 18:04:07: antoine set resolution to invalid

@totaam
Copy link
Collaborator Author

totaam commented Jul 7, 2016

2016-07-07 18:04:07: antoine commented


The bug is fixed in Xephyr by applying the patch attached, I have requested its inclusion in a future stable update: Re: ephyr: Don't configure window while responding to configure events

Closing as not an xpra bug.
Follow up ticket: #1249, further Xephyr geometry issues.

@totaam totaam closed this as completed Jul 7, 2016
@totaam
Copy link
Collaborator Author

totaam commented Jul 12, 2016

2016-07-12 17:52:23: antoine commented


Milestone renamed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant