History log of /haiku-fatelf/src/servers/app/Screen.cpp
Revision Date Author Comments
# 68667bf4 04-Oct-2009 Michael Lotz <mmlr@mlotz.ch>

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


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


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

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


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


# 756f5c98 09-Aug-2009 Rudolf Cornelissen <rudolf.cornelissen@gmail.com>

fixed BScreen mode.flags handling. This is now compatible with BeOS, and fixes for instance the use of Dualhead Setup for the Matrox and nVidia driver which make use of 'free' flags. A modeset command should be relayed to the accelerant even if it differs by just a single bit: the accelerant best knows how to handle this. Remark: Haiku's screen preflet refuses to set modes once a virtual screen is set since it doesn't recognize the currently set mode. I guess that could be fixed.

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


# 07ff9929 25-Jul-2009 Michael Lotz <mmlr@mlotz.ch>

Add missing newline in debug output.


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


# 0017304e 10-Dec-2008 Rene Gollent <anevilyak@gmail.com>

Correct a small style violation noted by Axel, and add a TODO note.



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


# 27c43a2d 08-Dec-2008 Rene Gollent <anevilyak@gmail.com>

Implement the missing pieces to handle per workspace display mode support.
Adjust Workspace view to correctly scale each workspace based on the
resolution of that workspace. This exposes one or two anomalies in other
places in the app_server code though which I wasn't able to track down.
This fixes ticket #693.




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


# 0dcbaee2 06-Oct-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Screen was assuming setting a 800x600 mode would work anyway, but currently the Intel driver only supports the 'native' mode for laptop panels. Added a 'strict' parameter to SetBestMode which, if true, fails if it doesn't find any mode with the passed width. If false, and can't find any good mode, just uses the first mode in the list (could be improved). This fixes bug #2350

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


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

* Renamed the "simple" mode setter Screen::SetMode() variant to SetBestMode();
it can also no longer create a default mode.
* This SetBestMode() function now follows a similar logic than the boot loader,
that is, only the width must not deviate, all other values are chosen as
close to the original as possible.
* VirtualScreen::AddScreen() now follows the same logic as the boot loader in
case no configuration was found, and the current screen has no preferred mode
(for example via EDID). That is, it will first try 1024x768, and then 800x600.
* This means there is no mode change anymore when switching from the boot
loader to the app_server in Qemu and VMware.


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


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

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


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


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

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


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


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

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


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


# 756f5c98b86772b3b3ee707014a6065babdfc649 09-Aug-2009 Rudolf Cornelissen <rudolf.cornelissen@gmail.com>

fixed BScreen mode.flags handling. This is now compatible with BeOS, and fixes for instance the use of Dualhead Setup for the Matrox and nVidia driver which make use of 'free' flags. A modeset command should be relayed to the accelerant even if it differs by just a single bit: the accelerant best knows how to handle this. Remark: Haiku's screen preflet refuses to set modes once a virtual screen is set since it doesn't recognize the currently set mode. I guess that could be fixed.

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


# 07ff9929e58563ec7d2aab43a73bf2606b488647 25-Jul-2009 Michael Lotz <mmlr@mlotz.ch>

Add missing newline in debug output.


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


# 0017304e3d0be303b4c0e1330952eb949dd56142 10-Dec-2008 Rene Gollent <anevilyak@gmail.com>

Correct a small style violation noted by Axel, and add a TODO note.



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


# 27c43a2d8f20fd98050c6acd9abac970b1d4d7c8 08-Dec-2008 Rene Gollent <anevilyak@gmail.com>

Implement the missing pieces to handle per workspace display mode support.
Adjust Workspace view to correctly scale each workspace based on the
resolution of that workspace. This exposes one or two anomalies in other
places in the app_server code though which I wasn't able to track down.
This fixes ticket #693.




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


# 0dcbaee24ad7b51f69440f4d23c2a74eda29bad1 06-Oct-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Screen was assuming setting a 800x600 mode would work anyway, but currently the Intel driver only supports the 'native' mode for laptop panels. Added a 'strict' parameter to SetBestMode which, if true, fails if it doesn't find any mode with the passed width. If false, and can't find any good mode, just uses the first mode in the list (could be improved). This fixes bug #2350

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


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

* Renamed the "simple" mode setter Screen::SetMode() variant to SetBestMode();
it can also no longer create a default mode.
* This SetBestMode() function now follows a similar logic than the boot loader,
that is, only the width must not deviate, all other values are chosen as
close to the original as possible.
* VirtualScreen::AddScreen() now follows the same logic as the boot loader in
case no configuration was found, and the current screen has no preferred mode
(for example via EDID). That is, it will first try 1024x768, and then 800x600.
* This means there is no mode change anymore when switching from the boot
loader to the app_server in Qemu and VMware.


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


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

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


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