History log of /haiku/headers/private/app/ServerProtocol.h
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>


# 241f109c 01-Nov-2022 Máximo Castañeda <antiswen@yahoo.es>

View: provide the transform between different coordinate spaces

There's currently no way for an application to convert between view and
drawing coordinates with a drawing states stack without keeping track of
all the transformations itself, which is not very convenient for helper
or library functions.

Handle other spaces too, for good measure.

Change-Id: Ic8404a1c111e273fff1eebf2f9f59f58246b796c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5775
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 06ed32b8 05-Oct-2020 Jérôme Duval <jerome.duval@gmail.com>

BCursor: add a constructor with bitmap and point

* enhancement #15169
* get_mouse_bitmap(): also reads the colorspace from app_server.
* docs and tests

Change-Id: Iba63f8a2789530ae596c30b92f14828f31761d98
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3292
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 629397f2 01-May-2019 François Revol <revol@free.fr>

Add basic support for loading ControlLook add-ons

app_server just passes the add-on path around.

Maybe we should make sure the add-on can be loaded when setting it.

Change-Id: I3acd3299782a22c1666bd5435dbf3d8053e359fa
Reviewed-on: https://review.haiku-os.org/c/1430
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 3a2b67b5 21-Nov-2017 Adrien Destugues <pulkomandy@pulkomandy.tk>

Support for configuring screen backlight

Accelerant interface:
Introduce new hooks B_SET_BRIGHTNESS and B_GET_BRIGHTNESS. Brightness is
a float in the 0..1 range.

App_server:
Forward brightness things between BScreen and the accelerant.

intel_extreme:
Implement the hooks. Note that this only works for laptop panels, but
the driver will pretend to support it in other cases as well.

Screen preferences:
If the accelerant supports the B_GET_BRIGHTNESS hook, allow to set
brightness with a slider. Otherwise, the slidere is hidden and these
changes aren't visible.


# 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>


# 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>


# 25dbf74b 10-Nov-2015 Julian Harnath <julian.harnath@rwth-aachen.de>

BView: add methods for affine translation/scaling/rotation

* BView::TranslateBy(), BView::ScaleBy() and BView::RotateBy()
allow to conveniently modify the current affine transformation.
This makes it unnecessary to first read the current transform,
modify it, and then set it again.
Uses the new Pre...() methods of BAffineTransform.

* Also, remove setting the transform "through" to the BView even
while recording a BPicture, as this now results in transforms
being applied more than once.


# 4bd6f322 09-Nov-2015 Julian Harnath <julian.harnath@rwth-aachen.de>

app_server/Interface Kit: add new clipping API

* Add new clipping API for rectangles (ClipToRect, ClipToInverseRect)
and shapes (ClipToShape, ClipToInverseShape)

* Works with affine transforms and automatically switches from fast
region-based clipping to alpha-mask based clipping as necessary.

* Always self-intersecting, i.e. no state push required to further
narrow down the clipping region. All of the 4 new methods can be
mixed in any order.


# e3d73948 15-Aug-2015 Julian Harnath <julian.harnath@rwth-aachen.de>

app_server: fix test-app_server for launch_daemon changes

* Make test-app_server work again in a launch_daemon environment

* test_registrar gets a separate signature and port name again so the
host system can distinguish it from the system registrar

* AppServer is normally a BServer now, however, there can't be two
BApplications in one team. A class TestServerLoopAdapter is added,
which becomes the base class of AppServer instead of BServer when
compiling for libbe_test. It's an adapter class which looks towards
AppServer as it if was a BServer, but internally it is derived from
MessageLooper (like the old AppServer before the transition to
BServer).

This way, AppServer can stay a BServer in normal builds and it also
avoids having to use too many #ifdefs to distinguish the two
versions.


# 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.


# 06e0f807 06-Jul-2015 Axel Dörfler <axeld@pinc-software.de>

registrar: Fixed app_server detection.

* This also fixes the shutdown process, as the registrar no longer
kills the app_server.
* Removed SERVER_PORT_NAME definition as it has no use anymore.


# eb431663 11-Mar-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

app_server & interface kit: support fill rules.

* BView gets SetFillRule/FillRule methods. The fill rule is part of the
view state.
* The B_NONZERO rule is the default. This is what we implemented before.
* The B_EVEN_ODD rule is the other common possibility for this, and
we need to support it to help WebKit to render properly.


# a6db6bd4 04-Feb-2014 Stephan Aßmus <superstippi@gmx.de>

Added WIP support for affine transformations to BViews.

Everything untested, but compiles, so it must work. The idea is to introduce
BAffineTransform additionally to the existing Origin and Scale properties of
BViews. One may use it in parallel or as an alternative. Painter in app_server
is not yet aware of the additional transformation. It is however already used
to transform drawing coordinates. It probably needs to work differently,
perhaps only in Painter and AGGTextRenderer.


# 59347b7f 13-Aug-2012 Ryan Leavengood <leavengood@gmail.com>

Reverse the meaning of BWindow fShowLevel to match BView.

This also matches the client_window_info.show_hide_level field used in Deskbar
and other applications.

While doing this, keep fShowLevel fully in sync between BWindow and app_server,
use one message type for both hiding and showing, and make the decision to show
and hide the window in the app_server.

Lastly make minimize behave as described in the Be Book: hidden windows cannot
be minimized, and minimized windows which get hidden become unminimized.


# 8e2140fa 29-Apr-2012 Axel Dörfler <axeld@pinc-software.de>

Fixed a large client side memory leak for app_server memory.

* The areas allocated for BBitmaps were never deleted, even though the
app_server deleted its part when the memory got freed.
* This resulted in a constant memory increase if the application in question
would operate on many changing large bitmaps, like photos.
* Since the bitmaps are reference counted, we don't actually know when to delete
the areas, so that the app_server now notifies the client whenever that is
possible.
* This might fix #6824.


# 5dbc26dc 21-Jan-2012 czeidler <haiku@clemens-zeidler.de>

Add AS_RECONNECT_BITMAP to the server protocol.


# e3feb1f8 23-Nov-2010 Axel Dörfler <axeld@pinc-software.de>

* Added a new AS_DUMP_BITMAPS command.
* Extended app_server_debug command to be able to send it, too.


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


# 1d219b3a 15-Nov-2010 Axel Dörfler <axeld@pinc-software.de>

* Added AS_DUMP_ALLOCATOR command that dumps an applications memory allocator to
the syslog/serial output.
* Added app_server_debug command that currently just sends this command to the
specified teams.


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


# c0494bc5 17-Aug-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Add facility to communicate with the desktop listener over an app server link. The ServerWindow dispatch the message to the DesktopObservable which dispatch it to the correct listener.



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


# 33394b85 16-May-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by Wim van der Meer: Added get_mouse_bitmap() global method to
InterfaceDefs.h and corresponding implementation in the app_server. Thanks a
bunch! Closes ticket #5978.

A note to those using "update-all" with hybrid builds - the alternative GCC
system libs will not be updated this way, and this and Wim's last patch
change the libbe <-> app_server interface. You need to manually update the
respective libbe.so, or do a clean build, otherwise apps for the other GCC will
not start anymore.


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


# 1c73ffa1 14-May-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by Wim van der Meer: Implemented global Interface Kit function to retrieve
the current mouse position and pressed buttons. I've changed the return code
to status_t and added anal error checking, most of the rest of the file is not
doing it, though... :-) Thanks, Wim!


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


# 77e5acc0 15-Mar-2010 Stephan Aßmus <superstippi@gmx.de>

* Extended the BView drawing API by a DrawString() version that takes an array
of locations, one for each glyph.
* Added a test for the new functionality.


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


# e59dc33e 07-Mar-2010 Stephan Aßmus <superstippi@gmx.de>

* Added BCursorID enumeration in App Kit's Cursor.h and new constructor which
takes such an id.
* Reused the existing mechanism to to have hardcoded tokens for the system
cursors, i.e. removed cursor_which enumeration from ServerProtocol.h and
used BCursorID where cursor_which was previously used.
* Reworked CursorManager.h and CursorSet.h accordingly and removed some methods
that where intended to replace system cursors with client cursors, since
those would break the reference counting and forget to maintain the cursor
list.
* Replaced the cursors in CursorData.h/cpp with the new ones I just designed.
* Removed HaikuSystemCursor.h and HaikuLogo.h from the source, as those are/were
no longer used.

I hope I will not get too much beating for this one... :-) I know the new
default cursor is slightly larger, but I believe the old one was just too small.
Also I noticed that the cursor may be slightly too dark, at least the old one
seems noticeably brighter when compared side by side (the new one has a slight
gradient). That is something I may correct at least. Otherwise I hope nothing
is broken, I've tested in QEMU and so far everything works as intended.


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


# 15fe75b9 24-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* Added a protocol version field to AS_GET_DESKTOP. This should be bumped after
incompatible releases, and makes sure clients using the old libbe.so will be
rejected.


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


# 926e63c8 22-Oct-2009 Brecht Machiels <brecht@mos6581.org>

* added click to focus mouse mode; right-click for bring-to-front and send-to-back
(might cause some regressions in FFM)
* made accept first click user configurable
* updated the Mouse preflet to use the layout kit
* removed the warp and instant warp modes from the Mouse preflet
* changed internal representation of mouse modes (warp modes moved)
* coding style fixes



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


# 9fe35223 26-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* BWindowScreens had no sychronization mechanism whatsoever - since the
workspace activation message was asynchronous, whether or not the
BWindowScreen stopped drawing in time was pure luck (this also caused crashes
with the VESA driver, as that one unmaps its frame buffer during mode switch).
Introduced a new AS_DIRECT_SCREEN_LOCK protocol for this.
* In the long term, we should let BWindowScreen use the same mechanism as
BDirectWindows, though.
* Removed superfluous locking in BDirectWindow::_InitData().


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


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

* Added a new AS_GET_SCREEN_FRAME function, as getting the frame via
AS_SCREEN_GET_MODE won't work with multi-screen support anymore, and is also
more overhead than needed.


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


