Commit Graph
500 Commits
Author SHA1 Message Date
Axel Dörfler cf2aeb201f * Implemented BDragger::{Show|Hide}AllDraggers() and its backend in the app_server.
This fixes bug #242. The value is currently stored in a separate file.
* Removed some unused codes from ServerProtocol.h.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20188 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-21 07:57:21 +00:00
Stefano Ceccherini 11ef32dfa9 erase() shrinks the vector, so we decrement the handler. Fixes the crash in case there are invalid handlers (Time application, for example). Should be fixed in the other _SendNotices() call too ?
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20183 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-20 16:25:15 +00:00
Ingo Weinhold 7b95cc638b The BRoster initialization (contacting the registrar) can now time out
(generous 1s for delivery and for reply). This allows for the registrar
main thread to be debugged. Before the libbe initialization in gdb would
block, since it constructed the global be_roster which waited forever for
a reply from the registrar.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20144 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-16 16:53:45 +00:00
Ingo Weinhold cd9660c79a Moved sending the B_NO_REPLY reply from the destructor to the more
general _Clear(), so that the assignment operator and Flatten() will
trigger such a reply as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20083 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-06 17:30:54 +00:00
Ingo Weinhold c1c0c22091 * In the BMessage assignment operator we do now clear some of the message
header flags after copying the header of the original message. Before
  cloning a message that still needed a reply would result in the clone
  also needing a reply, which, in the end, led to two replies being sent,
  thus screwing up the cached reply ports used for synchronous messaging.
  Fixes bug #1008.
  BTW, also clearing the reply info breaks Tracker and Deskbar, so I suppose
  R5 keeps it and Tracker and Deskbar rely on that behavior.

* Added a bit of debug code removing and printing spurious messages from a
  cached reply port.

* Added TODO in BMessage::~BMessage(). ATM, we only send a B_NO_REPLY in the
  destructor, but not in case the message is overwritten using the
  assignment operator or Flatten().



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20074 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-05 16:04:46 +00:00
Axel Dörfler f6c0820638 * The BHandler observer mechanism was completely broken in Haiku for remote targets;
this fixes bug #1005. As a result, the Disks icon will now appear in file panels
  when you change that setting with a panel open.
* _ObserverList is now in the BPrivate namespace (and renamed to ObserverList).
* its BHandler map is now only temporarily used for handlers that do not belong to
  a looper yet; when BHandler::SendNotices() is called, they will be transferred
  into the BMessenger map.
* Invalid messengers are now removed from the map when encountered.
* Added TODO comments about a possible reference counting if a handler is added
  twice to a list (right now, this will be ignored).
* All {Start|Stop}Watching() methods are now more or less safe to be used in low
  memory situations (adding some items to the map can still throw an exception...).
* Renamed BHandler::InitData() to _InitData().
* Some refactoring and cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20029 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-01 16:08:01 +00:00
Axel Dörfler f91bf83feb We must not wait for the reply of the registrar - this fixes a deadlock between
the registrar and the app_server.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20013 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-29 22:40:29 +00:00
Axel Dörfler 6af9dcbfe5 Another cleanup patch by Vasilis Kaoutsis - thanks!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19998 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-28 21:35:08 +00:00
Axel Dörfler 9dbe170a69 Implemented direct message passing for local targets; this fixes a deadlock
with PostMessage() in case the message queue is full.
Some notes:
* for synchronous replies, we don't use this mechanism yet, but it could be
  extended to do that as well.
* the code looks so complicated because we need a way to access the looper's
  queue without locking it (to prevent deadlocks); like Dano's solution, I've
  abused BTokenSpace to store a BDirectMessageTarget with a BHandler.
* we also need to decouple the lifetime of a looper's queue from its target,
  as we cannot lock the looper, and therefore, can't guarantee it stays valid
  as long as we're accessing it outside of BLooper.
* init_clipboard() now needs to be done after the global constructors have
  been called - since sending messages now needs gDefaultTokens to be initialized.
  Since this is done per image, it shouldn't cause any troubles, though.
* some minor cleanup, removed unused _msg_cache_cleanup_() and friends.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19968 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-26 13:59:56 +00:00
Axel Dörfler c01f349e6d Cleanup:
* Got rid of unused BLooper members
* renamed fTaskID to fThread
* Removed private and deprecated AddLooper()/RemoveLooper()/... stuff; BLooper is now
  directly calling BLooperList methods.
* Got rid of extensive and useless comments
* Made a few TODOs more clear
* Merged InitData() and InitData(...) to _InitData(...)
* BLooper::Team() now uses BPrivate::current_team(), sTeamID is gone now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19966 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-26 12:42:18 +00:00
Axel Dörfler aa33d0a928 Got rid of the looper ID stuff - it seems nowhere to be used.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19965 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-26 12:11:33 +00:00
Axel Dörfler 88df8322a9 Optimized current_team() - it now uses a static variable to hold the team ID.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19964 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-26 12:05:10 +00:00
Axel Dörfler ca9b91886d * Added a Dano extension to BMessageQueue: IsNextMessage().
* BLooper::AddMessage() is now using this method to determine wether or not to
  update its looper thread.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19956 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-25 17:08:16 +00:00
Axel Dörfler e30afed439 As per Ingo's request, I moved calling BRoster::Private::UpdateActiveApp() into
the app_server (and updated all comments that said otherwise).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19865 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-19 16:41:58 +00:00
Axel Dörfler c2f641f2e5 Turns out the whole "active app" mechanism in the registrar wasn't used at all; the
Switcher now works as expected.
* Renamed TRoster::ActivateApp() to UpdateActiveApp(), as the app is already activated
  at that point (the registrar only keeps track of it).
* BWindow::DispatchMessage() now calls the new BRoster::Private::UpdateActiveApp()
  method when it receives a B_WINDOW_ACTIVATED message.
* Added BRoster::_UpdateActiveApp() which calls the new B_REG_UPDATE_ACTIVE_APP.
* Removed now unused B_REG_ACTIVATE_APP.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19857 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-18 17:45:08 +00:00
Ryan Leavengood 252f476782 Added some needed stdio.h includes. I don't know what magic was used to compile
these for other people, but they wouldn't compile for me when building the
app_server test environment.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19479 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-13 00:15:56 +00:00
Stephan Aßmus ab12785c61 * I think I finally caught that bug where the test environment crashed
so frequently when unflattening R5 messages (each mouse event arrives
  as an R5 message in the test environment): unflatten_r5_message()
  retrieved the pointer to the message header, but afterwards cleared
  the message... resulting in the header pointer to be invalid.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19412 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-02 11:08:12 +00:00
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