diff --git a/src/backends/native/meta-onscreen-native.c b/src/backends/native/meta-onscreen-native.c index 64b25cdd0..578bccfa9 100644 --- a/src/backends/native/meta-onscreen-native.c +++ b/src/backends/native/meta-onscreen-native.c @@ -1405,7 +1405,13 @@ meta_onscreen_native_prepare_frame (CoglOnscreen *onscreen, meta_crtc_kms_set_gamma (crtc_kms, kms_update); } - meta_output_kms_maybe_set_privacy_screen (output_kms, kms_device); + if (meta_output_kms_is_privacy_screen_invalid (output_kms)) + { + MetaKmsUpdate *kms_update; + + kms_update = meta_kms_ensure_pending_update (kms, kms_device); + meta_output_kms_set_privacy_screen (output_kms, kms_update); + } } void diff --git a/src/backends/native/meta-output-kms.c b/src/backends/native/meta-output-kms.c index 470187d95..a87580fd6 100644 --- a/src/backends/native/meta-output-kms.c +++ b/src/backends/native/meta-output-kms.c @@ -176,23 +176,25 @@ meta_output_kms_set_privacy_screen_enabled (MetaOutput *output, return TRUE; } -void -meta_output_kms_maybe_set_privacy_screen (MetaOutputKms *output_kms, - MetaKmsDevice *kms_device) +gboolean +meta_output_kms_is_privacy_screen_invalid (MetaOutputKms *output_kms) { - MetaKms *kms = meta_kms_device_get_kms (kms_device); - MetaKmsConnector *connector = meta_output_kms_get_kms_connector (output_kms); - MetaKmsUpdate *kms_update; + return !output_kms->is_privacy_screen_valid; +} - if (output_kms->is_privacy_screen_valid) - return; +void +meta_output_kms_set_privacy_screen (MetaOutputKms *output_kms, + MetaKmsUpdate *kms_update) +{ + MetaKmsConnector *connector = meta_output_kms_get_kms_connector (output_kms); + + g_return_if_fail (!output_kms->is_privacy_screen_valid); output_kms->is_privacy_screen_valid = TRUE; if (!meta_kms_connector_is_privacy_screen_supported (connector)) return; - kms_update = meta_kms_ensure_pending_update (kms, kms_device); meta_kms_update_set_privacy_screen (kms_update, connector, output_kms->is_privacy_screen_enabled); } diff --git a/src/backends/native/meta-output-kms.h b/src/backends/native/meta-output-kms.h index f4f1615cc..a9d8f99b1 100644 --- a/src/backends/native/meta-output-kms.h +++ b/src/backends/native/meta-output-kms.h @@ -43,8 +43,10 @@ void meta_output_kms_set_underscan (MetaOutputKms *output_kms, void meta_output_kms_set_max_bpc (MetaOutputKms *output_kms, MetaKmsUpdate *kms_update); -void meta_output_kms_maybe_set_privacy_screen (MetaOutputKms *output_kms, - MetaKmsDevice *kms_device); +gboolean meta_output_kms_is_privacy_screen_invalid (MetaOutputKms *output_kms); + +void meta_output_kms_set_privacy_screen (MetaOutputKms *output_kms, + MetaKmsUpdate *kms_update); gboolean meta_output_kms_can_clone (MetaOutputKms *output_kms, MetaOutputKms *other_output_kms);