diff options
Diffstat (limited to 'src/backends/meta-output.c')
-rw-r--r-- | src/backends/meta-output.c | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/src/backends/meta-output.c b/src/backends/meta-output.c index efa279aa3..2610b3509 100644 --- a/src/backends/meta-output.c +++ b/src/backends/meta-output.c @@ -529,16 +529,37 @@ meta_output_set_privacy_screen_enabled (MetaOutput *output, } gboolean +meta_output_info_is_color_space_supported (const MetaOutputInfo *output_info, + MetaOutputColorspace color_space) +{ + MetaEdidColorimetry colorimetry; + + if (!output_info->edid_info) + return FALSE; + + colorimetry = output_info->edid_info->colorimetry; + + switch (color_space) + { + case META_OUTPUT_COLORSPACE_DEFAULT: + return TRUE; + case META_OUTPUT_COLORSPACE_BT2020: + return !!(colorimetry & META_EDID_COLORIMETRY_BT2020RGB); + default: + return FALSE; + } +} + +gboolean meta_output_is_color_space_supported (MetaOutput *output, MetaOutputColorspace color_space) { MetaOutputClass *output_class = META_OUTPUT_GET_CLASS (output); - uint64_t supported = 0; - if (output_class->get_supported_color_spaces) - supported = output_class->get_supported_color_spaces (output); + if (!output_class->is_color_space_supported) + return FALSE; - return supported & (1 << color_space); + return output_class->is_color_space_supported (output, color_space); } void |