# 2c69b5b6 19-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* Made the libbe_test environment basically working under Haiku - to actually
make it work, one would need to use versioning for all libbe symbols. This is
worth an 8k price per file that links against libbe.so, so I didn't want to
commit this as is. An alternative to this solution would be to write a
separate application that is responsible for the app_server's window. Comments
welcome.
* Removed BeOS compatbility of the libbe_test stuff.
* Renamed the libbe_test targets from *haiku* to *test*, ie. libbe_haiku.so is
now called libbe_test.so, haiku_registrar is now test_registrar, etc.
* This also removes BeOS compatibility from tracker/FSUtils.cpp (all BeOS
compatibility should be removed, but I don't want to make Alexandre more work
in his branch, and it's not urgent at all).
* Replaced the former "run" scripts for the test environment with a single
run script (see updated NOTES file).
* Removed the libbe_test target from some applications - this was only to help
developing them under BeOS, and is thus no longer necessary.


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


# 69f9a367 29-Jul-2009 Axel Dörfler <axeld@pinc-software.de>

* The app_server no longer uses workspace counts internally, but only columns,
and rows.
* set_workspace_count() now uses the logic formerly found in
WorkspacesView::_GetGrid() to determine the layout.


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


# 47d9ed62 27-Jul-2009 Axel Dörfler <axeld@pinc-software.de>

* Added AS_GET_WORKSPACE_LAYOUT to get the number of columns/rows of the
workspaces.
* Added shortcuts Ctrl-Alt-{Left|Right|Up|Down} to switch to adjacent
workspaces.


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


# 19e179ca 19-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

* Moved the implementation of SetViewCursor from the thread of the
window of the view into the application thread. This solves the
race condition with asynchronous SetViewCursor and deleting the
cursor immediately afterwards for real.
* The ServerApp now requires a reference to the current cursor,
just in case...
* Added TODOs for caching the BView token, it's currently resolved
for every single BView call that talks to the server... not good!


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


# 5d62f8e0 20-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

Make it possible to properly use operator= on BCursors by making sure the
reference counting is maintained correctly in the app_server. While reviewing
this code, I have my doubts that my previous solution for handling pending
SetViewCursor() calls is always working as it is intended.


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


# 0a3f410f 16-Nov-2008 Axel Dörfler <axeld@pinc-software.de>

* Added a Desktop::BroadcastToAllWindows() method that sends all ServerWindows
a message.
* The DesktopSettings class is now using that to send the new
AS_SYSTEM_FONT_CHANGED message to all windows.
* The ServerWindow now propagates font changes to its decorator, causing it
to update its drawing. That means changing the bold font in the "Fonts"
preferences application will instantly change all window titles.
* Factored out a _RebuildAndRedrawAfterWindowChange() out of several Desktop
methods, simplifying some code.
* The DefaultDecorator no longer calls _DoLayout() twice (through SetLook()),
but instead calls the new _UpdateFont() method now also called by
FontsChanged(), and SetLook().
* BWindow::GetDecoratorSettings() now also includes "tab frame" BRect with the
exact footprint of the tab, allowing apps to know the size of the tab to
position itself accordingly.
* Automatic white space cleanup.


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


# 991547ef 14-Oct-2008 Stephan Aßmus <superstippi@gmx.de>

Patch by Artur Wyszynski:
* Implemented BGradient, BGradientLinear, BGradientRadial,
BGradientDiamond, BGradientConic and BGradientRadialFocus
new Interface Kit classes.
* Implemented all the (AGG-based) backend necessary in
the app_server to render gradients (Painter, DrawingEngine)
* app_server/View can convert a BGradient layout to screen
coordinates.
* Added BGradient methods of the Fill* methods in BView.
* Implemented a test app and added it to the image as a
demo.
* Adopted Icon-O-Matic and libs/icon in order to avoid
clashing with the new BGradient class. Re-use some
parts where possible.

Awesome work, Artur! Thanks a lot. Now a more modern
looking GUI has just become much easier to implement! :-)

TODO:
* Remove the need to have gradient type twice in the
app_server protocol.
* Refactor some parts of the patch to remove duplicated
code (Painter, DrawingEngine).
* Adopt the BPicture protocol to know about BGradients.
* Review some parts of the BArchivable implementation.


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


# ae0606be 12-Aug-2008 Axel Dörfler <axeld@pinc-software.de>

* Added two more private InterfaceDefs functions: get_application_order(), and
get_window_order() will retrieve the application respectively window order
on the selected workspace.
* Moved private BeOS compatible functions (as used by the Deskbar) into the
private WindowInfo.h header.
* Whitespace cleanup.


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


# 59e13a3f 03-Aug-2008 Stephan Aßmus <superstippi@gmx.de>

Patch by Andrej Spielmann (GSoC):
* Simplified the subpixel related methods for the AGG "pixel format" template
interface, the ones for the solid cover simply pass through the existing
methods, so only one subpixel blending function is left which does the actual
work (this removes a lot of the previously added code)
* Implemented a new rasterizer based on the original AGG rasterizer which
implements subpixel anti-aliasing for any generic AGG vector pipelines. It
is now optionally used in Painter and AGGTextRenderer (for vector fonts, ie
rotated, sheared or big enough fonts) depending on the global subpixel
setting.
* Put all subpixel variables into the new GlobalSubpixelSettings.h|cpp
* Simplified DesktopSettings related classes a bit and renamed previous
FontSubpixelAntialiasing to just SubpixelAntialiasing.
* The private libbe functions for subpixel related settings moved from Font.cpp
to InterfaceDefs.cpp where other such functions live. They are not related
to fonts only anymore.
* Removed the subpixel related settings again from the Fonts preflet and added
them to the Appearance preflet instead.

All of the above implements subpixel anti-aliasing on a global scale, which
to my knowledge no other OS is doing at the moment. Any vector rendering
can optionally use subpixel anti-aliasing in Haiku now. The bitmap cached fonts
are still affected by the Freetype complile time #define to enable the patented
subpixel rasterization (three times wide glyphs). Vector fonts and shapes are
not affected though at the moment.



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


# b09e2f6f 10-Jul-2008 Stephan Aßmus <superstippi@gmx.de>

Patch by Andrej Spielmann (GSOC):
* Extend the app_server protocol by configuration options to turn
subpixel font rendering on/off and also make the glyph hinting optional
(aligning of glyph shapes to the pixel grid).
* Implement the setting in the app_server and also handle the persistency.


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


# a2e19c60 03-Jun-2008 Axel Dörfler <axeld@pinc-software.de>

This should have been part of r25793.


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


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

Renamed all *LAYER* constants to *VIEW*.


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


# c2784486 15-Oct-2007 Axel Dörfler <axeld@pinc-software.de>

* Introduced a monitor_info structure and means to let it be filled by the
accelerant (or the app_server via EDID info). It's still experimental
API, and opinions are welcome.
* Moved BPrivateScreen into the BPrivate namespace.
* Rewrote Screen.h.
* Introduced a BScreen::GetMonitorInfo() method, and implemented it in the
app server as well (ie. AS_GET_MONITOR_INFO).


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


# 94a48ae2 04-Aug-2007 Stephan Aßmus <superstippi@gmx.de>

* use a different message code for DrawString() with escapement delta
and DrawString() without
* this change also includes adding the penlocation to the shape to-screem
coordinate conversion (temporarily breaks shape rendering, will be fixed
in next commit)


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


# 38287e02 22-Jul-2007 Stephan Aßmus <superstippi@gmx.de>

* completed my changes to DrawState handling, the current DrawingState
of the active ViewLayer is now always mirrored in the Painter instance
of a ServerWindow, so that it doesn't need to be synced on every drawing
command, this was previously incomplete for font handling
* removed the DrawState parameter from all the DrawingEngine functions
* adjusted ServerWindow and ServerPicture accordingly
* made sure that string related functions used by non-drawing related
parts (ServerApp, Decorator) don't interfere with the current drawing
state
* moved AS_SYNC handling from _DispatchViewMessage to _DispatchMessage,
it is actually a window message and doesn't require fCurrentLayer to
be valid
* fixed bug #1300, fCurrentLayer was not updated when a ViewLayer was
deleted by client request which happened to be fCurrentLayer (I am now
handling it so that the parent becomes the current layer, could be
wrong)
* AGGTextRenderer is no longer using it's own scanline, which should save
a few bytes RAM, the Painter already had such an object
* StringWidth() in AGGTextRenderer is now taking the escapement_delta into
account
* Painter::StrokeLine() doesn't need to check the clipping as much, since
that is already done in DrawingEngine
* if a ServerWindow message is not handled because fCurrentLayer is NULL,
a reply is sent in case the messages needs it (client window could
freeze otherwise, waiting for the reply for ever)
* removed unused AS_SET_FONT and AS_SET_FONT_SIZE
* added automatic RGBColor -> rgb_color conversion to RGBColor.h
* minor cleanup for 80 char/line limit



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


# cf2aeb20 21-Feb-2007 Axel Dörfler <axeld@pinc-software.de>

* Implemented BDragger::{Show|Hide}AllDraggers() and its backend in the app_server.
This fixes bug #242. The value is currently stored in a separate file.
* Removed some unused codes from ServerProtocol.h.


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


# ccf137b8 06-Jan-2007 Axel Dörfler <axeld@pinc-software.de>

BWindow::IsFront() was implemented incorrectly - we actually need to query the
app_server for this; added a new AS_IS_FRONT_WINDOW command for this.
For example, clicking on the menu bar to bring windows to front in FFM mode
does work now.


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


# a06480ef 23-Dec-2006 Ryan Leavengood <leavengood@gmail.com>

Addition of constant used when restarting the input_server within the
app_server. I added it at the end. Feel free to move it to a better spot, if
there is one. Note that putting it in the middle with require recompiling a lot
of things.


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


# 7430a5be 26-Oct-2006 Axel Dörfler <axeld@pinc-software.de>

Removed the superfluous (doubled) AS_MOVEPENTO as well. Also removed those old constants
from the ServerProtocol.h header.


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


# 82584ab9 09-Jun-2006 Axel Dörfler <axeld@pinc-software.de>

* Implemented AS_DIRECT_WINDOW_SET_FULLSCREEN so that it sets kWindowScreenFeel
when enabled, and B_NORMAL_WINDOW_FEEL when disabled. IOW when enabled, no
other windows can interfere.
* Therefore, it's no longer necessary to have the screen_blanker window
use kWindowScreenFeel - it will set its window to full screen as long
as the blanker runs.
* Added a AS_APP_CRASHED notification in the app_server that will remove
all kWindowScreenFeels from the windows of the crashed app.
* This is now used by the debugger to ensure that the debugger alert will
be visible.
* Factored out a DesktopLink class out of the BRoster::_ActivateApp()
method. This class is now also used in the new BRoster::_ApplicationCrashed()
method as used in the debug_server (via BRoster::Private).


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


# b30e9021 24-May-2006 Stephan Aßmus <superstippi@gmx.de>

added a way for BWindow to store and restore arbitrary decor settings,
currently those include only the tab location


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


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

Finally removed SERVER_{TRUE|FALSE} and lots of other unused constants from ServerProtocol.h.


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


# 21c8c925 22-Apr-2006 Axel Dörfler <axeld@pinc-software.de>

* With Rudolf's information about relocating overlays, I changed the way memory
is managed for those bitmaps:
- the shared client memory mechanism is used to allocate a small overlay_client_data
structure that contains the actual buffer and a semaphore that you have acquire in
order to access it.
- LockBits()/UnlockBits() now have a function: you need to call them before accessing
the overlay buffer, and you need to keep that lock until you're done with it.
* The overlay cookie is now an extra member of the ServerBitmap class.
* Removed fInitialized from ServerBitmap - IsValid() now just checks the buffer associated
with the bitmap.
* ViewLayer::Draw() will now handle overlay bitmaps specially and will draw the overlay
color instead of any contents (this is currently in ugly pink, but will become some
dark color later on).
* All what's missing from actually being able to use overlays now is to configure
them so that they are shown on screen. VLC will now show an empty pink window when
overlay video is enabled.


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


