[haiku-bugs] Re: [Haiku] #10486: add to accelerant api to support managing multiple montors

  • From: "pulkomandy" <trac@xxxxxxxxxxxx>
  • Date: Mon, 10 Feb 2014 12:58:18 -0000

#10486: add to accelerant api to support managing multiple montors
------------------------------------+----------------------------
   Reporter:  kallisti5             |      Owner:  axeld
       Type:  enhancement           |     Status:  new
   Priority:  normal                |  Milestone:  Unscheduled
  Component:  Kits/Application Kit  |    Version:  R1/Development
 Resolution:                        |   Keywords:
 Blocked By:                        |   Blocking:  8612
Has a Patch:  1                     |   Platform:  All
------------------------------------+----------------------------

Comment (by pulkomandy):

 I don't remember saying that, either...

 I was only wondering which way we want to go with this. The current hack
 in Radeon driver is to have a big frame buffer, and each display shows
 only part of it. If both display show the same part, you have clone mode.
 If they show different parts, you have poor man's dualscreen mode, with
 some problems because apps don't know about it, and for example
 CenterOnScreen will put window in the middle, split between the two
 displays.

 In X11, they use the same solution with a single framebuffer, but they
 allow apps (or, actually, window managers) to query about the displays
 positions and put things at the right place.

 Another solution is to allocate a separate framebuffer for each display.
 This can work, but we have to take care of some things, for example a
 window that has parts visible on each screen (if we make this possible)
 will have to draw on both framebuffers. I think this requires calling the
 Draw() method twice, because splitting the drawing primitives between two
 framebuffers inside app_server sounds complicated to me (this is where the
 "nightmare" comes from). On the other hand, this makes it possible to do a
 dual-head setup with two video cards easy, as there is no need to share a
 framebuffer.

 I'm also still unsure how this would map to workspaces. From the user
 standpoint, workspaces are already layed out in space, in a grid. Mapping
 this to the available displays may be non-trivial. We may make the
 workspace cover both displays, allow each display to show any workspace
 independent from the others, or force the workspace > display mapping to
 be spacially correct. If your workspaces are setup this way:
 {{{
 0 1
 2 3
 4 5
 }}}
 The left monitor can only show even workspaces. The right monitor shows
 the workspace at n+1 (so you can see (0,1), (2,3), or (4,5).

 Then there is the problem of dinamically adding/removing displays, where
 we want windows to come back to the visible area, but we don't want their
 positions to be lost if you re-plug the same monitor again.

 I'm not sure it's a good idea to rush into writing code, when, as far as I
 know, none of this has been discussed yet and we don't even know how the
 multi-display thing is supposed to work, from the user point of view.

--
Ticket URL: <https://dev.haiku-os.org/ticket/10486#comment:12>
Haiku <https://dev.haiku-os.org>
Haiku - the operating system.

Other related posts: