summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* local-display-factory: Don't try sd_seat_can_graphicalwip/can-graphical-supportIain Lane2018-10-161-13/+58
| | | | | | | | | | | | | I've been seeing cases where this function returns FALSE when the seat actually can host a graphical session - when loginctl says "yes". In this case we think we can't, so we don't start up - but we actually can, so logind never sends a PropertiesChanged signal that we can react on to start the greeter. That's a bad situation. Actually creating the proxy retrieves the value of the property for us automatically, so we can just fetch it from there instead of using the libsystemd API.
* local-display-factory: defer initialization for CanGraphical=no seatsRay Strode2018-10-161-6/+126
| | | | | | | | | During startup a seat may not be ready for a display server yet. This commit changes GDM to wait until the seat reports that it is CanGraphical capable, before trying to put a login screen on it. Closes https://gitlab.gnome.org/bugzilla-migration/gdm/issues/103
* Update Malayalam translationAnish Sheela2018-10-151-99/+103
|
* Update Esperanto translationCarmen Bianca BAKKER2018-10-131-175/+175
|
* Merge branch 'initial-setup-fix' into 'master'Ray Strode2018-10-062-132/+132
|\ | | | | | | | | manager: do initial-setup post work in manager code See merge request GNOME/gdm!50
| * manager: do initial-setup post work in manager codeRay Strode2018-10-062-132/+132
|/ | | | | | | | | | | | Right now we do the initial-setup related post work when stopping the greeter, but the problem is we delay stopping the greeter now until after the user session is started. That post-work needs to be done before the user session is started. This commit moves the code to a more logical place.
* Merge branch 'wip/fix-autologin' into 'master'Ray Strode2018-10-061-2/+2
|\ | | | | | | | | | | | | manager: correct display confusion Closes #426 See merge request GNOME/gdm!49
| * manager: correct display confusionRay Strode2018-10-011-2/+2
|/ | | | | | | | | commit c5c5bf1f reworked autologin and broke it. This commit addresses the breakage by accessing the proper display variable. Closes https://gitlab.gnome.org/GNOME/gdm/issues/426
* configure: bump to 3.30.13.30.1test2Ray Strode2018-09-251-1/+1
|
* NEWS: update for releaseRay Strode2018-09-251-0/+8
|
* Merge branch 'wip/gdm-vt-switch-fixes' into 'master'Ray Strode2018-09-252-53/+60
|\ | | | | | | | | Wip/gdm vt switch fixes See merge request GNOME/gdm!48
| * local-display-factory: handle reviving displays that are waiting to dieRay Strode2018-09-251-1/+4
| | | | | | | | | | | | | | | | We may end up re-using a display in waiting-to-finish state before it gets finished in this case reset its state to managed to avoid it getting finished while it is being used. Closes https://gitlab.gnome.org/GNOME/gdm/merge_requests/45
| * local-display-factory: Remove same VT so don't switch checkRay Strode2018-09-251-26/+13
| | | | | | | | | | | | | | | | | | We avoid changing to the login screen vt if we're already on it, but the call is racy since we react to vt changes concurrently with logind (who we query for the active vt). This check drops the active vt check since it's pointless and getting in the way.
| * local-display-factory: Remove initial VT is in use checkHans de Goede2018-09-251-13/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The initial VT is in use check in on_vt_changed() is racy, when switching to VT1 from an active session, on_vt_changed() may run before logind has processed the VT change and then sd_seat_get_active() will return the active session which we are switching away from. This results in the greeter not being started on VT1. On my system gdm reliably wins the race resulting in not getting a greeter when manually switching from an active session to VT1. gdm already starts the greeter unconditionally from gdm_local_display_factory_sync_seats() on both startup and when an user session exits. gdm also starts it unconditionally when selecting "Switch user" from an user session. Now autologin sessions avoid the initial VT as well. So we now can assume that the initial VT is free for the login screen's use. And create_display already checks for and re-uses an existing greeter, so we can safely remove the racy check.
| * manager: don't run autologin display on tty1Ray Strode2018-09-251-3/+1
| | | | | | | | | | | | | | | | | | | | tty1 is really meant for the login screen. If a user autologins on it and we need a login screen later, then the login screen has to go in some auxiliary VT which isn't very nice. This commit changes autologin to not use the initial vt.
| * manager: rework how autologin is figured outRay Strode2018-09-251-11/+35
| | | | | | | | | | | | | | | | | | | | | | | | At the moment we decide whether or not to perform autologin, by looking at if the display is the initial VT display and if autologin hasn't been started before. That isn't going to work in the future when autologin is started on a non-initial vt. This commit changes GDM to instead check if the seat is seat0, and if autologin hasn't run before, before deciding to do autologin.
| * local-display-factory: don't autoreap initial-setupRay Strode2018-09-251-0/+8
|/ | | | | | | | We automatically kill the login screen when switching VTs away from it, but we should never kill the initial-setup screen in that situation. This commit adds a check to prevent that from happening.
* Merge branch 'stop-greeter-fix' into 'master'Ray Strode2018-09-123-36/+41
|\ | | | | | | | | daemon: Move the waiting for the session to have taken over the fb to gdm-local-display-factory See merge request GNOME/gdm!47
| * daemon: Move the waiting the session to have taken over the fb to ↵Hans de Goede2018-09-123-36/+41
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gdm-local-display-factory Commit 708618746683 ("gdm-wayland-session,gdm-x-session: register after delay") delayed displays changing their status from PREPARED to MANAGED so that their status would not change until the session has had a change to install its own framebuffer and tell the GPU to scanout this new fb. Commit 74ee77717df7 ("local-display-factory: defer killing greeter until new session registers") uses this to avoid a flicker when transitioning from the greeter to the user-session by deferring the stopping of the greeter-session until the new display moves to the MANAGED state. But this only works when transitioning to a new user-session, when moving to an existing user-session (fast user switching) the display already is in MANAGED state and instead of deferring the stopping of the greeter commit 74ee77717df7 causes us to now never stop the greeter-session. This commit fixes this by starting a timeout when switching away from the initial-vt and letting that timeout stop the greeter-session. This commit removes the finish_waiting_displays_on_seat() call when the display's status changes to MANAGED, so that we still only have one code path stopping the greeter and not two. This means we also no longer need to delay registering the display. So this commit removes the code adding the delay (reverts commit 74ee77717df7). Note this commit uses a delay of 10 seconds, rather then 2 seconds. The transition to a new user-session takes about 8 seconds on my budget Apollo Lake based laptop (with SSD). Note this all really is a workaround, the proper solution for this would be able to tell the kernel to keep the greeter framebuffer around until a new framebuffer is installed. There is a patch to add a new unref_fb ioctl for this: https://www.spinics.net/lists/dri-devel/msg140912.html . We need to get this patch upstream and teach mutter to use it.
* Merge branch 'no-wayland-for-nvidia' into 'master'Ray Strode2018-09-061-0/+2
|\ | | | | | | | | data: disable wayland for proprietary nvidia machines See merge request GNOME/gdm!46
| * data: disable wayland for proprietary nvidia machinesJonas Ådahl2018-09-061-0/+2
|/ | | | | | | | | At the moment GLX applications don't work well when the proprietary nvidia driver is used with a wayland session. For now, disable wayland on that hardware, and users who want to opt in can just edit the udev rule. (or add their own that overrides it)
* autogoo: make udev rules dir configurableBin Li2018-09-053-3/+14
| | | | | | | | | | | | | | | | | | | | | | Different distributions place udev rules in different locations (depending on whether or not /usr is a symlink to /) That means the location needs to be configurable. This commit adds a new ./configure argument, --with-udevdir that allows distributions to specify where udev looks for its data files. By default it pulls the answer from pkg-config. This commit also fixes `make distcheck` when run by an unprivileged user by disabling udev rule installation entirely during distcheck. Small changes by Ray Strode. Closes https://gitlab.gnome.org/GNOME/gdm/merge_requests/44
* Update Belarusian translationYuras Shumovich2018-09-051-98/+103
|
* configure: bump to 3.30.03.30.0Ray Strode2018-09-041-1/+1
|
* NEWS: update for releaseRay Strode2018-09-041-0/+5
|
* Merge branch 'BUILD-FIXES-EEK' into 'master'Ray Strode2018-09-012-3/+3
|\ | | | | | | | | | | | | Build fixes eek Closes #416 See merge request GNOME/gdm!43
| * local-display-factory: fix build with --disable-user-display-serverRay Strode2018-09-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | commit cf8d918f added a call to `lookup_by_session` which was previously only defined when built GDM was built with `--enable-user-disable-server`. That causes the build to fail with `--disable-user-display-server`. This commit fixes the build by moving `lookup_by_session` out of conditionalized code. Closes https://gitlab.gnome.org/GNOME/gdm/issues/416
| * manager: fix build with --without-plymouthRay Strode2018-09-011-2/+2
|/ | | | | | | | | | | commit 80b46e2 accidentally put the `doing_initial_setup` boolean declaration inside a plymouth-enabled code path. That broke the build for non-plymouth users. This commit moves the declaration and the subsequent initialization to unconditionalized code.
* configure: bump to 3.29.923.29.92Ray Strode2018-08-311-1/+1
|
* NEWS: update for releaseRay Strode2018-08-311-0/+9
|
* Merge branch 'wip/initial-setup-flicker-fix' into 'master'Ray Strode2018-08-315-17/+32
|\ | | | | | | | | Wip/initial setup flicker fix See merge request GNOME/gdm!42
| * manager: don't kill initial-setup before starting user session on waylandRay Strode2018-08-311-5/+21
| | | | | | | | | | | | | | | | | | | | Right now we kill initial-setup before starting the session for the user initial-setup created. This is the right thing to do for Xorg, since Xorg can't be killed in the background, but it adds unncessary flicker for wayland. This commit checks if it's wayland and avoids killing it right away in that case.
| * launch-environment: use wayland for initial-setupRay Strode2018-08-314-12/+11
|/ | | | | | | | | | | While we've been using wayland by default for the login screen for a long time, and for the user session for somewhat less time, we never switched initial setup over. It's still using X11 for no good reason. This commit changes initial-setup to use wayland by default like everything else.
* Merge branch 'wip/flicker-fix' into 'master'Ray Strode2018-08-314-21/+71
|\ | | | | | | | | | | | | Wip/flicker fix Closes #413 See merge request GNOME/gdm!41
| * local-display-factory: defer killing greeter until new session registersRay Strode2018-08-312-6/+38
| | | | | | | | | | | | | | | | | | | | | | | | At the moment we kill the greeter the second the VT change to the new session happens. That can cause flicker if the new session doesn't take over the display quickly enough. This commit defers killing the greeter until the new display registers. Closes https://gitlab.gnome.org/GNOME/gdm/issues/413
| * gdm-wayland-session,gdm-x-session: register after delayRay Strode2018-08-312-15/+33
|/ | | | | | | | | | | | | | | | Right now gdm-x-session registers with GDM as soon as the X server is started, and gdm-wayland-session registers as soon as the session is started. Ideally registration wouldn't happen until the session says things started successfully. This commit inches us toward that ideal but adding a little timeout before proceeding with registration. A future commit will add a new xsession file key to allow us to know whether or not the session manager of the session supports doing registration.
* Merge branch 'wip/fix-initial-setup' into 'master'Ray Strode2018-08-313-72/+22
|\ | | | | | | | | Wip/fix initial setup See merge request GNOME/gdm!40
| * manager: start initial setup right awayRay Strode2018-08-311-66/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We no longer restart the greeter as soon as it dies, since we start the greeter on demand. This means, we no longer need to defer starting initial setup until after the greeter respawns. Furthermore, it doesn't work anymore since it relied on the respawn to trigger. This commit removes that code and scaffolding and just starts initial setup directly. https://gitlab.gnome.org/GNOME/gdm/issues/415
| * manager: don't set ran_once after running initial-setupRay Strode2018-08-311-1/+3
| | | | | | | | | | | | | | | | | | | | | | GdmManager tracks whether or not the user session has ran once, so it won't autologin a user again after logout. Unfortunately the initial-setup session was counting toward the ran_once count preventing initial-setup from logging the user in afterward. This commit prevents ran_once from getting set in that case.
| * session-worker: fix current vt detection short-circuit logicRay Strode2018-08-311-1/+1
| | | | | | | | | | | | | | | | | | | | commit 8169cd4 attempts to avoid changing VTs if the active VT is the same as the VT getting jumped to. It fails to work, however, because accidentally treats a 0 return code to the VT_GETSTATE ioctl as failure. this commit fixes that.
| * session-worker: clear VT before jumping to itRay Strode2018-08-311-0/+7
| | | | | | | | | | | | | | | | | | If we're going to jump to a new VT we should make sure it's free of residual console text. That way if there's flicker the user will be less likely to notice it. This commit sends a clear screen escape sequence to the tty before jumping to it.
| * manager: better logind handlingRay Strode2018-08-311-3/+3
| | | | | | | | | | | | | | | | commit 9ee68d5c8 highlights we've incorrectly used ENOENT instead of ENXIO when checking for non-existing sessions/seats with logind. This commit mops up all the other cases.
| * common: don't bail if session disappears out from under usRay Strode2018-08-311-1/+7
|/ | | | | | | | | | | | | | | | | | | | | It's entirely possible for a session returned by sd_seat_get_sessions to disappear immediately after the sd_seat_get_sessions call returns. This is especially likely at logout time where the session will briefly be in the "closing" state before getting reaped. If that happens when we're looking for a greeter session, we stop looking for a greeter session and bail out all confused. This commit fixes the confusion by gracefully handling the session disappearing by just proceeding to the next session in the list. This commit is very similar to commit 155ee7eca which got accidentally reverted during code consolidation. The main difference is this commit checks the correct error code of -ENXIO instead of -ENOENT, so it might actually fix what it's ostensibly supposed to fix.
* Merge branch 'wip/misc-fixes' into 'master'Ray Strode2018-08-312-5/+3
|\ | | | | | | | | Wip/misc fixes See merge request GNOME/gdm!39
| * common: remove unnecessary freeRay Strode2018-08-311-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | This commit drops an erroneous free call, that would potentially free a dangling pointer. Luckily the error condition can never occur because the error code checked is never returned, so the free call is dead code. This commit removes the free call. A subsequent commit will fix the error code checking.
| * common: get rid of some tabs that snuck inRay Strode2018-08-311-1/+1
| | | | | | | | | | This commit removes some tab characters that inadvertently snuck into the code.
| * manager: plug leakRay Strode2018-08-311-1/+1
|/ | | | | We're quering the session-type of a display and not freeing the result.
* Merge branch 'disable-wayland-huawei-hi1710' into 'master'Ray Strode2018-08-291-0/+2
|\ | | | | | | | | data: 61-gdm.rules.in See merge request GNOME/gdm!38
| * data: 61-gdm.rules.inBin Li2018-08-291-0/+2
|/ | | | | | | | | Disable wayland for Huawei Hi1710 chipsets. The login screen is skewed/distorted on arm server, and I couldn't find root cause, and no other developer ever has access to the hardware. https://gitlab.gnome.org/GNOME/mutter/issues/219
* Merge branch 'wip/fix-dbus-leak' into 'master'Ray Strode2018-08-281-0/+4
|\ | | | | | | | | | | | | session: make sure conversation is closed before its freed Closes #388 See merge request GNOME/gdm!36