Bug 1822519 - When qcms_profile_from_memory fails, default to sRGB for display space. r=gfx-reviewers,jrmuizel

Differential Revision: https://phabricator.services.mozilla.com/D172837
This commit is contained in:
Kelsey Gilbert 2023-03-16 20:54:52 +00:00
parent 0bcc307110
commit 25f19106d7

View file

@ -1749,12 +1749,30 @@ color::ColorProfileDesc DCLayerTree::QueryOutputColorProfile() {
const auto qcmsProfile = qcms_profile_from_memory(
outputProfileData.Elements(), outputProfileData.Length());
MOZ_ASSERT(qcmsProfile);
const auto release =
MakeScopeExit([&]() { qcms_profile_release(qcmsProfile); });
const auto release = MakeScopeExit([&]() {
if (qcmsProfile) {
qcms_profile_release(qcmsProfile);
}
});
const bool print = gfxEnv::MOZ_GL_SPEW();
const auto ret = [&]() {
if (qcmsProfile) {
return color::ColorProfileDesc::From(*qcmsProfile);
}
if (print) {
printf_stderr(
"Missing or failed to load display color profile, defaulting to "
"sRGB.\n");
}
const auto MISSING_PROFILE_DEFAULT_SPACE = color::ColorspaceDesc{
color::Chromaticities::Srgb(),
color::PiecewiseGammaDesc::Srgb(),
};
return color::ColorProfileDesc::From(MISSING_PROFILE_DEFAULT_SPACE);
}();
const auto ret = color::ColorProfileDesc::From(*qcmsProfile);
bool print = gfxEnv::MOZ_GL_SPEW();
if (print) {
const auto gammaGuess = color::GuessGamma(ret.linearFromTf.r);
printf_stderr(