1. 25 Sep, 2018 7 commits
    • Ray Strode's avatar
      Merge branch 'wip/gdm-vt-switch-fixes' into 'master' · f40c940f
      Ray Strode authored
      Wip/gdm vt switch fixes
      
      See merge request !48
      f40c940f
    • Ray Strode's avatar
      local-display-factory: handle reviving displays that are waiting to die · 2882e80f
      Ray Strode authored
      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 !45
      2882e80f
    • Ray Strode's avatar
      local-display-factory: Remove same VT so don't switch check · 41769214
      Ray Strode authored
      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.
      41769214
    • Hans de Goede's avatar
      local-display-factory: Remove initial VT is in use check · c71bc5d6
      Hans de Goede authored
      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.
      c71bc5d6
    • Ray Strode's avatar
      manager: don't run autologin display on tty1 · 39fb4ff6
      Ray Strode authored
      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.
      39fb4ff6
    • Ray Strode's avatar
      manager: rework how autologin is figured out · c5c5bf1f
      Ray Strode authored
      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.
      c5c5bf1f
    • Ray Strode's avatar
      local-display-factory: don't autoreap initial-setup · 7d1faca2
      Ray Strode authored
      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.
      7d1faca2
  2. 12 Sep, 2018 2 commits
    • Ray Strode's avatar
      Merge branch 'stop-greeter-fix' into 'master' · 5db19c5b
      Ray Strode authored
      daemon: Move the waiting for the session to have taken over the fb to gdm-local-display-factory
      
      See merge request !47
      5db19c5b
    • Hans de Goede's avatar
      daemon: Move the waiting the session to have taken over the fb to gdm-local-display-factory · cda8de29
      Hans de Goede authored
      Commit 70861874 ("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 74ee7771 ("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 74ee7771 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 74ee7771).
      
      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.
      cda8de29
  3. 06 Sep, 2018 2 commits
  4. 05 Sep, 2018 2 commits
    • Bin Li's avatar
      autogoo: make udev rules dir configurable · ef231c27
      Bin Li authored
      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 !44
      ef231c27
    • Yuras Shumovich's avatar
      Update Belarusian translation · 519220df
      Yuras Shumovich authored
      519220df
  5. 04 Sep, 2018 2 commits
  6. 01 Sep, 2018 3 commits
  7. 31 Aug, 2018 19 commits
    • Ray Strode's avatar
      configure: bump to 3.29.92 · 92784a84
      Ray Strode authored
      92784a84
    • Ray Strode's avatar
      NEWS: update for release · 937283e8
      Ray Strode authored
      937283e8
    • Ray Strode's avatar
      Merge branch 'wip/initial-setup-flicker-fix' into 'master' · 1525c3cc
      Ray Strode authored
      Wip/initial setup flicker fix
      
      See merge request !42
      1525c3cc
    • Ray Strode's avatar
      manager: don't kill initial-setup before starting user session on wayland · 49433d86
      Ray Strode authored
      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.
      49433d86
    • Ray Strode's avatar
      launch-environment: use wayland for initial-setup · 365c58c0
      Ray Strode authored
      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.
      365c58c0
    • Ray Strode's avatar
      Merge branch 'wip/flicker-fix' into 'master' · c274ef84
      Ray Strode authored
      Wip/flicker fix
      
      Closes #413
      
      See merge request !41
      c274ef84
    • Ray Strode's avatar
      local-display-factory: defer killing greeter until new session registers · 74ee7771
      Ray Strode authored
      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 GNOME/gdm#413
      74ee7771
    • Ray Strode's avatar
      gdm-wayland-session,gdm-x-session: register after delay · 70861874
      Ray Strode authored
      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.
      70861874
    • Ray Strode's avatar
      Merge branch 'wip/fix-initial-setup' into 'master' · 9f7fc717
      Ray Strode authored
      Wip/fix initial setup
      
      See merge request !40
      9f7fc717
    • Ray Strode's avatar
      manager: start initial setup right away · 2f3065ca
      Ray Strode authored
      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.
      
      #415
      2f3065ca
    • Ray Strode's avatar
      manager: don't set ran_once after running initial-setup · 80b46e2b
      Ray Strode authored
      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.
      80b46e2b
    • Ray Strode's avatar
      session-worker: fix current vt detection short-circuit logic · a6f53735
      Ray Strode authored
      commit 8169cd4f 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.
      a6f53735
    • Ray Strode's avatar
      session-worker: clear VT before jumping to it · 5883b170
      Ray Strode authored
      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.
      5883b170
    • Ray Strode's avatar
      manager: better logind handling · 923a7785
      Ray Strode authored
      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.
      923a7785
    • Ray Strode's avatar
      common: don't bail if session disappears out from under us · 83666d60
      Ray Strode authored
      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 155ee7ec 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.
      83666d60
    • Ray Strode's avatar
      Merge branch 'wip/misc-fixes' into 'master' · 591bf8f4
      Ray Strode authored
      Wip/misc fixes
      
      See merge request !39
      591bf8f4
    • Ray Strode's avatar
      common: remove unnecessary free · c0c62e4c
      Ray Strode authored
      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.
      c0c62e4c
    • Ray Strode's avatar
      common: get rid of some tabs that snuck in · 8d4ee626
      Ray Strode authored
      This commit removes some tab characters that inadvertently snuck
      into the code.
      8d4ee626
    • Ray Strode's avatar
      manager: plug leak · 7f8c7987
      Ray Strode authored
      We're quering the session-type of a display and not freeing
      the result.
      7f8c7987
  8. 29 Aug, 2018 2 commits
  9. 28 Aug, 2018 1 commit