# 37b502f2 21-Apr-2006 Axel Dörfler <axeld@pinc-software.de>

Implemented some more overlay support - the overlay bitmap is now allocated
via the graphics driver (but not yet shown on screen).
I probably got the meaning of the "overlay count" wrong - I guess that you
can allocate any number of overlay bitmaps, but can only see "overlay count"
on screen at a time (right now, I only allow to create "overlay count" bitmaps).
Stephan?


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


# 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


# bfe69873 28-Feb-2006 Axel Dörfler <axeld@pinc-software.de>

* Implemented private do_window_action() function, used by the Deskbar to bring
windows to front (or minimize them).
* Desktop::ActivateWindow() no longer crashes in case the window to be activated
is not on the current workspace - instead, it doesn't do anything at this
point. IOW it doesn't handle workspace activation at all, yet.
* Renamed ServerWindow::GetWindowLayer() to ServerWindow::Window().


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


# 62b5f42b 16-Feb-2006 Axel Dörfler <axeld@pinc-software.de>

* Fixed view deletion: _CreateSelf() and RemoveSelf() are now symmetrical, removing
all those error output from the app_server.
* AS_LAYER_DELETE now gets a token, no longer frightening choice of parent.
* Removed locking in RemoveChild(); it has to be called locked now.
* Removed AS_LAYER_DELETE_ROOT as it's no longer needed.
* Removed support from BView for being PR3 compatible.


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


# f877af82 09-Feb-2006 Axel Dörfler <axeld@pinc-software.de>

* Implemented private functions do_minimize_team(), and do_bring_to_front_team()
used by the Deskbar (for "Hide All" and "Show All"). The latter doesn't work
correctly yet, though, it just maximizes all windows of that application.
* Added a TODO to ServerWindow AS_MINIMIZE_WINDOW on how to make it work correctly.


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


# 995ab7b3 09-Feb-2006 Axel Dörfler <axeld@pinc-software.de>

The server now differentiates between hidden and minimized - that concept somehow
got lost, before.
It might not work 100% correctly yet, but it works good enough to hide the Tracker
status window from the Deskbar, and thus, fixing bug #133.


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


# aa1f5437 05-Feb-2006 Axel Dörfler <axeld@pinc-software.de>

Some work on cursors:
* Fixed a myriad of bugs all over the place, ranging from locking errors to
deleting objects that don't belong to the one deleting them (hello HWInterface!)
* Almost all ServerWindow cursor stuff was broken; I've replaced all commands
to set a cursor with a single one AS_SET_CURSOR.
* Renamed some cursor commands.
* Changed the (broken) way ServerApp::fAppCursor was maintained - the application
cursor is now NULL as long as possible.
* Removed superfluous ServerCursor app signature stuff.
* The BApplication will no longer duplicate the default/I-beam cursors, it will
just reuse the default ones which now have fixed tokens.
* As a result, changing the cursor is now working as expected, closing bug #102.
* Rewrote Cursor.h, renamed private members to match our style guide.
* Minor cleanup.

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


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


# 8f3f25cf 03-Jan-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Merged the four AS_LAYER_DRAW_BITMAP handlers into just one handler

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


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

Renamed AS_LAYER_GET_{DRAW|BLEND}_MODE to *_{DRAWING|BLENDING}_MODE.


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


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

Renamed BView::_SetViewImage() to _SetViewBitmap(), and AS_LAYER_SET_VIEW_IMAGE
to AS_LAYER_SET_VIEW_BITMAP.


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


# 66080bed 25-Dec-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Sorry for breaking the build

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


# 700b38ed 20-Dec-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Started porting WindowScreen to haiku

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


# ab6a6bed 10-Dec-2005 Axel Dörfler <axeld@pinc-software.de>

* Renamed direct window commands
* Removed unused cruft from ServerProtocol.h


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


# fc70d6db 10-Dec-2005 Axel Dörfler <axeld@pinc-software.de>

* Renamed AS_LAYER_INVAL_{REGION|RECT} to *_INVALIDATE_*.
* Removed unused AS_LAYER_INVALIDATE.


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


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

* BWindow::AddToSubset()/RemoveFromSubset() no longer send their team ID; this
is known by the server, anyway.
* B_MODAL_SUBSET_WINDOW_FEEL now also works as expected.
* Renamed AS_REM_FROM_SUBSET to AS_REMOVE_FROM_SUBSET.


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


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

Added a very simple "code_to_name" utility that will print out the name of
an app_server code. It's always up-to-date as it just reads the header
directly.


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


# 6450b76d 23-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

