From 3b283d550eaee8511ccf5ad81cad1a3fd8365a0d Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Thu, 13 Mar 2014 20:16:14 +0100 Subject: fix and demo drm support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- examples/comprehensive | 32 ++++++++++++++++++++++++-------- examples/crtc-detection | 13 +++++++++---- examples/crtc-searching | 7 +++++-- 3 files changed, 38 insertions(+), 14 deletions(-) (limited to 'examples') diff --git a/examples/comprehensive b/examples/comprehensive index ef8376d..380bf39 100644 --- a/examples/comprehensive +++ b/examples/comprehensive @@ -9,6 +9,8 @@ # nor does it parse options other than -r from ad-hoc settigns, or # use monitor identifiation. +import os + # Geographical coodinates. # (KTH building D computer laboratories in this example.) @@ -41,6 +43,16 @@ def by_time(): return 1 # Error in `time_alpha` (probably) +# Check if we are in X or TTY. +ttymode = not (('DISPLAY' in os.environ) and (':' in os.environ['DISPLAY'])) + +# Method for applying colour curves. +apply_curves = randr +#apply_curves = vidmode +if ttymode: + apply_curves = drm + + # Keep uncomment to use solar position. get_dayness = lambda : sun(latitude, longitude) # Uncomment to use time of day. @@ -132,9 +144,13 @@ icc_calibration_profile = [None] # -p (--panicgate) is used. current_calibration = [None] if not panicgate: - calib_get = None - #calib_get = randr_get - #calib_get = vidmode_get + if not ttymode: + calib_get = None + #calib_get = randr_get + #calib_get = vidmode_get + else: + calib_get = None + #calib_get = drm_get current_calibration = [calib_get] @@ -178,7 +194,7 @@ for i in range(len(current_calibration)): current_calibration[i] = f(m) -monitor_controller = lambda : randr(*monitors) +monitor_controller = lambda : apply_curves(*monitors) ''' :()→void Function used by Blueshift on exit to apply reset colour curves, if using preimplemented `reset` ''' @@ -335,9 +351,9 @@ def periodically(year, month, day, hour, minute, second, weekday, fade): # Flush settings to monitor. if len(monitors) == 0: - randr() + apply_curves() else: - randr(monitors[m % len(monitors)]) + apply_curves(monitors[m % len(monitors)]) # Lets wait only 5 seconds, instead of a minute before running again. wait_period = 5 @@ -372,9 +388,9 @@ def reset(): # Flush settings to monitor. if len(monitors) == 0: - randr() + apply_curves() else: - randr(monitors[m % len(monitors)]) + apply_curves(monitors[m % len(monitors)]) if (get_dayness is not None) and not doreset: diff --git a/examples/crtc-detection b/examples/crtc-detection index 2da0e9d..000dfce 100644 --- a/examples/crtc-detection +++ b/examples/crtc-detection @@ -7,8 +7,11 @@ # The colour temperature to apply. temp = 6500 +# Check if we are in X or TTY. +ttymode = not (('DISPLAY' in os.environ) and (':' in os.environ['DISPLAY'])) + # List all connected outputs. -outputs = list_screens().find_by_connected(True) +outputs = list_screens('drm' if ttymode else 'randr').find_by_connected(True) # EDID of the primary monitors edid_0 = '00ffffffffffff0010ac00504d5730372f0c01030e281e962b0cc9a057479b2712484ca44380a959a94f615971594559c28f31590101863d00c05100304040a013006c231100001e000000fd0030aa1e821d000a202020202020000000fc0044454c4c2050313133300a2020000000ff00364432353232424c3730574d0a00ea' @@ -29,8 +32,10 @@ for output in outputs: monitor_gamma = (1, 1, 1) # Get the correct gamma settings for the monitor. - if (monitor == ('DVI-0', 364, 291, False)) or (edid == edid_0): monitor_gamma = gammas[0] - elif (monitor == ('VGA-0', 364, 291, False)) or (edid == edid_1): monitor_gamma = gammas[1] + if (monitor == ('DVI-0', 364, 291, False)) or (edid == edid_0): monitor_gamma = gammas[0] # using RandR + elif (monitor == ('VGA-0', 364, 291, False)) or (edid == edid_1): monitor_gamma = gammas[1] # using RandR + elif (monitor == ('DVII-0', 400, 300, False)) or (edid == edid_0): monitor_gamma = gammas[0] # using DRM + elif (monitor == ('VGA-0', 400, 300, False)) or (edid == edid_1): monitor_gamma = gammas[1] # using DRM else: print('Warning: unknown monitor at %s at size of %i mm by %i mm' % monitor[:3]) @@ -40,5 +45,5 @@ for output in outputs: gamma(*monitor_gamma) # Apply adjustments. - randr(output.crtc, screen = output.screen) + (drm if ttymode else randr)(output.crtc, screen = output.screen) diff --git a/examples/crtc-searching b/examples/crtc-searching index c7be89f..0539f0e 100644 --- a/examples/crtc-searching +++ b/examples/crtc-searching @@ -7,6 +7,9 @@ # but `Screen.crtc_count` is much more effective. +# Check if we are in X or TTY. +ttymode = not (('DISPLAY' in os.environ) and (':' in os.environ['DISPLAY'])) + # We want to use the ad-hoc mode options. uses_adhoc_opts = True @@ -52,7 +55,7 @@ if parser.opts['--help'] is not None: # Find CRTC:s. -screens = list_screens() +screens = list_screens('drm' if ttymode else 'randr') outputs = [] # Find CRTC:s by name. @@ -79,5 +82,5 @@ for output in outputs: gamma(*gamma_) # Apply adjustments. - randr(output.crtc, screen = output.screen) + (drm if ttymode else randr)(output.crtc, screen = output.screen) -- cgit v1.2.3-70-g09d2