monitor-manager: Add portrait modes to portrait displays
If a monitor's max resolution is a portrait resolution, then assume it is a native portrait monitor and add portrait versions of the common modes. https://bugzilla.gnome.org/show_bug.cgi?id=782294
This commit is contained in:

committed by
Jonas Ådahl

parent
383ac76d00
commit
dd43d04d42
@ -51,7 +51,7 @@ common_resolutions = [
|
||||
|
||||
output_lines = [
|
||||
"/* Generated by gen-default-modes.py */\n",
|
||||
"static const drmModeModeInfo meta_default_drm_mode_infos[] = {",
|
||||
"static const drmModeModeInfo meta_default_landscape_drm_mode_infos[] = {",
|
||||
]
|
||||
|
||||
def sync_flags(hsync, vsync):
|
||||
@ -76,6 +76,21 @@ def drm_mode_info_from_modeline(line):
|
||||
sync_flags(sline[11], sline[12]),
|
||||
sline[1])
|
||||
|
||||
def portrait_drm_mode_info_from_modeline(line):
|
||||
sline = line.split()
|
||||
return "{ %d, %d, %d, %d, %d, 0, %d, %d, %d, %d, 0, 0, %s, DRM_MODE_TYPE_DEFAULT, \"%dx%d_60.00\" }," % \
|
||||
(int(float(sline[2]) * 1000),
|
||||
int(sline[7]),
|
||||
int(sline[8]),
|
||||
int(sline[9]),
|
||||
int(sline[10]),
|
||||
int(sline[3]),
|
||||
int(sline[4]),
|
||||
int(sline[5]),
|
||||
int(sline[6]),
|
||||
sync_flags(sline[12], sline[11]),
|
||||
int(sline[7]), int(sline[3]))
|
||||
|
||||
for resolution in common_resolutions:
|
||||
cvt = os.popen("%s %s %s" % ('cvt', resolution[0], resolution[1]))
|
||||
cvt.readline() # discard comment line
|
||||
@ -84,6 +99,16 @@ for resolution in common_resolutions:
|
||||
cvt.close()
|
||||
output_lines.append("};")
|
||||
|
||||
output_lines.append("")
|
||||
output_lines.append("static const drmModeModeInfo meta_default_portrait_drm_mode_infos[] = {")
|
||||
for resolution in common_resolutions:
|
||||
cvt = os.popen("%s %s %s" % ('cvt', resolution[0], resolution[1]))
|
||||
cvt.readline() # discard comment line
|
||||
line = cvt.readline()
|
||||
output_lines.append(portrait_drm_mode_info_from_modeline(line))
|
||||
cvt.close()
|
||||
output_lines.append("};")
|
||||
|
||||
for line in output_lines:
|
||||
sys.stdout.write(line + "\n")
|
||||
sys.stdout.flush()
|
||||
|
Reference in New Issue
Block a user