Next big step in the event handling:
* RootLayer's mouse event processing is now at its minimum - the
EventDispatcher handles them now. As a result, a window will now
get only one message per event.
* RootLayer adds "_view_token" to mouse moved messages that specify
the view currently under the cursor.
* There is now a mouse event layer in RootLayer that gets preferred
when it's set - this is now used for the window moving instead of
the previous mechanism.
* changed the previous DistributeMessage() to an UnpackMessage()
method following Adi's suggestion.
* caveat: some things might be functionally broken in RootLayer now
because of removing the mouse notification stuff.
* "be:transit" handling is now done completely client side by
BWindow::_SanitizeMessage(() (similar to what the input_server does).
This should also make the mechanism pretty robust, since every
B_MOUSE_MOVED message can now trigger the view transit (in case a
message is lost). B_WINDOW_ACTIVATED messages should be generated
client side as well.
* renamed AS_LAYER_GET_MOUSE_COORDS to AS_GET_MOUSE as it's not a
layer specific command, and also gets the mouse buttons.
* B_MOUSE_* messages from the up server now contain only a "screen_where"
field; "where" (in window's coordinates) and "be:view_where" are
added in BMessage::_SanitizeMessage().
* messages that don't have a valid target in the looper are now
dropped instead of being sent to the looper - this should be done
in BLooper as well, though.


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


# 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


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

* Prepared the BScreen and BPrivateScreen class to be used with multiple monitors.
* BPrivateScreen now buffers its frame for 0.1 seconds (so that calling it several
times in a row is both consistent and cheap).
* Added GetFrameBufferConfig() call to the HW interface (and implemented it).
* Added server commands AS_VALID_SCREEN_ID, AS_GET_NEXT_SCREEN_ID, and
AS_GET_FRAME_BUFFER_CONFIG.
* BPrivateScreen::BaseAddress() and BPrivateScreen::BytesPerRow() are now working.
* minor cleanup.


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


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

* Forgot to update Screen.h with the last commit...
* Introduced and implemented AS_GET_SCREEN_ID_FROM_WINDOW - it only returns B_MAIN_SCREEN_ID,
though.
* renamed ServerWindow::fHandlerToken to fClientToken.
* The BScreen(BWindow *) constructor now really asks the server for the screen ID.
* ServerApp::fWindowList is now a BObjectList.


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


# 2b7b3ade 11-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

Added more or less empty "begin/end transaction" handling in ServerWindow.
Right now, only the updates are disabled as a start. I am not sure what else
we can do here, but there probably is something :-)


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


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

Introduced and implemented new font command AS_GET_DEFAULT_SYSTEM_FONT that returns
the default fonts of the app_server.
Moved some font command implementations around to group them a bit better.


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


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

* The font list is now cached client-side. The app_server is only queried for
updates.
* Optimized retrieving the font list from the server.
* This greatly simplifies the app_server communication for getting the font
list as well - there are now only 2 commands instead of 6.
* Moved extra font flags creation from ServerApp to FontStyle::Flags().


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


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

More font work:
* Simplified server communication a bit: instead of separate queries for font
direction, "is fixed", ... there is now a private extra flags field that is
filled on demand.
* The server command names now describe what the command does, and are not simply
named after the BFont method (AS_SET_FAMILY_AND_STYLE vs. AS_GET_FAMILY_AND_STYLE_IDS).
* Replaced B_SET_SYSFONT_{PLAIN|BOLD|FIXED} with a single B_GET_SYSTEM_FONTS.
* Rewrote Font.h and added our license.


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


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

* Added and implemented AS_GET_FONT_FILE_FORMAT - currently, it returns always
B_TRUETYPE_WINDOWS, though.
* possibly returned an uninitialized error code in some BFont methods.


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


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

More font work:
* simplified BFont::SetFamily*() server communication - there is now only
AS_SET_FAMILY_AND_STYLE left, but at least that one works correctly.
* BFont::fFace is now always updated correctly.
* Moved the fFace masking to the server - BFont doesn't know enough to do
this correctly, anyway.
* Only one version of get_font_style() worked correctly.
* Font family/style ID and index were used completely mixed up - this
would have become an issue as soon as the font list changes during
runtime.
* Enabled AS_GET_FONT_DIRECTION again - missing functionality should only
be taken into account on lowest level as long as it can be emulated.
* Made FontServer a bit clearer to use (more to come).
* fixed several allocation leaks in the font server communication.
* New FontStyle::Direction() method, that currently only returns
B_FONT_LEFT_TO_RIGHT, though.
* more cleanup.


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


# 70a4b5ce 24-Oct-2005 Adi Oanca <adioanca@nowhere.fake>

We don't need those message codes anymore.

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


# af86ce75 24-Aug-2005 Jérôme Duval <korli@users.berlios.de>

copyright update


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


# 2b1263be 24-Aug-2005 Jérôme Duval <korli@users.berlios.de>

reworked BFont::GetStringWidths and BFont::StringWidth
implemented BFont::GetEdges


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


# feee8cf2 28-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added client side implementation of BDirectWindow (haiku). I hope I didn't break the build on Dano. If it's the case, please tell me.

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


# 770c05d6 25-Jul-2005 Axel Dörfler <axeld@pinc-software.de>

The Desktop class now gets its own message processing loop: moved application
creation/deletion (and management) over to that class.
ServerApp now gets a desktop pointer, and no longer uses gDesktop.
Converted private MessageLooper::_MessagePort() to a public method MessagePort()
so that the looper can be addressed from elsewhere without using PostMessage().
Added a real basic message loop to MessageLooper::_MessageLoop().
BApplication now only asks the app_server to get its desktop object which should
now be used for everything that's not in the realm of the application.


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


# 18b5424c 24-Jul-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

* Implemented BRoster::ActivateApp().
* Added the respective case statement in AppServer::DispatchMessage().
The code that actually activates the app is still missing.
* Removed the remnants of the old way of notifying the registrar about
what app got activated (the activated client window did that).



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


# 16046321 13-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Implemented BPrivateScreen::ReadBitmap(), but the guts are still missing

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


# 2b1246d9 05-Jul-2005 Axel Dörfler <axeld@pinc-software.de>

Renamed AS_WINDOW_TITLE to AS_SET_WINDOW_TITLE.
Fixed handling in ServerWindow as stippi's latest commit broke it.
It's now properly done with a separate ServerWindow::SetTitle() method,
that will also take care to rename the window's thread.
Changed naming the window thread in the app_server to "w:<team>:<title>".


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


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

Implemented get_token_list() and get_window_info() client side.


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


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

MenuField layouts the menu bar better with respect to fDivider, it aligns better with other controls. fDivider in TextControl is an integer number now, small fix and small cleanup in Menu, Window::InitData takes an optional BBitmap token to construct an offscreen window, fixed PrivateScreen IndexForColor, View prevents being located at fractional coordinates as in R5, BBitmap unlocks its offscreen window since it is never Show()n and needs manual unlocking, fixed Slider offscreen window mode and improved triange thumb drawing, ScrollView would not crash when passing a NULL target just for kicks, the private MenuBar class now implements Draw to draw itself a little differently inside the BMenuField (dark right and bottom side) - though how it currently sets the clipping region prevents the text controls to draw in Playground, needs fixing

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


# 80a230b1 28-Jun-2005 Axel Dörfler <axeld@pinc-software.de>

Rewrote the push/pop state and ViewAttr stuff:
- it now seems to work finally correctly
- renamed ViewAttr to ViewState and put it into the BPrivate namespace
- some refactoring (moved some private BView methods to ViewState)
- renamed AS_LAYER_MOVETO/RESIZETO to *_TO (note the underscore)
- exchanged BView::originX/Y with fParentOffset (BPoint)
- divided AS_LAYER_GET_COLORS into separate ones for high/low/view color
- BView::SetPattern() now actually works as expected (ie. updates
only if necessary)
- exchanged the ViewAttr::flags with ViewState::valid_flags which inverses
the previous logic (which wasn't even used consistently)
- fState was initialized twice (incorrectly by the ViewAttr constructor,
and then again correctly by initCachedState()) - now the ViewState
constructor does the job alone, but correctly
- BView::PushState() no longer resets the state (it did so only locally
anyway...)
- cleanup


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


# 843c11c9 28-Jun-2005 Adi Oanca <adioanca@nowhere.fake>

another message

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


# 876a13d8 27-Jun-2005 Adi Oanca <adioanca@nowhere.fake>

added a scroll message

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


# 55b222b0 25-Jun-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Stephan already implemented the needed support for dpms stuff too, so why not implementing the client methods too?

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


# 75de27f8 25-Jun-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

more BScreen related stuff

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


# c6418981 24-Jun-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

implemented client/server side support for BScreen::GetDeviceInfo() and WaitForRetrace(), and (only client side) support for Bscreen::ProposeMode()

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


# 10c5dab8 18-Jun-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added client side support for BScreen::RetraceSemaphore() and BScreen::GetModeList(). Server side support isn't yet there, though.

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


# 68dcbfb9 15-Jun-2005 Axel Dörfler <axeld@pinc-software.de>

Those commands were used but not defined, obviously some forgot to update this file.


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


# ddf2e6ea 10-Jun-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed unused message codes. Added a TODO item

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


# fda4af26 09-Jun-2005 DarkWyrm <darkwyrm@gmail.com>

Forgot to check this in. Added a code for _set_system_font()


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


# 3ba7d6f3 08-Jun-2005 Axel Dörfler <axeld@pinc-software.de>

Added AS_{GET|SET}_DESKTOP_COLOR.
(Incorrectly) implemented AS_GET_DESKTOP_COLOR - works for now.
Minor cleanup.
Is AS_SET_SCREEN_MODE used at all?


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


# 7475dcdf 07-Jun-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added an app server command to retrieve the color map. Made some adjustments to SystemPalette.cpp, implemented support for it in BPrivateScreen. Moved get_scs() a bit down to avoid a deadlock. Note that getting the colormap doesn't work due to port capacity limit (?)

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


# e8970304 23-May-2005 Adi Oanca <adioanca@nowhere.fake>

Added a new message code. It's for setting mouse event mask

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


# cd0ddd03 07-May-2005 DarkWyrm <darkwyrm@gmail.com>

Added a code for the float version of GetEscapements()


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


# 0405ef35 29-Apr-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added AS_SCREEN_GET/SET_MODE

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


# 99786534 21-Apr-2005 Adi Oanca <adioanca@nowhere.fake>

added AS_ROOTLAYER_DO_CHANGE_WINBORDER_FEEL

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


# 08bd2fdf 10-Apr-2005 Adi Oanca <adioanca@nowhere.fake>

added AS_ROOTLAYER_WINBORDER_SET_WORKSPACES

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


# be94b51d 21-Mar-2005 Adi Oanca <adioanca@nowhere.fake>

Added AS_LAYER_SET_EVENT_MASK

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


# e4365762 18-Mar-2005 Adi Oanca <adioanca@nowhere.fake>

added AS_ROOTLAYER_REMOVE_FROM_SUBSET

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


# e6ed344d 14-Mar-2005 Adi Oanca <adioanca@nowhere.fake>

Oups. Forgot about this one. Added a new message id.


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


# 7bcf57c7 22-Jan-2005 Adi Oanca <adioanca@nowhere.fake>

Another 2 constants


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


# 6c85f3d5 22-Jan-2005 Adi Oanca <adioanca@nowhere.fake>

Added 2 more contants


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


# 855d9d89 21-Jan-2005 Adi Oanca <adioanca@nowhere.fake>

Added two constants for app_server internal communication


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


# 98e22e0b 20-Jan-2005 DarkWyrm <darkwyrm@gmail.com>

Added codes for more BFont methods


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


# 199b0a6a 18-Jan-2005 DarkWyrm <darkwyrm@gmail.com>

Added a code to handle BFont::SetFamilyAndStyle(char *, NULL)


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


# 93e11ddf 18-Jan-2005 DarkWyrm <darkwyrm@gmail.com>

Stupid forgotten header


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


# c26e0fe2 15-Jan-2005 DarkWyrm <darkwyrm@gmail.com>

Added codes to go along with the client-side BFont functions


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


# cd6f0b78 15-Jan-2005 DarkWyrm <darkwyrm@gmail.com>

Added codes to allow for initialization of system fonts


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


# 67e2a74d 13-Oct-2004 DarkWyrm <darkwyrm@gmail.com>

Separated functionality of PortLink into LinkMsg* to avoid some *serious* code duplication


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


# 601a55f3 05-Oct-2004 DarkWyrm <darkwyrm@gmail.com>

Added message codes to support the soon-coming ServerMemIO class


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


# 19185de3 19-Jun-2004 Adi Oanca <adioanca@nowhere.fake>

added AS_CLIENT_DEAD


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


# fb7da50d 13-Oct-2003 DarkWyrm <darkwyrm@gmail.com>

Updates to sync with (hopefully) last messaging protocol tweaks


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


# fe556d69 07-Oct-2003 DarkWyrm <darkwyrm@gmail.com>

Added message code for getting UI colors as a ColorSet


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


# 7507620c 04-Oct-2003 DarkWyrm <darkwyrm@gmail.com>

Tweaked all messaging classes to comply with new message protocol policies
AppServerLink no longer inherits from BSession


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


# 5e69d026 02-Oct-2003 DarkWyrm <darkwyrm@gmail.com>

Moved BSession messaging code to ServerProtocol.h


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


# cb51da76 24-Sep-2003 Adi Oanca <adioanca@nowhere.fake>

added an new message


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


# 46d99be1 17-Sep-2003 DarkWyrm <darkwyrm@gmail.com>

Added message codes for creating and deleting BCursors


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


# f02718d1 16-Sep-2003 DarkWyrm <darkwyrm@gmail.com>

Added message code for supporting the R5 decor easter egg


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


# 3bbe9204 31-Aug-2003 Adi Oanca <adioanca@nowhere.fake>

Added some new messages that are needed by BView


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


# 5407fa5f 25-Jul-2003 DarkWyrm <darkwyrm@gmail.com>

Forgotten files. Oops. :P


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


# a72997e0 14-Jul-2003 DarkWyrm <darkwyrm@gmail.com>

Changes to support system cursors
Moved cursor_which defs to a separate file


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


# 48326bef 10-Jul-2003 DarkWyrm <darkwyrm@gmail.com>

Added message codes for BWindow hook functions


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


# c6decab1 04-Jul-2003 shadow303 <shadow303@nowhere.fake>

Adjust message sizes for added view token


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


# 34259581 22-Jun-2003 shadow303 <shadow303@nowhere.fake>

Add message lengths for some graphics messages, strip out \r characters


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


# 1b739004 17-Apr-2003 DarkWyrm <darkwyrm@gmail.com>

Checkin for Adrian Oanca


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


# 6cfd0263 21-Mar-2003 DarkWyrm <darkwyrm@gmail.com>

Added BPicture definitions


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


# edfec368 19-Mar-2003 ejakowatz <ejakowatz@nowhere.fake>

AS_SET/GET_MOUSE_MODE were missing, which broke the build.


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


# 0eadb1ac 14-Mar-2003 DarkWyrm <darkwyrm@gmail.com>

Checkin for Adrian Oanca - added some BWindow-specific message defs


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


# 15222f63 11-Mar-2003 DarkWyrm <darkwyrm@gmail.com>

Added BBitmap protocol messages


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


# fe67d1c1 24-Feb-2003 DarkWyrm <darkwyrm@gmail.com>

Retooled message defs into something respectable


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


# 99ddcf1a 23-Feb-2003 DarkWyrm <darkwyrm@gmail.com>

Tweaks to support all BApplication-related tasks


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


# 182af733 09-Nov-2002 DarkWyrm <darkwyrm@gmail.com>

Initial checkin of official version of protocol file


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


# 15a22486 09-Nov-2002 DarkWyrm <darkwyrm@gmail.com>

Initial checkin


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


# 06e0f8079fbd47d06d30438d60ea0563af339a1f 06-Jul-2015 Axel Dörfler <axeld@pinc-software.de>

registrar: Fixed app_server detection.

* This also fixes the shutdown process, as the registrar no longer
kills the app_server.
* Removed SERVER_PORT_NAME definition as it has no use anymore.


# eb431663264ef319e72b492801fb867b5d71910b 11-Mar-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

app_server & interface kit: support fill rules.

* BView gets SetFillRule/FillRule methods. The fill rule is part of the
view state.
* The B_NONZERO rule is the default. This is what we implemented before.
* The B_EVEN_ODD rule is the other common possibility for this, and
we need to support it to help WebKit to render properly.


# a6db6bd40fe3492fd3104dba560f0e3ff61d388d 04-Feb-2014 Stephan Aßmus <superstippi@gmx.de>

Added WIP support for affine transformations to BViews.

Everything untested, but compiles, so it must work. The idea is to introduce
BAffineTransform additionally to the existing Origin and Scale properties of
BViews. One may use it in parallel or as an alternative. Painter in app_server
is not yet aware of the additional transformation. It is however already used
to transform drawing coordinates. It probably needs to work differently,
perhaps only in Painter and AGGTextRenderer.


# 59347b7f1bad11b684ce8c6ed594781f5d2eb4e2 13-Aug-2012 Ryan Leavengood <leavengood@gmail.com>

Reverse the meaning of BWindow fShowLevel to match BView.

This also matches the client_window_info.show_hide_level field used in Deskbar
and other applications.

While doing this, keep fShowLevel fully in sync between BWindow and app_server,
use one message type for both hiding and showing, and make the decision to show
and hide the window in the app_server.

Lastly make minimize behave as described in the Be Book: hidden windows cannot
be minimized, and minimized windows which get hidden become unminimized.


# 8e2140fa5eb8a019a5134ce041499d14b7ced7a3 29-Apr-2012 Axel Dörfler <axeld@pinc-software.de>

Fixed a large client side memory leak for app_server memory.

* The areas allocated for BBitmaps were never deleted, even though the
app_server deleted its part when the memory got freed.
* This resulted in a constant memory increase if the application in question
would operate on many changing large bitmaps, like photos.
* Since the bitmaps are reference counted, we don't actually know when to delete
the areas, so that the app_server now notifies the client whenever that is
possible.
* This might fix #6824.


# 5dbc26dc0ac4352b715338c86490d383c6c2f206 21-Jan-2012 czeidler <haiku@clemens-zeidler.de>

Add AS_RECONNECT_BITMAP to the server protocol.


# e3feb1f8afc654158137c5aee869d8e22c892747 23-Nov-2010 Axel Dörfler <axeld@pinc-software.de>

* Added a new AS_DUMP_BITMAPS command.
* Extended app_server_debug command to be able to send it, too.


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


# 1d219b3a253f44d73aa68cd42238d6fa451bb80e 15-Nov-2010 Axel Dörfler <axeld@pinc-software.de>

* Added AS_DUMP_ALLOCATOR command that dumps an applications memory allocator to
the syslog/serial output.
* Added app_server_debug command that currently just sends this command to the
specified teams.


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


# c0494bc592de7d83d2cfea79063b7c90a6a7e780 17-Aug-2010 Clemens Zeidler <clemens.zeidler@googlemail.com>

Add facility to communicate with the desktop listener over an app server link. The ServerWindow dispatch the message to the DesktopObservable which dispatch it to the correct listener.



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


# 33394b856dfc5366693cc81b47885d0bd4facd99 16-May-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by Wim van der Meer: Added get_mouse_bitmap() global method to
InterfaceDefs.h and corresponding implementation in the app_server. Thanks a
bunch! Closes ticket #5978.

A note to those using "update-all" with hybrid builds - the alternative GCC
system libs will not be updated this way, and this and Wim's last patch
change the libbe <-> app_server interface. You need to manually update the
respective libbe.so, or do a clean build, otherwise apps for the other GCC will
not start anymore.


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


# 1c73ffa1021c1426dbce9675256f4f8cdc22bb56 14-May-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by Wim van der Meer: Implemented global Interface Kit function to retrieve
the current mouse position and pressed buttons. I've changed the return code
to status_t and added anal error checking, most of the rest of the file is not
doing it, though... :-) Thanks, Wim!


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


# 77e5acc0d9d737051591e663ccf3376a32bfcf84 15-Mar-2010 Stephan Aßmus <superstippi@gmx.de>

* Extended the BView drawing API by a DrawString() version that takes an array
of locations, one for each glyph.
* Added a test for the new functionality.


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


# e59dc33e215e8ae0a90b051e88c70f8aaff296a0 07-Mar-2010 Stephan Aßmus <superstippi@gmx.de>

* Added BCursorID enumeration in App Kit's Cursor.h and new constructor which
takes such an id.
* Reused the existing mechanism to to have hardcoded tokens for the system
cursors, i.e. removed cursor_which enumeration from ServerProtocol.h and
used BCursorID where cursor_which was previously used.
* Reworked CursorManager.h and CursorSet.h accordingly and removed some methods
that where intended to replace system cursors with client cursors, since
those would break the reference counting and forget to maintain the cursor
list.
* Replaced the cursors in CursorData.h/cpp with the new ones I just designed.
* Removed HaikuSystemCursor.h and HaikuLogo.h from the source, as those are/were
no longer used.

I hope I will not get too much beating for this one... :-) I know the new
default cursor is slightly larger, but I believe the old one was just too small.
Also I noticed that the cursor may be slightly too dark, at least the old one
seems noticeably brighter when compared side by side (the new one has a slight
gradient). That is something I may correct at least. Otherwise I hope nothing
is broken, I've tested in QEMU and so far everything works as intended.


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


