parent
138f1893d0
commit
d28ae74d21
@ -1,135 +0,0 @@
|
||||
* How many cards do we have? autodetection?
|
||||
* Is our card a dualhead card?
|
||||
* How many monitors are connected?
|
||||
|
||||
* difference between one and two card is different device sections
|
||||
* twinview has one device, one screen, one serverlayout
|
||||
* xinerama has two devices, two screens, two monitors
|
||||
|
||||
twinview <> xinerama:
|
||||
all sections double
|
||||
|
||||
one or two cards:
|
||||
different device sections
|
||||
|
||||
one or two monitors
|
||||
?? one or two cards
|
||||
?? twinview or xinerama (driver? different resolutions?)
|
||||
|
||||
|
||||
class XSetup(Object):
|
||||
Screens[] getScreens()
|
||||
bool maySetDualhead()
|
||||
getUseDualhead()
|
||||
setUseDualhead(bool)
|
||||
(xoff,yoff) getDualheadPosition() # offset from screen 1 top left corner.
|
||||
setDualheadOrientation(xoff,yoff)
|
||||
|
||||
bool is3DAccelerated()
|
||||
|
||||
GFXCard[] getGFXCards()
|
||||
|
||||
|
||||
class Screen(Object):
|
||||
maySetResolution()
|
||||
Resolution[] getAvailableResolutions()
|
||||
getResolution()
|
||||
setResolution(Resolution)
|
||||
|
||||
maySetRefresh()
|
||||
int getRefreshRate()
|
||||
setRefreshRate(int)
|
||||
|
||||
maySetRotation()
|
||||
getRotation()
|
||||
getAvailableRotations()
|
||||
setRotation()
|
||||
|
||||
bool isAvailableMirrorHorizontal()
|
||||
getMirrorHorizontal()
|
||||
setMirrorHorizontal()
|
||||
bool isAvailableMirrorVertical()
|
||||
getMirrorVertical()
|
||||
setMirrorVertical()
|
||||
|
||||
class Resolution(Object):
|
||||
int getWidth()
|
||||
int getHeight()
|
||||
int[] getRefreshRates():
|
||||
|
||||
|
||||
|
||||
* What is the current setup? (Xinerama? Singlehead? Twinview?)
|
||||
|
||||
- Warning: Xinerama vs. DRI
|
||||
* "unlinking" the sliders will yield a warning "Using different
|
||||
resolutions on the screens will disable 3D hardware acceleration on
|
||||
the second head", which is a Xinerama deficiency).
|
||||
|
||||
Note: Probably only Ati and nvidia do support mergedFB properly, other
|
||||
drivers might lose xinerama features like placement and maximize
|
||||
|
||||
- Drag and drop widget
|
||||
* The fun part: implementing a Drag and Drop widget where the (resizing)
|
||||
screens can be dragged into their respective relative position,
|
||||
"snapping" in the more obvious ones, i.e. plain "left of" and "right
|
||||
of", "above" and "under" (without offset).
|
||||
|
||||
|
||||
- displayconfig.MonitorPreview:
|
||||
Singleheadpreview: Monitor keeps size
|
||||
DualheadPreview: like now, monitor resizes to show relative screen size
|
||||
|
||||
Displayconfig; Notes abstractielaag
|
||||
-------------------------------------
|
||||
* een XSetup heeft N gfxcards.
|
||||
* een GfxCard heeft N Monitors
|
||||
* XSetup is een container voor alle objecten uit de abstractielaag.
|
||||
* XSetup.addMonitor(monitor,gfxcard) waarbij gfxcard al in XSetup zit en een
|
||||
referentie naar de kaart vormt waarop monitor is aangesloten.
|
||||
* Een Adaptor heeft een 1:1 relatie met een monitor, en is 'onderdeel' van
|
||||
een "Screen" (in de zin van Screen section uit xorg.conf)
|
||||
* Controls zoals resize en de rotatie / mirroring widgets manipuleren een
|
||||
Adaptor, die intern de Screen manipuleert
|
||||
* Singlehead resolutie verandert via xrandr en slaat settings op via
|
||||
displayconfig-restore.py
|
||||
* Dualhead resolutie aanpassen pakt intern een passende metamode (bij twinview)
|
||||
en checkt of alle zinvolle metamodes beschikbaar zijn, anders wordt de user
|
||||
gewaarschuwd dat dit eerst moet gebeuren.
|
||||
* Adaptor in dualhead / twinview modus worden dus naar een screen vertaald
|
||||
metamodes heeft.
|
||||
* Screen moet dan nog support voor metamodes krijgen.
|
||||
|
||||
|
||||
|
||||
displayconfig:
|
||||
===============
|
||||
* Current resolution doesn't get recognized if current != highest resolution
|
||||
* new tab display powermanagement, just like the existing tab, we need to be
|
||||
able to at least replace existing functionality
|
||||
|
||||
|
||||
New Widgets:
|
||||
-------------
|
||||
* DualheadPreview
|
||||
* RadioButtons instead of dropdown for Positioning
|
||||
|
||||
* Detect if we're already running on dualhead, (en|dis)able widgets accordingly
|
||||
* Nvidia MergedFB
|
||||
- Make preview of dualhead more clear (only xinerama or also mergedFB?)
|
||||
- Generate list of Metamodes from resolutions available
|
||||
- write dualhead settings to xorg.conf
|
||||
* Compare dualhead with different drivers WRT xorg.conf
|
||||
- generic Xinerama (Matrox, others?)
|
||||
- dualhead for fglrx, SiS ...
|
||||
- MergedFB as special case for nvidia (sis?)
|
||||
* Preview should be rotatable (and|or) resizable (and|or) DualHeadpreview?
|
||||
* Add missing elements to DualHeadTab
|
||||
- [ ] Use MergedFB (binds two resolution sliders)
|
||||
- label with warning "You can only use DRI on one head with different resolutions blahblah"
|
||||
FIXME: enabling Dualhead should:
|
||||
- Update resolutions with "metamodes"
|
||||
- disable Rotation/mirroring stuff
|
||||
- Add ServerLayout to xorg.conf
|
||||
- Add second Screen to xorg.conf
|
||||
- Alternatively (if both resolutions are the same enable MergedFB
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue