Commit Graph
92 Commits
Author SHA1 Message Date
Axel Dörfler 9a44fdc97c * Implemented a new client allocation method: instead of having all bitmaps of
all teams in serveral server areas, and instead of having to eventually clone
  them all several times in BBitmap, we now have one or more areas per team,
  and BBitmap will only clone areas once if needed. As a side effect, this
  method should be magnitudes faster than the previous version.
* This method is also much more secure: instead of putting the allocation
  maintenance structures into those everyone-read-write areas, they are now
  separated, so that faulty applications cannot crash the app_server this
  way anymore. This should fix bug #172.
* Freeing memory is not yet implemented though! (although all memory will
  be freed upon app exit)
* There are now 3 different bitmap allocation strategies: per ClientMemoryAllocator
  (ie. via ServerApp), per area (for overlays, not yet implemented), and using
  malloc()/free() for server-only bitmaps.
* ServerBitmap now deletes its buffers itself.
* Cleaned up BBitmap and BApplication a bit.
* The test environment currently doesn't build anymore, will fix it next.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16826 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-18 13:43:26 +00:00
Axel Dörfler ab093a2ce4 Removed TODO item, it's already resolved.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16239 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-05 19:44:26 +00:00
Axel Dörfler aa1f543799 Some work on cursors:
* Fixed a myriad of bugs all over the place, ranging from locking errors to
  deleting objects that don't belong to the one deleting them (hello HWInterface!)
* Almost all ServerWindow cursor stuff was broken; I've replaced all commands
  to set a cursor with a single one AS_SET_CURSOR.
* Renamed some cursor commands.
* Changed the (broken) way ServerApp::fAppCursor was maintained - the application
  cursor is now NULL as long as possible.
* Removed superfluous ServerCursor app signature stuff.
* The BApplication will no longer duplicate the default/I-beam cursors, it will
  just reuse the default ones which now have fixed tokens.
* As a result, changing the cursor is now working as expected, closing bug #102.
* Rewrote Cursor.h, renamed private members to match our style guide.
* Minor cleanup.

What's still left to be done is reference counting the cursor objects to make them
work right and reliable.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16237 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-05 18:14:14 +00:00
Ingo Weinhold 1ae42108ec Improved the window_quit_loop() situation:
* We no longer try to dynamic_cast<>() a BLooper* into a BWindow* in
  an unsafe context (i.e. without the looper or the looper list being
  locked).
* We no longer try to quit windows that haven't been run yet (e.g.
  bitmap's offscreen windows). Those windows conceptually still belong
  to their creator. In the best case trying to lock such a window
  simply failed (e.g. when the creator was another window that had been
  told to quit earlier and deleted the window in question just not too
  early). In worse cases we would dead-lock (when the owner has not
  been told to quit (or refuses to do so)), cause "locker must be
  locked" debugger calls or die painfully when accessing an already
  deleted object.

BTW, I doubt, that the whole window quitting procedure is as it should
be. There's still a huge race condition: When a window is created after
we capture the window list at the beginning of window_quit_loop() that
completely escapes us.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16134 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-29 01:54:33 +00:00
Axel Dörfler 9f8f6275f6 Fixed shutting down apps with file panels - no more hang:
* if file panels shouldn't be quit, we no longer call QuitRequested() for
  them and stop quitting windows (which left normal windows open, because
  file panels always return "false" in QuitRequested())


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15715 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-12-29 14:49:28 +00:00
Stefano Ceccherini 3106b9ec41 You shall not break the build
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15244 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-30 18:33:21 +00:00
Stefano Ceccherini 17adbf1f0c Misc style changes
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15243 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-30 17:56:56 +00:00
Axel Dörfler 3cace414ad Removed run_task(), as it's not really needed.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15057 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-21 12:35:30 +00:00
Ingo Weinhold 338b8dc301 Merged changes from branch build_system_redesign at revision 14573.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14574 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-10-29 16:27:43 +00:00
Axel Dörfler 770c05d6cc The Desktop class now gets its own message processing loop: moved application
creation/deletion (and management) over to that class.
ServerApp now gets a desktop pointer, and no longer uses gDesktop.
Converted private MessageLooper::_MessagePort() to a public method MessagePort()
so that the looper can be addressed from elsewhere without using PostMessage().
Added a real basic message loop to MessageLooper::_MessageLoop().
BApplication now only asks the app_server to get its desktop object which should
now be used for everything that's not in the realm of the application.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13824 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-25 21:08:34 +00:00
Axel Dörfler 4c3e1ace67 Fixed a bug in quit_all_windows(): we need to Unlock() the application
because BWindow::QuitRequested() must be allowed to lock it.
This fixes a deadlock when trying to quit Tracker.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13479 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-06 04:48:22 +00:00
Ingo Weinhold 2f903d78cf Removed the handling of B_QUIT_REQUESTED in BApplication::DispatchMessage().
It's already done in BLooper. Now we additionally send a reply to it, when
the message comes from the registrar on shutdown.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13419 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-04 10:30:38 +00:00
Ingo Weinhold a60ea28262 * Made BApplication::Private public. Should not have worked before (probably
a compiler bug).
* Don't try to cleanup the app server connection stuff, when compiled
  with RUN_WITHOUT_APP_SERVER.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13414 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-03 16:53:59 +00:00
