-
-
Notifications
You must be signed in to change notification settings - Fork 76
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
Smoother session start #2124
base: main
Are you sure you want to change the base?
Smoother session start #2124
Conversation
I tried this but don't see any difference. Does this work under Wayland? I ran |
8ada0ac
to
7360823
Compare
It should work on wayland and X |
I did the usual steps after cloning and checkout your branch:
Let me try this branch again with your latest changes. |
I grabbed the latest, looks like there's unresolved merge conflicts checked in but I just resolved them locally. Why do you say it won't build on OS8? I am running the daily and it seems to build without errors. Also, Wayland doesn't seem to work but when I choose X session this works and looks good to me (not a code review) so I am in favour of this PR - hopefully it can be made to work for Wayland too. |
Hmm for some reason I thought OS8 didn't have a recent enough vala, causing #2119 🤷
Can you describe how it behaves? Do the panels just pop up without animation? Do they animate but not in sync? Something else? |
7360823
to
b27f228
Compare
Like on the latest commit? |
Yep I meant it behaves as usual - both panel and dock pop up without delay and without animation. |
Yes, the latest commit at the time of my comment :-) Are you not able to log in to Wayland session and observe yourself? I will only be able to come back to check this PR tomorrow though. |
Hmm that's strange there shouldn't have been any and I don't remember any.. (I take it you mean an unresolved conflict commited in and not that it wasn't up to date with main?)
I'm currently running it and just logged out and in again a few times but for me it works on wayland 🤷 |
Oh my bad - it is working for Wayland too - it's just that my monitor goes blank for I guess more than the 1.5 seconds when I login so I was not able to see the new effect. I hardcoded the delay to 5 seconds in my local checkout and yes I can see it working on Wayland too. Login to X session also monitor goes blank but for shorter interval so I was able to see the new effect. |
Having an hard-coded empirical value that delays the startup is a no-go to me. Each application sends a "ready" signal to the session that we would have to acknowledge |
What if my system has less RAM and components will load longer then 1,5s? |
b27f228
to
140829a
Compare
We are waiting for the clients to be ready anyways, the 1.5 was just because I saw somewhere a mockup with quite some delay and also to not stall the other if one of the clients is malfunctioning. |
049a670
to
87b7321
Compare
Ok this is now mostly for wayland because on X the window was already shown when we know it's a panel so we can't really wait for anything. On wayland the way it now works is we wait for all clients that have requested being a panel to show and then immediately reveal them in sync. As a fail safe the WM lets the ShellClientsManager know when the stage is ready which will start a 5 second timer which will reveal all clients that are ready. After the panels have been revealed the first time we won't do anything like that again until the next session start so e.g. when a panel crashes and restarts it will show as soon as it's ready. |
bf97b6f
to
f20fe7a
Compare
Please don't merge main if it's intended to be rebase merged, instead rebase on main :) |
f20fe7a
to
050fe55
Compare
For easier review do the individual commits (or rather 87b7321 only since the other one is just #2109 squashed)
Rebase merge if merged before #2109
Ok this is now mostly for wayland because on X the window was already shown when we know it's a panel so we can't really say wait for anything.
On wayland the way it now works is we wait for all clients that have requested being a panel to show and then immediately reveal them in sync. As a fail safe the WM lets the ShellClientsManager know when the stage is ready which will start a 5 second timer which will reveal all clients that are ready. After the panels have been revealed the first time we won't do anything like that again until the next session start so e.g. when a panel crashes and restarts it will show as soon as it's ready.
Unfortunately I can't make a recording since it's at session start but if you try it you should definitely see it :)