Daniel van Vugt has proposed merging ~vanvugt/ubuntu/+source/mutter:fix-lp1847551 into ~ubuntu-desktop/ubuntu/+source/mutter:ubuntu/master.
Commit message: Add fix-gamma-1cc249fe+1b470979.patch (LP: #1847551) to fix broken night light and colour profiles. Requested reviews: Pierre Equoy (pieq) Ubuntu Desktop (ubuntu-desktop) Related bugs: Bug #1847551 in mutter (Ubuntu): "Mutter 3.34.1 broke Night Light, screen color profiles in Wayland sessions" https://bugs.launchpad.net/ubuntu/+source/mutter/+bug/1847551 For more details, see: https://code.launchpad.net/~vanvugt/ubuntu/+source/mutter/+git/mutter/+merge/374507 Tested. Works. -- Your team Ubuntu Desktop is requested to review the proposed merge of ~vanvugt/ubuntu/+source/mutter:fix-lp1847551 into ~ubuntu-desktop/ubuntu/+source/mutter:ubuntu/master.
diff --git a/debian/changelog b/debian/changelog index 06847be..2d01ec3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +mutter (3.34.1-1ubuntu2) UNRELEASED; urgency=medium + + * Add patch fix-gamma-1cc249fe+1b470979.patch to fix broken night light + and colour profiles (LP: #1847551) + + -- Daniel van Vugt <daniel.van.v...@canonical.com> Tue, 22 Oct 2019 17:47:58 +0800 + mutter (3.34.1-1ubuntu1) eoan; urgency=medium * Merge with debian. Remaining changes: diff --git a/debian/patches/fix-gamma-1cc249fe+1b470979.patch b/debian/patches/fix-gamma-1cc249fe+1b470979.patch new file mode 100644 index 0000000..6b149a4 --- /dev/null +++ b/debian/patches/fix-gamma-1cc249fe+1b470979.patch @@ -0,0 +1,138 @@ +Description: Fix broken night light and colour profiles in mutter 3.34.1 +Author: Daniel van Vugt <daniel.van.v...@canonical.com> +Origin: upstream commits 1cc249fe+1b470979 +Bug: https://gitlab.gnome.org/GNOME/mutter/issues/851 +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1847551 +Forwarded: not-needed +Last-Update: 2019-10-22 + +diff --git a/src/backends/native/meta-kms-crtc.c b/src/backends/native/meta-kms-crtc.c +index 3610df903..da99a58cd 100644 +--- a/src/backends/native/meta-kms-crtc.c ++++ b/src/backends/native/meta-kms-crtc.c +@@ -143,14 +143,26 @@ meta_kms_crtc_update_state (MetaKmsCrtc *crtc) + drmModeFreeCrtc (drm_crtc); + } + ++static void ++clear_gamma_state (MetaKmsCrtc *crtc) ++{ ++ crtc->current_state.gamma.size = 0; ++ g_clear_pointer (&crtc->current_state.gamma.red, g_free); ++ g_clear_pointer (&crtc->current_state.gamma.green, g_free); ++ g_clear_pointer (&crtc->current_state.gamma.blue, g_free); ++} ++ + void + meta_kms_crtc_predict_state (MetaKmsCrtc *crtc, + MetaKmsUpdate *update) + { ++ gboolean is_gamma_valid; + GList *mode_sets; + GList *crtc_gammas; + GList *l; + ++ is_gamma_valid = TRUE; ++ + mode_sets = meta_kms_update_get_mode_sets (update); + for (l = mode_sets; l; l = l->next) + { +@@ -178,6 +190,8 @@ meta_kms_crtc_predict_state (MetaKmsCrtc *crtc, + crtc->current_state.drm_mode = (drmModeModeInfo) { 0 }; + } + ++ is_gamma_valid = FALSE; ++ + break; + } + +@@ -196,8 +210,36 @@ meta_kms_crtc_predict_state (MetaKmsCrtc *crtc, + g_memdup (gamma->green, gamma->size * sizeof (uint16_t)); + crtc->current_state.gamma.blue = + g_memdup (gamma->blue, gamma->size * sizeof (uint16_t)); ++ ++ is_gamma_valid = TRUE; + break; + } ++ ++ if (!is_gamma_valid) ++ { ++ if (crtc->current_state.is_drm_mode_valid) ++ { ++ MetaKmsImplDevice *impl_device; ++ drmModeCrtc *drm_crtc; ++ ++ impl_device = meta_kms_device_get_impl_device (crtc->device); ++ drm_crtc = drmModeGetCrtc (meta_kms_impl_device_get_fd (impl_device), ++ crtc->id); ++ if (drm_crtc) ++ { ++ read_gamma_state (crtc, impl_device, drm_crtc); ++ drmModeFreeCrtc (drm_crtc); ++ } ++ else ++ { ++ clear_gamma_state (crtc); ++ } ++ } ++ else ++ { ++ clear_gamma_state (crtc); ++ } ++ } + } + + MetaKmsCrtc * +@@ -220,9 +262,7 @@ meta_kms_crtc_finalize (GObject *object) + { + MetaKmsCrtc *crtc = META_KMS_CRTC (object); + +- g_clear_pointer (&crtc->current_state.gamma.red, g_free); +- g_clear_pointer (&crtc->current_state.gamma.green, g_free); +- g_clear_pointer (&crtc->current_state.gamma.blue, g_free); ++ clear_gamma_state (crtc); + + G_OBJECT_CLASS (meta_kms_crtc_parent_class)->finalize (object); + } +diff --git a/src/backends/native/meta-kms-update-private.h b/src/backends/native/meta-kms-update-private.h +index 88e2590af..df7737c9b 100644 +--- a/src/backends/native/meta-kms-update-private.h ++++ b/src/backends/native/meta-kms-update-private.h +@@ -110,6 +110,4 @@ GList * meta_kms_update_get_connector_properties (MetaKmsUpdate *update); + + GList * meta_kms_update_get_crtc_gammas (MetaKmsUpdate *update); + +-gboolean meta_kms_update_has_mode_set (MetaKmsUpdate *update); +- + #endif /* META_KMS_UPDATE_PRIVATE_H */ +diff --git a/src/backends/native/meta-kms-update.c b/src/backends/native/meta-kms-update.c +index 2a4a05c3e..c946aa7a2 100644 +--- a/src/backends/native/meta-kms-update.c ++++ b/src/backends/native/meta-kms-update.c +@@ -282,12 +282,6 @@ meta_kms_update_get_crtc_gammas (MetaKmsUpdate *update) + return update->crtc_gammas; + } + +-gboolean +-meta_kms_update_has_mode_set (MetaKmsUpdate *update) +-{ +- return !!update->mode_sets; +-} +- + void + meta_kms_update_seal (MetaKmsUpdate *update) + { +diff --git a/src/backends/native/meta-kms.c b/src/backends/native/meta-kms.c +index 9485bb4e8..804a1adda 100644 +--- a/src/backends/native/meta-kms.c ++++ b/src/backends/native/meta-kms.c +@@ -211,8 +211,7 @@ meta_kms_update_process_in_impl (MetaKmsImpl *impl, + + ret = meta_kms_impl_process_update (impl, update, error); + +- if (meta_kms_update_has_mode_set (update)) +- meta_kms_predict_states_in_impl (meta_kms_impl_get_kms (impl), update); ++ meta_kms_predict_states_in_impl (meta_kms_impl_get_kms (impl), update); + + return ret; + } diff --git a/debian/patches/series b/debian/patches/series index 8590a4e..e12ca3f 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -4,3 +4,4 @@ meson-add-back-default_driver-option.patch x11-Add-support-for-fractional-scaling-using-Randr.patch debian/synaptics-support.patch debian/tests-Tag-closed-transient-no-input-tests-as-flaky.patch +fix-gamma-1cc249fe+1b470979.patch
-- ubuntu-desktop mailing list ubuntu-desktop@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-desktop