Commit Graph
21 Commits
Author SHA1 Message Date
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 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
Michael Lotz bdbd1cb441 Removing the USING_MESSAGE4 define.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16710 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-11 18:06:46 +00:00
Axel Dörfler 5edcfe9619 Cleanup!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15806 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-03 09:23:08 +00:00
Axel Dörfler 4ceb1e519c * reverted Adi's premature changes to BWindow and restored _DetermineTarget() and
task_looper() again.
* removed BMessenger::fPreferred - whenever you had to specify "usePreferred" separately,
  you don't have to do that anymore - use B_PREFERRED_TOKEN instead.
* fixed BTokenSpace::GetToken() semantics: it will no longer touch the "object" argument
  in case of failure.
* Introduced a BWindow::_DistributeMessage() that will be part of the event dispatcher
  counterpart to the app_server (the other will be _DetermineTarget()).
* Made it easier to use Michael's Message4 implementation: just add the following line
  to your UserBuildConfig:
	AppendToConfigVar DEFINES : HAIKU_TOP src : USING_MESSAGE4 : global ;
* Introduced ServerWindow::HandlerMessenger() and FocusMessenger() - the first will
  target the client handler, while the other will target the preferred handler of the
  client looper (usually the view having focus).
* Fixed dano message unflattening in the Message4 code.
* Changed BMessage::PrintToStream() to no longer use macros in the Message4 implementation.
* I hope that's all - it's a huge change, but it's all connected.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15046 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-20 16:24:23 +00:00
Michael Lotz cf10934e5f Introducing Message4. The changes to the related sources are ifdefed with USING_MESSAGE4 which is defined in Message4.h. To use Message4 the Message4.cpp, Message4.h, MessageUtils4.cpp, MessageUtils4.h and MessagePrivate4.h have to be linked to their counterparts without 4 suffix. Then MessageBody.cpp and MessageField.cpp have to be commented out in the app kit Jamfile and r5_message.cpp has to be added. There remain some bugs to be found. Feel free to change that.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14882 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-13 11:31:07 +00:00
Axel Dörfler 1771f7ae79 Signatures are case insensitive - I hope I fixed all occurences now... (but probably not)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13731 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-18 07:08:17 +00:00
Jérôme Duval 0d0f1600ef fixes forwards of BMessages
iroster now works successfully


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11367 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-14 11:47:55 +00:00
Ingo Weinhold 94b98dff1a Consequently use B_{NULL,PREFERRED}_TOKEN to prevent problems with BMessage code checking against B_NULL_TOKEN.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11129 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-29 17:36:20 +00:00
Ingo Weinhold 4afc60d31b * Turned the private constructor into a SetTo().
* The < operator uses BMessenger::Private now (it's no longer a friend).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11022 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-25 14:45:14 +00:00
Ingo Weinhold 37faaaded5 Made the (BHandler*, BLooper*,) constructor more robust. Now the looper list is locked and the looper checked for validity.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3581 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-06-20 00:18:56 +00:00
ejakowatz 2be975a1ee _get_object_token_ has found its permanent home in AppMisc.h, which the
other files were modified to include.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2957 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-03-19 08:00:50 +00:00
Ingo Weinhold 717a24b7a6 Fixed synchronous SendMessage() calls. _send_()'s wantsReply must always be false, otherwise we get flooded with B_NO_REPLY messages.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1412 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-10-06 22:50:23 +00:00
Ingo Weinhold 9e9f5a1ad3 Improved BMessenger::InitData() a bit: Now only one roster call is done, when a signature but no team ID is given.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@676 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-08-09 23:31:40 +00:00
Ingo Weinhold 672c1ea9ba Fixed return codes in InitData().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@623 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-08-06 22:19:37 +00:00
Ingo Weinhold c9f4f5e164 Fixed InitData(): It must not be possible to construct a messenger targeting a B_ARGV_ONLY app.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@577 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-08-05 00:48:58 +00:00
Ingo Weinhold 7e24e06e2c Fixed synchronous SendMessage() versions. They need to add be_app_messenger as reply target, if the supplied reply target is invalid.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@523 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-07-28 21:23:52 +00:00
Ingo Weinhold 3b04471572 Implemented InitData(). BMessenger is complete.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@455 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-07-26 19:48:49 +00:00
Ingo Weinhold 8f1dc17d91 * Assignment operator didn't return *this.
* Fixed comparisson operators: The team ID is ignored.
* Fixed second synchronous SendMessage(). The reply argument is checked for
  NULL now, `if (error)' -> `if (error == B_OK)', and map B_BAD_TEAM_ID to
  B_BAD_PORT_ID, which is what the R5 implementation returns.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@360 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-07-21 00:55:55 +00:00
Ingo Weinhold e1f41e5d53 BMessenger::Target() uses BLooperList now.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@261 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-07-16 23:28:07 +00:00
ejakowatz 52a3801208 It is accomplished ...
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-07-09 12:24:59 +00:00