Ingo Weinhold c8e7f53e08 * Radically culled the list of BApplication friends and introduced a
BApplication::Private class for accessing relevant parts.
* Pulled the app server connection and IK initialization out of
  InitData() into a new method _InitGUIContext() and introduced a private
  constructor that allows to avoid this initialization. This will be used
  for servers that don't have GUI respectively want to init the app server
  connection later.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13312 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-28 12:55:16 +00:00
Axel Dörfler 014ddc8724 Now also sets fInitError when the app_server did not create the app
(and not only drop into the debugger).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13237 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-23 16:29:51 +00:00
Axel Dörfler 5f8e562f04 Added a ToDo comment.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13185 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-16 18:53:24 +00:00
Axel Dörfler f395db3740 Updated a comment I forgot before.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13129 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-14 21:31:30 +00:00
Axel Dörfler dd10337fd0 Renamed BAppServerLink to AppServerLink, BPortLink to PortLink, LinkMsgReader
to LinkReceiver, LinkMsgSender to LinkSender, and put everything into the
BPrivate namespace.
Made AppServerLink a cheap object - it will use the applications receiver/sender
and not create its own buffers.
Fixed broken communication stuff here and there (mostly Font.cpp).
Put the newly introduced set|get_system_colors() into the BPrivate namespace -
please don't introduce private functions into the public namespace!!!
Also fixed their broken communication use, as Darkwyrm obviously forgot about
it again: the sequence Flush(); GetNextMessage() without error checking is
purely wrong and can make the app hang and/or crash! :-)
Other minor cleanup.
The input_server used some test mode with the haiku build target which is
probably wrong.
Hopefully I did not forget anything this time.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13128 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-14 21:28:56 +00:00
Stefano Ceccherini 2c458b6dbf Now inits fInitialWorkspace correctly, calling current_workspace()
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13073 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-12 06:26:03 +00:00
Stefano Ceccherini 8eae8b05e8 Every BApplication (even applications which didn't use it) allocated a BPrivateScreen object. Now they are created/destroyed on demand (when a BScreen object is constructed), and reference counted, so that there is still only one per app. Note that since we are creating/deleting them, constructing a BScreen object can be more time consuming than before, but personally I find this approach much cleaner.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13006 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-08 07:36:41 +00:00
Axel Dörfler 75936a02e4 BPortLink now has a FlushWithReply() method itself.
BPortLink::AttachString() now accepts a length argument, and will no longer
send a terminating null byte; LinkMsgReader::ReadString(), however, will
make sure the string read is null terminated.
Changed client communication code to use FlushWithReply() instead of Flush()
and GetNextReply() - there were many bugs and shortcomings in the code, I
hope I've fixed them all.
Converted ClientFontList.cpp to our coding style (but not completely, the
class members are missing).
Some more cleanup - I hope Adi will adopt our coding style one day!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12998 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-08 00:36:26 +00:00
Stefano Ceccherini 7475dcdf3a Added an app server command to retrieve the color map. Made some adjustments to SystemPalette.cpp, implemented support for it in BPrivateScreen. Moved get_scs() a bit down to avoid a deadlock. Note that getting the colormap doesn't work due to port capacity limit (?)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12996 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-07 21:32:24 +00:00
Adi Oanca c92d950958 Solved a deadlock situation which occured when quiting be_app.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11699 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-12 19:20:10 +00:00
Stefano Ceccherini f8411ab138 Implemented handler for B_APP_ACTIVATED and (but not really) for _SHOW_DRAG_HANDLES_
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11512 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-28 16:27:49 +00:00
Axel Dörfler bee723280c fill_argv_message() now takes a reference as parameter.
Also fixed BApplication::do_argv() which didn't NULL terminate the array
as it should have done, and would call ArgvReceived() with argc == 0 and
a NULL parameter for argv.
Removed strange trailing spaces at the end of the lines for those two functions.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11199 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-02 04:40:11 +00:00
Ingo Weinhold 1a2f24bbbb Made some debug output debug conditional.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11140 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-30 00:46:38 +00:00
Ingo Weinhold 01225b393d Disabled debugging. Was accidentally committed.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11127 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-29 17:33:20 +00:00
Ingo Weinhold 84de162be9 More debug output in case of failure.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10952 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-22 17:38:20 +00:00
DarkWyrm 4e51dee8d0 don't prevent ReadyToRun from being called when running without the registrar
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10877 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-19 15:35:49 +00:00
Ingo Weinhold 289adc045d Changed due to moving RegistrarDefs.h stuff into the BPrivate namespace and replacing kRosterPortName.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10813 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-18 01:11:39 +00:00
Stefano Ceccherini 86832512bb Now includes MenuWindow.h instead of duplicating the declaration
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10535 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-12-27 09:04:28 +00:00
Stefano Ceccherini ca8ed92280 Moved gPrivateScreen into the BPrivate namespace. Small cleanups to Application.cpp. Refined some comments. Used strdup() instead of new because it`s nicer for strings.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10514 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-12-21 10:44:31 +00:00
Axel Dörfler e372dc78c8 Added handling of B_QUIT_REQUESTED messages, even if it might not be complete.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10513 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-12-21 01:32:55 +00:00
Axel Dörfler c18d84297a Grouped all constructors together.
Moved InitData() to be close to the constructors.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10501 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-12-20 13:04:16 +00:00
Axel Dörfler 72f5d8600c Moved the quit window code into window_quit_loop() which is now called by
quit_all_windows(). I've also implemented the file panel quit mechanism,
but I'm not sure it's correctly done yet.
The BApplication destructor now locks the looper. Added commented out
deletion of fServerTo port and a ToDo comment if this should be done.
Run() no longer checks fMsgPort somewhere, but fInitError at the beginning;
if a missing fMsgPort doesn't set this, I guess InitData() is broken (or
better, BRoster::Private::CompleteRegistration() is). It now also deletes
any fPulseRunner (could be moved to ~BApplication, though).
QuitRequested() now correctly calls quit_all_windows().
Added a question to Quit() about the usefulness of special casing calling
the function from another thread.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10500 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-12-20 12:57:00 +00:00
Axel Dörfler af34fbf1c5 Moved the unmaintainable list of initializers for the different constructors
to InitData(). Also fixed the initial value of fPulseRate (was 500000 but
according to the BeBook, it should have been 0).
Implemented SetPulseRate() (untested, but should be okay).
Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10499 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-12-20 11:09:56 +00:00
Axel Dörfler beabca50a7 Collision with our style guide.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10495 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-12-20 10:30:50 +00:00
Axel Dörfler bae6988e7d Fixed some bugs and added some missing functionality:
- DispatchMessage() would swallow all handled messages, no matter if they were
  intended for this handler.
- B_REFS_RECEIVED does now maintain the recent folder/document lists.
- Now calls Pulse() when a B_PULSE is received.
- No longer calls ReadyToRun() more than once, no matter how many B_READY_TO_RUN
  are sent to the app.
- Added B_APP_ACTIVATED to the yet unhandled messages; furthermore, the known
  unhandled messages now dump themselves to stdout.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10494 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-12-20 10:04:28 +00:00
Stefano Ceccherini f19d9d3b36 Moved functionality of do_argv() into a new static helper function called fill_argv_message(). Now do_argv() handles the B_ARGV_RECEIVED message (incidentally, thats almost how its done in beos). That made DispatchMessage() a bit cleaner.Added some comments. B_PATH_NAME_LENGTH + 1 --> B_PATH_NAME_LENGTH.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10448 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-12-14 11:18:42 +00:00
Stefano Ceccherini bd6c26014a Now it calls ScriptReceived if it receives a scripting message in MessageReceived(). Falls back to BLooper::MessageReceived() in case something goes wrong (just to be safe).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10442 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-12-13 23:29:03 +00:00
Stefano Ceccherini 833a592226 Added B_SILENT_RELAUNCH handler. Expanded a comment.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10412 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-12-13 10:59:35 +00:00
Stefano Ceccherini b1ce1640cd Renamed gApplicationPropInfo to sPropertyInfo and made it static.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10390 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-12-11 10:15:11 +00:00
Stefano Ceccherini a8fc5954c0 Implemented get_window_list(), and used it in count_windows() and window_at(). That simplified the code a lot. Removed some unused headers.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10389 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-12-11 10:12:59 +00:00
DarkWyrm 41f6b937f7 Submission of Stefano's BApplication patch - archiving support
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10383 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-12-09 22:54:46 +00:00
Ingo Weinhold 044be4e258 Introduced a new build flag and macro RUN_WITHOUT_APP_SERVER, to allow
several things to work without a running app server (the Storage Kit to
begin with).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8695 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-28 20:18:31 +00:00
DarkWyrm bceb8166d4 Added a function to the BPortLink debugging code
Made a couple of style tweaks to BApplication::connect_to_app_server


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8620 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-22 00:22:51 +00:00
DarkWyrm 38e110b124 Client-server messaging fixes
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8543 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-08 22:35:25 +00:00
DarkWyrm 3ceb31b96a Pahtz's changes from PortLink/BSession/PortMessage/PortQueue to BPortLink
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8519 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-07-30 15:15:27 +00:00
Stefano Ceccherini 5dccfc1921 Some small changes (mostly suggested by Axel). Added more ToDO items, changed some comments, added some more (unhandled yet) message codes.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8496 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-07-29 06:49:17 +00:00
Stefano Ceccherini 6cd5d5b1f1 Implemented AppResources() "by the book" (not tested), InitialWorkspace(), researched and implemented a TODO item, some small cleanups.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8481 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-07-27 06:26:07 +00:00