#976454 colord-kde: Wrong assignment of _ICC_PROFILE in multi-monitor setups where the primary monitor is not first in list.

Package:
colord-kde
Source:
colord-kde
Description:
Color management for KDE
Submitter:
emw
Date:
2020-12-05 11:36:06 UTC
Severity:
important
Tags:
#976454#5
Date:
2020-12-05 11:34:09 UTC
From:
To:
Dear Maintainer,

colord-kde does not assign ICC profile X atoms correctly if the primary monitor
is not the first one in the monitor list.

My setup:

   DP-4   Monitor B (primary)
   HDMI-0 Monitor A

darktable-cmstest diagnosis:

    darktable-cmstest version 3.2.1
    this executable was built with colord support enabled
    darktable itself was built with colord support enabled

    primary CRTC is at CRTC 0
    CRTC for screen 0 CRTC 2 has no mode or no output, skipping
    CRTC for screen 0 CRTC 3 has no mode or no output, skipping

    DP-4        the X atom and colord returned different profiles
        X atom: _ICC_PROFILE (1212 bytes)
                description: Monitor A
        colord: "/path/to/icc/edid-monitor-B.icc"
                description: Monitor B (primary)

    HDMI-0      the X atom and colord returned different profiles
        X atom: _ICC_PROFILE_1 (0 bytes)
                description: (none)
        colord: "/path/to/icc/edid-A.icc"
                description: Monitor A

    Better check your system setup
     - some monitors reported different profiles
    You may experience inconsistent color rendition between color managed
applications

To my understanding, the error is an obviously missing C++-Reference "&" in the
assignment loop of atom IDs in colord-kde:

Original Code:

    for (auto monitor : monitorList) {
        monitor.atomId = atomId++;
    }

Fix Proposal (see pull request https://github.com/KDE/colord-kde/pull/1 ):

    for (auto & monitor : AmonitorList) {
        monitor.atomId = atomId++;
    }



With the fix, the darktable-cmstest diagnosis is fine:

    darktable-cmstest version 3.2.1
    this executable was built with colord support enabled
    darktable itself was built with colord support enabled

    primary CRTC is at CRTC 0
    CRTC for screen 0 CRTC 2 has no mode or no output, skipping
    CRTC for screen 0 CRTC 3 has no mode or no output, skipping

    DP-4        the X atom and colord returned the same profile
        X atom: _ICC_PROFILE (1204 bytes)
                description: Monitor B (primary)
        colord: "/path/to/icc/edid-monitor-B.icc"
                description: Monitor B (primary)

    HDMI-0      the X atom and colord returned the same profile
        X atom: _ICC_PROFILE_1 (1212 bytes)
                description: Monitor A
        colord: "/path/to/icc/edid-monitor-A.icc"
                description: Monitor A

    Your system seems to be correctly configured


It would be great if you could include this fix into the debian packet.

With best regards and many thx!
   Martin