Commit Graph

30 Commits

Author SHA1 Message Date
Ingo Weinhold
6bfd06d1ff BRoster::Launch() eventually launches the application in question
in several steps:
1. early pre-registration with the registrar ("I wanna launch the
   app, make sure noone interferes.")
2. load the app image
3. finish pre-registration with the registrar ("I have launched
   the app, here is its team ID.")
4. start app main thread
5. send "on launch" messages to the app (argv, refs, others)

If the app is already running or being launched, 1. fails with a
conclusive error code and returns the team ID and the pre-registration
token of the app. Steps 2 - 4 are skipped and only the messages are
delivered using the team ID returned by 1.

This change fixes a race condition: The failed early pre-registration
request obviously cannot return the team ID, if the other thread
launching the app has not finished step 3 yet. Thus the argv/refs
message would not get delivered and Launch() would not return the
correct team ID.

Now we wait for the pre-registration to be finished in this case, using
the former _IsAppPreRegistered() mechanism, which already provided
such a waiting feature for one request. It has been extended to
accomodate an arbitrary number of waiting requests and renamed to
_IsAppRegistered().

This fixed bug #763.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18728 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-31 17:54:16 +00:00
Ingo Weinhold
758b1d0e05 Fixes that make Haiku build with gcc 4. Mainly out of the following
categories:
* Missing includes (like <stdlib.h> and <string.h>).
* Linking against $(TARGET_LIBSTDC++) instead of libstdc++.r4.so.
* Local variables shadowing parameters.
* Default parameters in function definitions (as opposed to function
  declarations).
* All C++ stuff (nothrow, map, set, vector, min, max,...) must be imported
  explicitly from the std:: namespace now.
* "new (sometype)[...]" must read "new sometype[...]", even if sometype is
  something like "const char *".
* __FUNCTION__ is no longer a string literal (but a string expression), i.e.
  'printf(__FUNCTION__ ": ...\n")' is invalid code.
* A type cast results in a non-lvalue. E.g. "(char *)buffer += bytes"
  is an invalid expression.
* "friend class SomeClass" only works when SomeClass is known before.
  Otherwise the an inner class with that name is considered as friend.
  gcc 4 is much pickier about scopes.
* gcc 4 is generally stricter with respect to type conversions in C.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14878 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-12 23:27:14 +00:00
Ingo Weinhold
310c813fa8 Minor error output change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13682 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-15 12:16:02 +00:00
Ingo Weinhold
54fce51326 Uninitialized member variable. The cause for the shutdown process sometimes not to start at all.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13640 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-11 23:14:56 +00:00
Ingo Weinhold
6b454d971d * Background applications are now ask to quit in parallel.
* Implemented handling of apps blocking on modal windows.
* Fixed a few bugs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13539 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-07 15:33:20 +00:00
Ingo Weinhold
26ffd9e208 Missing break in switch statement.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13487 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-06 10:25:50 +00:00
Ingo Weinhold
553ea30124 * Moved TRoster out of the BPrivate namespace. It does no longer appear in
any public header.
* Replaced a good deal of the MessageDeliverer's DeliverMessage() versions
  by more general ones using the new interface MessagingTargetSet to represent
  a set of targets. This simplifies the usage in cases where the caller doesn't
  already have the targets in a supported representation.
* Implemented a first approximation of the shutdown process. There is no
  GUI yet. Only superficially tested under R5.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13417 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-03 17:17:40 +00:00
Ingo Weinhold
3c0a815896 The registrar now uses BServer instead of BApplication, which makes it
completely independent of the app server.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13316 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-28 14:55:57 +00:00
Ingo Weinhold
35d70f9eca The MessagingService is now a singleton. Added creation of the MessageDeliverer.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11031 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-25 15:06:42 +00:00
Ingo Weinhold
0a1eb226fb Start the messaging service. Due to missing kernel functionality the
initialization still fails.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10998 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-24 01:31:02 +00:00
Ingo Weinhold
769ba00e93 * Changes due to moving RegistrarDefs stuff into the BPrivate namespace.
* Rename the main thread after creating the BApplication. Then at least
  the roster will be ready for use.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10816 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-18 01:17:35 +00:00
Ingo Weinhold
dca399f444 Use the BApplication constructor that returns an error code instead of the one that just exit()s on error, so that we can at least print the error.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10728 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-14 15:33:57 +00:00
Ingo Weinhold
32453e90e0 Removed the old, nicely working, DiskDevice API support from the registrar. We're going to reimplement it in the kernel.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3429 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-06-04 21:20:23 +00:00
Ingo Weinhold
2d2601d03c Implemented rescanning the device list. A few things, e.g. notifications and change counter updates, are still missing. Added a periodical rescan event.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2694 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-02-11 23:37:48 +00:00
Ingo Weinhold
2ed834e3f6 Cleaned up BRoster's friends mess. All access to private BRoster functionality is now done through the newly added BRoster::Private class, which is BRoster's only friend (poor BRoster ;-).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2664 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-02-08 23:29:21 +00:00
Ingo Weinhold
3f82d4f1d2 Added a DiskDeviceManager to the registrar. Does nothing for now, but will soon be the one responsible for the disk device functionality in the registrar.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2620 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-02-01 21:39:22 +00:00
Tyler Dauwalder
1bde02ae7b Fleshed out any missing pieces of BRoster::
- ClearRecent{Docs,Folders,Apps}
- AddToRecentApps()
- {Load,Save}RecentLists()


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1878 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-11-08 08:36:08 +00:00
Tyler Dauwalder
7c82774099 Added {Get,AddTo,Clear}Recent{Apps,Documents,Folders} cases to main message loop.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1720 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-10-27 07:50:27 +00:00
Ingo Weinhold
7a0335c8a3 Added support for roster watching.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1578 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-10-18 14:05:25 +00:00
Ingo Weinhold
56d4d6378e Added handling for broadcast request (BRoster::Broadcast()).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1542 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-10-15 22:31:55 +00:00
Ingo Weinhold
463322c288 Added methods GetEventQueue() and App() (static). Added a sanity event for checking the roster for killed apps.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1517 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-10-14 21:19:43 +00:00
Ingo Weinhold
44c3726b9d Added EventQueue and Event and MessageRunnerManager classes used for the
registrar side message runner support.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1498 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-10-12 22:37:07 +00:00
Ingo Weinhold
af8eec4080 Added support for the B_REG_SET_SIGNATURE request (BRoster::SetSignature()).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1438 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-10-07 22:03:11 +00:00
Ingo Weinhold
afac6ebecb Initialize the global be_roster for the registrar.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1129 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-09-23 19:46:15 +00:00
Ingo Weinhold
60aa4feab5 * Lock() the looper in application destructor. Otherwise RemoveHandler()
complains.
* Call the TRoster::Init() to add the registrar itself to the roster.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@515 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-07-28 19:36:05 +00:00
Ingo Weinhold
2ad75c74f9 Added doxygen comments and moved the initialization of child objects from
the constructor into ReadyToRun().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@496 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-07-28 13:39:26 +00:00
Ingo Weinhold
2e042baa93 Added dispatching of the running app querying requests.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@484 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-07-28 00:26:39 +00:00
Ingo Weinhold
c39e453222 Added dispatching of some now implemented roster requests.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@463 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-07-26 20:02:10 +00:00
Ingo Weinhold
51d6b22ec1 Added TRoster instance to the registrar application and dispatching of the application registration messages.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@410 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-07-23 23:40:12 +00:00
Ingo Weinhold
4b8a71155a Added a registrar skeleton.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@374 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-07-21 22:40:07 +00:00