# 15fe75b9a0e16762374a6224bb42a121c35c8207 24-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* Added a protocol version field to AS_GET_DESKTOP. This should be bumped after
incompatible releases, and makes sure clients using the old libbe.so will be
rejected.


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


# 926e63c8851f8e1d085981e69ef03f8e9cda1e65 22-Oct-2009 Brecht Machiels <brecht@mos6581.org>

* added click to focus mouse mode; right-click for bring-to-front and send-to-back
(might cause some regressions in FFM)
* made accept first click user configurable
* updated the Mouse preflet to use the layout kit
* removed the warp and instant warp modes from the Mouse preflet
* changed internal representation of mouse modes (warp modes moved)
* coding style fixes



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


# 9fe35223cf4eb9714865152d62e8efc36b327fef 26-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* BWindowScreens had no sychronization mechanism whatsoever - since the
workspace activation message was asynchronous, whether or not the
BWindowScreen stopped drawing in time was pure luck (this also caused crashes
with the VESA driver, as that one unmaps its frame buffer during mode switch).
Introduced a new AS_DIRECT_SCREEN_LOCK protocol for this.
* In the long term, we should let BWindowScreen use the same mechanism as
BDirectWindows, though.
* Removed superfluous locking in BDirectWindow::_InitData().


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


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

* Added a new AS_GET_SCREEN_FRAME function, as getting the frame via
AS_SCREEN_GET_MODE won't work with multi-screen support anymore, and is also
more overhead than needed.


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


# 2c69b5b6c0e7b481a0c43366a1942a6055cbb864 19-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* Made the libbe_test environment basically working under Haiku - to actually
make it work, one would need to use versioning for all libbe symbols. This is
worth an 8k price per file that links against libbe.so, so I didn't want to
commit this as is. An alternative to this solution would be to write a
separate application that is responsible for the app_server's window. Comments
welcome.
* Removed BeOS compatbility of the libbe_test stuff.
* Renamed the libbe_test targets from *haiku* to *test*, ie. libbe_haiku.so is
now called libbe_test.so, haiku_registrar is now test_registrar, etc.
* This also removes BeOS compatibility from tracker/FSUtils.cpp (all BeOS
compatibility should be removed, but I don't want to make Alexandre more work
in his branch, and it's not urgent at all).
* Replaced the former "run" scripts for the test environment with a single
run script (see updated NOTES file).
* Removed the libbe_test target from some applications - this was only to help
developing them under BeOS, and is thus no longer necessary.


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


# 69f9a367bc3ade44eaf73a5b1c51c079acf702cd 29-Jul-2009 Axel Dörfler <axeld@pinc-software.de>

* The app_server no longer uses workspace counts internally, but only columns,
and rows.
* set_workspace_count() now uses the logic formerly found in
WorkspacesView::_GetGrid() to determine the layout.


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


# 47d9ed62d33e873f57fb672e288d0dde706ce354 27-Jul-2009 Axel Dörfler <axeld@pinc-software.de>

* Added AS_GET_WORKSPACE_LAYOUT to get the number of columns/rows of the
workspaces.
* Added shortcuts Ctrl-Alt-{Left|Right|Up|Down} to switch to adjacent
workspaces.


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


# 19e179ca4ff838084b9abb0dd19932ac5fcd0051 19-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

* Moved the implementation of SetViewCursor from the thread of the
window of the view into the application thread. This solves the
race condition with asynchronous SetViewCursor and deleting the
cursor immediately afterwards for real.
* The ServerApp now requires a reference to the current cursor,
just in case...
* Added TODOs for caching the BView token, it's currently resolved
for every single BView call that talks to the server... not good!


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


# 5d62f8e0e50738a4274fbe53d73795809ac7d2c5 20-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

Make it possible to properly use operator= on BCursors by making sure the
reference counting is maintained correctly in the app_server. While reviewing
this code, I have my doubts that my previous solution for handling pending
SetViewCursor() calls is always working as it is intended.


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


# 0a3f410f3040ce58777d262de98229a054e43f10 16-Nov-2008 Axel Dörfler <axeld@pinc-software.de>

* Added a Desktop::BroadcastToAllWindows() method that sends all ServerWindows
a message.
* The DesktopSettings class is now using that to send the new
AS_SYSTEM_FONT_CHANGED message to all windows.
* The ServerWindow now propagates font changes to its decorator, causing it
to update its drawing. That means changing the bold font in the "Fonts"
preferences application will instantly change all window titles.
* Factored out a _RebuildAndRedrawAfterWindowChange() out of several Desktop
methods, simplifying some code.
* The DefaultDecorator no longer calls _DoLayout() twice (through SetLook()),
but instead calls the new _UpdateFont() method now also called by
FontsChanged(), and SetLook().
* BWindow::GetDecoratorSettings() now also includes "tab frame" BRect with the
exact footprint of the tab, allowing apps to know the size of the tab to
position itself accordingly.
* Automatic white space cleanup.


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


# 991547ef6c1fca650f0fba855206296ef54bc441 14-Oct-2008 Stephan Aßmus <superstippi@gmx.de>

Patch by Artur Wyszynski:
* Implemented BGradient, BGradientLinear, BGradientRadial,
BGradientDiamond, BGradientConic and BGradientRadialFocus
new Interface Kit classes.
* Implemented all the (AGG-based) backend necessary in
the app_server to render gradients (Painter, DrawingEngine)
* app_server/View can convert a BGradient layout to screen
coordinates.
* Added BGradient methods of the Fill* methods in BView.
* Implemented a test app and added it to the image as a
demo.
* Adopted Icon-O-Matic and libs/icon in order to avoid
clashing with the new BGradient class. Re-use some
parts where possible.

Awesome work, Artur! Thanks a lot. Now a more modern
looking GUI has just become much easier to implement! :-)

TODO:
* Remove the need to have gradient type twice in the
app_server protocol.
* Refactor some parts of the patch to remove duplicated
code (Painter, DrawingEngine).
* Adopt the BPicture protocol to know about BGradients.
* Review some parts of the BArchivable implementation.


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


# ae0606be749b5b16f3ec706c24bcb488d7f5ac96 12-Aug-2008 Axel Dörfler <axeld@pinc-software.de>

