X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=autorandr.py;h=c2fdb9ad08f300a259a8832fe30cd55bde62ce71;hb=96231a60c0771d39b994d2d54f5b528aba0e7802;hp=315f62c86119c4c7f04ddd8dbb2a63682cdd8fb1;hpb=b606952b22ebfdb2e71dad18a53807ed1c9ab5c5;p=deb_pkgs%2Fautorandr.git diff --git a/autorandr.py b/autorandr.py index 315f62c..c2fdb9a 100755 --- a/autorandr.py +++ b/autorandr.py @@ -543,6 +543,8 @@ def apply_configuration(new_configuration, current_configuration, dry_run=False) # the xrandr call fails with an invalid RRSetScreenSize parameter error. # Update the configuration in 3 passes in that case. (On Haswell graphics, # at least.) + # - Some implementations can not handle --transform at all, so avoid it unless + # necessary. (See https://github.com/phillipberndt/autorandr/issues/37) auxiliary_changes_pre = [] disable_outputs = [] @@ -554,9 +556,20 @@ def apply_configuration(new_configuration, current_configuration, dry_run=False) else: if "off" not in current_configuration[output].options: remain_active_count += 1 - enable_outputs.append(new_configuration[output].option_vector) - if xrandr_version() >= Version("1.3.0") and "transform" in current_configuration[output].options: - auxiliary_changes_pre.append(["--output", output, "--transform", "none"]) + + option_vector = new_configuration[output].option_vector + if xrandr_version() >= Version("1.3.0"): + if "transform" in current_configuration[output].options: + auxiliary_changes_pre.append(["--output", output, "--transform", "none"]) + else: + try: + transform_index = option_vector.index("--transform") + if option_vector[transform_index+1] == XrandrOutput.XRANDR_DEFAULTS["transform"]: + option_vector = option_vector[:transform_index] + option_vector[transform_index+2:] + except ValueError: + pass + + enable_outputs.append(option_vector) # Perform pe-change auxiliary changes if auxiliary_changes_pre: