Fix profile association – Default profile messed up when switching displays.

Home Forums Help and Support Fix profile association – Default profile messed up when switching displays.

Viewing 15 posts - 1 through 15 (of 32 total)
  • Author
    Posts
  • #10457

    Monstieur
    Participant
    • Offline

    I have two monitors and one headless AV receiver. I initially enabled all three and set display 1 to profile 1, display 2 to profile 2, and display 3 (the AVR) to no profile.

    When I enable displays 1 & 3, display 1 shows the profiles 1 (Default) & 2.
    When I enable displays 2 & 3, display 2 shows the profiles 2 (Default) & 1.
    When I switch back to 1 & 3, display 1 shows the profiles 2 (Default) & 1, so the wrong profile is applied.
    Also, each time I switch a random profile is applied to display 3 which I don’t care about since it’s headless.

    I switch monitor using the Windows + P key only. It remembers that Extended is 1 & 3, and Second Screen Only is 2 & 3. I don’t need to keep manually setting the 3rd display.

    • This topic was modified 6 years, 2 months ago by Monstieur.
    #10460

    Florian Höch
    Administrator
    • Offline

    You need to assign a profile to every display for “Fix profile associations” to work. Just assign sRGB to the one you don’t want to have any calibration.

    #10489

    Monstieur
    Participant
    • Offline

    It’s still broken even after adding the sRGB profile. It looks like Windows itself is assigning the profile correctly when switching displays. There are duplicate entries in the Colour Management page when any one display is disabled. Among the duplicates, the first entry is correct and the second entry is incorrect. DisplayCAL is picking up the second entry instead of the first one. If it took the first entry instead, it would appear to work correctly even without using “Automatically fix profile associations”.

    Trying to remove profiles in “Profile associations” gives an Python error that there is no such profile associated with the specified display, probably due to the duplicate display listing. If I enable “Automatically fix profile associations” it screws up the correct assignments in Windows. If I disable “Automatically fix profile associations”, the Windows assignments remain correct, but DisplayCAL picks up the wrong profile from the second duplicate entry.

    I’ve attached screenshots showing the Colour Management page when displays 1 & 3, and  2 & 3 are enabled.
    In the first screenshot, display 1 is actually 1 which has the correct profile, and display 3 is actually the first 3|4 entry which has the sRGB profile.
    In the second screenshot, display 2 is actually the first 1|2 entry which has the correct profile, and display 3 is actually the first 4|5 entry which has the sRGB profile.

    • This reply was modified 6 years, 2 months ago by Monstieur.
    • This reply was modified 6 years, 2 months ago by Monstieur.
    Attachments:
    You must be logged in to view attached files.
    #10497

    Florian Höch
    Administrator
    • Offline

    The important thing to understand is that there is no way, at all, to determine the correct display from the Windows Color Management control panel when one or more display(s) are disabled and thus the (basically nonsene) x|y entries appear. There may be situations where the first appearance of any particular x|y combination is the actual active (correct) display, and the 2nd one is the disabled one, or vice versa. But the Color Management control panel doesn’t show that information.

    To make matters worse, color managed applications tend to always use the profile of the first x|y entry, which may be the wrong (disabled) display, and thus wrong profile. The way to fix this, is to switch the profile associations around, assigning the profile for the active display (which isn’t queried by color managed applications) to the “wrong” (disabled) display, so that color managed applications use the correct profile. This is what “Fix profile associations” does.

    The only way to see the correct associations is via the DisplayCAL profile loader “Profile associations” dialog, or other software that correctly enumerates the active display devices.

    #10501

    Monstieur
    Participant
    • Offline

    I have enabled all 3 displays, assigned the correct profile to each, and enabled “Fix profile associations”. At this point “Profile associations” shows a single (correct) profile for each display. However the original problem persists. When I switch from 1 & 3 > 2 & 3 > 1 & 3, the profile association for display 1 shows the wrong profile set as default. Eventually the profile association for display 2 also shows the wrong profile set as default. It does not use the defaults as originally recorded with all 3 displays active.

    Trying to change the default in “Profile associations” while a display is disabled also results in the python error.

    • This reply was modified 6 years, 2 months ago by Monstieur.
    • This reply was modified 6 years, 2 months ago by Monstieur.
    #10524

    Monstieur
    Participant
    • Offline

    Now the Python error has gone when clicking Set Default, but changing the default for display 2 also changes it for display 3 and vice versa. The default is also incorrectly set when switching displays.

    #10527

    Florian Höch
    Administrator
    • Offline

    I need a verbose log to try and make sense of this. Please do the following:

    1. Disable “Fix profile associations automatically”.
    2. Enable all displays.
    3. Correct the profile associations manually.
    4. Quit profile loader.
    5. Run the profile loader with the command line argument --verbose=2
    6. Run the printDisplayDevicesInfo utility and attach the output.
    7. Switch to a display configuration where some displays are disabled.
    8. Run the printDisplayDevicesInfo utility again and attach the output too.
    9. Enable all displays again.
    10. Enable “Fix profile associations automatically”.
    11. Switch to a display configuration where some displays are disabled.
    12. Quit profile loader and attach its logfiles (there may be two, DisplayCAL-apply-profiles.log and DisplayCAL-apply-profiles.1.log).
    #10533

    Monstieur
    Participant
    • Offline

    I haven’t got the logs yet, but I noticed something else. If I reboot my PC while display 2 & 3 are active (rather than the usual 1 & 3), the monitor to display # association in Windows sometimes changes. Monitor 1 becomes display 2 and monitor 2 becomes display 1, but monitor 3 remains display 3. The NVIDIA Control panel always shows the correct mapping.

    In this state, even if I make all 3 displays active, displays 1 & 2 are still swapped.

    • This reply was modified 6 years, 2 months ago by Monstieur.
    • This reply was modified 6 years, 2 months ago by Monstieur.
    #10538

    Florian Höch
    Administrator
    • Offline

    the monitor to display # association in Windows sometimes changes

    The display numbering is purely a user convenience for visually identifying displays, it is not used for anything else, i.e. it is not a mapping.

    #10544

    Monstieur
    Participant
    • Offline

    –verbose=2 was not recognized. I couldn’t find any verbose option so I just ran profile loader normally.

    At the end, I switched between display configurations several times so that both 1 & 2 had randomized defaults.

    Attachments:
    You must be logged in to view attached files.
    #10548

    Florian Höch
    Administrator
    • Offline

    --verbose=2 was not recognized

    Right, I think I’ve added that after 3.4 was released. Unfortunately, I definitely need the verbose output. The option -d will work (debug mode) instead.

    #10549

    Monstieur
    Participant
    • Offline

    I’ve attached logs in debug mode. I did the following:

    1. All active
    2. Launch profile loader
    3. 2 & 3 active
    4. All active
    5. Automatically fix profile associations
    6. 2 & 3 active

    I noticed that even in step 3 (before fix profile) the wrong profiles were shown in the loader for 2 & 3, but Windows showed the correct profile for the first  duplicate entry.

    Attachments:
    You must be logged in to view attached files.
    #10557

    Florian Höch
    Administrator
    • Offline

    Thanks, now I see what’s going on. It’s already apparent in “2-3-Active.txt” above: One deactivated monitor (DeviceID MONITOR\ACI27B1\{4d36e96e-e325-11ce-bfc1-08002be10318}\0003) is attached to all three adapters as the 1st monitor (index 0). This is bad because it means there’s actually no way I can work around it, and all programs relying on the Windows GetICMProfile API will not be able to query the correct profile, ever, at all (because the GetICMProfile API always queries the profile of the 1st monitor, not the active one, as it should. This is a Windows bug). This is totally unrelated to the profile loader, but it also explains why “Fix profile associations” can’t fix it.

    Some newer programs which don’t use the GetICMProfile API but use the newer WCS (Windows Color System) API introduced in Vista, will be able to query the correct profile, but these are far and between (I only know one apart from DisplayCAL: Affinity Photo).

    The only thing I can do is automatically disable “Fix profile associations” if such a circumstance is detected, and make sure that at least the calibration of the correct profile is loaded (but applications relying on GetICMProfile will still be using the wrong profile).

    #10558

    Florian Höch
    Administrator
    • Offline

    Please try DisplayCAL 3.5 Beta. This now disables fixing profile associations under conditions as described above.

    #10563

    Monstieur
    Participant
    • Offline

    It’s sufficient if it loads the correct gamma calibration. My monitor is relatively sRGB accurate, but has low gamma. I mainly need gamma calibration on the desktop.

Viewing 15 posts - 1 through 15 (of 32 total)

You must be logged in to reply to this topic.

Log in or Register

Display Calibration and Characterization powered by ArgyllCMS