launch_daemon: Fixed preregister consequences.

* Since the last change, the user launch_daemon would talk to the
  registrar again.
* However, this also caused BRoster::Launch() to preregister the app,
  which messed up our preallocated port.
* BRoster::Private::Launch() now allows to get the port that the
  registrar created in such a case, and the launch_daemon will now just
  use that one as default port.
* This lets us talk to the Deskbar again, and should fix #12455, as
  well as #12454 (again).
This commit is contained in:
Axel Dörfler
2015-11-11 16:04:02 +01:00
parent 2c2ba72cf4
commit 9e73b62749
6 changed files with 80 additions and 38 deletions
+4 -3
View File
@@ -161,7 +161,8 @@ private:
thread_id thread) const;
status_t _SetThreadAndTeam(uint32 entryToken,
thread_id thread, team_id team) const;
thread_id thread, team_id team,
port_id* _port) const;
status_t _CompleteRegistration(team_id team,
thread_id thread, port_id port) const;
@@ -183,8 +184,8 @@ private:
const BList* messageList, int argc,
const char* const* args,
const char** environment,
team_id* appTeam,
thread_id* appThread,
team_id* _appTeam, thread_id* _appThread,
port_id* _appPort, uint32* _appToken,
bool launchSuspended) const;
status_t _UpdateActiveApp(team_id team) const;
+4 -2
View File
@@ -31,9 +31,11 @@ class BRoster::Private {
status_t Launch(const char* mimeType, const entry_ref* ref,
const BList* messageList, int argc, const char* const* args,
const char** environment, team_id* appTeam,
thread_id* appThread, bool launchSuspended)
thread_id* appThread, port_id* appPort, uint32* appToken,
bool launchSuspended)
{ return fRoster->_LaunchApp(mimeType, ref, messageList, argc,
args, environment, appTeam, appThread, launchSuspended); }
args, environment, appTeam, appThread, appPort, appToken,
launchSuspended); }
status_t ShutDown(bool reboot, bool confirm, bool synchronous)
{ return fRoster->_ShutDown(reboot, confirm, synchronous); }