History log of /haiku/src/servers/app/Jamfile
Revision Date Author Comments
# 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>


# 009df98c 29-Jun-2020 Kacper Kasper <kacperkasper@gmail.com>

app_server: Fix gcc2 build


# d4dbce29 07-Mar-2020 Augustin Cavalier <waddlesplash@gmail.com>

app_server: Drop custom HashTable and use HashMap instead.

Change-Id: I7d5aae6a7fd2b4f47704a931a23eee09a4eedcac
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2323
Reviewed-by: John Scipione <jscipione@gmail.com>


# cec4fe2f 21-Nov-2017 Michael Lotz <mmlr@mlotz.ch>

app_server: Remove stubbed HTML5 HWInterface.

It was mostly a renamed copy of the remote HWInterface with
beginnings of a webserver and client. It never became actually
functional.


# 1a472d01 22-Sep-2017 Alexander von Gluck IV <kallisti5@unixzen.com>

servers/app: html5/remote drawing 64-bit fixes

* Still doesn't seem to work anymore.
* Documentation: TARGET_SCREEN="html5:127.0.0.1:80" DeskCalc


# 9b6b158b 10-Mar-2016 dsizzle <dcieslak@yahoo.com>

Implementation of BFont::Blocks

BFont::Blocks is now implemented in ServerFont, via a call through the
app_server. It uses fontconfig to iterate through a charset of a font
and stores the defined blocks in a bitmap.

A new API was added, BFont::IncludesBlock, that will allow for arbitrary
testing of a given Unicode block. Since nothing is cached, searching
through an entire charset for a series of Unicode blocks can be quite
slow. In a given block there may be only 1 or 2 characters actually
defined so every character within a block needs to be checked until one
is found, which in a degenerate case will mean the entire block is
checked.

Signed-off-by: Axel Dörfler <axeld@pinc-software.de>


# 8028ede7 15-Jan-2016 Rene Gollent <rene@gollent.com>

Build: Add architecture rule for libshared.a.

- As suggested by Ingo, add libshared.a to the architecture name map.
This allows it to be linked by its short name like other frequently
used libraries.
- Adjust all Jamfiles referencing the lib accordingly.


# 7f9368ca 09-Dec-2015 looncraz <looncraz@looncraz.net>

Set*UIColor, etc.

The inseparable changes necessary to support live color updating across the
system in a sane, safe, and performant manner.

BView gains:

