| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
|
|
|
| |
It's expected now that we may dispose a display when it's
prepared (if it was prepared but then we determined we were
going to autologin instead).
https://bugzilla.gnome.org/show_bug.cgi?id=749418
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
commit 2774c7e43b9fdf5e5e59ef1f53ae7ba29f4aa23c fixed a leak in the
case we're doing autologin, but it also unconditionally cleans up
the display in the non-autologin case, too.
At the moment, we don't want to clean up the greeter in that case,
since it causes unnecessary flicker and slows down fast user switching.
( though this behavior may get changed again pending the outcome of
bug 747339 )
This commit makes sure we only clean up the leaker greeter display, if
there is a leaked greeter display (namely, the autologin case)
https://bugzilla.gnome.org/show_bug.cgi?id=749418
|
|
|
|
|
|
|
|
|
|
|
|
| |
At the moment the display-factory only tracks displays it adds itself.
autologin displays aren't added by the display-factory, but by the
manager.
This commit makes sure the display-factory is notified about the
autologin display, so when it finishes a login screen can be put in
its place.
https://bugzilla.gnome.org/show_bug.cgi?id=749418
|
|
|
|
|
|
|
|
|
|
|
| |
The local display factory expects all displays it tracks to have
a seat, and we're going to be tracking automatic login displays
in the display factory in a subsequent commit.
This commit makes sure the seat-id is properly set on automatic
login display objects.
https://bugzilla.gnome.org/show_bug.cgi?id=749418
|
|
|
|
|
|
|
|
|
| |
If we're doing autologin then we prepare a stub greeter display that
we don't actually end up using. This commit makes sure the greeter
display gets cleaned up so it doesn't stick around in the display
store forever.
https://bugzilla.gnome.org/show_bug.cgi?id=749418
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Normally at startup a display is created of class "greeter" for the
login screen to use. That display isn't used in the case automatic
login is enabled. There's some iffy code to try to change the class
from "greeter" to "user" in the automatic login case. That code is
wrong, because in the automatic login case a new display is created
specifically for the user session. The greeter session is abandoned,
instead of used, so mucking with it's class and type is wrong.
This commit removes the code that does that mucking.
https://bugzilla.gnome.org/show_bug.cgi?id=749418
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Right now if a local display finishes we create a new one of the
same type to replace it. But if a user display finishes we don't
want to create a new user display, we want to create greeter
display. Furthermore if the user session is X11, we still want the
login screen that comes up to be wayland by default.
This commit changes the code to just call sync_seats after a display
finishes, since sync_seats is where the logic for where the login
screen display information is stored.
sync_seats is idempotent anyway, and will only create displays for
seats that need them, so it's safe to call it any time any local
display finishes.
https://bugzilla.gnome.org/show_bug.cgi?id=749418
|
|
|
|
|
|
|
|
|
|
| |
The function declaration for gdm_local_display_factory_sync_seats
put the return type on the same line as the function name. That
doesn't follow the GDM codebase's style.
This commit moves the return type to its own line.
https://bugzilla.gnome.org/show_bug.cgi?id=749418
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
wayland sessions don't necessarily have a display name, so this
commit just uses the display device instead.
It's like commit 1edb0e4ae897cb1c53af3f3b2b913d5baf731580 but for
logout and failed records.
Discovered by Sinclair Yeh <syeh@vmware.com>
https://bugzilla.gnome.org/show_bug.cgi?id=749404
|
|
|
|
|
|
|
|
| |
This loads key-value files from /usr/share/gdm/env.d/*.env and
/etc/gdm/env.d/*.env (in alphabetical filename order) and sets
in the session environment.
https://bugzilla.gnome.org/show_bug.cgi?id=751158
|
|
|
|
|
|
|
| |
This allows shell-like expansion of strings. It will be later
used to allow configuring the environment via config files.
https://bugzilla.gnome.org/show_bug.cgi?id=751158
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Desktop sessions require a message bus to be present for IPC between
the various desktop services and applications.
GDM handles that by manually, unconditionally spawning an instance of
dbus-daemon at login time before starting the user session (from the
gdm-x-session and gdm-wayland-session launcher programs).
Newer versions of the kernel will support this message bus functionality
without needing to start dbus-daemon (via kdbus). The message bus is
initialized as part of the login process by a kernel interface exercised
from pam_systemd.
Since gdm-x-session and gdm-wayland-session spawn a dbus-daemon
unconditionally as part of session startup, users using kdbus end up with
two message buses per session. The extra bus gets in the way, confusing
programs and wasting resources.
This commit changes gdm-x-session and gdm-wayland-session to check for
DBUS_SESSION_BUS_ADDRESS in the environment, and if set, skip spawning
a dbus-daemon based session bus.
https://bugzilla.gnome.org/show_bug.cgi?id=750358
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
commit e5a0e92f59e256edc6489f2234fbe54c25ba9743 introduced a way to
find a user session associated with a display object.
That function has a bug in it, where it skips every even
registered user session because it follows the next pointer
twice per iteration of the loop.
This can cause a crash on monitor hotplug, and in other scenarios
if there are an odd number of user sessions (since the
terminating NULL will be even and skipped over).
https://bugzilla.gnome.org/show_bug.cgi?id=749987
|
| |
|
| |
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=747987
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
x11_display_name got freed twice here; once by g_variant_iter_loop
and once by g_clear_pointer.
Also break out of the loop early and use a non-copying format to
avoid having to free anything.
https://bugzilla.gnome.org/show_bug.cgi?id=747310
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
The code to query the display number of the display object is
erroneously tucked away in
guards. This leads to the display device getting queried prematurely.
https://bugzilla.gnome.org/show_bug.cgi?id=747351
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Once the server associated with the login screen session is ready, we
query its display device for ConsoleKit. This device needs to get
propagated to the session to ensure ConsoleKit can track session
activeness properly.
This commit makes sure the display device is plumbed from the GdmServer
object to the GdmLaunchEnvironment object where it gets used by the
the login session (and subsequently the user session).
https://bugzilla.gnome.org/show_bug.cgi?id=747351
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
wayland sessions don't necessarily have a display name, so this
commit just uses the display device instead.
https://bugzilla.gnome.org/show_bug.cgi?id=747169
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When the wayland server used at login time registers with GDM, GDM tries
to write a wtmp session record for it.
wtmp registration for wayland sessions shouldn't use $DISPLAY like X11
displays, since $DISPLAY isn't as core and meaningful to wayland
displays.
Instead it could probably use tty device, but the tty device isn't
up to date.
This commit makes sure the tty device is associated with the session
object at registration time.
A future commit will probably move the tty association code to
gdm-session.c at session open time.
https://bugzilla.gnome.org/show_bug.cgi?id=747169
|
|
|
|
|
|
|
| |
We'll need the tty to give a reasonable wtmp record for wayland
sessions.
https://bugzilla.gnome.org/show_bug.cgi?id=747169
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When the X server used at login time registers with GDM, GDM tries
to write a wtmp session record for it.
Now that the X server is started in the session, we don't know
the display name of the X server up front and so don't have the
display name attached to the session object. The wtmp record writing
code relies on getting the display name from the session object, and
so it fails.
We do know the display name at registration time, from the details
passed to the registration function.
This commit makes sure to attach the display name to the session object
as soon as the display is registered before writing the wtmp record.
https://bugzilla.gnome.org/show_bug.cgi?id=747169
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We try to look up the session at registration time to add wtmp
records for it. We fail to actually find the session, though,
because we're using the "embryonic-user-session" object data
key, which is only non-NULL when the user session is still
getting setup.
This commit changes the registration code, to instead, fetch
the session straight from the manager object.
https://bugzilla.gnome.org/show_bug.cgi?id=747169
|
|
|
|
|
|
|
|
| |
This is like the previous commit, but a slightly better choice,
because it's more fault tolerant; if GDM fails to kill a child,
systemd will help out.
https://bugzilla.gnome.org/show_bug.cgi?id=747088
|
|
|
|
|
|
|
|
|
|
|
|
| |
By default systemd will kill the entire control-group in one fell
swoop. The problem is, things don't get shutdown in the right
order then, and there's a race where GDM will begin restarting
X servers as soon as they're killed.
This commit tells systemd to just kill the main GDM process, and
let it handle killing all its children on its own.
https://bugzilla.gnome.org/show_bug.cgi?id=747088
|
|
|
|
|
|
|
| |
Now that we're using a dispose handler instead of a finalize handler,
we need to make sure we nullify our objects after unrefing them.
https://bugzilla.gnome.org/show_bug.cgi?id=745975
|
| |
|