* Added two more private InterfaceDefs functions: get_application_order(), and
get_window_order() will retrieve the application respectively window order
on the selected workspace.
* Moved private BeOS compatible functions (as used by the Deskbar) into the
private WindowInfo.h header.
* Whitespace cleanup.


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


# 59e13a3f06eedbc797f797da71c6810634b22cd4 03-Aug-2008 Stephan Aßmus <superstippi@gmx.de>

Patch by Andrej Spielmann (GSoC):
* Simplified the subpixel related methods for the AGG "pixel format" template
interface, the ones for the solid cover simply pass through the existing
methods, so only one subpixel blending function is left which does the actual
work (this removes a lot of the previously added code)
* Implemented a new rasterizer based on the original AGG rasterizer which
implements subpixel anti-aliasing for any generic AGG vector pipelines. It
is now optionally used in Painter and AGGTextRenderer (for vector fonts, ie
rotated, sheared or big enough fonts) depending on the global subpixel
setting.
* Put all subpixel variables into the new GlobalSubpixelSettings.h|cpp
* Simplified DesktopSettings related classes a bit and renamed previous
FontSubpixelAntialiasing to just SubpixelAntialiasing.
* The private libbe functions for subpixel related settings moved from Font.cpp
to InterfaceDefs.cpp where other such functions live. They are not related
to fonts only anymore.
* Removed the subpixel related settings again from the Fonts preflet and added
them to the Appearance preflet instead.

All of the above implements subpixel anti-aliasing on a global scale, which
to my knowledge no other OS is doing at the moment. Any vector rendering
can optionally use subpixel anti-aliasing in Haiku now. The bitmap cached fonts
are still affected by the Freetype complile time #define to enable the patented
subpixel rasterization (three times wide glyphs). Vector fonts and shapes are
not affected though at the moment.



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


# b09e2f6f4bcda91da778d565b7a814841bad05a6 10-Jul-2008 Stephan Aßmus <superstippi@gmx.de>

Patch by Andrej Spielmann (GSOC):
* Extend the app_server protocol by configuration options to turn
subpixel font rendering on/off and also make the glyph hinting optional
(aligning of glyph shapes to the pixel grid).
* Implement the setting in the app_server and also handle the persistency.


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


# a2e19c60e296e34946d3d2937406485b39216c4d 03-Jun-2008 Axel Dörfler <axeld@pinc-software.de>

This should have been part of r25793.


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


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

Renamed all *LAYER* constants to *VIEW*.


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


# c27844865341578ec602735e06ecba0bd188cdeb 15-Oct-2007 Axel Dörfler <axeld@pinc-software.de>

* Introduced a monitor_info structure and means to let it be filled by the
accelerant (or the app_server via EDID info). It's still experimental
API, and opinions are welcome.
* Moved BPrivateScreen into the BPrivate namespace.
* Rewrote Screen.h.
* Introduced a BScreen::GetMonitorInfo() method, and implemented it in the
app server as well (ie. AS_GET_MONITOR_INFO).


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


# 94a48ae2765a9c1e1eda25a4e7438f2085658345 04-Aug-2007 Stephan Aßmus <superstippi@gmx.de>

* use a different message code for DrawString() with escapement delta
and DrawString() without
* this change also includes adding the penlocation to the shape to-screem
coordinate conversion (temporarily breaks shape rendering, will be fixed
in next commit)


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


# 38287e02afe4c0b08ae1c2c3279bb8d3a2e07fc2 22-Jul-2007 Stephan Aßmus <superstippi@gmx.de>

* completed my changes to DrawState handling, the current DrawingState
of the active ViewLayer is now always mirrored in the Painter instance
of a ServerWindow, so that it doesn't need to be synced on every drawing
command, this was previously incomplete for font handling
* removed the DrawState parameter from all the DrawingEngine functions
* adjusted ServerWindow and ServerPicture accordingly
* made sure that string related functions used by non-drawing related
parts (ServerApp, Decorator) don't interfere with the current drawing
state
* moved AS_SYNC handling from _DispatchViewMessage to _DispatchMessage,
it is actually a window message and doesn't require fCurrentLayer to
be valid
* fixed bug #1300, fCurrentLayer was not updated when a ViewLayer was
deleted by client request which happened to be fCurrentLayer (I am now
handling it so that the parent becomes the current layer, could be
wrong)
* AGGTextRenderer is no longer using it's own scanline, which should save
a few bytes RAM, the Painter already had such an object
* StringWidth() in AGGTextRenderer is now taking the escapement_delta into
account
* Painter::StrokeLine() doesn't need to check the clipping as much, since
that is already done in DrawingEngine
* if a ServerWindow message is not handled because fCurrentLayer is NULL,
a reply is sent in case the messages needs it (client window could
freeze otherwise, waiting for the reply for ever)
* removed unused AS_SET_FONT and AS_SET_FONT_SIZE
* added automatic RGBColor -> rgb_color conversion to RGBColor.h
* minor cleanup for 80 char/line limit



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


# cf2aeb201fe3785161bb0502effba053b0d76879 21-Feb-2007 Axel Dörfler <axeld@pinc-software.de>

* Implemented BDragger::{Show|Hide}AllDraggers() and its backend in the app_server.
This fixes bug #242. The value is currently stored in a separate file.
* Removed some unused codes from ServerProtocol.h.


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


# ccf137b886131b78172201ee7e04f4d011634a7f 06-Jan-2007 Axel Dörfler <axeld@pinc-software.de>

BWindow::IsFront() was implemented incorrectly - we actually need to query the
app_server for this; added a new AS_IS_FRONT_WINDOW command for this.
For example, clicking on the menu bar to bring windows to front in FFM mode
does work now.


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


# a06480efcbdee765c93fc1ad046c88c6ea904b63 23-Dec-2006 Ryan Leavengood <leavengood@gmail.com>

Addition of constant used when restarting the input_server within the
app_server. I added it at the end. Feel free to move it to a better spot, if
there is one. Note that putting it in the middle with require recompiling a lot
of things.


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


# 7430a5bea603b2a5ab1500efd00acf64400657e9 26-Oct-2006 Axel Dörfler <axeld@pinc-software.de>

Removed the superfluous (doubled) AS_MOVEPENTO as well. Also removed those old constants
from the ServerProtocol.h header.


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


# 82584ab9c2996ff4dec740d64eb78c7c0b74c900 09-Jun-2006 Axel Dörfler <axeld@pinc-software.de>

* Implemented AS_DIRECT_WINDOW_SET_FULLSCREEN so that it sets kWindowScreenFeel
when enabled, and B_NORMAL_WINDOW_FEEL when disabled. IOW when enabled, no
other windows can interfere.
* Therefore, it's no longer necessary to have the screen_blanker window
use kWindowScreenFeel - it will set its window to full screen as long
as the blanker runs.
* Added a AS_APP_CRASHED notification in the app_server that will remove
all kWindowScreenFeels from the windows of the crashed app.
* This is now used by the debugger to ensure that the debugger alert will
be visible.
* Factored out a DesktopLink class out of the BRoster::_ActivateApp()
method. This class is now also used in the new BRoster::_ApplicationCrashed()
method as used in the debug_server (via BRoster::Private).


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


# b30e90211eddde5fc96258dfaf8364f2fefd9695 24-May-2006 Stephan Aßmus <superstippi@gmx.de>

added a way for BWindow to store and restore arbitrary decor settings,
currently those include only the tab location


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


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

Finally removed SERVER_{TRUE|FALSE} and lots of other unused constants from ServerProtocol.h.


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


# 21c8c925d834845b599781b72192b10befc68ec0 22-Apr-2006 Axel Dörfler <axeld@pinc-software.de>

* With Rudolf's information about relocating overlays, I changed the way memory
is managed for those bitmaps:
- the shared client memory mechanism is used to allocate a small overlay_client_data
structure that contains the actual buffer and a semaphore that you have acquire in
order to access it.
- LockBits()/UnlockBits() now have a function: you need to call them before accessing
the overlay buffer, and you need to keep that lock until you're done with it.
* The overlay cookie is now an extra member of the ServerBitmap class.
* Removed fInitialized from ServerBitmap - IsValid() now just checks the buffer associated
with the bitmap.
* ViewLayer::Draw() will now handle overlay bitmaps specially and will draw the overlay
color instead of any contents (this is currently in ugly pink, but will become some
dark color later on).
* All what's missing from actually being able to use overlays now is to configure
them so that they are shown on screen. VLC will now show an empty pink window when
overlay video is enabled.


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


# 37b502f28bf22293b4b060e8577e491d1c299ca8 21-Apr-2006 Axel Dörfler <axeld@pinc-software.de>

Implemented some more overlay support - the overlay bitmap is now allocated
via the graphics driver (but not yet shown on screen).
I probably got the meaning of the "overlay count" wrong - I guess that you
can allocate any number of overlay bitmaps, but can only see "overlay count"
on screen at a time (right now, I only allow to create "overlay count" bitmaps).
Stephan?


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


# 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


# bfe698736ddb0a6dabeb8688120c2b1d20bcbf0a 28-Feb-2006 Axel Dörfler <axeld@pinc-software.de>

* Implemented private do_window_action() function, used by the Deskbar to bring
windows to front (or minimize them).
* Desktop::ActivateWindow() no longer crashes in case the window to be activated
is not on the current workspace - instead, it doesn't do anything at this
point. IOW it doesn't handle workspace activation at all, yet.
* Renamed ServerWindow::GetWindowLayer() to ServerWindow::Window().


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


# 62b5f42b3541fb277ec03c807c8fb163b04b5c51 16-Feb-2006 Axel Dörfler <axeld@pinc-software.de>

* Fixed view deletion: _CreateSelf() and RemoveSelf() are now symmetrical, removing
all those error output from the app_server.
* AS_LAYER_DELETE now gets a token, no longer frightening choice of parent.
* Removed locking in RemoveChild(); it has to be called locked now.
* Removed AS_LAYER_DELETE_ROOT as it's no longer needed.
* Removed support from BView for being PR3 compatible.


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


# f877af82fefb0143773ffcfadff86058f38cc578 09-Feb-2006 Axel Dörfler <axeld@pinc-software.de>

* Implemented private functions do_minimize_team(), and do_bring_to_front_team()
used by the Deskbar (for "Hide All" and "Show All"). The latter doesn't work
correctly yet, though, it just maximizes all windows of that application.
* Added a TODO to ServerWindow AS_MINIMIZE_WINDOW on how to make it work correctly.


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


# 995ab7b3c6a636cd658df3d7d13a616d91ffb2d6 09-Feb-2006 Axel Dörfler <axeld@pinc-software.de>

The server now differentiates between hidden and minimized - that concept somehow
got lost, before.
It might not work 100% correctly yet, but it works good enough to hide the Tracker
status window from the Deskbar, and thus, fixing bug #133.


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


# aa1f5437999ab8531f33139c129c6bcaceb74e7a 05-Feb-2006 Axel Dörfler <axeld@pinc-software.de>

