launch_daemon: Basic user session implementation.

* Instead of launching Tracker/Deskbar directly, we now launch the
  Login application.
* This will now start a new session for the selected user (the password
  is currently ignored).
* When a user session is started, the launch_daemon forks, and the
  child then restarts the LaunchDaemon application in user mode.
* It then registers itself with its parent, in order to resolve user
  dependent services.
* Added a user launch file that will cause Tracker, and Deskbar to
  start in the new session.
This commit is contained in:
Axel Dörfler
2015-07-22 20:41:37 +02:00
parent 9cc27f7369
commit ac0a462fba
11 changed files with 353 additions and 67 deletions
+3 -1
View File
@@ -24,7 +24,9 @@ namespace BPrivate {
// message constants
enum {
B_GET_LAUNCH_DATA = 'lncd',
B_GET_LAUNCH_DATA = 'lnda',
B_LAUNCH_SESSION = 'lnse',
B_REGISTER_LAUNCH_SESSION = 'lnrs',
};
+7
View File
@@ -22,7 +22,14 @@ public:
port_id GetPort(const char* signature,
const char* name);
status_t StartSession(const char* login,
const char* password);
class Private;
private:
friend class Private;
void _InitMessenger();
private:
+24
View File
@@ -0,0 +1,24 @@
/*
* Copyright 2015 Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _LAUNCH_ROSTER_PRIVATE_H
#define _LAUNCH_ROSTER_PRIVATE_H
#include <LaunchRoster.h>
class BLaunchRoster::Private {
public:
Private(BLaunchRoster* roster);
Private(BLaunchRoster& roster);
status_t RegisterSession(const BMessenger& target);
private:
BLaunchRoster* fRoster;
};
#endif // _LAUNCH_ROSTER_PRIVATE_H