Commit Graph

92 Commits

Author SHA1 Message Date
Stephan Aßmus
6ed894182f renamed DisplayDriverPainter.* to DrawingEngine.*
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14695 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-04 15:54:16 +00:00
Stephan Aßmus
58468dfed0 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
2005-11-04 15:23:54 +00:00
Axel Dörfler
05bd1efe5b * the FontManager is now a looper (but doesn't do anything useful yet).
* moved the system default font functionality into the DesktopSettings class.
* ServerFont::SetStyle() is now a public method.
* Improved font fallback routines: they will never end up without a font if
  there is at least one font installed.
* fixed some minor bugs in the DecorManager.
* Decorator now get a DesktopSettings object passed - dunno if that's a good
  idea (since we'll have to open the DesktopSettings header), but it works
  for now (and something like this is probably needed anyway).
* a clean ServerFont is now set to the system default font - and not to the
  (user chosen) desktop default font anymore (since the font manager doesn't
  know about that one).
* Improved font directory scanning in the font manager a bit, it's now using
  find_directory() instead of hard-coded paths.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14666 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-03 17:03:36 +00:00
Axel Dörfler
36deda69ba Got rid of sDesktop.
Moved AS_ACTIVATE_APP over to Desktop. _CursorThread() is currently dysfunctional (but not enabled anyway).
Minor cleanup (Desktop::WindowList() is now a BObjectList).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14599 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-10-31 19:35:46 +00:00
Michael Lotz
3ddebe7ec2 Moved the CursorManager over to the Desktop too.
Maybe the CursorManager should be used to set the cursors directly instead of using
fDesktop->GetCursorManager.FindCursor() and then fDesktop->GetHWInterface()->SetCursor()
in ServerApp.cpp.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14033 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-08-21 10:28:40 +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
5f2edc0ffc The Desktop class now inherits from MessageLooper as well, the AppServer
class runs it, too.
No real message processing is done yet, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13816 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-24 17:14:17 +00:00
Michael Lotz
2213782534 All cursor related changes:
* Moved setting the default cursor from ServerScreen to Desktop
* Getting the default cursor is now done using the CursorManager
* Removed outdated setcursor from SysCursor.cpp (we have a new implementation by now)
* Renamed SysCursor.cpp to CursorSet.cpp as that's what it is
* Moved  headers/private/app/SysCursor.h to headers/private/servers/app/CursorSet.h
* Removed some unneeded header includes along the way

There remains {set|get}_syscursor now in CursorSet.cpp. Serverside for these are not implemented
and they are obvious hacks. Do we need to keep them?
Also this commit _would_ break Appearance, but 1) all the related code is currently commented out
with the comment "cursor set management belongs in another app" and 2) it is already broken
because of ColorSet.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13726 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-18 00:22:08 +00:00
Axel Dörfler
ef8810f2ad Extracted the settings stuff from the Desktop class. If you now need to access
the desktop's settings, you have to do something like this:
	DesktopSettings settings(desktop);
	settings.SetMouseMode(mode);