Some work on cursors:
* Fixed a myriad of bugs all over the place, ranging from locking errors to
deleting objects that don't belong to the one deleting them (hello HWInterface!)
* Almost all ServerWindow cursor stuff was broken; I've replaced all commands
to set a cursor with a single one AS_SET_CURSOR.
* Renamed some cursor commands.
* Changed the (broken) way ServerApp::fAppCursor was maintained - the application
cursor is now NULL as long as possible.
* Removed superfluous ServerCursor app signature stuff.
* The BApplication will no longer duplicate the default/I-beam cursors, it will
just reuse the default ones which now have fixed tokens.
* As a result, changing the cursor is now working as expected, closing bug #102.
* Rewrote Cursor.h, renamed private members to match our style guide.
* Minor cleanup.

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


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


# 8f3f25cf639fbce2117e53f2bdcab62c2c4b4e5c 03-Jan-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Merged the four AS_LAYER_DRAW_BITMAP handlers into just one handler

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


# 93052717b0885fa5b9256db9963097530b580512 29-Dec-2005 Axel Dörfler <axeld@pinc-software.de>

Renamed AS_LAYER_GET_{DRAW|BLEND}_MODE to *_{DRAWING|BLENDING}_MODE.


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


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

Renamed BView::_SetViewImage() to _SetViewBitmap(), and AS_LAYER_SET_VIEW_IMAGE
to AS_LAYER_SET_VIEW_BITMAP.


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


# 66080bed4af0288259acd750a2dfb2b85b766b67 25-Dec-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Sorry for breaking the build

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


# 700b38edc400945469c123feaab72fa38424161e 20-Dec-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Started porting WindowScreen to haiku

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


# ab6a6bed3aa23d232436219a1952af9f1806753c 10-Dec-2005 Axel Dörfler <axeld@pinc-software.de>

* Renamed direct window commands
* Removed unused cruft from ServerProtocol.h


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


# fc70d6db870595a2e93737a5a7757107984dff9d 10-Dec-2005 Axel Dörfler <axeld@pinc-software.de>

* Renamed AS_LAYER_INVAL_{REGION|RECT} to *_INVALIDATE_*.
* Removed unused AS_LAYER_INVALIDATE.


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


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

* BWindow::AddToSubset()/RemoveFromSubset() no longer send their team ID; this
is known by the server, anyway.
* B_MODAL_SUBSET_WINDOW_FEEL now also works as expected.
* Renamed AS_REM_FROM_SUBSET to AS_REMOVE_FROM_SUBSET.


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


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

Added a very simple "code_to_name" utility that will print out the name of
an app_server code. It's always up-to-date as it just reads the header
directly.


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


# 6450b76dd4cef8cf04e8d31471517b40a35fa09a 23-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

