#
85b82f85 |
|
19-Jul-2022 |
Dale Cieslak <dcieslak@yahoo.com> |
BFont: allow loading of user fonts from disk or memory This patch adds an API call to BFont, called LoadFont, that takes a string path to a font file. The user fonts are managed via a new class called AppFontManager that inherits from the base class FontManagerBase but adds the methods to add and remove user fonts from disk or memory. There is also a new method called UnloadFont to remove a user font, but on exit of an app all user fonts should be automatically cleaned up. Global/system fonts are managed by the GlobalFontManager, which is a new class that also inherits from the base class FontManagerBase, replacing the old "FontManager" class. A maximum of 128 user fonts may be loaded, and memory fonts may not exceed 20MB. There's also an overloaded version of LoadFont that accepts an area_id and loads the font from memory. A size and offset may optionally be provided to allow for an area that contains more than just a font. Change-Id: I6add42bdf0c0cefc0e2e2a4984fd848c3e7269e5 Reviewed-on: https://review.haiku-os.org/c/haiku/+/4790 Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org> Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
|
#
60d30785 |
|
27-Aug-2020 |
X512 <danger_mail@list.ru> |
app_server memory management fixes: use BReference Use BReference for more automated reference counting in app_server, fixing some use-after-free and other problems. Extracted from https://review.haiku-os.org/c/haiku/+/2695 Change-Id: I141bb248229405896b29feff3338447f7257b0b4 Reviewed-on: https://review.haiku-os.org/c/haiku/+/3175 Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
|
#
6331a6bd |
|
08-Mar-2013 |
Axel Dörfler <axeld@pinc-software.de> |
app_server: The client memory allocator is now reference counted. * Not sure if cursors could also have triggered this, but the memory allocator can now outlive its ServerApp. * However, this may also reveal cases of memory that is not freed correctly.
|
#
8e2140fa |
|
29-Apr-2012 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed a large client side memory leak for app_server memory. * The areas allocated for BBitmaps were never deleted, even though the app_server deleted its part when the memory got freed. * This resulted in a constant memory increase if the application in question would operate on many changing large bitmaps, like photos. * Since the bitmaps are reference counted, we don't actually know when to delete the areas, so that the app_server now notifies the client whenever that is possible. * This might fix #6824.
|
#
e4c638f6 |
|
15-Jul-2010 |
Stefano Ceccherini <stefano.ceccherini@gmail.com> |
ServerApp::Quit() was hiding MessageLooper::Quit() due to the default paramenter, causing warnings when compiling with gcc4. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37526 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
87e7b978 |
|
15-Feb-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed race conditions in the server's bitmap/picture handling: the objects are now removed from the maps as soon as the client deletes them. This also makes the "client reference" mechanism superfluous I introduced earlier. * ServerApp::SetCurrentCursor() must always call Desktop::SetCursor(), since it is also called whenever the current application changes. This fixes the cursor almost never changing. * Renamed ServerPicture::Usurp()/StepDown() to PushPicture(), and PopPicture(). * Also, they now acquire a reference to the picture in question (ie. the picture you get from PopPicture() also owns a reference you need to free). * ServerApp::CreatePicture() may fail, too. This case is now handled in the code that calls it. * Previously, the ServerWindow tried to process up to 70 messages in one go. That obviously caused bug #4709. Now, we have the additional requirement to not hold the desktop lock for longer than 25 ms. I haven't tested it with Kaleidoscope yet, though. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35472 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
85a7877f |
|
04-Nov-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* ServerApp's bitmap and picture handling was completely broken, as it ignored concurrency as well as reference counting, causing occasional crashes and memory corruption. * ServerPicture now subclasses Referenceable, and will notify its owner when it's going to be deleted. This might bring some regressions, although I couldn't spot anything wrong yet. * ServerBitmap will now also notify its owner when it's going to be deleted as well. * Switched from the former picture/bitmap lists to a std::map. This also solves the issue of not checking whether or not the bitmap/picture actually belongs to the ServerApp (before, all apps could access and delete all pictures/bitmaps) * Introduced a new fMapLocker that guards the new maps. * ServerWindow now uses GetBitmap()/GetPicture(), and gives up its reference after use. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33876 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3d2dfb86 |
|
04-Nov-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* More cleanup, improved error return codes. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33872 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5e3f4c41 |
|
20-Aug-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* ServerApp now maintains a mask of workspaces with temporary mode settings, and reverts the modes if the app goes away (ie. if it crashes). * Desktop::SetScreenMode() also set the mode on the current screen, even if it should have been set on another screen. * Cleaned up the Desktop.h header. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32564 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6c364068 |
|
11-Aug-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Cleanup, no functional change. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32244 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fc235d55 |
|
20-Apr-2009 |
Stephan Aßmus <superstippi@gmx.de> |
Patch based in large on work done by Philippe Saint-Pierre: * When a BApplication is created, the interface kit globals for this team are initialized, including be_plain_font, be_bold_font and be_fixed_font. The plain font specifically is assumed the default font for all BViews. A BView is not required to every set the font, it will then just be the plain font, because the app_server already assigned it when the view is created. Here is where the problem starts. When the system fonts change, they change on the app_server and are picked up by new applications. Old applications will run with the old fonts, because the values remain the same and are stored in the already initialized be_*_font globals. So this was never a problem. What was a problem is that the app_server would use the current plain font for applications which were already initialized before the font was changed, so the values in their be_plain_font would not match the values in the server side font used when creating new views. * This patch already prepares for the situation in which client applications want to update their be_*_font globals. This needs to be a manual act of the client applications, otherwise we would break existing apps. Maybe we could automate this for BWindows with the B_AUTO_UPDATE_SIZE_LIMITS flag and any child views with B_SUPPORTS_LAYOUT. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30282 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0a0622a6 |
|
10-Jul-2008 |
Stephan Aßmus <superstippi@gmx.de> |
patch by Andrej Spielmann (GSOC): Removed trailing whitespace. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26357 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f592fcef |
|
01-Jul-2008 |
Stephan Aßmus <superstippi@gmx.de> |
stippi + bonefish: Fixed race conditions when a ServerApp or ServerWindow is created. The reply to the client that the object has been created successfully was sent in the thread creating it. Preempted at the wrong time (right after writing the message to the port) could lead to the object's thread using the link at the same time, which would screw up all subsequent communication via that link. This fixes the problem that mimeset would sometimes fail when building Haiku in Haiku (can't find the ticket). It probably also fixes #2331, and the bug that sometimes when a window is opened (Terminal, crash alert, shutdown window, etc.) it would come up with huge width/height and tiny other dimension (can't find the ticket). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26192 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f33610f8 |
|
21-Apr-2006 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed number 1 (or the only one? ;-)) crashing bug #306 in the app_server: Since ServerWindow removed itself from its ServerApp in _PrepareQuit(), it could happen quite easily that the ServerApp was deleted before the ServerWindow - and since deleting WindowLayer as part of that referenced the ServerApp, it crashed. Now, adding/removing is both done by the ServerWindow in Init() respectively the destructor. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17198 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
38a6ea1d |
|
18-Mar-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* 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
|
#
9a44fdc9 |
|
18-Mar-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* 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
|
#
87b1f40c |
|
09-Mar-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed misbehaviour of AS_SET_CURSOR: it will no longer set the mouse cursor when it's not over a view of the application. * The application cursor is no longer applied when the mouse cursor is over the border (or tab) of a window. * Gave up and imitate BeOS behaviour: the mouse cursor now always get the shape the view below dictates, ie. it will no longer fall back to the default cursor outside the focus window. * The window is now set to the default in case there is no window under it at all (ie. if Tracker isn't running). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16685 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9ce4e5b4 |
|
09-Mar-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* The ServerApp now has the concept of a current cursor: this is either the cursor of the view currently under the mouse, or the application cursor, if the view doesn't have its own cursor (ie. it will no longer set the wrong cursor in certain situations). * AS_DELETE_CURSOR has no longer an influence on the application cursor, as this grabs a ref for its own use - this fixes bug #275. * AS_SET_CURSOR no longer sets the cursor when the application is not active. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16678 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ff3abf4d |
|
02-Feb-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* Started a naive implementation of BView::SetViewCursor() server-side - doesn't work though, as HWInterface can only draw B_RGB32 cursors... * More build fixes for libbe_test target - it defines __HAIKU__ as well, now git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16211 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
df190823 |
|
12-Jan-2006 |
Stephan Aßmus <superstippi@gmx.de> |
* cleaned up ServerApp header a bit * added support for nested cursor showing/hiding git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15926 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9c0c899e |
|
04-Jan-2006 |
Stefano Ceccherini <stefano.ceccherini@gmail.com> |
Added a copy constructor to ServerPicture. ServerPicture's constructors are private now, and can be called only from ServerApp (friend). Changed BList to a stl::stack which is better suited as a stack... Changed ServerApp::CreatePicture() to accept a picture to clone, instead of passing back a token which was never used anyway. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15840 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
843bc3cd |
|
03-Jan-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* Introduced an initial application workspace - should be retrieved differently, though (ideally when launched). * B_MODAL_APP_WINDOW_FEEL windows are now visible on the initial app workspace in case it has no other window visible. This fixes the missing BAlerts in the debug_server or just the "alert" command. Thanks to Stephan for pointing this out. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15811 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
20c2f672 |
|
03-Jan-2006 |
Stefano Ceccherini <stefano.ceccherini@gmail.com> |
Added Create/DeletePicture to ServerApp git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15802 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
34227d2c |
|
09-Dec-2005 |
Axel Dörfler <axeld@pinc-software.de> |
A couple of changes related to modal and floating windows: * Desktop::SetWindowFeel() is now working, but doesn't respect the window position yet (ie. floating windows would have to be moved to front). * WindowLayer::Workspaces() now always reflects exactly the lists it's in (at least after Desktop::AddWindow() has been called). WindowList::AddWindow() and RemoveWindow() now update this flag to be correct at all times. * Fixed Desktop::_ChangeWindowWorkspaces() to not set the current workspace for windows that are not on the current workspace, and vice versa. It also would hide windows that were already hidden, and tried to show windows that actually were hidden (did no other harm than triggering a rebuild of the global clipping). * Floating windows now work as expected. * Desktop::SetFocusWindow() won't give a window focus that has a modal. * Renamed OnWorkspace() to InWorkspace(). * ServerApp::InWorkspace() now works correctly, added ServerApp::Workspaces() as well. * WindowLayer::SubsetWorkspaces() returns the workspaces mask this modal or floating window should be in. * New window flag B_SAME_POSITION_IN_ALL_WORKSPACES should work as well. * Floating and modal windows now have always set this flag. * Added a WindowList::HasWindow() method. * Desktop windows (windows with the desktop feel) can now have focus again (I accidently broke that before). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15434 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e83820ed |
|
07-Dec-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Merged app_server_new_clipping branch changes r15290 to 15418 back into trunk. Also fixed Jamfile for the test environment. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15419 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4c0269b9 |
|
02-Dec-2005 |
Axel Dörfler <axeld@pinc-software.de> |
* WindowLayer::OnWorkspace() should now work correctly for all window feels. * introduced ServerApp::OnWorkspace(). * moved AS_CREATE_[OFFSCREEN_]WINDOW into its own method, ServerApp::_CreateWindow(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15283 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
27adb969 |
|
28-Nov-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Massive RootLayer & Workspace tearing: * workspace switch and subset windows functionality temporarily removed (away with that mess!). * no more RevealWMState() - we now have methods like ActivateWindow() and SendWindowBehind() that do all the work - just a little cleaner and with less overhead. * Workspace is now a pretty passive class - it only stores configurations of the windows and screens. * added an evil work-around for a locking problem (in RootLayer::_SetFocus()). * I'll plan to move pretty much all of the remaining root layer functionality to Desktop - so that the all regions lock is only held in case clipping regions are affected. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15207 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
bde8b9c6 |
|
24-Nov-2005 |
Axel Dörfler <axeld@pinc-software.de> |
* Layers are now put into an application wide token space that mirrors the client's token space. * finding layers by token is now O(1) instead of O(n) (as they are looked up in the token space). * removed Layer::FindView() as it's no longer needed (or should be used). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15113 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4ceb1e51 |
|
20-Nov-2005 |
Axel Dörfler <axeld@pinc-software.de> |
* 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
|
#
f7598223 |
|
18-Nov-2005 |
Axel Dörfler <axeld@pinc-software.de> |
* the new input event dispatcher is now actually used, although it doesn't distribute any messages to the clients yet. * removed the working thread from RootLayer - for now, its event handlers are still called using input filters in the new event dispatcher, though (to get things started). * ServerApp is now using a BMessenger to identify its client, and no longer stores the port/token separately. * the input_server handshake is a bit simpler now, as it can now just reply to the app_server message, removed unused code from ServerProtocol.h * calmed down the MultiLocker (it always printed thread statistics on startup, because it's compiled in debug mode). * removed the cursor thread stuff from AppServer.cpp * the new event dispatcher now uses a cursor thread when supported (only in native mode, not in the test environment), although it improves cursor movement under Qemu, the effect is not as good as expected - this might need some more investigations (might just be a thread priority problem). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15012 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d9525baa |
|
13-Nov-2005 |
Axel Dörfler <axeld@pinc-software.de> |
* Forgot to update Screen.h with the last commit... * Introduced and implemented AS_GET_SCREEN_ID_FROM_WINDOW - it only returns B_MAIN_SCREEN_ID, though. * renamed ServerWindow::fHandlerToken to fClientToken. * The BScreen(BWindow *) constructor now really asks the server for the screen ID. * ServerApp::fWindowList is now a BObjectList. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14910 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
58468dfe |
|
04-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
first step of geting rid of abstract DisplayDriver base class for less development overhead, DisplayDriverPainter is renamed to DrawingEngine git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14694 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
959a5a68 |
|
31-Oct-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Removed global gDesktop variable - there is now an sDesktop variable in AppServer.cpp, but that will go away, too. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14590 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
770c05d6 |
|
25-Jul-2005 |
Axel Dörfler <axeld@pinc-software.de> |
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
|
#
89ab121e |
|
23-Jul-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Factored a MessageLooper class out of ServerWindow and ServerApp. Could still be improved a bit (Quit() and _MessageLooper() are empty right now). Removed ServerApp::PingTarget(). Hopefully cleared some confusion about ServerApp::fClientLooperPort and fClientToken (previously fHandlerToken), even if it's currently unused. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13807 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3870c9f1 |
|
01-Jul-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Improved quit mechanism (for the last time): if an application had open windows that wouldn't quit on demand, the app_server would have gotten the kShutdownServer message anyway already (as the last app was quit). Since that one removed things like gDesktop/gBitmapManager, it liked crashing. Now, there is a semaphore that will be send to each app on quit. Only when this semaphore can be acquired, the shutdown message will be sent. Removed unused semaphores (decorator, active app). Replaced fAppListLock with a BLocker (just calling acquire_sem() without error checking is very unsafe in userland, and should never be done). BTW the bug was triggered by broken menu code that only sometimes really quit the window; it leaves a whole lot of zombies around - Stefano, any quick idea? :-) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13384 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0ec4af22 |
|
23-Jun-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Improved AreaPool to have an initial size as well as well as a name that is used for new area. MemPool::AddToPool() now gracefully deals with NULL pointers (or a size of 0). BitmapManager was deleting the area it transferred to AreaPool before - it no longer needs an extra area, though. Minor other cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13260 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a38e46a0 |
|
23-Jun-2005 |
Axel Dörfler <axeld@pinc-software.de> |
ServerApp now maintains a list of all windows, ServerWindow's AS_DELETE_WINDOW will update it automatically. Renamed ServerWindow::fName to fTitle, made it a pointer - it will now just adopt the title pointer that came from AS_CREATE_WINDOW. Just another cleanup round: renamed Layer::GetName() to Name(), no more layer->fName->String() accesses. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13239 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fcb006dc |
|
23-Jun-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Rewrote how the app_server and ServerApp's quit. As a side effect, the server can now quit instantly. AppServer must no longer call ServerApp's destructor once it's running - it now has to call Quit() in this case. The ServerApp is now destructed in its own thread. Some cleanup (like renaming ServerApp::MonitorThreadID() to Thread()). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13238 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1b5aeb31 |
|
17-Jun-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Renamed class FMWList to SubWindowList. Cleaned up SubWindowList a bit. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13203 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
dd10337f |
|
14-Jun-2005 |
Axel Dörfler <axeld@pinc-software.de> |
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
|
#
bd28b3c7 |
|
07-Jun-2005 |
Axel Dörfler <axeld@pinc-software.de> |
BAppServerLink is now using BApplication::fServerTo/From for its messaging. Added LinkMsgReader::NeedsReply() method. Completely redone ServerApp messaging: no more "replyport" from BAppServerLink; instead, the registered client reply port is used. Fixed some more weak messaging stuff. ServerApp now recognizes if an unknown message needs a reply, and sends it - for example, the "Screen" preferences app no longer hangs, but crashes on start :) Made LinkMsgReader::Read() virtual again, since it's needed by RAMLinkMsgReader.cpp. Renamed BPortLink::GetNextReply() to GetNextMessage(). Some more cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13004 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7f2831b5 |
|
28-May-2005 |
Stefano Ceccherini <stefano.ceccherini@gmail.com> |
Removed a couple of friendships, commented/removed unused stuff git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12863 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
cb80e15b |
|
14-May-2005 |
Stefano Ceccherini <stefano.ceccherini@gmail.com> |
ServerWindow is no more a ServerApp's friend. Some cleanups. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12663 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b3d3da70 |
|
12-May-2005 |
Stephan Aßmus <superstippi@gmx.de> |
more cleanup, fixed a bug in AS_GET_ESCAPEMENTS_AS_FLOATS that caused a lockup. DarkWyrm - I'm looking at you. :-) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12640 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
80581303 |
|
08-May-2005 |
Stefano Ceccherini <stefano.ceccherini@gmail.com> |
Cleanup of the ServerApp parts I looked at. Removed reduntant comments git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12594 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
04efb239 |
|
07-May-2005 |
Stefano Ceccherini <stefano.ceccherini@gmail.com> |
AppServer is no longer a friend of ServerApp. Small cleanups. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12586 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
78f09a05 |
|
06-May-2005 |
Stefano Ceccherini <stefano.ceccherini@gmail.com> |
app_server doesn't hang anymore when an application exits in an unclean way. Got rid of the kill_thread in ServerApp's destructor. Small refactoring. Added a TODO item. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12578 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
33bbe223 |
|
24-Mar-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Moved app_server files to app/. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11972 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8e2140fa5eb8a019a5134ce041499d14b7ced7a3 |
|
29-Apr-2012 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed a large client side memory leak for app_server memory. * The areas allocated for BBitmaps were never deleted, even though the app_server deleted its part when the memory got freed. * This resulted in a constant memory increase if the application in question would operate on many changing large bitmaps, like photos. * Since the bitmaps are reference counted, we don't actually know when to delete the areas, so that the app_server now notifies the client whenever that is possible. * This might fix #6824.
|
#
e4c638f650a4995728e20cc2eb5230cc6766c14f |
|
15-Jul-2010 |
Stefano Ceccherini <stefano.ceccherini@gmail.com> |
ServerApp::Quit() was hiding MessageLooper::Quit() due to the default paramenter, causing warnings when compiling with gcc4. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37526 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
87e7b978aacfb3de11892ccd71894acf675ab0b8 |
|
15-Feb-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed race conditions in the server's bitmap/picture handling: the objects are now removed from the maps as soon as the client deletes them. This also makes the "client reference" mechanism superfluous I introduced earlier. * ServerApp::SetCurrentCursor() must always call Desktop::SetCursor(), since it is also called whenever the current application changes. This fixes the cursor almost never changing. * Renamed ServerPicture::Usurp()/StepDown() to PushPicture(), and PopPicture(). * Also, they now acquire a reference to the picture in question (ie. the picture you get from PopPicture() also owns a reference you need to free). * ServerApp::CreatePicture() may fail, too. This case is now handled in the code that calls it. * Previously, the ServerWindow tried to process up to 70 messages in one go. That obviously caused bug #4709. Now, we have the additional requirement to not hold the desktop lock for longer than 25 ms. I haven't tested it with Kaleidoscope yet, though. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35472 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
85a7877f80790d60e084ba8d7e6f1ae5f9a6fee1 |
|
04-Nov-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* ServerApp's bitmap and picture handling was completely broken, as it ignored concurrency as well as reference counting, causing occasional crashes and memory corruption. * ServerPicture now subclasses Referenceable, and will notify its owner when it's going to be deleted. This might bring some regressions, although I couldn't spot anything wrong yet. * ServerBitmap will now also notify its owner when it's going to be deleted as well. * Switched from the former picture/bitmap lists to a std::map. This also solves the issue of not checking whether or not the bitmap/picture actually belongs to the ServerApp (before, all apps could access and delete all pictures/bitmaps) * Introduced a new fMapLocker that guards the new maps. * ServerWindow now uses GetBitmap()/GetPicture(), and gives up its reference after use. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33876 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3d2dfb860d8d09d2a4fc0625f548480866e3216a |
|
04-Nov-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* More cleanup, improved error return codes. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33872 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5e3f4c41a64d68b93b88e66bb00d6d4d5092c0e4 |
|
20-Aug-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* ServerApp now maintains a mask of workspaces with temporary mode settings, and reverts the modes if the app goes away (ie. if it crashes). * Desktop::SetScreenMode() also set the mode on the current screen, even if it should have been set on another screen. * Cleaned up the Desktop.h header. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32564 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6c36406800aa725b2b3dbe03d689c4c7ec0aef8c |
|
11-Aug-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Cleanup, no functional change. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32244 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fc235d5599698adb8eb0236e87d0d3d070c53278 |
|
20-Apr-2009 |
Stephan Aßmus <superstippi@gmx.de> |
Patch based in large on work done by Philippe Saint-Pierre: * When a BApplication is created, the interface kit globals for this team are initialized, including be_plain_font, be_bold_font and be_fixed_font. The plain font specifically is assumed the default font for all BViews. A BView is not required to every set the font, it will then just be the plain font, because the app_server already assigned it when the view is created. Here is where the problem starts. When the system fonts change, they change on the app_server and are picked up by new applications. Old applications will run with the old fonts, because the values remain the same and are stored in the already initialized be_*_font globals. So this was never a problem. What was a problem is that the app_server would use the current plain font for applications which were already initialized before the font was changed, so the values in their be_plain_font would not match the values in the server side font used when creating new views. * This patch already prepares for the situation in which client applications want to update their be_*_font globals. This needs to be a manual act of the client applications, otherwise we would break existing apps. Maybe we could automate this for BWindows with the B_AUTO_UPDATE_SIZE_LIMITS flag and any child views with B_SUPPORTS_LAYOUT. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30282 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0a0622a6de729a8a65c5114033dc5ad73db0fcfa |
|
10-Jul-2008 |
Stephan Aßmus <superstippi@gmx.de> |
patch by Andrej Spielmann (GSOC): Removed trailing whitespace. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26357 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f592fcef43a871aaa0e89bf306e14ec71500d7df |
|
01-Jul-2008 |
Stephan Aßmus <superstippi@gmx.de> |
stippi + bonefish: Fixed race conditions when a ServerApp or ServerWindow is created. The reply to the client that the object has been created successfully was sent in the thread creating it. Preempted at the wrong time (right after writing the message to the port) could lead to the object's thread using the link at the same time, which would screw up all subsequent communication via that link. This fixes the problem that mimeset would sometimes fail when building Haiku in Haiku (can't find the ticket). It probably also fixes #2331, and the bug that sometimes when a window is opened (Terminal, crash alert, shutdown window, etc.) it would come up with huge width/height and tiny other dimension (can't find the ticket). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26192 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f33610f874950e36978c238c83f1004592070481 |
|
21-Apr-2006 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed number 1 (or the only one? ;-)) crashing bug #306 in the app_server: Since ServerWindow removed itself from its ServerApp in _PrepareQuit(), it could happen quite easily that the ServerApp was deleted before the ServerWindow - and since deleting WindowLayer as part of that referenced the ServerApp, it crashed. Now, adding/removing is both done by the ServerWindow in Init() respectively the destructor. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17198 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
38a6ea1d98b5b9d9d88f369f26c24f35262d9369 |
|
18-Mar-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* 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
|
#
9a44fdc97c4c91b6be039ac5125a618c8fd268cc |
|
18-Mar-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* 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
|
#
87b1f40c0f241325ebc66f8734e3eb889ac386b8 |
|
09-Mar-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* Fixed misbehaviour of AS_SET_CURSOR: it will no longer set the mouse cursor when it's not over a view of the application. * The application cursor is no longer applied when the mouse cursor is over the border (or tab) of a window. * Gave up and imitate BeOS behaviour: the mouse cursor now always get the shape the view below dictates, ie. it will no longer fall back to the default cursor outside the focus window. * The window is now set to the default in case there is no window under it at all (ie. if Tracker isn't running). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16685 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9ce4e5b4ed4f524b077a35f13f9f17328b5fabff |
|
09-Mar-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* The ServerApp now has the concept of a current cursor: this is either the cursor of the view currently under the mouse, or the application cursor, if the view doesn't have its own cursor (ie. it will no longer set the wrong cursor in certain situations). * AS_DELETE_CURSOR has no longer an influence on the application cursor, as this grabs a ref for its own use - this fixes bug #275. * AS_SET_CURSOR no longer sets the cursor when the application is not active. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16678 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ff3abf4d6f7d48ce29fc2ff3e2937cdf89a65b08 |
|
02-Feb-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* Started a naive implementation of BView::SetViewCursor() server-side - doesn't work though, as HWInterface can only draw B_RGB32 cursors... * More build fixes for libbe_test target - it defines __HAIKU__ as well, now git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16211 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
df19082398bcec393dba5c3df50e47f1dcdd5a9d |
|
12-Jan-2006 |
Stephan Aßmus <superstippi@gmx.de> |
* cleaned up ServerApp header a bit * added support for nested cursor showing/hiding git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15926 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9c0c899e7d5d797fa8cceafe4016ad6c249425d6 |
|
04-Jan-2006 |
Stefano Ceccherini <stefano.ceccherini@gmail.com> |
Added a copy constructor to ServerPicture. ServerPicture's constructors are private now, and can be called only from ServerApp (friend). Changed BList to a stl::stack which is better suited as a stack... Changed ServerApp::CreatePicture() to accept a picture to clone, instead of passing back a token which was never used anyway. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15840 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
843bc3cd0dd6421b0d7f2b14df7faacfc5a219f7 |
|
03-Jan-2006 |
Axel Dörfler <axeld@pinc-software.de> |
* Introduced an initial application workspace - should be retrieved differently, though (ideally when launched). * B_MODAL_APP_WINDOW_FEEL windows are now visible on the initial app workspace in case it has no other window visible. This fixes the missing BAlerts in the debug_server or just the "alert" command. Thanks to Stephan for pointing this out. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15811 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
20c2f67293be1d3fa30fa690e4ca819ab05da42c |
|
03-Jan-2006 |
Stefano Ceccherini <stefano.ceccherini@gmail.com> |
Added Create/DeletePicture to ServerApp git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15802 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
34227d2c345f87c9eeee09004f31e4713278a0c9 |
|
09-Dec-2005 |
Axel Dörfler <axeld@pinc-software.de> |
A couple of changes related to modal and floating windows: * Desktop::SetWindowFeel() is now working, but doesn't respect the window position yet (ie. floating windows would have to be moved to front). * WindowLayer::Workspaces() now always reflects exactly the lists it's in (at least after Desktop::AddWindow() has been called). WindowList::AddWindow() and RemoveWindow() now update this flag to be correct at all times. * Fixed Desktop::_ChangeWindowWorkspaces() to not set the current workspace for windows that are not on the current workspace, and vice versa. It also would hide windows that were already hidden, and tried to show windows that actually were hidden (did no other harm than triggering a rebuild of the global clipping). * Floating windows now work as expected. * Desktop::SetFocusWindow() won't give a window focus that has a modal. * Renamed OnWorkspace() to InWorkspace(). * ServerApp::InWorkspace() now works correctly, added ServerApp::Workspaces() as well. * WindowLayer::SubsetWorkspaces() returns the workspaces mask this modal or floating window should be in. * New window flag B_SAME_POSITION_IN_ALL_WORKSPACES should work as well. * Floating and modal windows now have always set this flag. * Added a WindowList::HasWindow() method. * Desktop windows (windows with the desktop feel) can now have focus again (I accidently broke that before). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15434 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e83820ed5720395d39a1ff809991b4fd76326548 |
|
07-Dec-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Merged app_server_new_clipping branch changes r15290 to 15418 back into trunk. Also fixed Jamfile for the test environment. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15419 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4c0269b979e64569c25a44567bb26a33f4877ac7 |
|
02-Dec-2005 |
Axel Dörfler <axeld@pinc-software.de> |
* WindowLayer::OnWorkspace() should now work correctly for all window feels. * introduced ServerApp::OnWorkspace(). * moved AS_CREATE_[OFFSCREEN_]WINDOW into its own method, ServerApp::_CreateWindow(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15283 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
27adb969620d656c8d92dfa608cd85c35f4d37e3 |
|
28-Nov-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Massive RootLayer & Workspace tearing: * workspace switch and subset windows functionality temporarily removed (away with that mess!). * no more RevealWMState() - we now have methods like ActivateWindow() and SendWindowBehind() that do all the work - just a little cleaner and with less overhead. * Workspace is now a pretty passive class - it only stores configurations of the windows and screens. * added an evil work-around for a locking problem (in RootLayer::_SetFocus()). * I'll plan to move pretty much all of the remaining root layer functionality to Desktop - so that the all regions lock is only held in case clipping regions are affected. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15207 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
bde8b9c6e0e93228febce69548748d26d62cb254 |
|
24-Nov-2005 |
Axel Dörfler <axeld@pinc-software.de> |
* Layers are now put into an application wide token space that mirrors the client's token space. * finding layers by token is now O(1) instead of O(n) (as they are looked up in the token space). * removed Layer::FindView() as it's no longer needed (or should be used). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15113 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4ceb1e519c0447147b1d8b54a324bb7fedd3a606 |
|
20-Nov-2005 |
Axel Dörfler <axeld@pinc-software.de> |
* 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
|
#
f7598223274c44c551f1ed581030e6ed5268fe68 |
|
18-Nov-2005 |
Axel Dörfler <axeld@pinc-software.de> |
* the new input event dispatcher is now actually used, although it doesn't distribute any messages to the clients yet. * removed the working thread from RootLayer - for now, its event handlers are still called using input filters in the new event dispatcher, though (to get things started). * ServerApp is now using a BMessenger to identify its client, and no longer stores the port/token separately. * the input_server handshake is a bit simpler now, as it can now just reply to the app_server message, removed unused code from ServerProtocol.h * calmed down the MultiLocker (it always printed thread statistics on startup, because it's compiled in debug mode). * removed the cursor thread stuff from AppServer.cpp * the new event dispatcher now uses a cursor thread when supported (only in native mode, not in the test environment), although it improves cursor movement under Qemu, the effect is not as good as expected - this might need some more investigations (might just be a thread priority problem). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15012 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d9525baaf5225ccac51a32b0fb2ba5d8c0b367cf |
|
13-Nov-2005 |
Axel Dörfler <axeld@pinc-software.de> |
* Forgot to update Screen.h with the last commit... * Introduced and implemented AS_GET_SCREEN_ID_FROM_WINDOW - it only returns B_MAIN_SCREEN_ID, though. * renamed ServerWindow::fHandlerToken to fClientToken. * The BScreen(BWindow *) constructor now really asks the server for the screen ID. * ServerApp::fWindowList is now a BObjectList. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14910 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
58468dfed0b7013c600aecb0a714194bc98eeecc |
|
04-Nov-2005 |
Stephan Aßmus <superstippi@gmx.de> |
first step of geting rid of abstract DisplayDriver base class for less development overhead, DisplayDriverPainter is renamed to DrawingEngine git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14694 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
959a5a68bcb01c877ea6fe66211e60d54bab1ecd |
|
31-Oct-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Removed global gDesktop variable - there is now an sDesktop variable in AppServer.cpp, but that will go away, too. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14590 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
770c05d6cc602b2e545e2ccae5a17c576881dc9c |
|
25-Jul-2005 |
Axel Dörfler <axeld@pinc-software.de> |
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
|
#
89ab121e66e7cd6136e4e561805b85acea3d046a |
|
23-Jul-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Factored a MessageLooper class out of ServerWindow and ServerApp. Could still be improved a bit (Quit() and _MessageLooper() are empty right now). Removed ServerApp::PingTarget(). Hopefully cleared some confusion about ServerApp::fClientLooperPort and fClientToken (previously fHandlerToken), even if it's currently unused. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13807 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3870c9f18f109903c134d6d36271ec3e83e7a185 |
|
01-Jul-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Improved quit mechanism (for the last time): if an application had open windows that wouldn't quit on demand, the app_server would have gotten the kShutdownServer message anyway already (as the last app was quit). Since that one removed things like gDesktop/gBitmapManager, it liked crashing. Now, there is a semaphore that will be send to each app on quit. Only when this semaphore can be acquired, the shutdown message will be sent. Removed unused semaphores (decorator, active app). Replaced fAppListLock with a BLocker (just calling acquire_sem() without error checking is very unsafe in userland, and should never be done). BTW the bug was triggered by broken menu code that only sometimes really quit the window; it leaves a whole lot of zombies around - Stefano, any quick idea? :-) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13384 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0ec4af22334b9ded101a81c7c25886ecc84a6129 |
|
23-Jun-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Improved AreaPool to have an initial size as well as well as a name that is used for new area. MemPool::AddToPool() now gracefully deals with NULL pointers (or a size of 0). BitmapManager was deleting the area it transferred to AreaPool before - it no longer needs an extra area, though. Minor other cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13260 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a38e46a046cbb27fef680a1c9f93b000663d70c9 |
|
23-Jun-2005 |
Axel Dörfler <axeld@pinc-software.de> |
ServerApp now maintains a list of all windows, ServerWindow's AS_DELETE_WINDOW will update it automatically. Renamed ServerWindow::fName to fTitle, made it a pointer - it will now just adopt the title pointer that came from AS_CREATE_WINDOW. Just another cleanup round: renamed Layer::GetName() to Name(), no more layer->fName->String() accesses. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13239 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fcb006dcf5e3396d905e09d127c085f7efb9b017 |
|
23-Jun-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Rewrote how the app_server and ServerApp's quit. As a side effect, the server can now quit instantly. AppServer must no longer call ServerApp's destructor once it's running - it now has to call Quit() in this case. The ServerApp is now destructed in its own thread. Some cleanup (like renaming ServerApp::MonitorThreadID() to Thread()). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13238 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1b5aeb312ea3a59d30160a6dd2be02899326888c |
|
17-Jun-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Renamed class FMWList to SubWindowList. Cleaned up SubWindowList a bit. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13203 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
dd10337fd005a67a4947714fdeecf2121485b91d |
|
14-Jun-2005 |
Axel Dörfler <axeld@pinc-software.de> |
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
|
#
bd28b3c7469be94f8c4dbecc3d2683d7960da4dd |
|
07-Jun-2005 |
Axel Dörfler <axeld@pinc-software.de> |
BAppServerLink is now using BApplication::fServerTo/From for its messaging. Added LinkMsgReader::NeedsReply() method. Completely redone ServerApp messaging: no more "replyport" from BAppServerLink; instead, the registered client reply port is used. Fixed some more weak messaging stuff. ServerApp now recognizes if an unknown message needs a reply, and sends it - for example, the "Screen" preferences app no longer hangs, but crashes on start :) Made LinkMsgReader::Read() virtual again, since it's needed by RAMLinkMsgReader.cpp. Renamed BPortLink::GetNextReply() to GetNextMessage(). Some more cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13004 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7f2831b56b4add56f2cffdb506575f10b01349f3 |
|
28-May-2005 |
Stefano Ceccherini <stefano.ceccherini@gmail.com> |
Removed a couple of friendships, commented/removed unused stuff git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12863 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
cb80e15b3c577ab5e800b07024556f88b823f0f8 |
|
14-May-2005 |
Stefano Ceccherini <stefano.ceccherini@gmail.com> |
ServerWindow is no more a ServerApp's friend. Some cleanups. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12663 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b3d3da708d775e46954ab634e02e25f8e841b17d |
|
12-May-2005 |
Stephan Aßmus <superstippi@gmx.de> |
more cleanup, fixed a bug in AS_GET_ESCAPEMENTS_AS_FLOATS that caused a lockup. DarkWyrm - I'm looking at you. :-) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12640 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
80581303925e34862e621be341f94232f3ec855a |
|
08-May-2005 |
Stefano Ceccherini <stefano.ceccherini@gmail.com> |
Cleanup of the ServerApp parts I looked at. Removed reduntant comments git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12594 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
04efb239b7b67db3b7bff60c80bfece9bd91dd72 |
|
07-May-2005 |
Stefano Ceccherini <stefano.ceccherini@gmail.com> |
AppServer is no longer a friend of ServerApp. Small cleanups. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12586 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
78f09a0553b88f6f3923d04ddb7126440f42d530 |
|
06-May-2005 |
Stefano Ceccherini <stefano.ceccherini@gmail.com> |
app_server doesn't hang anymore when an application exits in an unclean way. Got rid of the kill_thread in ServerApp's destructor. Small refactoring. Added a TODO item. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12578 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
33bbe223914093509b4bc56bea8a90c81af80a37 |
|
24-Mar-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Moved app_server files to app/. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11972 a95241bf-73f2-0310-859d-f6bbb57e9c96
|