summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* session: Add a simple and naive way to detect Wayland sessionsJasper St. Pierre2014-03-181-5/+40
| | | | | | Simply look for "wayland-sessions" as a path element. https://bugzilla.gnome.org/show_bug.cgi?id=726380
* Add wayland-sessionsJasper St. Pierre2014-03-182-0/+2
| | | | | | Add the wayland-sessions directory, as shipped by gdm. https://bugzilla.gnome.org/show_bug.cgi?id=726380
* session-worker: Implement support for the different display server modesJasper St. Pierre2014-03-184-4/+181
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=726380
* manager: Don't reuse the same X server for alternate display modesJasper St. Pierre2014-03-181-1/+19
| | | | | | | | | | | | | | | GNOME is going to need a mode of operation in GDM where the session manages its own display server. In this mode of operation, we won't morph the login screen into a user session by reusing the same X server. Instead, we reset the login screen to prepare it for a future login, and then let GNOME or the session worker activate its own session. This commit adds the prerequisite work needed to gdm-manager.c, but only as dead code, since the way to "turn it on" is stubbed out to always reuse the existing server. https://bugzilla.gnome.org/show_bug.cgi?id=726380
* session: Introduce the concept of the "session display mode"Jasper St. Pierre2014-03-182-0/+26
| | | | | | | | The session display mode describes exactly how the worker environment will set up VTs, and whether the greeter X server will be reused for the user session. https://bugzilla.gnome.org/show_bug.cgi?id=726380
* Revert "manager: Don't reuse the same X server when we have a display server"Jasper St. Pierre2014-03-183-26/+1
| | | | | | This reverts commit 72ccb27377886b9998ad8b5b7a3b3070474f90f3. We're going to take a different approach for this.
* server: maintain active_servers list through explicit weak referencesRay Strode2014-03-181-2/+11
| | | | | | | | | It's possible for the server object to get freed before its child watch fires (if the slave is stopped early), so we can't rely on the child watch to main accounting on the active servers list. This commit changes the code over to use weak references instead.
* manager: Don't reuse the same X server when we have a display serverJasper St. Pierre2014-03-173-1/+26
| | | | | | | | | | | | | | GNOME is going to need a mode of operation in GDM where it manages its own display. In this mode of operation, we won't morph the login screen into a user session by reusing the same X server. Instead, we reset the login screen to prepare it for a future login, and then let GNOME activate its session on its own. This commit adds the prerequisite work needed to gdm-manager.c, but only as dead code, since the way to "turn it on" is stubbed out to always return FALSE. https://bugzilla.gnome.org/show_bug.cgi?id=726380
* manager: Rename the "user session" or "session" to the "seed session"Jasper St. Pierre2014-03-171-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A greeter environment always has two sessions: the greeter session, and the "user session". The "user session" tracks the login PAM conversation. PAM conversations need to be created without any user, so the name "user session" is a bit of a misnomer. The "user session" is created when the greeter is created, and exists when we're sitting at the username prompt. When the username is entered, we then start a session worker. When the verification conversation is finished, we then log the user in. The same exact GdmSession follows into the user session. Traditionally, the user session is started on the same X server as the greeter, so the GdmDisplay and GdmSlave all go with it. With the new display server management, we need to make the GdmSession follow into the user session created for the login, and then start a *new* user session for the next user that logs in on the same greeter. The name "seed session" tries to capture this. The GdmSession starts out as a little seed, and with a username and password, will one day blossom into a beautiful little user session which will one day live on its own, free from the greeter that gave it life and nourished it. It's the circle of life, and it moves us all. https://bugzilla.gnome.org/show_bug.cgi?id=726380
* manager: Make migrated a special case when starting the sessionJasper St. Pierre2014-03-171-6/+7
| | | | | | | | | | | | | | | | | | | | | | We have three cases for starting a session: 1) We migrate to an existing session. Simply tear down state and switch. 2) We're starting a new session, and it's a traditional Xorg server. Tear down the greeter, and keep the same X server and GdmDisplay, and start a full user session. 3) We're starting a new session, but it's a display server. Keep the greeter around and give it a new seed session, and start a full user session. The last two cases are really the two sides of the same coin, while the migrated case is really a fast-path special case that doesn't involve launching a user session in any case, so use a "goto out;" as a fast return rather than an if/else. https://bugzilla.gnome.org/show_bug.cgi?id=726380
* manager: update session-id when starting user sessionRay Strode2014-03-171-0/+27
| | | | | | | | | | | In order for session unlocking to work properly, the session-id property of the display object needs to match the session running on the display. The display object's session-id property is bound to the slave's session-id property, so this commit makes sure the slave's session-id is updated to the user's session's id once the session is started. https://bugzilla.gnome.org/show_bug.cgi?id=726380
* display: Clean up old signal handlersJasper St. Pierre2014-03-171-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The signal handlers here are intended to be used if the slave itself tries to stop, for instance if the server or greeter die, and will try to finish the display on its own. Letting the signal handler run again will finish the display *again* after an idle, meaning we have this path: gdm_display_finish gdm_display_unmanage on_server_stopped queue_finish ... idle ... gdm_display_finish gdm_display_unmanage on_server_stopped queue_finish ... This might have been an infinite loop, except for the fact that GDM smartly has code to detect the failure state where the X server starts up and stops sufficiently quickly, and in that case transitions the display to the FAILED state, which causes GdmDisplayStore to unref the last ref on the GdmDisplay. Since the finish is still queued, finish_idle runs, and very quickly discovers that our object is no longer a GdmDisplay, so this very quickly manifests into a: gdm_display_finish: assertion 'GDM_IS_DISPLAY (display)' failed error. Not before poking a hole and corrupting some memory trying to clear the finish_idle_id, however.
* display: Remove some unnecessary parts from disposeJasper St. Pierre2014-03-171-18/+3
| | | | | | These can't possibly be active and armed if we're disposing. https://bugzilla.gnome.org/show_bug.cgi?id=726380
* display: Enforce a few invariantsJasper St. Pierre2014-03-171-0/+3
| | | | | | | The GdmDisplay should only be cleaned up if it's finished or failed. https://bugzilla.gnome.org/show_bug.cgi?id=726380
* Integrate the slaves into the main daemon processJasper St. Pierre2014-03-1721-3331/+1349
| | | | | | | | | | For no particular reason, the slave has been kept as a separate process. Integrate this into the main display process by simply making the display keep a handle to a GdmSlave object. To keep the cleanup simple, we won't remove the GdmSlave subtypes yet. A future cleanup should merge the slave functionality into GdmDisplay and its subtypes. https://bugzilla.gnome.org/show_bug.cgi?id=726380
* launch-environment: disconnect session signal handlers when destroyedRay Strode2014-03-171-28/+35
| | | | | | | | | | | | The launch environment's session can actually live longer than the environment itself. This is because the session creates internals "conversation" objects that take a reference on the session, which sometimes keeps it on life support. This commit makes sure the session signal handlers for the launch environment don't get run after the launch environment is destroyed. https://bugzilla.gnome.org/show_bug.cgi?id=726380
* Updated French translationMichael Scherer2014-03-161-376/+722
|
* session-worker: Move PostLogin / PreSession / PostSession hereJasper St. Pierre2014-03-142-84/+29
| | | | | | | | Pushing these up to the session worker dramatically simplifies the interface for the slave, which will allow us to kill the slaves as separate binaries. Ideally, in the long-term, these scripts should go away.
* server: Move Init script processing hereJasper St. Pierre2014-03-142-7/+7
| | | | | We still need to have it in the XDMCP chooser slave, since we need to initialize the X server, even if we didn't start it ourselves.
* Move gdm_slave_run_script to common codeJasper St. Pierre2014-03-147-184/+232
| | | | | | | We're going to move the code that runs Init to gdm-server.c and the code that runs PostLogin / PreSession to gdm-session-worker.c https://bugzilla.gnome.org/show_bug.cgi?id=726380
* server: Force server regeneration offJasper St. Pierre2014-03-141-1/+1
| | | | | | | | | Server regeneration causes Xorg to re-emit the SIGUSR1 signal, which *really* confuses our state machine. Since we also want to control the server lifetime fairly closely, it doesn't really make sense for it to ever trigger, so force it off. https://bugzilla.gnome.org/show_bug.cgi?id=726380
* server: Pull out common X server argsJasper St. Pierre2014-03-141-2/+4
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=726380
* session: Remove a duplicate definitionJasper St. Pierre2014-03-141-2/+1
| | | | | | And move gdm_session_cancel(); somewhere a bit related. https://bugzilla.gnome.org/show_bug.cgi?id=726380
* Add caribou to the greeter autostart directoryMatthias Clasen2014-03-112-0/+7
| | | | | | | This is necessary to make the on-screen keyboard work for gnome-initial-setup. https://bugzilla.gnome.org/show_bug.cgi?id=726143
* Fixed Russian docYuri Myasoedov2014-03-091-7/+7
|
* daemon: Remove gdm-session-private.hJasper St. Pierre2014-03-071-100/+0
| | | | This file has been flat out unused for quite a while.
* slave: Kill off some dead codeJasper St. Pierre2014-03-071-42/+0
|
* server: Kill off some dead codeJasper St. Pierre2014-03-071-41/+0
|
* Updated Friulian translationFabio Tomat2014-03-041-13/+13
|
* xdmcp: unbreak build on OpenBSDAntoine Jacoutot2014-03-031-0/+8
| | | | | | | OpenBSD has no support for IPv4 to IPv6 mapping, so make check for the required definitions before using them. https://bugzilla.gnome.org/show_bug.cgi?id=725554
* launch-environment: don't disable GVFSRay Strode2014-03-031-3/+0
| | | | | | | | | | | | | | | | As an optimization we currently disable gvfs in greeter sessions (since they'll never need it). Now that we launch initial-setup in the same sort of environment, we're running into trouble because it relies on GVFS for fetching remote avatars. This commit eliminates the optimzation. The other option would be to disable GVFS for greeters, but enable it for initial-setup. In order to keep things simple, we forgo that for now, but may reconsider at a later time. https://bugzilla.gnome.org/show_bug.cgi?id=725584
* Updated Friulian translationFabio Tomat2014-03-031-524/+401
|
* Stop using LDFLAGS for librariesRyan Lortie2014-02-251-15/+4
| | | | | | | | | | | | | | | Originally, EXTRA_*_LIBS was introduced as a way to get certain libraries to the front of the line when invoking the linker in order to control which version of a library we got. See bug 85785 for the history there. This is probably no longer needed, so officially declare that the only thing that the EXTRA_ variables mean is "not from pkg-config". Move all of the EXTRA_*_LIBS from LDFLAGS to _LDADD, along with some other things that were improperly in LDFLAGS. https://bugzilla.gnome.org/show_bug.cgi?id=724283
* session-worker-job: Log the session worker to the journalJasper St. Pierre2014-02-251-0/+36
|
* gdm-launch-environment: Remove duplicate DISPLAY setJasper St. Pierre2014-02-251-1/+0
| | | | GdmSession already sets this when setting up the environment.
* slave: Don't stop when finalizedJasper St. Pierre2014-02-253-6/+0
| | | | | | | | | The slave is already stopped by the time it's finalized in all cases, and we do a ref/unref inside gdm_slave_stop, which is illegal at finalization time. The net effect is that we end up printing warnings about ref_count > 0 instead of doing any stopping.
* configure: bump to 3.11.903.11.90Ray Strode2014-02-211-1/+1
|
* NEWS: update for releaseRay Strode2014-02-211-0/+12
|
* gdmflexiserver: Remove unused error quarkJasper St. Pierre2014-02-191-12/+0
|
* Updated Kannada translationShankar Prasad2014-02-191-480/+373
|
* worker: move PAM tty/display setup to open sessionRay Strode2014-02-171-57/+69
| | | | | | | | In the future we aren't going to know if we need to set the display and tty until open session time. (because we shouldn't set them for wayland sessions). This commit moves that initialization code until then.
* display: Don't strdup unnecessarilyJasper St. Pierre2014-02-143-11/+5
| | | | We can simply return a const char * here.
* session: Prevent memory leaks by removing strdup accessorsJasper St. Pierre2014-02-147-54/+41
| | | | | | | gdm_session_get_* dup the strings they return, but not a lot of code frees the resulting strings. It's a lot easier to not dup the return values and make them const char *, as they won't ever change while some code holds onto them...
* worker: Properly detect the error code from setting PAM_TTYJasper St. Pierre2014-02-141-11/+11
| | | | | Without this, we'll look at the error code for the last set if we have an empty TTY, rather than the one for the current set.
* slave: Remove more dead propertiesJasper St. Pierre2014-02-141-5/+0
|
* server: Process SIGUSR1 more carefullyJasper St. Pierre2014-02-142-14/+87
| | | | | | | | | | | | | If the slave is removed as a separate process, it means that we need to be more careful with our handling of SIGUSR1. If multiple X servers are launched at once, we need to use siginfo_t to get the PID of the thing that sent the user signal, and make sure we signal the correct GdmServer. glib doesn't have native siginfo support, so do it ourselves by using a worker thread that spins around waiting for sigwaitinfo. https://bugzilla.gnome.org/show_bug.cgi?id=724382
* main: Remove debug log toggle on SIGUSR1Jasper St. Pierre2014-02-141-11/+0
| | | | | | | | Trying to integrate the slave into the main daemon means that we need to respond to USR1 as it's the signal Xorg sends when the X server is ready. https://bugzilla.gnome.org/show_bug.cgi?id=724382
* slave: Don't set envvars in the slaveJasper St. Pierre2014-02-141-13/+0
| | | | | | All the APIs we use take things explicitly, so we don't need these envvars. At the same time, lose the signal manipulation. The goal here is to integrate the slave back into the daemon process.
* slave: Remove support for WINDOWPATHJasper St. Pierre2014-02-141-79/+0
| | | | | It's an outdated, horrible system that doesn't really need to be in the code anymore. Die.
* daemon: add new gdm_session_is_running methodRay Strode2014-02-142-0/+7
| | | | | | | GdmSession emits when a session is started or stopped, but doesn't let a caller query if a session is on-going. This commit adds API for that.