The advantage of this is that this object is fully locked, and cannot lead to
corrupted settings anymore. Also, the settings will stay the same until you
delete the object again.
Updated all accesses to use this new API.
Removed no longer used FFM messages.
Implemented AS_{GET|SET}_MENU_INFO for future use.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13719 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-17 16:25:48 +00:00
Axel Dörfler
fd5bec1e48 First baby step to a restructured app_server:
- introduced new ScreenManager and VirtualScreen classes
- removed screen handling from RootLayer
- removed multiple screen/root layer stuff from Desktop, it's
  now using a VirtualScreen object instead


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13686 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-15 12:45:23 +00:00
Axel Dörfler
0bb8508592 Stippi's commit accidently changed the initial screen size.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13457 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-05 18:38:12 +00:00
Axel Dörfler
6a0a0a80da Implemented AS_GET_WINDOW_LIST and AS_GET_WINDOW_INFO.
Renamed Desktop::FindWinBorderByServerWindowTokenAndTeamID() to FindWinBorderByClientToken().
Every ServerWindow now gets a server token.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13455 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-05 18:14:24 +00:00
Stephan Aßmus
359c905c57 offscreen bitmaps work, tested on Haiku as well, supports all colorspaces that BBitmap::ImportBits() supports. It uses a fallback for non-B_RGB(A)32 bitmaps. Added support for B_SUB_PIXEL_PRECISION view flags, though it is a bit hacky, since I had to add it to LayerData, even though it is not a true part of stack data. Added Layer::SetFlags() to enforce code path and update fLayerData. Cleaned up DisplayDriverPainter and DisplayDriver API (changed some const BRect& rect to simply BRect rect in order to be able to reuse it in the code), moved Painter.h, the test environment only draws the changed part of the frame buffer again - this causes a lot less CPU overhead, Painter special cases stroke width of 1.0 to use square caps, which is similar to R5 implementation and removes a lot of problems with non-straight line drawing, ServerWindow uses the DisplayDriver from it's WinBorder instead of the one from the Desktop (needed for offscreen windows, which have their own DisplayDriverPainter), it also checks for GetRootLayer() == NULL, because offscreen layers are not attached to a RootLayer, there was a fix for scrolling which worked at least in the test environment, it is now defunced, because Adi moved _CopyBits to Layer... I need to reenable it later, LayerData has no more fEscapementDelta, also fixed fFontAliasing (which was thought to overriding the font flags, and now works as such again), Desktop initialises the menu_info and scroll_bar_info stuff, which makes ScrollBars work actually... hope I didn't forget something.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13448 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-05 16:17:16 +00:00
Adi Oanca
94fa2bd256 inlined a few methods in header file, otherwise app_server would not build
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13271 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-25 08:45:00 +00:00
Stephan Aßmus
3dcb3b079a Added some root layer locking in ServerWindow.cpp when accessing the layer tree. Moved HWInterface management out of DisplayDriverPainter and into Desktop. Removed all the directly hardware related functions from DisplayDriver API. They just called the same HWInterface functions. Now DisplayDriver is much cleaner and ready for being attached to a yet to be written BitmapHWInterface. Clean up of the display mode stuff in Screen and the View-/AccelerantHWInterface. Frequency is now regarded on Haiku. AccelerantHWInterface::GetModeList now works before SetMode has been called. Added MultiLocker from the sample code. HWInterface uses it now in preparation to being used from multiple instances of DisplayDriver.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13252 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-23 23:46:17 +00:00
Axel Dörfler
a38e46a046 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
2005-06-23 18:48:10 +00:00
Axel Dörfler
fcb006dcf5 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
2005-06-23 17:40:35 +00:00
Axel Dörfler
1b5aeb312e 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
2005-06-17 16:34:22 +00:00
Stephan Aßmus
54cc0f1b56 reverted some unintentional changes
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13179 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-16 13:07:36 +00:00
Stephan Aßmus
99b9d5ac8a a new state begins life as a copy from the previous state, fixed Scale(). Note that BoundsOrigin() (and therefor Scale()) is called _a lot_ so we should cache the value! I started to work on this, but our lack of encapsulation strikes again... Layer::fLayerData is used directly all over the place.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13172 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-16 12:32:42 +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
Axel Dörfler
0aa69a9cd4 Fixed the crashing bug when quitting the app_server.
The display driver is now owned by the Screen object.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13002 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-08 01:40:22 +00:00
Axel Dörfler
e5b4782b4e Made some necessary enhancements to class Screen; the app_server also
has to care about refresh rates. Also changed Screen::GetMode() (formerly
Resolution()) to return all interesting values, so that hopefully no one
will call it anymore like RootLayer::SetScreens() did.
Greatly improved the horrible RootLayer::SetScreens().
The app_server is now able to deal with failing HWInterface::SetMode() calls;
in this case, it will fall back to the hardware's current mode. This now
also works correctly in combination with the vesa driver, so that you don't
have to compile the app_server with the same resolution you boot in anymore.
SetMode() now always returns if it succeeded or not.
Renamed RootLayer::fScreenXYResolution to fScreenWidth/Height respectively.
Removed the useless DisplayDriver::DisplayMode() method.
Added B_GET_DISPLAY_MODE to the required accelerant hooks.
Some minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12831 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-26 09:21:51 +00:00
Stephan Aßmus
55d6f1b792 Many efficiency improvements to text rendering. Moved stuff from Painter into AGGTextRenderer which didn't belong in Painter. AGGTextRenderer now has an embedded transformation, which expresses the font rotation and (in future) shear settings. Removed direct support for BBitmaps from Painter (supposed to draw ServerBitmaps). Tested drawing of bitmaps other than B_RGB32. (only B_CMAP8 and B_GRAY8 so far, but they work). Right now, these colorspaces are supported by on the fly conversion. So every colorspace supported by BBitmap::ImportBits() should work, which are a lot more than the R5 app_server can display.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12815 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-25 18:20:45 +00:00
Axel Dörfler
7b58474a09 Beautified some odd code (like "a ? a : NULL" to "a").
Applied our coding style guide.
No functional change.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12464 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-04-25 14:14:09 +00:00
Adi Oanca
d53639ce2e Implemented support for BWindow::SetFeel()
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12456 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-04-21 18:57:34 +00:00
Stephan Aßmus
3dea4bb659 cleanup the defines, move old DisplayDriver implementations out because they are currently unused and won't build
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12438 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-04-18 18:48:19 +00:00
Adi Oanca
d7c2c05061 Big cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12424 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-04-16 13:30:49 +00:00
Stephan Aßmus
b176b6b493 The DisplayDriverPainter is now also the default on Haiku. The DisplayDriverImpl stuff is left out for now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12340 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-04-12 08:22:16 +00:00
Stephan Aßmus
8940f93c1d AccelerantHWInterface now uses a MallocBuffer as RenderingBuffer for the back buffer instead of a BitmapBuffer, which under Haiku does not work.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12217 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-04-01 10:36:23 +00:00
Adi Oanca
f694c0e30e This may be a quick and dirty fix to the problems we've been having with the update code. However this requires something from DisplayDriver. I'll write about this in a moment on app_server list.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12165 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-30 20:06:50 +00:00
Michael Lotz
507c1efe07 I didn't want to mess with the screen resolution, sorry.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12147 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-29 23:04:26 +00:00
Michael Lotz
73fc67136c Choose headers according to DISPLAYDRIVER, too.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12146 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-29 23:00:58 +00:00
Stephan Aßmus
9c59f2f207 fixed app_server build, though I don't exactly know why that fixes it
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12130 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-29 18:32:43 +00:00
Stephan Aßmus
d3db964ed0 code refactoring, moved common stuff into the base class
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12129 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-29 17:36:38 +00:00
Axel Dörfler
b2b5acff33 Made DISPLAYDRIVER a true compile time option.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12119 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-29 15:39:08 +00:00
Stephan Aßmus
e0bb2421ea whoa - how did this even work?
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12094 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-28 14:29:18 +00:00
Stephan Aßmus
5cdd702901 use a DisplayDriverPainter version if config says so
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12055 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-26 22:13:23 +00:00
Stephan Aßmus
a850bd1d8f added Painter to the app_server build and fixed the Jamfile to include the drawing subfolder for header search path
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12010 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-25 22:44:18 +00:00
Michael Lotz
96b832ac57 No need to endless loop here.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12008 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-25 21:39:53 +00:00
Michael Lotz
0653d45f5b Adapt to new location of display drivers
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12000 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-25 19:46:28 +00:00
Axel Dörfler
33bbe22391 Moved app_server files to app/.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11972 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-24 14:45:52 +00:00