HasSystemColors()
HasDefaultColors()
AdoptSystemColors()
AdoptParentColors()
AdoptViewColor(BView*)
SetViewUIColor(color_which, float tint)
SetHighUIColor(...
SetLowUIColor(...
ViewUIColor(float* tint)
HighUIColor(...
LowUIColor(...
DelayedInvalidate()

BWindow gains a simple helper method:
IsOffscreenWindow()

BMessage gains:

AddColor()
FindColor()
GetColor()
HasColor() * allegedly this API is deprecated, but I implemented it anyway
ReplaceColor()
SetColor()

Previous private ColorTools methods are made public and moved into GraphicsDefs:

mix_color, blend_color, disable_color

These are fully compatible with BeOS dan0 R5.1 methods and are just code cleanup
of BeOS example code under the OpenTracker license.

In addition, four new colors are created:
B_LINK_TEXT_COLOR
B_LINK_HOVER_COLOR
B_LINK_ACTIVE_COLOR
B_LINK_VISITED_COLOR

These changes are documented in their proper user documentation files.

In addition, due to a history rewrite, B_FOLLOW_LEFT_TOP has been defined and
used in lieu of B_FOLLOW_TOP | B_FOLLOW_LEFT and is included in this commit.

On the app_server side, the following has changed:

Add DelayedMessage - a system by which messages can be sent at a scheduled time,
and can also be merged according to set rules. A single thread is used to service the
message queue and multiple recipients can be set for each message.
Desktop gains the ability to add message ports to a DelayedMessage so that
said messages can target either all applications or all windows, as needed.

Desktop maintains a BMessage which is used to queue up all pending color changes
and the delayed messaging system is used to enact these changes after a short
period of time has passed. This prevents abuse and allows the system to merge
repeated set_ui_color events into one event for client applications, improving
performance drastically.

In addition, B_COLORS_UPDATED is sent to the BApplication, which forwards the message
to each BWindow. This is done to improve performance over having the app_server
independently informing each window.

Decorator changes are live now, which required some reworking.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>


# d5449f12 25-Nov-2015 Jessica Hamilton <jessica.l.hamilton@gmail.com>

app_server: add another missing dependency on freetype


# ff535a92 18-Nov-2015 Julian Harnath <julian.harnath@rwth-aachen.de>

app_server: declare jam dependecy for Layers to freetype


# 551438b9 25-Jul-2015 Julian Harnath <julian.harnath@rwth-aachen.de>

app_server: add new BView layers API

* Add new methods
BView::BeginLayer(uint8 opacity)
BView::EndLayer()

* All drawing between begin and end of a layer is redirected onto an
intermediate bitmap. When ending the layer, this bitmap is
composited onto the view with the opacity given when the layer was
started.

* Layers can be nested arbitrarily and will be blended onto each
other in order. There can also be any arbitrary interleaving of
layer begin/end and drawing operations.

* Internally, drawing commands are redirected into a BPicture between
BeginLayer and EndLayer (but client code need not know or care
about this). Client code can also start/end other BPictures while
inside a layer.

* Uses the PictureBoundingBoxPlayer to determine the size of the
layer bitmap before allocating and drawing into it, so it does not
allocate more memory than necessary and -- more importantly -- it
will not alpha-composite more pixels than necessary.

* Drawing mode is always set to B_OP_ALPHA, blend mode to
(B_PIXEL_ALPHA, B_ALPHA_COMPOSITE) while inside layers. This is
necessary for (a) correct compositing output and (b) for
redirection of drawing into the intermediate bitmap, which uses the
renderer_region offset (in B_OP_COPY, the Painter does not use the
AGG renderer methods, it directly accesses the pixel data. This
would access out-of-bounds without the offset, so B_OP_COPY cannot
be allowed.)
To ensure these modes aren't changed, BView::SetDrawingMode()
and BView::SetBlendingMode() are ignored while inside a layer.

* The main motivation behind this new API is WebKit, which internally
expects such a layers functionality to be present. A performant and
reusable implementation of this functionality can only be done
server-side in app_server.


# 1b4dba92 08-Jul-2015 Julian Harnath <julian.harnath@rwth-aachen.de>

app_server: add picture player for determining bounding box

* Add PictureBoundingBoxPlayer, a new player for BPictures. Instead
of drawing the picture, it determines an approximate bounding box
of its contained drawing operations.

* To increase performance, the resulting bounding box is an
approximation: it guarantees to always enclose all pixels of the
picture, however not necessarily tightly.

* PictureBoundingBoxPlayer::Play() gets a DrawState which is the
initial state used when playing the picture. The player does not
modify this state (it uses a copy internally), so the method is
idempotent.


# ab1bd2fd 04-Jan-2015 Julian Harnath <julian.harnath@rwth-aachen.de>

app_server: rename DrawingContext to Canvas

* Better reflects the purpose of the class: an interface for things
in which we can draw (e.g. a View)

* Accordingly rename OffscreenContext to OffscreenCanvas


# 220d0402 31-Jul-2014 Oliver Tappe <zooey@hirschkaefer.de>

Use libstdc++, libsupc++ and libgcc from gcc_syslibs.

* Instead of faking libstdc++.so from libstdc++.a, use libstdc++.so
from the gcc_syslibs build feature for everything except x86_gcc2.
* Use libgcc_s.so from the gcc_syslibs build feature for everything but
x86_gcc2 (which still carries libgcc as part of libroot.so).
* Drop filtering of libgcc objects for libroot, as that is no longer
necessary since we're only using libgcc-as-single-object for libroot
with x86_gcc2, where the filtered object file doesn't exist. Should
the objects that used to be filtered cause any problems as part of
libgcc_s.so, we can always filter them as part of the gcc build.
* Use libsupc++.so from the gcc_syslibs build feature for everything but
x86_gcc2.
* Adjust all Jamfiles accordingly.
* Deactivate building of faked libstdc++.so for non-x86-gcc2. For
x86_gcc2, we still build libstdc++.so from the sources in the Haiku
source tree as part of the Haiku build .
* Put gcc_syslibs package onto the image, when needed.


# 106fe8b3 30-Jul-2013 John Scipione <jscipione@gmail.com>

Create a TabDecorator class

Which contains methods common to Default Decorator and BeDecorator, aka
"tabbed" decorators.

Derive DefaultDecorator from a new TabDecorator base class.


# 8e8869a9 20-Feb-2014 Stephan Aßmus <superstippi@gmx.de>

Fix more Freetype build feature dependencies in app_server


# d02b8b81 08-Feb-2014 Stephan Aßmus <superstippi@gmx.de>

app_server: Cleanup of some file locations


# 9392f92a 28-Jan-2014 Jérôme Duval <jerome.duval@gmail.com>

app_server: adjust Freetype dependency.

* added AlphaMask.cpp.


# 35d6e0fe 28-Jan-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

Add new classes required for picture clipping

* agg_clipped_alpha_mask is a modified version of agg alpha mask class,
allowing us to offset the mask bitmap to follow the view position, and
also allows "inverse" clipping, where everything outside the bitmap is
considered inside the clipping region.
* AlphaMask is a container class keeping the ServerPicture, it's bitmap
rendering, and other relevant information. It will be used to save and
restore the clipping picture as part of the view state.
* Because these classes introduce more coupling within app_server, it's
not possible anymore to split out tst_app_server from
libtestappserver.so. Instead, move everything to libtestappserver.so,
except the things that actually need to not be there (to avoid
interferences with the host API). As a result, the previously introduced
stub cpp file to work around this problem isn't needed anymore.

The design for all this (and the previous commit) is Stippi's work.
Thanks for the advice and implementation hints!


# f08d5477 28-Jan-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

Add Alpha Masking support in ClipToPicture

Use AGG to implement ClipToPicture in a faster and better way.
There are things missing in this initial implementation:
* No support for PushState/PopState saving and restoring the picture.
* No support for nested clipping through PushState
* The clipping doesn't happen where you expect it when using SetScale()
* There are artifacts when scrolling and resizing clipped views
* The implementation uses more memory than it needs, as the clipping
bitmap is stored as RGBA32, yet only the alpha channel is used
* The clipping bitmap is rendered more times than it needs to. We need
some caching here.


# 06254ef8 26-Jan-2014 Jérôme Duval <jerome.duval@gmail.com>

app_server: adjust Freetype dependency.

* added DrawingContext.cpp and ServerCursor.cpp


# c2dcc4d5 22-Jan-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

Get test_app_server to run again

* We should have the buildbots compile this to make sure it still works
* I had to split two ServerApp methods to a searate C++ file to link
them in libtestappserver.so
* some fixes related to the switch to PM and better hybrid support in
jam rules; moving of MIME stuff from registrar to storage kit, merge of
Locale Kit and ICU in libbe, and a few more.
* Modified the test_app_server hwinterface and rdef file so it is not a
background app, and the window isn't floating. Otherwise, hiding the
window would leave you without a way to recover it.


# e1a30115 21-Jan-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

Introduce DrawingContext View superclass

In order to properly implement ClipToPicture in BView, we need to render
a Picture to a Bitmap. This is currently done client-side, but the
overhead for this (creating a BBitmap that accepts views, including a
window thread, adding a view to it, and rendering the picture to the
view, then sending the result to app_server) isn't acceptable. Moreover,
the bitmap drawn this way is clipped to the view size, and the clipping
won't work when the view is scaled or translated. So, we need to move
the Bitmap creation server-side.

However, app_server currently have no means of doing this. Factor out the
relevant parts of View: a DrawingState stack with PushState/PopState, a
DrawingEngine, and a ConvertToScreen transformation. Another implementation
of the DrawingContext will allow us to also draw a picture directly using
a Painter and low-level pixel buffer, in a format suitable for use as an
AGG alpha mask.


# 29f8805f 13-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Update freetype package

Also use the new build feature rules


# dcaec19c 08-Feb-2013 Alexander von Gluck IV <kallisti5@unixzen.com>

AppServer: Organize "HWInterface" classes

* Organize interface classes into directories
* Long term this will assist in the multi-head
interface / accelerant changes.
* local draws to the local hw accelerant
* remote draws to a remote connection (???)
* html5 draws to... an html5 canvas?


# 3fed1a15 05-Aug-2012 Alex Smith <alex@alex-smith.me.uk>

Get app_server working on x86_64.

With this commit, app_server now compiles and runs at boot! Nothing
particularly interesting happens, just the blue background and a mouse
pointer. Remote backends are broken and not compiled in, see #8834.
Note that it won't be possible to build this quite yet, need to get
the FreeType package uploaded.


# 36daae57 11-Jul-2012 Jérôme Duval <jerome.duval@gmail.com>

app_server: fixed FreeType headers dependency #8716

* added ServerFont.cpp


# 74880af1 11-Jul-2012 Jérôme Duval <jerome.duval@gmail.com>

app_server: fixed FreeType headers dependency #8716

* added source files which use ServerFont.h and ServerApp.h


# 8d33dc29 01-Apr-2012 François Revol <revol@free.fr>

An html5 <canvas> based drawing engine

This implements an html5 rendering engine.
Inspired by the Broadway GDK backend for Gnome.
Work in progress. For now it just connects and dumps debug output.


# 362efe0c 17-Mar-2012 Jérôme Duval <jerome.duval@gmail.com>

freetype: builds against the 2.4.6 optional package.

* added optional feature package for freetype 2.4.6 gcc4/gcc2 x86 and gcc4 ppc.
* FT_CONFIG_OPTION_SUBPIXEL_RENDERING is disabled, --include-patented-code doesn't
change this setting anymore. This would require different packages.
* drop freetype sources and headers from the tree.
* fix decorators, test app server and appearance to use feature package headers.
* hybrid build untested.


# 27f5d579 02-Aug-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Fix coding style pointed out by Axel. Thanks for the array trick haven't known this one :-)



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42539 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6a0ed7da 26-Jul-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Move S&T back into the app server.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42501 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f4f30311 24-Jul-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Cleanup app server directory a bit by creating a font and a decorator sub folder.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42483 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b91ddd81 04-Jul-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

* Make the magnetic border code more accessible by moving the code into a separate class and use it in a new protected WindowBehaviour method.
* Simplify the algorithm a bit, no functional changes are intended.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42377 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 915a7b8c 19-Jan-2011 Oliver Tappe <zooey@hirschkaefer.de>

Make BObjectList<> publically available:
* cleaned up ObjectList.h
* switched several uses of new() to new(std::nothrow)
* moved ugly AsBList() hack into BObjectList<>::Private class and
adjusted all callers accordingly


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40252 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 860dfc9a 28-Jul-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Introduce a DesktopListener interface to the Desktop class (needed for SAT).
- Add a minimize method to desktop.
- Make _CurrentWindows public.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37800 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 177ecc46 14-Jul-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Refactoring of the Window class. Move window behaviour into separate WindowBehaviour class.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37524 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 85d512ed 30-Oct-2009 Philippe Houdoin <philippe.houdoin@gmail.com>

Revert Stack & Tile patch (r33814) and first fixes done by axel (r33824, r33826)
The stack & tile feature developement & fixes would be done in
branches/features/stack-and-tile branch, until it's ready enough to be merge
into trunk.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33840 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ef831a1d 28-Oct-2009 Philippe Houdoin <philippe.houdoin@gmail.com>

Applied Stack & Tile patch by Hong Yul Yang, formely by Christof Lutteroth.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33814 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 68667bf4 04-Oct-2009 Michael Lotz <mmlr@mlotz.ch>

* Adding a remote desktop interface that operates on app_server drawing
primitives by providing a RemoteDrawingEngine and a RemoteHWInterface.
Not really optimized yet, still a bit WIP.
* Adding corresponding infrastructure like a blocking ring buffer and network
sender/receiver that are attached to the buffers to feed/drain them as well
as a RemoteMessage helper that provides a message based interface.
* Adding target screen concept to request an app to be run on a specific screen.
It's controlled by the TARGET_SCREEN environment variable which is added on
the app side and sent to the app_server.
* Right now only remote target screens are supported, in which case a new
RemoteHWInterface is created that tries to connect to the given host:port.
* Fix shape bounds when drawing, they need to be translated by the pen position
and converted to screen like the points as well. Wasn't visible though as the
bounds weren't used in the normal DrawingEngine.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33417 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a5a64d54 27-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* Renamed DirectWindowSupport/Data to DirectWindowInfo.
* Cleanup of the fullscreen stuff.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32743 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 467c2e8c 22-Aug-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Moved DirectWindow support classes into a separate DirectWindowSupport.h/cpp.
No functional change.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32613 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0eed9183 20-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* Rewrote screen configuration management: VirtualScreen doesn't have anything
to do with the configurations now, instead, there is a separated
ScreenConfigurations class that maintains all known screen_configurations
per workspace (and the Workspace::Private class has two of them, one for the
current modes, one for the stored modes).
* Added Desktop::{Get|Set}ScreenMode() methods, ServerApp now only calls those.
* Getting and setting of anything else than the current screen is now supported.
* This change also fixes that a temporarily set screen mode was not being
restored on workspace switch.
* Also, the Deskbar now seems to have the wrong location a lot, which is
something that should be easily fixable therefore. I will look into this next.
* Got rid of the unhandy screen_id structure server side, and in BPrivateScreen;
we now just use an int32 - the next API break should definitely replace the
screen_id with a simple typedef.
* Some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32541 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0f617d44 05-Apr-2009 Rene Gollent <anevilyak@gmail.com>

Fix several cases of forgetting to include libstdc++ in the libs. This allows a successful build of Haiku on gcc4 Haiku, though it's presently unclear to me why this didn't prevent linking on any other platform (gcc2 haiku, and gcc2/4 cross compilers from FBSD had no issues here).



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29957 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3580c2cf 30-Sep-2008 Karsten Heimrich <host.haiku@gmx.de>

* remove png dump from app_server



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27802 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5f8c1a02 09-Sep-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Remove unused RamLinkMsgReader. Its functionality was integrated inside LinkMsgReader/Sender by Julun.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27387 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 33d85b51 13-Jun-2008 Michael Lotz <mmlr@mlotz.ch>

Add a handy utility class that provides a DrawingEngine directly attached to a
server side UtilityBitmap of a certain size. It sets up the DrawingEngine, the
UtilityBitmap and the BitmapHWInterface necessary so that one can directly
do drawing to a bitmap using the normal DrawingEngine interface. It provides
an ExportToBitmap method that allocates an output UtilityBitmap of a specified
size and color space where the content is put into, so a single instance of a
BitmapDrawingEngine can be reused for various drawing.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25951 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 437b1927 08-Mar-2008 Axel Dörfler <axeld@pinc-software.de>

* Removed severly outdated DebugInfoManager.
* More "layer" cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24305 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 953d895e 07-Mar-2008 Axel Dörfler <axeld@pinc-software.de>

* Got rid of the "Layer" part of WindowLayer, ViewLayer, WorkspacesLayer
(now WorkspacesView), OffscreenWindowLayer.
* Renamed ServerScreen.cpp/h to Screen.cpp/h (the class was already called
Screen).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24303 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2222864e 02-Aug-2007 Stephan Aßmus <superstippi@gmx.de>

* complete overhaul of the font/glyph caching
* the previous AGG implementation is superfluous
* the new implementation is based on that one, but in a way that allows
read/write locking to the list of cache entries (fonts) as well as
read/write locking to the cached glyphs per individual font cache entry
* new GlyphLayoutEngine.h, which is to be the central place for layouting
glyphs along the baseline.
It handles the locking for getting the font cache entries.
It works by giving it a template class GlyphConsumer which does the
actual work.
* changed AGGTextRenderer to use the new font cache
* changed ServerFont::StringWidth(), and the bounding box stuff to use it
* changed DrawingEngine, it doesn't need the global font lock anymore
* our BFont thought that GetBoundingBoxesAsGlyphs and GetBoundingBoxesAsString
is the same, which of course it isn't, hence the two separate functions...
AsGlyphs just gets the bounding box of each glyph in a string, not treating
the string as an actual word
AsString adds the offset of the glyph in the word to the bounding box
* changed ServerProtocol.h accordingly for the different bounding box meaning


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21797 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 67f3be42 17-Jul-2007 Stephan Aßmus <superstippi@gmx.de>

* added ProfileMessageSupport.h/cpp to translate server message codes to
a string
* fixed profiling of message processsing in ServerWindow (didn't take batch
processing into account)
* accelerated ViewLayer::RebuildClipping() by a factor of two by avoiding
BRegion::Exclude(clipping_rect) for each child, and instead building
one region with all children, and excluding that. RebuildClipping() is
quite a common operation and is quite slow for views with many children


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21646 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fd5d46e0 17-Jul-2007 Stephan Aßmus <superstippi@gmx.de>

* separated FontStyle and FontFamily into different .h/cpp, before they shared
FontFamily.h/cpp (just for the reason that this is how we do it mostly
everywhere)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21637 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ff32e515 03-May-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

ServerPicture now uses a BPositionIO object as internal storage instead
of BMallocIO. Added an additional constructor to handle a file. This is
in preparation of implementing BView::SetDiskMode().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20996 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8071d85b 05-Dec-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

fixed the build

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19433 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2cfe93e7 04-Dec-2006 Stephan Aßmus <superstippi@gmx.de>

* renamed HWInterface locking to LockParallelAccess() and
LockExclusiveAccess() (meaning more or less access to the
frame buffer)
* extracted the AGGTextRenderer to be a global instance used
by each Painter instance (currently, it is thread safe because
of the global font lock, so there is some work left in this
regard)
* gave every ServerWindow it's own DrawingEngine instance, this
is work in progress. So far, there doesn't seem to be a regression,
but less fighting over the exclusive access to the frame buffer, now
each ServerWindow thread can draw in parallel. There is room for
improvement, plus I think I'm leaking the DrawingEngine...
* changed the locking for the software cursor. ShowSoftwareCursor()
can only be called if HideSoftwareCursor(BRect) returned true, or
if you called the generic HideSoftwareCursor(), since it needs
to keep the cursor lock and unlocks in Show...!
* some clean up and renaming in Decorator and friends
* moved PatternHandler.h to live along with the .cpp


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19427 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 264fe59d 28-Nov-2006 Stephan Aßmus <superstippi@gmx.de>

* introduced IntPoint and IntRect, which are just like BPoint and BRect,
but use integer coordinates. These are now used in ViewLayer for the
coordinate system (layout, scrolling offset, view bitmap layout)
* modest performance improvements by inlining some very often used
methods, and by preventing to go down the entire layer tree too often,
for example InvalidateScreenClipping was always called in the deep
mode, therefor it is save to assume that the tree does not have to
be traversed as soon as the clipping is already invalid


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19390 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1cffe232 29-May-2006 Axel Dörfler <axeld@pinc-software.de>

Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17644 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 23ae77aa 26-Apr-2006 Axel Dörfler <axeld@pinc-software.de>

* Removed ColorSet, it's no longer needed or used.
* The Decorator are temporarily using ui_color() - this needs to be changed
to use the DesktopSettings (when the decorator stuff gets refactored); right
now, the colors are fixed.
* Added B_WINDOW_TEXT_COLOR, B_WINDOW_INACTIVE_TAB_COLOR, and
B_WINDOW_INACTIVE_TEXT_COLOR to the UI colors, B_WINDOW_TAB_COLOR is no
longer deprecated. Note, however, that not every decorator may use these
colors.
* Removed unused and wrong (ie. hard-coded paths) stuff from ServerConfig.h.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17236 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 39c9925f 07-Apr-2006 Stephan Aßmus <superstippi@gmx.de>

* implemented a BRegion pool per WindowLayer which is supposed
to cut down on BRegion related allocations, cannot really tell
if it speeds things up
* used the new BRegion pool in WindowLayer and ViewLayer whereever
a BRegion was used on the stack
* fixed the debugging stuff in MultiLocker - it will get you into
the debugger if you
- try to nest read locks
- try to write lock when your are a reader already
- don't match up nested locks when your a writer
-> but only if you #define DEBUG 1 in the .cpp, is off by default now
* went over WindowLayer, ServerWindow, Desktop and a few other places
and fixed the locking for use with the MultiLocker, the "a reader can
not become a writer" is especially tricky, feel free to review the
changes
* activated the MultiLocker, I tested this quite a bit, if there are
problems simply turn on DEBUG and you should drop into the debugger
right where the problem is... hope all is good


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17046 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 16ed1e1d 18-Mar-2006 Axel Dörfler <axeld@pinc-software.de>

* Removed headers/private/servers/app - everything is in src/servers/app now.
* Removed DisplaySupport.h, wasn't needed anymore.
* Removed private color set functions from InterfaceDefs.cpp - we might want
something similar, but definitely not like that.
* Minor cleanup, added some missing licenses.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16831 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


# f19839c2 01-Mar-2006 Axel Dörfler <axeld@pinc-software.de>

Some groundwork for overlay support. If someone wants to finish this, feel
free to continue (it would be nice to be notified before, though, in case
I get to it again in the next weeks).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16561 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9e8d2dd2 17-Jan-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed PicturePlayer, it only contains code duplicated from TPicture. Some cleanups for BPicture. This commit also completes previous commit for BMenu

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16002 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


# 4b813bf2 24-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

Renamed WinBorder to WindowLayer, and OffscreenWinBorder to OffscreenWindowLayer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15128 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d1071ff0 20-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

Removed Utils.cpp - it's not really useful anymore.
Note, I temporarily kept the Utils.h in, because I have other local changes to be
committed soon (sorry for this, but it shouldn't harm).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15043 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


# 08f35604 17-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

The basics of the new event handling - not yet connected to anything, and therefore
neither used nor tested. It's not even complete yet (support for Set[Mouse]EventMask()
is missing), but it will get there :)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14990 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6c17d025 15-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

* Introduced a new handshake between input_server and app_server, and some
temporary handling code in the app_server.
* RootLayer no longer creates the input_server messaging port - this is now
the responsibility of the input_server.
* Moved AS_CREATE_[OFFSCREEN_]WINDOW from ServerApp::_MessageLooper() to
_DispatchMessage().
* The RootLayer thread is now started as soon as the input_server is there.
* removed or disabled any input_server stuff in the AppServer class.
* removed old message commmands to the app_server.
* Removed the R5_CURSOR_COMM and HAIKU_APPSERVER_COMM definitions: the
input_server is now automatically built correctly depending on the target.
* InputServer::EventLoop() plays now safe and checks for error conditions.
* InputServer::EnqueueDeviceMessage() seems to leak memory, added TODO about
this.
* InputServer event loop messaging uses ports for inner-app communication - why?
* The InputServer event loop thread is no longer killed on exit, it just quits
when its port is gone.
* Minor cleanup in input_server.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14949 a95241bf-73f2-0310-859d-f6bbb57e9c96


# be05d56c 14-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

* the app_server now uses a global token space - this should later be changed to
have different token spaces depending on the scope of its objects.
* removed TokenHandler - we're now using BTokenSpace instead.
* removed unused IPoint.cpp - if we ever need it again, it can still easily be
resurrected from the dead.
* some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14925 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8b794301 13-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

Changed the way the app_server is built:
* no more libappserver.so - this breaks the "Appearance" application, but that
has to be fixed some day later.
* the drawing stuff is now built in its own directory as libasdrawing.a.
* TEST_MODE defaults to "0" if not defined yet - it's overridden in the test
build now, not in the main build.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14896 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 602d0ba4 08-Nov-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Remove IPoint.cpp from the build as no one needs it

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14782 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ec9b3f7c 08-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

The font manager now utilizes a hash table to look up fonts by ID.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14777 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e7869c4c 04-Nov-2005 Stephan Aßmus <superstippi@gmx.de>

renamed DisplayDriverPainter to DrawingEngine, removed tons of duplicated code, and - guess what - found some bugs while doing so... but nothing critical. This patch removes the former DisplayDriver API from libappserver.so, which I think breaks Decorator plug-ins for now

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14707 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6ed89418 04-Nov-2005 Stephan Aßmus <superstippi@gmx.de>

renamed DisplayDriverPainter.* to DrawingEngine.*

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14695 a95241bf-73f2-0310-859d-f6bbb57e9c96


# aca4f50d 04-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

Merged DrawData and LayerData to one class DrawState.
Removed that ambiguous second copy constructor and moved push state functionality
into a separate PushState() method.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14679 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bdd34c02 02-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

Renamed the FontServer class to FontManager.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14642 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 338b8dc3 29-Oct-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

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


# 2826a379 29-Jul-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

The app server for the BeOS test environment is now built by
src/tests/servers/app/Jamfile. This makes the original Jamfile much cleaner.
Note that you now have to maintain two Jamfiles when adding/removing sources.
The test app server is called haiku_app_server, its library
libhaikuappserver.so. I adjusted a few paths in scripts accordingly, but
I may have missed something elsewhere.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13858 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 15ae8872 28-Jul-2005 Stephan Aßmus <superstippi@gmx.de>

hacking session with Ingo part2: in the R5 test environment, the app_server links no longer against libbe.so, the classes which need it, ViewHWInterface + friends, are extracted into their own library, but we need a bridge library as well for HWInterface + friends. The AppServer is consequently no BApplication in the test environment anymore, the BApplication that is needed to display the frame buffer window is handled in ViewHWInterface. No functional change, except that our BRegion implementation is now used in the test environment, and who knows what else... luckily we are so extremely binary compatible, that passing a Haiku BRegion to the R5 app_server actually works.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13848 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


# 22137825 17-Jul-2005 Michael Lotz <mmlr@mlotz.ch>

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


# ef8810f2 17-Jul-2005 Axel Dörfler <axeld@pinc-software.de>

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


# fd5bec1e 14-Jul-2005 Axel Dörfler <axeld@pinc-software.de>

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


# 7e79718c 07-Jul-2005 Jérôme Duval <korli@users.berlios.de>

install_fonts isn't useful anymore
fonts are now installed as part of other data files
we still install some host fonts if found


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13557 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 359c905c 05-Jul-2005 Stephan Aßmus <superstippi@gmx.de>

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


# 24a146d4 01-Jul-2005 Axel Dörfler <axeld@pinc-software.de>

Small hack to get to know the code a bit better.
A view-only workspaces window support (with lots of drawing flicker) - this
means you see what happens in the workspaces, but it doesn't do anything if
you click on it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13378 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 063f418c 27-Jun-2005 Stephan Aßmus <superstippi@gmx.de>

made room for a new meaning of BitmapBuffer, it will be used for a RenderingBuffer class that wraps arround a ServerBitmap. BBitmapBuffer on the other side is handy as well and wraps arround a BBitmap, as BitmapBuffer did before.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13297 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3dcb3b07 23-Jun-2005 Stephan Aßmus <superstippi@gmx.de>

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


# 550d6a53 17-Jun-2005 DarkWyrm <darkwyrm@gmail.com>

Cleanup for decorator management code
Updated a couple headers
Moved all decorator code to ServerApp where it belongs
Modified AppServer::Broadcast to allow ServerApps send messages to all apps without having to have a global AppServer instance


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13204 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


# d593ad8f 25-May-2005 Stephan Aßmus <superstippi@gmx.de>

added a little debugging facility for printing on-screen debugging info on Haiku. For those like me without serial debugging... also made RootLayer use the desktop background color.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12819 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9bdb0522 12-May-2005 Stephan Aßmus <superstippi@gmx.de>

Implemented BFont::GetEscapments() float version. It is pretty rough yet, but appears to handle UTF8 correctly. The optional escapement_delta is currently ignored. I didn't touch other functionality too much, until I know more about it.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12645 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 38724243 18-Apr-2005 Stephan Aßmus <superstippi@gmx.de>

moved more old stuff which isn't used anymore

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12439 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3dea4bb6 18-Apr-2005 Stephan Aßmus <superstippi@gmx.de>

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


# b176b6b4 12-Apr-2005 Stephan Aßmus <superstippi@gmx.de>

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


# 8940f93c 01-Apr-2005 Stephan Aßmus <superstippi@gmx.de>

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


# d19337ad 29-Mar-2005 Axel Dörfler <axeld@pinc-software.de>

The previous change overwrote the $defines variable, although both defines should
be there at the same time.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12133 a95241bf-73f2-0310-859d-f6bbb57e9c96


# da4526cd 29-Mar-2005 Michael Lotz <mmlr@mlotz.ch>

TEST_MODE is now disabled on Haiku too. So app_server is not a BApplication anymore and doesn't depend on itself.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12132 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9c59f2f2 29-Mar-2005 Stephan Aßmus <superstippi@gmx.de>

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


# b2c9e182 29-Mar-2005 Michael Lotz <mmlr@mlotz.ch>

Accelerant based implementations of HWInterface and RenderingBuffer. Untested.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12123 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 82aa535b 29-Mar-2005 Axel Dörfler <axeld@pinc-software.de>

Updated app_server Jamfile to be able to build a server that runs under Haiku
if $TARGET_PLATFORM requires this.
Note, "jam app_server" for R5 did not work for me before and does not work now
although the number of errors are reduced - whoever knows the requirements for
the app_server under R5 better than me, please fix this.
Added the app_server as well as some more drivers to the Haiku HD image. Since
RUN_WITHOUT_APP_SERVER is still defined, it won't work correctly, though.
For the time being, you need to manually alter this and the Bootscript in order
to run it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12121 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 55a56d8b 28-Mar-2005 Stephan Aßmus <superstippi@gmx.de>

added fake_input_server.cpp to the build

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12086 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1b52d7cf 26-Mar-2005 Stephan Aßmus <superstippi@gmx.de>

include my new stuff in the build

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12054 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 80141c9f 25-Mar-2005 Stephan Aßmus <superstippi@gmx.de>

libagg is now build as static

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12013 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a850bd1d 25-Mar-2005 Stephan Aßmus <superstippi@gmx.de>

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


# 3ddd2fc7 25-Mar-2005 Stephan Aßmus <superstippi@gmx.de>

started to move files arround for better source structure, app_server still builds and runs fine, in case you were worried...

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11988 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 10612543 25-Mar-2005 Stephan Aßmus <superstippi@gmx.de>

step 3, exracted code from DisplayDriver into DisplayDriverImpl, adjusted the existing implementations to derive from the new class, got rid of some "friend" stuff along the way, essentially I made room for the new Painter based DisplayDriver implementation.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11986 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


# 13b81f06 24-Mar-2005 Axel Dörfler <axeld@pinc-software.de>

Removed old app_server files. server/ will be moved on layer up next.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11970 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a3d04b0e 20-Jan-2003 DarkWyrm <darkwyrm@gmail.com>

Tweaked AccelerantDriver to utilize recent DisplayDriver changes
Added a number of new files to server
app_server now included in the build


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2524 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 54b288eb 06-Nov-2002 DarkWyrm <darkwyrm@gmail.com>

Added prototyp #7 and test application to tree.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1862 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b01bedd5 10-Jul-2002 Ingo Weinhold <ingo_weinhold@gmx.de>

This brings the app server proto6 into the game. It doesn't compile completely though and I don't even know, if all the stuff in the subdirs is really needed. DarkWyrm?


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@48 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 220d04022750f40f8bac8f01fa551211e28d04f2 31-Jul-2014 Oliver Tappe <zooey@hirschkaefer.de>

Use libstdc++, libsupc++ and libgcc from gcc_syslibs.

* Instead of faking libstdc++.so from libstdc++.a, use libstdc++.so
from the gcc_syslibs build feature for everything except x86_gcc2.
* Use libgcc_s.so from the gcc_syslibs build feature for everything but
x86_gcc2 (which still carries libgcc as part of libroot.so).
* Drop filtering of libgcc objects for libroot, as that is no longer
necessary since we're only using libgcc-as-single-object for libroot
with x86_gcc2, where the filtered object file doesn't exist. Should
the objects that used to be filtered cause any problems as part of
libgcc_s.so, we can always filter them as part of the gcc build.
* Use libsupc++.so from the gcc_syslibs build feature for everything but
x86_gcc2.
* Adjust all Jamfiles accordingly.
* Deactivate building of faked libstdc++.so for non-x86-gcc2. For
x86_gcc2, we still build libstdc++.so from the sources in the Haiku
source tree as part of the Haiku build .
* Put gcc_syslibs package onto the image, when needed.


# 106fe8b325a387294deb0a0949201bef0d00a8f6 30-Jul-2013 John Scipione <jscipione@gmail.com>

Create a TabDecorator class

Which contains methods common to Default Decorator and BeDecorator, aka
"tabbed" decorators.

Derive DefaultDecorator from a new TabDecorator base class.


# 8e8869a9166646673133c562b9e009536ba9ba9a 20-Feb-2014 Stephan Aßmus <superstippi@gmx.de>

Fix more Freetype build feature dependencies in app_server


# d02b8b81e884bd0090ef9bd2d7a62af673eca354 08-Feb-2014 Stephan Aßmus <superstippi@gmx.de>

app_server: Cleanup of some file locations


# 9392f92aadd6c6e5946ceb6f8cbd45c7f9ab8b4d 28-Jan-2014 Jérôme Duval <jerome.duval@gmail.com>

app_server: adjust Freetype dependency.

* added AlphaMask.cpp.


# 35d6e0fe81106637c46f5c3130c421df88f66be0 28-Jan-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

Add new classes required for picture clipping

* agg_clipped_alpha_mask is a modified version of agg alpha mask class,
allowing us to offset the mask bitmap to follow the view position, and
also allows "inverse" clipping, where everything outside the bitmap is
considered inside the clipping region.
* AlphaMask is a container class keeping the ServerPicture, it's bitmap
rendering, and other relevant information. It will be used to save and
restore the clipping picture as part of the view state.
* Because these classes introduce more coupling within app_server, it's
not possible anymore to split out tst_app_server from
libtestappserver.so. Instead, move everything to libtestappserver.so,
except the things that actually need to not be there (to avoid
interferences with the host API). As a result, the previously introduced
stub cpp file to work around this problem isn't needed anymore.

The design for all this (and the previous commit) is Stippi's work.
Thanks for the advice and implementation hints!


# f08d5477d8b854d8ae33801ad4aaf3c78008df11 28-Jan-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

Add Alpha Masking support in ClipToPicture

Use AGG to implement ClipToPicture in a faster and better way.
There are things missing in this initial implementation:
* No support for PushState/PopState saving and restoring the picture.
* No support for nested clipping through PushState
* The clipping doesn't happen where you expect it when using SetScale()
* There are artifacts when scrolling and resizing clipped views
* The implementation uses more memory than it needs, as the clipping
bitmap is stored as RGBA32, yet only the alpha channel is used
* The clipping bitmap is rendered more times than it needs to. We need
some caching here.


# 06254ef86366cbff413aaed446248a185a4a012a 26-Jan-2014 Jérôme Duval <jerome.duval@gmail.com>

app_server: adjust Freetype dependency.

* added DrawingContext.cpp and ServerCursor.cpp


# c2dcc4d500f4f71e9ff117ec221b93bd29d0631e 22-Jan-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

Get test_app_server to run again

* We should have the buildbots compile this to make sure it still works
* I had to split two ServerApp methods to a searate C++ file to link
them in libtestappserver.so
* some fixes related to the switch to PM and better hybrid support in
jam rules; moving of MIME stuff from registrar to storage kit, merge of
Locale Kit and ICU in libbe, and a few more.
* Modified the test_app_server hwinterface and rdef file so it is not a
background app, and the window isn't floating. Otherwise, hiding the
window would leave you without a way to recover it.


# e1a301151feebf3c335202071b5d3c38c40b2f9a 21-Jan-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

Introduce DrawingContext View superclass

In order to properly implement ClipToPicture in BView, we need to render
a Picture to a Bitmap. This is currently done client-side, but the
overhead for this (creating a BBitmap that accepts views, including a
window thread, adding a view to it, and rendering the picture to the
view, then sending the result to app_server) isn't acceptable. Moreover,
the bitmap drawn this way is clipped to the view size, and the clipping
won't work when the view is scaled or translated. So, we need to move
the Bitmap creation server-side.

However, app_server currently have no means of doing this. Factor out the
relevant parts of View: a DrawingState stack with PushState/PopState, a
DrawingEngine, and a ConvertToScreen transformation. Another implementation
of the DrawingContext will allow us to also draw a picture directly using
a Painter and low-level pixel buffer, in a format suitable for use as an
AGG alpha mask.


# 29f8805f6c70f1c819eb58ac2220647d8e40d6e7 13-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Update freetype package

Also use the new build feature rules


# dcaec19c9a11eec63fd86420326935c5097e48e9 08-Feb-2013 Alexander von Gluck IV <kallisti5@unixzen.com>

AppServer: Organize "HWInterface" classes

* Organize interface classes into directories
* Long term this will assist in the multi-head
interface / accelerant changes.
* local draws to the local hw accelerant
* remote draws to a remote connection (???)
* html5 draws to... an html5 canvas?


# 3fed1a15f58e8d6fe6b492f3b94bb3625ffeddbd 05-Aug-2012 Alex Smith <alex@alex-smith.me.uk>

Get app_server working on x86_64.

With this commit, app_server now compiles and runs at boot! Nothing
particularly interesting happens, just the blue background and a mouse
pointer. Remote backends are broken and not compiled in, see #8834.
Note that it won't be possible to build this quite yet, need to get
the FreeType package uploaded.


# 36daae570c16898df20ff125c5d2e70d9c35c28e 11-Jul-2012 Jérôme Duval <jerome.duval@gmail.com>

app_server: fixed FreeType headers dependency #8716

* added ServerFont.cpp


# 74880af10c2b89830985430fc7ee26a5a34db04d 11-Jul-2012 Jérôme Duval <jerome.duval@gmail.com>

app_server: fixed FreeType headers dependency #8716

* added source files which use ServerFont.h and ServerApp.h


# 8d33dc2971c49b5fe2eb9401e77406199d524d8f 01-Apr-2012 François Revol <revol@free.fr>

An html5 <canvas> based drawing engine

This implements an html5 rendering engine.
Inspired by the Broadway GDK backend for Gnome.
Work in progress. For now it just connects and dumps debug output.


# 362efe0c9f36d3dd38b22d2c24ac02e54b189d7c 17-Mar-2012 Jérôme Duval <jerome.duval@gmail.com>

freetype: builds against the 2.4.6 optional package.

* added optional feature package for freetype 2.4.6 gcc4/gcc2 x86 and gcc4 ppc.
* FT_CONFIG_OPTION_SUBPIXEL_RENDERING is disabled, --include-patented-code doesn't
change this setting anymore. This would require different packages.
* drop freetype sources and headers from the tree.
* fix decorators, test app server and appearance to use feature package headers.
* hybrid build untested.


# 27f5d579244cd1e43a1469782e08642fdc14b7f2 02-Aug-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Fix coding style pointed out by Axel. Thanks for the array trick haven't known this one :-)



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42539 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6a0ed7da5303f3389cf954b24eda4c179f6a0a72 26-Jul-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Move S&T back into the app server.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42501 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f4f30311aab9b2768d3ef7e590f85598298edfe0 24-Jul-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

Cleanup app server directory a bit by creating a font and a decorator sub folder.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42483 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b91ddd8116374910bd94bfe3592615f7799dc948 04-Jul-2011 Clemens Zeidler <clemens.zeidler@googlemail.com>

* Make the magnetic border code more accessible by moving the code into a separate class and use it in a new protected WindowBehaviour method.
* Simplify the algorithm a bit, no functional changes are intended.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42377 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 915a7b8c247e1ed9182bd561df3e9856307e750c 19-Jan-2011 Oliver Tappe <zooey@hirschkaefer.de>

Make BObjectList<> publically available:
* cleaned up ObjectList.h
* switched several uses of new() to new(std::nothrow)
* moved ugly AsBList() hack into BObjectList<>::Private class and
adjusted all callers accordingly


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40252 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 860dfc9a77381099c8c9549e28865ed015886bf7 28-Jul-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

- Introduce a DesktopListener interface to the Desktop class (needed for SAT).
- Add a minimize method to desktop.
- Make _CurrentWindows public.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37800 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 177ecc46b6e7dc8b210dc09b42fc0891b91249aa 14-Jul-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Refactoring of the Window class. Move window behaviour into separate WindowBehaviour class.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37524 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 85d512ed6583c516ce8d1e5999aabbb18e53a979 30-Oct-2009 Philippe Houdoin <philippe.houdoin@gmail.com>

Revert Stack & Tile patch (r33814) and first fixes done by axel (r33824, r33826)
The stack & tile feature developement & fixes would be done in
branches/features/stack-and-tile branch, until it's ready enough to be merge
into trunk.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33840 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ef831a1dc393b2008b35fc46c028d3466ce7634f 28-Oct-2009 Philippe Houdoin <philippe.houdoin@gmail.com>

Applied Stack & Tile patch by Hong Yul Yang, formely by Christof Lutteroth.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33814 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 68667bf48a9e29a2d142cb3308b606d80bee3c2d 04-Oct-2009 Michael Lotz <mmlr@mlotz.ch>

* Adding a remote desktop interface that operates on app_server drawing
primitives by providing a RemoteDrawingEngine and a RemoteHWInterface.
Not really optimized yet, still a bit WIP.
* Adding corresponding infrastructure like a blocking ring buffer and network
sender/receiver that are attached to the buffers to feed/drain them as well
as a RemoteMessage helper that provides a message based interface.
* Adding target screen concept to request an app to be run on a specific screen.
It's controlled by the TARGET_SCREEN environment variable which is added on
the app side and sent to the app_server.
* Right now only remote target screens are supported, in which case a new
RemoteHWInterface is created that tries to connect to the given host:port.
* Fix shape bounds when drawing, they need to be translated by the pen position
and converted to screen like the points as well. Wasn't visible though as the
bounds weren't used in the normal DrawingEngine.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33417 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a5a64d5481aadad0161c2db2ce1e7e9e0ffac79f 27-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* Renamed DirectWindowSupport/Data to DirectWindowInfo.
* Cleanup of the fullscreen stuff.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32743 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 467c2e8cb5301f35364d8a89a55388ee5efd2df3 22-Aug-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Moved DirectWindow support classes into a separate DirectWindowSupport.h/cpp.
No functional change.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32613 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0eed9183061a7763972bc2589f9c43489cd078ab 20-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* Rewrote screen configuration management: VirtualScreen doesn't have anything
to do with the configurations now, instead, there is a separated
ScreenConfigurations class that maintains all known screen_configurations
per workspace (and the Workspace::Private class has two of them, one for the
current modes, one for the stored modes).
* Added Desktop::{Get|Set}ScreenMode() methods, ServerApp now only calls those.
* Getting and setting of anything else than the current screen is now supported.
* This change also fixes that a temporarily set screen mode was not being
restored on workspace switch.
* Also, the Deskbar now seems to have the wrong location a lot, which is
something that should be easily fixable therefore. I will look into this next.
* Got rid of the unhandy screen_id structure server side, and in BPrivateScreen;
we now just use an int32 - the next API break should definitely replace the
screen_id with a simple typedef.
* Some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32541 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0f617d447663ec1a24360875fa7c936875a3ee9b 05-Apr-2009 Rene Gollent <anevilyak@gmail.com>

Fix several cases of forgetting to include libstdc++ in the libs. This allows a successful build of Haiku on gcc4 Haiku, though it's presently unclear to me why this didn't prevent linking on any other platform (gcc2 haiku, and gcc2/4 cross compilers from FBSD had no issues here).



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29957 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3580c2cf122291d8152ff4a08381d3fbc24112ea 30-Sep-2008 Karsten Heimrich <host.haiku@gmx.de>

* remove png dump from app_server



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27802 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5f8c1a02449cf804ff7c4e0ba591cfc3534c2ffd 09-Sep-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Remove unused RamLinkMsgReader. Its functionality was integrated inside LinkMsgReader/Sender by Julun.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27387 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 33d85b510b4a3c9beadb1553ff2f7cb3cf7543d5 13-Jun-2008 Michael Lotz <mmlr@mlotz.ch>

Add a handy utility class that provides a DrawingEngine directly attached to a
server side UtilityBitmap of a certain size. It sets up the DrawingEngine, the
UtilityBitmap and the BitmapHWInterface necessary so that one can directly
do drawing to a bitmap using the normal DrawingEngine interface. It provides
an ExportToBitmap method that allocates an output UtilityBitmap of a specified
size and color space where the content is put into, so a single instance of a
BitmapDrawingEngine can be reused for various drawing.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25951 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 437b19277feacd48292ca9ec814a38da17e4eb89 08-Mar-2008 Axel Dörfler <axeld@pinc-software.de>

* Removed severly outdated DebugInfoManager.
* More "layer" cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24305 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 953d895e020ece5d50cfc2e76d9f370ceb5c45e7 07-Mar-2008 Axel Dörfler <axeld@pinc-software.de>

* Got rid of the "Layer" part of WindowLayer, ViewLayer, WorkspacesLayer
(now WorkspacesView), OffscreenWindowLayer.
* Renamed ServerScreen.cpp/h to Screen.cpp/h (the class was already called
Screen).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24303 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2222864eed6bc28cff3d837c98d1509dcbcf38bc 02-Aug-2007 Stephan Aßmus <superstippi@gmx.de>

* complete overhaul of the font/glyph caching
* the previous AGG implementation is superfluous
* the new implementation is based on that one, but in a way that allows
read/write locking to the list of cache entries (fonts) as well as
read/write locking to the cached glyphs per individual font cache entry
* new GlyphLayoutEngine.h, which is to be the central place for layouting
glyphs along the baseline.
It handles the locking for getting the font cache entries.
It works by giving it a template class GlyphConsumer which does the
actual work.
* changed AGGTextRenderer to use the new font cache
* changed ServerFont::StringWidth(), and the bounding box stuff to use it
* changed DrawingEngine, it doesn't need the global font lock anymore
* our BFont thought that GetBoundingBoxesAsGlyphs and GetBoundingBoxesAsString
is the same, which of course it isn't, hence the two separate functions...
AsGlyphs just gets the bounding box of each glyph in a string, not treating
the string as an actual word
AsString adds the offset of the glyph in the word to the bounding box
* changed ServerProtocol.h accordingly for the different bounding box meaning


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21797 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 67f3be42b00f063f84e4e9a743dcf431f99c311d 17-Jul-2007 Stephan Aßmus <superstippi@gmx.de>

* added ProfileMessageSupport.h/cpp to translate server message codes to
a string
* fixed profiling of message processsing in ServerWindow (didn't take batch
processing into account)
* accelerated ViewLayer::RebuildClipping() by a factor of two by avoiding
BRegion::Exclude(clipping_rect) for each child, and instead building
one region with all children, and excluding that. RebuildClipping() is
quite a common operation and is quite slow for views with many children


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21646 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fd5d46e0992fb2b7dc5575ff1c50b88146a0a5b3 17-Jul-2007 Stephan Aßmus <superstippi@gmx.de>

* separated FontStyle and FontFamily into different .h/cpp, before they shared
FontFamily.h/cpp (just for the reason that this is how we do it mostly
everywhere)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21637 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ff32e5158c98c4dd9eab938af32667fff625786e 03-May-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

ServerPicture now uses a BPositionIO object as internal storage instead
of BMallocIO. Added an additional constructor to handle a file. This is
in preparation of implementing BView::SetDiskMode().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20996 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8071d85b5af1cfca554b32ce08240c1dad45241a 05-Dec-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

fixed the build

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19433 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2cfe93e7804edb2817dba26ba9b908efbfa80b06 04-Dec-2006 Stephan Aßmus <superstippi@gmx.de>

* renamed HWInterface locking to LockParallelAccess() and
LockExclusiveAccess() (meaning more or less access to the
frame buffer)
* extracted the AGGTextRenderer to be a global instance used
by each Painter instance (currently, it is thread safe because
of the global font lock, so there is some work left in this
regard)
* gave every ServerWindow it's own DrawingEngine instance, this
is work in progress. So far, there doesn't seem to be a regression,
but less fighting over the exclusive access to the frame buffer, now
each ServerWindow thread can draw in parallel. There is room for
improvement, plus I think I'm leaking the DrawingEngine...
* changed the locking for the software cursor. ShowSoftwareCursor()
can only be called if HideSoftwareCursor(BRect) returned true, or
if you called the generic HideSoftwareCursor(), since it needs
to keep the cursor lock and unlocks in Show...!
* some clean up and renaming in Decorator and friends
* moved PatternHandler.h to live along with the .cpp


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19427 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 264fe59ded1101a7eea8c965131b112748f4607c 28-Nov-2006 Stephan Aßmus <superstippi@gmx.de>

* introduced IntPoint and IntRect, which are just like BPoint and BRect,
but use integer coordinates. These are now used in ViewLayer for the
coordinate system (layout, scrolling offset, view bitmap layout)
* modest performance improvements by inlining some very often used
methods, and by preventing to go down the entire layer tree too often,
for example InvalidateScreenClipping was always called in the deep
mode, therefor it is save to assume that the tree does not have to
be traversed as soon as the clipping is already invalid


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19390 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1cffe232decb7df30427e1f346cb13cea7d1da8c 29-May-2006 Axel Dörfler <axeld@pinc-software.de>

Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17644 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 23ae77aa566566465e1fca7aedbf0f1139acca1e 26-Apr-2006 Axel Dörfler <axeld@pinc-software.de>

* Removed ColorSet, it's no longer needed or used.
* The Decorator are temporarily using ui_color() - this needs to be changed
to use the DesktopSettings (when the decorator stuff gets refactored); right
now, the colors are fixed.
* Added B_WINDOW_TEXT_COLOR, B_WINDOW_INACTIVE_TAB_COLOR, and
B_WINDOW_INACTIVE_TEXT_COLOR to the UI colors, B_WINDOW_TAB_COLOR is no
longer deprecated. Note, however, that not every decorator may use these
colors.
* Removed unused and wrong (ie. hard-coded paths) stuff from ServerConfig.h.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17236 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 39c9925fcf718dbb8c8d5342997d6bbd40f9e7e4 07-Apr-2006 Stephan Aßmus <superstippi@gmx.de>

* implemented a BRegion pool per WindowLayer which is supposed
to cut down on BRegion related allocations, cannot really tell
if it speeds things up
* used the new BRegion pool in WindowLayer and ViewLayer whereever
a BRegion was used on the stack
* fixed the debugging stuff in MultiLocker - it will get you into
the debugger if you
- try to nest read locks
- try to write lock when your are a reader already
- don't match up nested locks when your a writer
-> but only if you #define DEBUG 1 in the .cpp, is off by default now
* went over WindowLayer, ServerWindow, Desktop and a few other places
and fixed the locking for use with the MultiLocker, the "a reader can
not become a writer" is especially tricky, feel free to review the
changes
* activated the MultiLocker, I tested this quite a bit, if there are
problems simply turn on DEBUG and you should drop into the debugger
right where the problem is... hope all is good


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17046 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 16ed1e1d15aac69c945890e5d5990bb41d9f4303 18-Mar-2006 Axel Dörfler <axeld@pinc-software.de>

* Removed headers/private/servers/app - everything is in src/servers/app now.
* Removed DisplaySupport.h, wasn't needed anymore.
* Removed private color set functions from InterfaceDefs.cpp - we might want
something similar, but definitely not like that.
* Minor cleanup, added some missing licenses.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16831 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


# f19839c230e64120d4b9e9fda83d1578445d232f 01-Mar-2006 Axel Dörfler <axeld@pinc-software.de>

Some groundwork for overlay support. If someone wants to finish this, feel
free to continue (it would be nice to be notified before, though, in case
I get to it again in the next weeks).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16561 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9e8d2dd28b59ce0fa8b221c116dce41425abf4cf 17-Jan-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed PicturePlayer, it only contains code duplicated from TPicture. Some cleanups for BPicture. This commit also completes previous commit for BMenu

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16002 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


# 4b813bf2670024494ff699a4a2ccb87ca3bccd61 24-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

Renamed WinBorder to WindowLayer, and OffscreenWinBorder to OffscreenWindowLayer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15128 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d1071ff01bfca0aa7952a6c0cc995ce137681908 20-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

Removed Utils.cpp - it's not really useful anymore.
Note, I temporarily kept the Utils.h in, because I have other local changes to be
committed soon (sorry for this, but it shouldn't harm).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15043 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


# 08f35604b00adf5e47a170f586fa91ee5d53c4a5 17-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

The basics of the new event handling - not yet connected to anything, and therefore
neither used nor tested. It's not even complete yet (support for Set[Mouse]EventMask()
is missing), but it will get there :)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14990 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6c17d025516c9c1a271394f8ef618d842e68c716 15-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

* Introduced a new handshake between input_server and app_server, and some
temporary handling code in the app_server.
* RootLayer no longer creates the input_server messaging port - this is now
the responsibility of the input_server.
* Moved AS_CREATE_[OFFSCREEN_]WINDOW from ServerApp::_MessageLooper() to
_DispatchMessage().
* The RootLayer thread is now started as soon as the input_server is there.
* removed or disabled any input_server stuff in the AppServer class.
* removed old message commmands to the app_server.
* Removed the R5_CURSOR_COMM and HAIKU_APPSERVER_COMM definitions: the
input_server is now automatically built correctly depending on the target.
* InputServer::EventLoop() plays now safe and checks for error conditions.
* InputServer::EnqueueDeviceMessage() seems to leak memory, added TODO about
this.
* InputServer event loop messaging uses ports for inner-app communication - why?
* The InputServer event loop thread is no longer killed on exit, it just quits
when its port is gone.
* Minor cleanup in input_server.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14949 a95241bf-73f2-0310-859d-f6bbb57e9c96


# be05d56c7eea834b5983ba3411d79fabd8b616b7 14-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

* the app_server now uses a global token space - this should later be changed to
have different token spaces depending on the scope of its objects.
* removed TokenHandler - we're now using BTokenSpace instead.
* removed unused IPoint.cpp - if we ever need it again, it can still easily be
resurrected from the dead.
* some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14925 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8b794301de0d6dcbbe1d1734e611fae170e5be81 13-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

Changed the way the app_server is built:
* no more libappserver.so - this breaks the "Appearance" application, but that
has to be fixed some day later.
* the drawing stuff is now built in its own directory as libasdrawing.a.
* TEST_MODE defaults to "0" if not defined yet - it's overridden in the test
build now, not in the main build.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14896 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 602d0ba42c827e55a2420d5f48f3d0e83b9a653b 08-Nov-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Remove IPoint.cpp from the build as no one needs it

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14782 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ec9b3f7ca1be90d53588647da4f68cc9dbab9386 08-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

The font manager now utilizes a hash table to look up fonts by ID.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14777 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e7869c4c74d0fdaa08475b85c81044b5864f5dc7 04-Nov-2005 Stephan Aßmus <superstippi@gmx.de>

renamed DisplayDriverPainter to DrawingEngine, removed tons of duplicated code, and - guess what - found some bugs while doing so... but nothing critical. This patch removes the former DisplayDriver API from libappserver.so, which I think breaks Decorator plug-ins for now

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14707 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6ed894182f5f5865f2f8a2b1c4dea7bf81324063 04-Nov-2005 Stephan Aßmus <superstippi@gmx.de>

renamed DisplayDriverPainter.* to DrawingEngine.*

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14695 a95241bf-73f2-0310-859d-f6bbb57e9c96


# aca4f50d1eefef8bf137cc16f5b707d223494377 04-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

Merged DrawData and LayerData to one class DrawState.
Removed that ambiguous second copy constructor and moved push state functionality
into a separate PushState() method.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14679 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bdd34c028f89763afa318013894e0beb039bba97 02-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

Renamed the FontServer class to FontManager.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14642 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 338b8dc301721b1f472e8297a898d4eaa2f2ee3a 29-Oct-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

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


# 2826a379d5f3d00ad2d33d75339695d11bedba3d 29-Jul-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

The app server for the BeOS test environment is now built by
src/tests/servers/app/Jamfile. This makes the original Jamfile much cleaner.
Note that you now have to maintain two Jamfiles when adding/removing sources.
The test app server is called haiku_app_server, its library
libhaikuappserver.so. I adjusted a few paths in scripts accordingly, but
I may have missed something elsewhere.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13858 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 15ae8872f706b1553196f0a5849c1667e4e3a95a 28-Jul-2005 Stephan Aßmus <superstippi@gmx.de>

hacking session with Ingo part2: in the R5 test environment, the app_server links no longer against libbe.so, the classes which need it, ViewHWInterface + friends, are extracted into their own library, but we need a bridge library as well for HWInterface + friends. The AppServer is consequently no BApplication in the test environment anymore, the BApplication that is needed to display the frame buffer window is handled in ViewHWInterface. No functional change, except that our BRegion implementation is now used in the test environment, and who knows what else... luckily we are so extremely binary compatible, that passing a Haiku BRegion to the R5 app_server actually works.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13848 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


# 2213782534a8b17fdea5d7fc603360f4c9ac317e 17-Jul-2005 Michael Lotz <mmlr@mlotz.ch>

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


# ef8810f2adeb29b35fc895347011ad39bd591bd1 17-Jul-2005 Axel Dörfler <axeld@pinc-software.de>

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


# fd5bec1e482fc3aa3b6b98ae26599433d3cb797d 14-Jul-2005 Axel Dörfler <axeld@pinc-software.de>

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


# 7e79718c2bb7507ba1e253409b339490561bb0f8 07-Jul-2005 Jérôme Duval <korli@users.berlios.de>

install_fonts isn't useful anymore
fonts are now installed as part of other data files
we still install some host fonts if found


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13557 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 359c905c57c9d43ce84badcaef859fa94322897c 05-Jul-2005 Stephan Aßmus <superstippi@gmx.de>

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


# 24a146d4f62f4391e8de46f10295375813b6817c 01-Jul-2005 Axel Dörfler <axeld@pinc-software.de>

Small hack to get to know the code a bit better.
A view-only workspaces window support (with lots of drawing flicker) - this
means you see what happens in the workspaces, but it doesn't do anything if
you click on it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13378 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 063f418c536f171bc6d0d21c61f7e313572a611b 27-Jun-2005 Stephan Aßmus <superstippi@gmx.de>

made room for a new meaning of BitmapBuffer, it will be used for a RenderingBuffer class that wraps arround a ServerBitmap. BBitmapBuffer on the other side is handy as well and wraps arround a BBitmap, as BitmapBuffer did before.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13297 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3dcb3b079ab645a90859eba6505cf2692c291138 23-Jun-2005 Stephan Aßmus <superstippi@gmx.de>

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


# 550d6a53752c94858a712b581a56f66bc6696fe8 17-Jun-2005 DarkWyrm <darkwyrm@gmail.com>

Cleanup for decorator management code
Updated a couple headers
Moved all decorator code to ServerApp where it belongs
Modified AppServer::Broadcast to allow ServerApps send messages to all apps without having to have a global AppServer instance


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13204 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


# d593ad8f06534e5366cfbb22734d3c139f3c6e1f 25-May-2005 Stephan Aßmus <superstippi@gmx.de>

added a little debugging facility for printing on-screen debugging info on Haiku. For those like me without serial debugging... also made RootLayer use the desktop background color.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12819 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9bdb0522c19c1f779f8e5c56e8faa4a749800cff 12-May-2005 Stephan Aßmus <superstippi@gmx.de>

Implemented BFont::GetEscapments() float version. It is pretty rough yet, but appears to handle UTF8 correctly. The optional escapement_delta is currently ignored. I didn't touch other functionality too much, until I know more about it.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12645 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 387242437d609758b595b6565da8dfb7cbb9bf51 18-Apr-2005 Stephan Aßmus <superstippi@gmx.de>

moved more old stuff which isn't used anymore

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12439 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3dea4bb659457b495b7ed9ca66168426a162312c 18-Apr-2005 Stephan Aßmus <superstippi@gmx.de>

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


# b176b6b4936be2f53eb29bc63c5f6ff2be44d153 12-Apr-2005 Stephan Aßmus <superstippi@gmx.de>

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


# 8940f93c1d5bce994b062b866fe230c5fa8517e1 01-Apr-2005 Stephan Aßmus <superstippi@gmx.de>

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


# d19337ad86e0cb5a05b9b838671463191c2eb65a 29-Mar-2005 Axel Dörfler <axeld@pinc-software.de>

The previous change overwrote the $defines variable, although both defines should
be there at the same time.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12133 a95241bf-73f2-0310-859d-f6bbb57e9c96


# da4526cdcf34a8821a2684f3c77fd2fcf6e832d1 29-Mar-2005 Michael Lotz <mmlr@mlotz.ch>

TEST_MODE is now disabled on Haiku too. So app_server is not a BApplication anymore and doesn't depend on itself.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12132 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9c59f2f20706f9dd94a6a18d4f5143c8b33efca4 29-Mar-2005 Stephan Aßmus <superstippi@gmx.de>

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


# b2c9e18270670bd93366ef512cb5c190af111a94 29-Mar-2005 Michael Lotz <mmlr@mlotz.ch>

Accelerant based implementations of HWInterface and RenderingBuffer. Untested.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12123 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 82aa535b3f68167994db9d6fce8af9011ce44b4c 29-Mar-2005 Axel Dörfler <axeld@pinc-software.de>

Updated app_server Jamfile to be able to build a server that runs under Haiku
if $TARGET_PLATFORM requires this.
Note, "jam app_server" for R5 did not work for me before and does not work now
although the number of errors are reduced - whoever knows the requirements for
the app_server under R5 better than me, please fix this.
Added the app_server as well as some more drivers to the Haiku HD image. Since
RUN_WITHOUT_APP_SERVER is still defined, it won't work correctly, though.
For the time being, you need to manually alter this and the Bootscript in order
to run it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12121 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 55a56d8b0ef040c2aca9e2501596899dcc0375be 28-Mar-2005 Stephan Aßmus <superstippi@gmx.de>

added fake_input_server.cpp to the build

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12086 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1b52d7cf9c2583adfe7daa3abe2e3371e3a73c20 26-Mar-2005 Stephan Aßmus <superstippi@gmx.de>

include my new stuff in the build

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12054 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 80141c9fc5007af91f61106ca2dbf3ba1ffe0138 25-Mar-2005 Stephan Aßmus <superstippi@gmx.de>

libagg is now build as static

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12013 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a850bd1d8fa6d2145da7b0d977b7c6fee956fa15 25-Mar-2005 Stephan Aßmus <superstippi@gmx.de>

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


# 3ddd2fc70f99edb5ea8d1b31dd180362489798a9 25-Mar-2005 Stephan Aßmus <superstippi@gmx.de>

started to move files arround for better source structure, app_server still builds and runs fine, in case you were worried...

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11988 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 10612543aa079b62c4d5a48ecf42e92829878d67 25-Mar-2005 Stephan Aßmus <superstippi@gmx.de>

step 3, exracted code from DisplayDriver into DisplayDriverImpl, adjusted the existing implementations to derive from the new class, got rid of some "friend" stuff along the way, essentially I made room for the new Painter based DisplayDriver implementation.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11986 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


# 13b81f062ea7eca49f6451c6d9f6ddd36e52c77b 24-Mar-2005 Axel Dörfler <axeld@pinc-software.de>

Removed old app_server files. server/ will be moved on layer up next.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11970 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a3d04b0ebc49a86611796e556fad642ef510e0e6 20-Jan-2003 DarkWyrm <darkwyrm@gmail.com>

Tweaked AccelerantDriver to utilize recent DisplayDriver changes
Added a number of new files to server
app_server now included in the build


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2524 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 54b288ebda600cb2a8f07ae80d0bc50b4517527b 06-Nov-2002 DarkWyrm <darkwyrm@gmail.com>

Added prototyp #7 and test application to tree.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1862 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b01bedd5743de6c9de8bc6e99cd57022539c155f 10-Jul-2002 Ingo Weinhold <ingo_weinhold@gmx.de>

This brings the app server proto6 into the game. It doesn't compile completely though and I don't even know, if all the stuff in the subdirs is really needed. DarkWyrm?


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@48 a95241bf-73f2-0310-859d-f6bbb57e9c96