Commit Graph
483 Commits
Author SHA1 Message Date
Axel Dörfler aa389c6b38 Now sends the B_SILENT_RELAUNCH message if the app is already running and has
no arguments (or doesn't want them). We even already had the correct handler for
B_SILENT_RELAUNCH around :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19359 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-22 11:36:11 +00:00
Jérôme Duval 3354a9cc67 B_MESSAGE_NOT_UNDERSTOOD is better than B_ERROR for what fields
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18934 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-25 21:21:28 +00:00
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
Axel Dörfler 1c1c6688d1 Make sure "otherTeam" is -1 when it's not found in the reply.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18709 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-30 16:15:57 +00:00
Ingo Weinhold 9ecf9d1c1d Merge from layout management branch.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18649 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-26 16:21:15 +00:00
Jérôme Duval 67bdea52ce hope no one minds with this Dano-like version of BMessage::PrintToStream()
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18089 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-07-10 20:00:07 +00:00
Axel Dörfler d134f89267 * Sending a forwarded message that had required a synchronous reply, can now be sent
again with a synchronous reply - the "reply done" flag wasn't cleared before sending.
* Improved error message in case the buffer for flattening the message couldn't be
  allocated. BTW this would be a good place to use the new writev_port() function and
  don't do any allocation at all.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17914 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-23 14:44:21 +00:00
Jérôme Duval 3a59f3e4af should have been cur, dunno how it built before ...
fixed bug #661


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17841 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-14 19:36:10 +00:00
Jérôme Duval a58450492a now handles also the case when all specifiers are solved, and behaves as if we were asked the Messenger
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17837 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-14 12:40:27 +00:00
Axel Dörfler c4dde2f738 * No need to create a BPath object for the leaf name in CreateAppMetaMimeThread.
* The preferred application is now written with the case preserved. This fixes
  bug #635.
* Minor cleanup.
* BApplication::_InitData() now also corrects a pre-registered application signature
  if the case is different. Note, however, that the application watching mechanism
  doesn't seem to work correctly with this, maybe sending out those should be postponed
  until the registration is completed?


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17836 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-14 12:31:46 +00:00
Jérôme Duval 39207b00f8 BMessage::GetCurrentSpecifier() set index even if it is a negative one and returns
This would explain why BLooper::resolve_specifier() was misbehaving before I fixed it


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17834 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-14 11:32:51 +00:00
Jérôme Duval 7675c75fa1 avoid adding _previous_ on forwarded synchronous messages
tested with ForwardMessageTest.cpp
well I hope it doesn't break anything :)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17831 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-13 22:23:19 +00:00
Jérôme Duval ddcab3b57d also check for GetCurrentSpecifier status instead of just the index
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17821 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-13 13:40:30 +00:00
Jérôme Duval 4b770c6e78 reverted to 17808, BLooper::resolve_specifier should be fixed instead
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17820 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-13 13:34:55 +00:00
Jérôme Duval 4b25c48853 BMessage::GetCurrentSpecifier returns B_OK if current specifier is negative
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17809 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-12 23:40:16 +00:00
Jérôme Duval e91315aa2d scripting in BApplication is mostly fixed
BLooper had a be-handler named suite
BWindow is now exposing Active
scripting to BViews isn't working yet


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17797 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-11 23:01:33 +00:00
Axel Dörfler 82584ab9c2 * Implemented AS_DIRECT_WINDOW_SET_FULLSCREEN so that it sets kWindowScreenFeel
when enabled, and B_NORMAL_WINDOW_FEEL when disabled. IOW when enabled, no
  other windows can interfere.
* Therefore, it's no longer necessary to have the screen_blanker window
  use kWindowScreenFeel - it will set its window to full screen as long
  as the blanker runs.
* Added a AS_APP_CRASHED notification in the app_server that will remove
  all kWindowScreenFeels from the windows of the crashed app.
* This is now used by the debugger to ensure that the debugger alert will
  be visible.
* Factored out a DesktopLink class out of the BRoster::_ActivateApp()
  method. This class is now also used in the new BRoster::_ApplicationCrashed()
  method as used in the debug_server (via BRoster::Private).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17785 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-09 21:46:40 +00:00
Jérôme Duval 99e2816c13 begin of implementation for ScriptReceived
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17781 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-08 16:25:18 +00:00
Jérôme Duval 1f8172a474 implemented ResolveSpecifier()
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17780 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-08 15:14:03 +00:00
Axel Dörfler 58c7d50a41 Fixed the Dano message reader:
* The size returned was too big, as the size in the flattened message included
  the message format.
* Made it a bit more robust, too (bail out if the section header size is smaller
  than zero).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17772 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-07 20:39:32 +00:00
Axel Dörfler c13a4ddf0f Unflattening R5/Dano messages are both using the TReadHelper class which throws
exceptions in case of an error. Therefore, whenever those methods are called,
we need to surround them with a try/catch block.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17766 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-07 17:15:45 +00:00
Jérôme Duval f4fc3d626a * fixed some more GetSupportedSuites implementations
* fixed some local variables names
* fixed the case of some message attribute names


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17734 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-06 12:35:27 +00:00
Axel Dörfler 82c410dc12 Tracker no longer wants to remove the executable bits from the kernel or the
runtime_loader when trying to start them.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17708 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-02 20:25:37 +00:00
Axel Dörfler 3df4580e9a Made the registrar communication more robust (would have cured the symptoms of
bug #513 as well).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17585 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-25 12:30:30 +00:00
Axel Dörfler 8780db592a * Forwarding message that had someone waiting for a reply did not work correctly;
both messages wanted to reply then, which could get the wrong reply (B_NO_REPLY)
  into the reply port. This fixes bug #513, took me some hours to figure that out...
* _SendMessage() no longer allows to forward a message and asking for a synchronous
  reply that already has a source waiting for a reply.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17584 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-25 12:21:38 +00:00
Axel Dörfler b0bc48fbd3 Some more GCC 4 and PPC fixes.
* Mesa doesn't compile yet, as some PPC specific stuff seems to be
  missing, Philippe?
* Cortex and some other stuff has been marked x86-only, although
  it's more of a "GCC 2.95.3"-only.
* I'm not sure if it's a bug in GCC 4, or if that's what the C
  standard demands, but sizeof(some_type::some_field) is not
  valid anymore :-/


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17515 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-19 15:52:21 +00:00
Axel Dörfler 04b1590767 docRef can be NULL - this fixes the crash of the media server I introduced yesterday...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17478 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-16 13:28:56 +00:00
Axel Dörfler 81d6346e7b Launching scripts via the Roster is now actually working (there were some app
registering stuff left that prevented that before).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17475 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-16 01:19:34 +00:00
Axel Dörfler 973582ac0c _LaunchApp() no longer registers scripts.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17474 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-16 01:11:27 +00:00
Michael Lotz f2274165dd Changing AddMessage() and ReplaceMessage() to use R5 message format to ensure compatibility.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17322 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-04 19:42:09 +00:00
Michael Lotz 035eafc5f3 We should never mess with fQueueLink as it's maintained by the BMessageQueue. Small simplification.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17313 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-03 22:23:09 +00:00
Axel Dörfler bb40a68547 * The mapping is now also removed from the area list in case creating the
area failed.
* "base" is no longer used uninitialized in combination with B_BASE_ADDRESS.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17304 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-03 10:14:36 +00:00
Axel Dörfler 6d5488e18a * There is now a server_read_only_memory structure that is placed in a (surprise!)
read-only area shared between the Desktop and all applications.
* Right now, this area only contains the desktop colors, ie. B_PANEL_BACKGROUND_COLOR
  etc.; ui_color() no longer needs to ask the server for these colors.
* The ui_colors are now maintained by DesktopSettings, though ColorSet is still there.
* The default colors are now hardcoded once and for everyone in InterfaceDefs.h, ie.
  the app_server uses them as well.
* Desktop::Init() can now also return an error (but that is not yet accounted for).
* Cleaned up InterfaceDefs.h.
* Fixed wrong include in moreUTF8.h.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17232 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-25 20:12:06 +00:00
Axel Dörfler 704c03b9e6 Got rid of that unused and superfluous TokenSpace callback stuff.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17200 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-22 16:29:44 +00:00
Michael Lotz eef8149582 Fixed wrong length calculation for memmove. This should at least fix bug #314 and probably more yet unknown problems with ReplaceData(). Also optimized removing data from the end of the buffer.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17101 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-11 23:01:32 +00:00
Stefano Ceccherini 791b9c2141 in case DEBUG is defined, BLooper don't use the benaphore style lock. Useful for debugging
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17045 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-07 19:09:45 +00:00
DarkWyrm 4ac06083f4 Added missing symbol for Gobe Productive
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17036 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-07 10:25:17 +00:00
Axel Dörfler 90a8acbfe7 BRoster::Launch() no longer replace B_NOT_AN_EXECUTABLE with B_LAUNCH_FAILED_EXECUTABLE
for everything - they now do that only for document files.
Also, I extended _TranslateRef() to not report anything that has the executable bit
set as executable - it now only does this if the BEOS:TYPE attribute says it's an
executable.
This fixes the error message Tracker was giving when trying to launch a shared library
("This file was mistakenly set as executable...").


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17023 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-06 06:52:57 +00:00
Axel Dörfler ac1f397e60 Rewrote the private query_for_app() function to search on all mounted volumes
instead of just the boot volume.
It now also has a second pass in case nothing could be found. The second pass
does a case insensitive query for the application's signature, and fixes the
problem that some apps couldn't be started by signature until they were launched
once (because the MIME database is always case insensitive).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16967 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-02 16:02:28 +00:00
Axel Dörfler 60bf6a1fbe Removed the detached version of the BMessageRunner object again, and instead
have a static method for spawning one (BMessageRunner::StartSending()), as
suggested by Ingo.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16966 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-02 14:47:01 +00:00
Stephan Aßmus 600fbd78e4 * BView::FillRegion() sends the BRegion data instead of decomposing
it and rebuilding it on the server side (that causes a huge speed
  up for regions containing many rects)
* There is a method in ServerLink that could have been used, but I
  actually needed to add the direct BRegion support to LinkReceiver
* added LinkReceiver as a friend to BRegion class
* ServerApp and ServerWindow keep the CursorManager locked after they
  have retrieved a cursor until they have called Acquire() on the
  cursor. (Axel: what good is using atomic* stuff in Acquire() and
  Release() if we have to protect this by a lock anyways?)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16957 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-01 16:56:10 +00:00
Axel Dörfler ad236123aa Removed some unnecessary TODO items.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16913 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-28 14:52:56 +00:00
Axel Dörfler 090dcfd4a8 Removed some more musings about LockLooper() and token space.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16912 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-28 14:46:09 +00:00
Axel Dörfler 689dc9f91a * Simplified LockLooper() and LockLooperWithTimeout(), got rid of not really
helpful but extensive comments in the code.
* Fixed possible wrong error values of LockLooperWithTimeout().
* AddFilter()/RemoveFilter() now check if the looper is locked in case this
  handler belongs to a looper - as SetFilterList() already did.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16911 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-28 14:41:20 +00:00
Stefano Ceccherini 68ead3ea06 BLooper uses a benaphore style lock, should save some cycles. I hope this wasn't left out on purpose
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16864 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-22 21:56:31 +00:00
Stephan Aßmus 2297a36b5b * added functions to improve binary compatibility with old apps
-> Guido (for which there is source available though) is now
  running fine on Haiku.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16860 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-22 20:33:02 +00:00
Axel Dörfler 16ed1e1d15 * Removed headers/private/servers/app - everything is in src/servers/app now.
* Removed DisplaySupport.h, wasn't needed anymore.
* Removed private color set functions from InterfaceDefs.cpp - we might want
  something similar, but definitely not like that.
* Minor cleanup, added some missing licenses.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16831 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-18 16:42:14 +00:00
Axel Dörfler 38a6ea1d98 * Removed the old AS_AREA_MESSAGE stuff - it's currently not used at all, and
even though we might need something similar, we can't use it (since it was
  based on BGet++).
* Removed BGet++, it's not used anymore.
* Removed ServerMemIO class, was never used.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16830 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-18 15:59:23 +00:00
Axel Dörfler 0476838149 The test environment should now build okay again, as well.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16829 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-18 15:48:12 +00:00
Axel Dörfler c7c61938c0 We should delete our server memory as well.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16828 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-18 15:31:29 +00:00