Next big step in the event handling:
* RootLayer's mouse event processing is now at its minimum - the
EventDispatcher handles them now. As a result, a window will now
get only one message per event.
* RootLayer adds "_view_token" to mouse moved messages that specify
the view currently under the cursor.
* There is now a mouse event layer in RootLayer that gets preferred
when it's set - this is now used for the window moving instead of
the previous mechanism.
* changed the previous DistributeMessage() to an UnpackMessage()
method following Adi's suggestion.
* caveat: some things might be functionally broken in RootLayer now
because of removing the mouse notification stuff.
* "be:transit" handling is now done completely client side by
BWindow::_SanitizeMessage(() (similar to what the input_server does).
This should also make the mechanism pretty robust, since every
B_MOUSE_MOVED message can now trigger the view transit (in case a
message is lost). B_WINDOW_ACTIVATED messages should be generated
client side as well.
* renamed AS_LAYER_GET_MOUSE_COORDS to AS_GET_MOUSE as it's not a
layer specific command, and also gets the mouse buttons.
* B_MOUSE_* messages from the up server now contain only a "screen_where"
field; "where" (in window's coordinates) and "be:view_where" are
added in BMessage::_SanitizeMessage().
* messages that don't have a valid target in the looper are now
dropped instead of being sent to the looper - this should be done
in BLooper as well, though.


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


# 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


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

* Prepared the BScreen and BPrivateScreen class to be used with multiple monitors.
* BPrivateScreen now buffers its frame for 0.1 seconds (so that calling it several
times in a row is both consistent and cheap).
* Added GetFrameBufferConfig() call to the HW interface (and implemented it).
* Added server commands AS_VALID_SCREEN_ID, AS_GET_NEXT_SCREEN_ID, and
AS_GET_FRAME_BUFFER_CONFIG.
* BPrivateScreen::BaseAddress() and BPrivateScreen::BytesPerRow() are now working.
* minor cleanup.


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


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

* Forgot to update Screen.h with the last commit...
* Introduced and implemented AS_GET_SCREEN_ID_FROM_WINDOW - it only returns B_MAIN_SCREEN_ID,
though.
* renamed ServerWindow::fHandlerToken to fClientToken.
* The BScreen(BWindow *) constructor now really asks the server for the screen ID.
* ServerApp::fWindowList is now a BObjectList.


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


# 2b7b3ade5c6e0b90bb04b61988fee18149814c6f 11-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

Added more or less empty "begin/end transaction" handling in ServerWindow.
Right now, only the updates are disabled as a start. I am not sure what else
we can do here, but there probably is something :-)


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


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

Introduced and implemented new font command AS_GET_DEFAULT_SYSTEM_FONT that returns
the default fonts of the app_server.
Moved some font command implementations around to group them a bit better.


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


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

* The font list is now cached client-side. The app_server is only queried for
updates.
* Optimized retrieving the font list from the server.
* This greatly simplifies the app_server communication for getting the font
list as well - there are now only 2 commands instead of 6.
* Moved extra font flags creation from ServerApp to FontStyle::Flags().


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


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

More font work:
* Simplified server communication a bit: instead of separate queries for font
direction, "is fixed", ... there is now a private extra flags field that is
filled on demand.
* The server command names now describe what the command does, and are not simply
named after the BFont method (AS_SET_FAMILY_AND_STYLE vs. AS_GET_FAMILY_AND_STYLE_IDS).
* Replaced B_SET_SYSFONT_{PLAIN|BOLD|FIXED} with a single B_GET_SYSTEM_FONTS.
* Rewrote Font.h and added our license.


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


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

* Added and implemented AS_GET_FONT_FILE_FORMAT - currently, it returns always
B_TRUETYPE_WINDOWS, though.
* possibly returned an uninitialized error code in some BFont methods.


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


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

More font work:
* simplified BFont::SetFamily*() server communication - there is now only
AS_SET_FAMILY_AND_STYLE left, but at least that one works correctly.
* BFont::fFace is now always updated correctly.
* Moved the fFace masking to the server - BFont doesn't know enough to do
this correctly, anyway.
* Only one version of get_font_style() worked correctly.
* Font family/style ID and index were used completely mixed up - this
would have become an issue as soon as the font list changes during
runtime.
* Enabled AS_GET_FONT_DIRECTION again - missing functionality should only
be taken into account on lowest level as long as it can be emulated.
* Made FontServer a bit clearer to use (more to come).
* fixed several allocation leaks in the font server communication.
* New FontStyle::Direction() method, that currently only returns
B_FONT_LEFT_TO_RIGHT, though.
* more cleanup.


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


# 70a4b5ce1efcf7c700295e99d5ff2a98ade89f66 24-Oct-2005 Adi Oanca <adioanca@nowhere.fake>

We don't need those message codes anymore.

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


# af86ce75a07e5d2e119e46182489e12a22e7dabf 24-Aug-2005 Jérôme Duval <korli@users.berlios.de>

copyright update


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


# 2b1263bedf5512d3312c6722a10c2d1184de391e 24-Aug-2005 Jérôme Duval <korli@users.berlios.de>

reworked BFont::GetStringWidths and BFont::StringWidth
implemented BFont::GetEdges


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


# feee8cf2e25e7185e59883cedd56a131f61cd2be 28-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added client side implementation of BDirectWindow (haiku). I hope I didn't break the build on Dano. If it's the case, please tell me.

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


# 770c05d6cc602b2e545e2ccae5a17c576881dc9c 25-Jul-2005 Axel Dörfler <axeld@pinc-software.de>

The Desktop class now gets its own message processing loop: moved application
creation/deletion (and management) over to that class.
ServerApp now gets a desktop pointer, and no longer uses gDesktop.
Converted private MessageLooper::_MessagePort() to a public method MessagePort()
so that the looper can be addressed from elsewhere without using PostMessage().
Added a real basic message loop to MessageLooper::_MessageLoop().
BApplication now only asks the app_server to get its desktop object which should
now be used for everything that's not in the realm of the application.


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


# 18b5424c5f12197d3979cf38dc69149c5e98150c 24-Jul-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

* Implemented BRoster::ActivateApp().
* Added the respective case statement in AppServer::DispatchMessage().
The code that actually activates the app is still missing.
* Removed the remnants of the old way of notifying the registrar about
what app got activated (the activated client window did that).



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


# 16046321cc1ea02071b973c61d782755883bc9ea 13-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Implemented BPrivateScreen::ReadBitmap(), but the guts are still missing

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


# 2b1246d968e93ad26e5d054142037c65f73d663d 05-Jul-2005 Axel Dörfler <axeld@pinc-software.de>

Renamed AS_WINDOW_TITLE to AS_SET_WINDOW_TITLE.
Fixed handling in ServerWindow as stippi's latest commit broke it.
It's now properly done with a separate ServerWindow::SetTitle() method,
that will also take care to rename the window's thread.
Changed naming the window thread in the app_server to "w:<team>:<title>".


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


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

Implemented get_token_list() and get_window_info() client side.


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


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

MenuField layouts the menu bar better with respect to fDivider, it aligns better with other controls. fDivider in TextControl is an integer number now, small fix and small cleanup in Menu, Window::InitData takes an optional BBitmap token to construct an offscreen window, fixed PrivateScreen IndexForColor, View prevents being located at fractional coordinates as in R5, BBitmap unlocks its offscreen window since it is never Show()n and needs manual unlocking, fixed Slider offscreen window mode and improved triange thumb drawing, ScrollView would not crash when passing a NULL target just for kicks, the private MenuBar class now implements Draw to draw itself a little differently inside the BMenuField (dark right and bottom side) - though how it currently sets the clipping region prevents the text controls to draw in Playground, needs fixing

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


# 80a230b10efd1cd0d65c3007ced2694850e580dc 28-Jun-2005 Axel Dörfler <axeld@pinc-software.de>

Rewrote the push/pop state and ViewAttr stuff:
- it now seems to work finally correctly
- renamed ViewAttr to ViewState and put it into the BPrivate namespace
- some refactoring (moved some private BView methods to ViewState)
- renamed AS_LAYER_MOVETO/RESIZETO to *_TO (note the underscore)
- exchanged BView::originX/Y with fParentOffset (BPoint)
- divided AS_LAYER_GET_COLORS into separate ones for high/low/view color
- BView::SetPattern() now actually works as expected (ie. updates
only if necessary)
- exchanged the ViewAttr::flags with ViewState::valid_flags which inverses
the previous logic (which wasn't even used consistently)
- fState was initialized twice (incorrectly by the ViewAttr constructor,
and then again correctly by initCachedState()) - now the ViewState
constructor does the job alone, but correctly
- BView::PushState() no longer resets the state (it did so only locally
anyway...)
- cleanup


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


# 843c11c95368ae26277260610ad53a0a7a62a5d6 28-Jun-2005 Adi Oanca <adioanca@nowhere.fake>

another message

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


# 876a13d8dc0eb63c955a6a2c0856ef719357d896 27-Jun-2005 Adi Oanca <adioanca@nowhere.fake>

added a scroll message

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


# 55b222b0b02bcc53c7301f8e3200553f046bc4e5 25-Jun-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Stephan already implemented the needed support for dpms stuff too, so why not implementing the client methods too?

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


# 75de27f83b9482a5a32fb06b7e1a20a14383d8c6 25-Jun-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

more BScreen related stuff

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


# c6418981503ea9b168a9944c49ffbe3c382ea572 24-Jun-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

implemented client/server side support for BScreen::GetDeviceInfo() and WaitForRetrace(), and (only client side) support for Bscreen::ProposeMode()

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


# 10c5dab8076ea7b99a1afb13b46582167eba7a31 18-Jun-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added client side support for BScreen::RetraceSemaphore() and BScreen::GetModeList(). Server side support isn't yet there, though.

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


# 68dcbfb983697e4ab514a0c13ab3c0d8e4c765b8 15-Jun-2005 Axel Dörfler <axeld@pinc-software.de>

Those commands were used but not defined, obviously some forgot to update this file.


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


# ddf2e6ea5fef7d982ae51fa3defae6341237fd3d 10-Jun-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed unused message codes. Added a TODO item

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


# fda4af2667f0e48166162b706a368e0bccd7f2ef 09-Jun-2005 DarkWyrm <darkwyrm@gmail.com>

Forgot to check this in. Added a code for _set_system_font()


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


# 3ba7d6f35058ac6bdd50b37d60e75034cef83ce2 08-Jun-2005 Axel Dörfler <axeld@pinc-software.de>

Added AS_{GET|SET}_DESKTOP_COLOR.
(Incorrectly) implemented AS_GET_DESKTOP_COLOR - works for now.
Minor cleanup.
Is AS_SET_SCREEN_MODE used at all?


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


# 7475dcdf3a736a8e17b0d3fabe970a48661f7d83 07-Jun-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added an app server command to retrieve the color map. Made some adjustments to SystemPalette.cpp, implemented support for it in BPrivateScreen. Moved get_scs() a bit down to avoid a deadlock. Note that getting the colormap doesn't work due to port capacity limit (?)

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


# e89703046880712cfffdc8df65850dd23685db1b 23-May-2005 Adi Oanca <adioanca@nowhere.fake>

Added a new message code. It's for setting mouse event mask

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


# cd0ddd03fba24c3caee99e4fd0b8548b168a5f7b 07-May-2005 DarkWyrm <darkwyrm@gmail.com>

Added a code for the float version of GetEscapements()


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


# 0405ef356fa5f6ad33d0cd61a7bf803afd78dfba 29-Apr-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added AS_SCREEN_GET/SET_MODE

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


# 997865348b370218af9de1ac07c1741a29df94d3 21-Apr-2005 Adi Oanca <adioanca@nowhere.fake>

added AS_ROOTLAYER_DO_CHANGE_WINBORDER_FEEL

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


# 08bd2fdfa26b59e5e43c976ec98aa6d95460bee5 10-Apr-2005 Adi Oanca <adioanca@nowhere.fake>

added AS_ROOTLAYER_WINBORDER_SET_WORKSPACES

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


# be94b51d74b981135f7354bd8bc280c567ff934f 21-Mar-2005 Adi Oanca <adioanca@nowhere.fake>

Added AS_LAYER_SET_EVENT_MASK

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


# e4365762e67342ba6ebbc424caadc38e7de2dba7 18-Mar-2005 Adi Oanca <adioanca@nowhere.fake>

added AS_ROOTLAYER_REMOVE_FROM_SUBSET

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


# e6ed344d4deaae7934429a3ae3e2bb24e7ddcd12 14-Mar-2005 Adi Oanca <adioanca@nowhere.fake>

Oups. Forgot about this one. Added a new message id.


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


# 7bcf57c75bf64633fd0a18b30e32d4bf74291bed 22-Jan-2005 Adi Oanca <adioanca@nowhere.fake>

Another 2 constants


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


# 6c85f3d5e60e60c401e3eb80eda338f9e28adf91 22-Jan-2005 Adi Oanca <adioanca@nowhere.fake>

Added 2 more contants


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


# 855d9d894805158b7ef8843b31384c958aee0121 21-Jan-2005 Adi Oanca <adioanca@nowhere.fake>

Added two constants for app_server internal communication


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


# 98e22e0bf79efb68a2617c09cf9a797110771d27 20-Jan-2005 DarkWyrm <darkwyrm@gmail.com>

Added codes for more BFont methods


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


# 199b0a6a22f7c986a468f2154c5bb6df9fe452b4 18-Jan-2005 DarkWyrm <darkwyrm@gmail.com>

Added a code to handle BFont::SetFamilyAndStyle(char *, NULL)


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


# 93e11ddfc832ef3b4bf499c1f9b385490b3aa0e1 18-Jan-2005 DarkWyrm <darkwyrm@gmail.com>

Stupid forgotten header


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


# c26e0fe214f738ea6263e6e7b5a09508b8d86148 15-Jan-2005 DarkWyrm <darkwyrm@gmail.com>

Added codes to go along with the client-side BFont functions


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


# cd6f0b7869d99e50219d3099e1db5b3658e96673 15-Jan-2005 DarkWyrm <darkwyrm@gmail.com>

Added codes to allow for initialization of system fonts


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


# 67e2a74dc681035322059d82a46221f9a4c52585 13-Oct-2004 DarkWyrm <darkwyrm@gmail.com>

Separated functionality of PortLink into LinkMsg* to avoid some *serious* code duplication


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


# 601a55f3490763de26dec394b906d8e36239a657 05-Oct-2004 DarkWyrm <darkwyrm@gmail.com>

Added message codes to support the soon-coming ServerMemIO class


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


# 19185de325e6e9d751d2863dfcc8bd60d44e67a0 19-Jun-2004 Adi Oanca <adioanca@nowhere.fake>

added AS_CLIENT_DEAD


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


# fb7da50d34e097cbc69934d7816246d7dfd50878 13-Oct-2003 DarkWyrm <darkwyrm@gmail.com>

Updates to sync with (hopefully) last messaging protocol tweaks


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


# fe556d69c613e40244fc166130227b0087be97be 07-Oct-2003 DarkWyrm <darkwyrm@gmail.com>

Added message code for getting UI colors as a ColorSet


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


# 7507620c3a6aa7f700a7086c6b2cb5adc2aa4563 04-Oct-2003 DarkWyrm <darkwyrm@gmail.com>

Tweaked all messaging classes to comply with new message protocol policies
AppServerLink no longer inherits from BSession


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


# 5e69d02601ebea7f90658717802816edc8a8bbca 02-Oct-2003 DarkWyrm <darkwyrm@gmail.com>

Moved BSession messaging code to ServerProtocol.h


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


# cb51da76c935281a551a911b61eaec2b4d31b14c 24-Sep-2003 Adi Oanca <adioanca@nowhere.fake>

added an new message


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


# 46d99be13c0152521bf709336d865664e00bced7 17-Sep-2003 DarkWyrm <darkwyrm@gmail.com>

Added message codes for creating and deleting BCursors


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


# f02718d110cd9a328b4716ec485676a61716ca26 16-Sep-2003 DarkWyrm <darkwyrm@gmail.com>

Added message code for supporting the R5 decor easter egg


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


# 3bbe920498789dc1c14955b0f810a697d3dfea6e 31-Aug-2003 Adi Oanca <adioanca@nowhere.fake>

Added some new messages that are needed by BView


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


# 5407fa5f8497d2f4450302e3bea4f5129d2c2408 25-Jul-2003 DarkWyrm <darkwyrm@gmail.com>

Forgotten files. Oops. :P


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


# a72997e0d4262997ceeb9e3b205b1c2c09c7b268 14-Jul-2003 DarkWyrm <darkwyrm@gmail.com>

Changes to support system cursors
Moved cursor_which defs to a separate file


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


# 48326bef06ef483afedaf06acf7850968e20a2f7 10-Jul-2003 DarkWyrm <darkwyrm@gmail.com>

Added message codes for BWindow hook functions


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


# c6decab16c156b4bcdf50434f768048bf8ecb515 04-Jul-2003 shadow303 <shadow303@nowhere.fake>

Adjust message sizes for added view token


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


# 34259581cf13c263fa4b3e826f42e671ccfab0a9 22-Jun-2003 shadow303 <shadow303@nowhere.fake>

Add message lengths for some graphics messages, strip out \r characters


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


# 1b7390044f43f9b85007a90b56fa18880972d064 17-Apr-2003 DarkWyrm <darkwyrm@gmail.com>

Checkin for Adrian Oanca


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


# 6cfd026383111fe2d5e8ed4c6910839f1b2a55e2 21-Mar-2003 DarkWyrm <darkwyrm@gmail.com>

Added BPicture definitions


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


# edfec36839675bab53893a0acf1e51fbcdc60160 19-Mar-2003 ejakowatz <ejakowatz@nowhere.fake>

AS_SET/GET_MOUSE_MODE were missing, which broke the build.


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


# 0eadb1ac5c20d019bbe2f37ac1c80a29ae5e8f2a 14-Mar-2003 DarkWyrm <darkwyrm@gmail.com>

Checkin for Adrian Oanca - added some BWindow-specific message defs


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


# 15222f63d030f2ad6e903194fafe11529ced8a43 11-Mar-2003 DarkWyrm <darkwyrm@gmail.com>

Added BBitmap protocol messages


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


# fe67d1c1adec0cf4aa409c0fc6705e56709b4240 24-Feb-2003 DarkWyrm <darkwyrm@gmail.com>

Retooled message defs into something respectable


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


# 99ddcf1a1ba1fc493e09cba53d214fa8af880cea 23-Feb-2003 DarkWyrm <darkwyrm@gmail.com>

Tweaks to support all BApplication-related tasks


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


# 182af733e766adda875a4e050819675bd1c8d65d 09-Nov-2002 DarkWyrm <darkwyrm@gmail.com>

Initial checkin of official version of protocol file


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


# 15a224865b22a2705b96129cd80af4f922508a02 09-Nov-2002 DarkWyrm <darkwyrm@gmail.com>

Initial checkin


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