[arch-commits] Commit in xfce4-settings/trunk (3 files)

Evangelos Foutras foutrelis at archlinux.org
Mon Aug 19 23:11:55 UTC 2019


    Date: Monday, August 19, 2019 @ 23:11:54
  Author: foutrelis
Revision: 359966

upgpkg: xfce4-settings 4.14.0-2

Apply upstream fix for crashes in multi-monitor setups (FS#63449).

Added:
  xfce4-settings/trunk/0001-display-Assure-correct-gchar-Bug-15816.patch
  xfce4-settings/trunk/0002-display-Fix-profile-matching-in-xfsettingsd.patch
Modified:
  xfce4-settings/trunk/PKGBUILD

--------------------------------------------------------+
 0001-display-Assure-correct-gchar-Bug-15816.patch      |  103 +++++++++++++++
 0002-display-Fix-profile-matching-in-xfsettingsd.patch |   54 +++++++
 PKGBUILD                                               |   14 +-
 3 files changed, 168 insertions(+), 3 deletions(-)

Added: 0001-display-Assure-correct-gchar-Bug-15816.patch
===================================================================
--- 0001-display-Assure-correct-gchar-Bug-15816.patch	                        (rev 0)
+++ 0001-display-Assure-correct-gchar-Bug-15816.patch	2019-08-19 23:11:54 UTC (rev 359966)
@@ -0,0 +1,103 @@
+From ae8221b23f72f62276bd0a0ffe129329b217a612 Mon Sep 17 00:00:00 2001
+From: Simon Steinbeiss <simon.steinbeiss at elfenbeinturm.at>
+Date: Mon, 19 Aug 2019 18:09:48 +0200
+Subject: [PATCH 1/2] display: Assure correct gchar** (Bug #15816)
+
+---
+ common/display-profiles.c       | 7 +------
+ dialogs/display-settings/main.c | 5 ++++-
+ xfsettingsd/displays.c          | 6 +++++-
+ 3 files changed, 10 insertions(+), 8 deletions(-)
+
+diff --git a/common/display-profiles.c b/common/display-profiles.c
+index 2265a223..1aab530e 100644
+--- a/common/display-profiles.c
++++ b/common/display-profiles.c
+@@ -108,7 +108,7 @@ display_settings_get_profiles (gchar **display_infos, XfconfChannel *channel)
+             continue;
+         }
+ 
+-        profile_name = g_strdup_printf ("%s", *(current_elements+1));
++        profile_name = g_strdup_printf ("%s", *(current_elements + 1));
+         g_strfreev (current_elements);
+ 
+         /* Walk through the profile and check if every EDID referenced there is also currently available */
+@@ -162,11 +162,6 @@ display_settings_get_profiles (gchar **display_infos, XfconfChannel *channel)
+         g_free (profile_name);
+     }
+ 
+-    for (m = 0; m < noutput; ++m)
+-    {
+-        g_free (display_infos[m]);
+-    }
+-    g_free (display_infos);
+     g_list_free (channel_contents);
+     g_hash_table_destroy (properties);
+ 
+diff --git a/dialogs/display-settings/main.c b/dialogs/display-settings/main.c
+index bbabfaaa..dc528483 100644
+--- a/dialogs/display-settings/main.c
++++ b/dialogs/display-settings/main.c
+@@ -1264,12 +1264,13 @@ display_settings_get_display_infos (void)
+     gchar   **display_infos;
+     guint     m;
+ 
+-    display_infos = g_new0 (gchar *, xfce_randr->noutput);
++    display_infos = g_new0 (gchar *, xfce_randr->noutput + 1);
+     /* get all display edids, to only query randr once */
+     for (m = 0; m < xfce_randr->noutput; ++m)
+     {
+         display_infos[m] = g_strdup_printf ("%s", xfce_randr_get_edid (xfce_randr, m));
+     }
++
+     return display_infos;
+ }
+ 
+@@ -1286,6 +1287,7 @@ display_settings_minimal_profile_populate (GtkBuilder *builder)
+ 
+     display_infos = display_settings_get_display_infos ();
+     profiles = display_settings_get_profiles (display_infos, display_channel);
++    g_strfreev (display_infos);
+ 
+     current = g_list_first (profiles);
+     while (current)
+@@ -1386,6 +1388,7 @@ display_settings_profile_list_populate (GtkBuilder *builder)
+ 
+     display_infos = display_settings_get_display_infos ();
+     profiles = display_settings_get_profiles (display_infos, display_channel);
++    g_strfreev (display_infos);
+ 
+     /* Populate treeview */
+     current = g_list_first (profiles);
+diff --git a/xfsettingsd/displays.c b/xfsettingsd/displays.c
+index 4933ca40..289ff206 100644
+--- a/xfsettingsd/displays.c
++++ b/xfsettingsd/displays.c
+@@ -444,7 +444,7 @@ xfce_displays_helper_get_display_infos (gint      noutput,
+     gint       m;
+     guint8    *edid_data;
+ 
+-    display_infos = g_new0 (gchar *, noutput);
++    display_infos = g_new0 (gchar *, noutput + 1);
+     /* get all display edids, to only query randr once */
+     for (m = 0; m < noutput; ++m)
+     {
+@@ -452,7 +452,10 @@ xfce_displays_helper_get_display_infos (gint      noutput,
+ 
+         if (edid_data)
+             display_infos[m] = g_compute_checksum_for_data (G_CHECKSUM_SHA1 , edid_data, 128);
++        else
++            display_infos[m] = g_strdup ("");
+     }
++
+     return display_infos;
+ }
+ 
+@@ -473,6 +476,7 @@ xfce_displays_helper_get_matching_profile (XfceDisplaysHelper *helper)
+     if (display_infos)
+     {
+         profiles = display_settings_get_profiles (display_infos, helper->channel);
++        g_strfreev (display_infos);
+     }
+ 
+     if (profiles == NULL)

Added: 0002-display-Fix-profile-matching-in-xfsettingsd.patch
===================================================================
--- 0002-display-Fix-profile-matching-in-xfsettingsd.patch	                        (rev 0)
+++ 0002-display-Fix-profile-matching-in-xfsettingsd.patch	2019-08-19 23:11:54 UTC (rev 359966)
@@ -0,0 +1,54 @@
+From 41dec5a0e2ac07676dffa1e3d5fc6f215a0c074d Mon Sep 17 00:00:00 2001
+From: Simon Steinbeiss <simon.steinbeiss at elfenbeinturm.at>
+Date: Mon, 19 Aug 2019 18:11:31 +0200
+Subject: [PATCH 2/2] display: Fix profile matching in xfsettingsd
+
+Previously the code (erroneously) checked the CRTCs instead of the
+Outputs, which meant that sometimes no EDID would be found (which is to
+be expected) or the amount of CRTCs would differ from the amount of
+Outputs, so the for loop would be messed up.
+---
+ xfsettingsd/displays.c | 15 +++++++++------
+ 1 file changed, 9 insertions(+), 6 deletions(-)
+
+diff --git a/xfsettingsd/displays.c b/xfsettingsd/displays.c
+index 289ff206..2efefa8e 100644
+--- a/xfsettingsd/displays.c
++++ b/xfsettingsd/displays.c
+@@ -436,9 +436,9 @@ xfce_displays_helper_reload (XfceDisplaysHelper *helper)
+ 
+ 
+ static gchar **
+-xfce_displays_helper_get_display_infos (gint      noutput,
+-                                        Display  *xdisplay,
+-                                        RROutput *outputs)
++xfce_displays_helper_get_display_infos (gint       noutput,
++                                        Display   *xdisplay,
++                                        GPtrArray *outputs)
+ {
+     gchar    **display_infos;
+     gint       m;
+@@ -448,7 +448,10 @@ xfce_displays_helper_get_display_infos (gint      noutput,
+     /* get all display edids, to only query randr once */
+     for (m = 0; m < noutput; ++m)
+     {
+-        edid_data = xfce_randr_read_edid_data (xdisplay, outputs[m]);
++        XfceRROutput *output;
++
++        output = g_ptr_array_index (outputs, m);
++        edid_data = xfce_randr_read_edid_data (xdisplay, output->id);
+ 
+         if (edid_data)
+             display_infos[m] = g_compute_checksum_for_data (G_CHECKSUM_SHA1 , edid_data, 128);
+@@ -470,9 +473,9 @@ xfce_displays_helper_get_matching_profile (XfceDisplaysHelper *helper)
+     gchar              *property;
+     gchar             **display_infos;
+ 
+-    display_infos = xfce_displays_helper_get_display_infos (helper->resources->noutput,
++    display_infos = xfce_displays_helper_get_display_infos (helper->outputs->len,
+                                                             helper->xdisplay,
+-                                                            helper->resources->outputs);
++                                                            helper->outputs);
+     if (display_infos)
+     {
+         profiles = display_settings_get_profiles (display_infos, helper->channel);

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2019-08-19 20:48:53 UTC (rev 359965)
+++ PKGBUILD	2019-08-19 23:11:54 UTC (rev 359966)
@@ -4,7 +4,7 @@
 
 pkgname=xfce4-settings
 pkgver=4.14.0
-pkgrel=1
+pkgrel=2
 pkgdesc="Settings manager of the Xfce desktop"
 arch=('x86_64')
 url="https://www.xfce.org/"
@@ -11,17 +11,25 @@
 license=('GPL2')
 groups=('xfce4')
 depends=('exo' 'garcon' 'libxfce4ui' 'xfconf' 'libnotify' 'colord'
-         'libxklavier' 'adwaita-icon-theme' 'gnome-themes-standard')
+         'libxklavier' 'adwaita-icon-theme' 'gnome-themes-extra')
 makedepends=('intltool' 'xf86-input-libinput')
 optdepends=('libcanberra: for sound control')
 source=(https://archive.xfce.org/src/xfce/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.bz2
+        0001-display-Assure-correct-gchar-Bug-15816.patch
+        0002-display-Fix-profile-matching-in-xfsettingsd.patch
         default-xsettings-xml.patch)
 sha256sums=('e03040d623abda0222ad04f226582277a1936507ddfa927ec8e87927debc113c'
+            '48ef9711f7f84370d5e39792ffed818452358f5ccacf11ff06ed1abc02e775e6'
+            '667c914ce8fe058df5217bab15e06d0034b049e025870ae72135e5e3c415eb63'
             '8e9a6c70ab0ceb5d91b637dc290768f8a47edb5d7b6e2eebc4459dbc4ee040d7')
 prepare() {
   cd "$srcdir/$pkgname-$pkgver"
 
-  # Enable GNOME icon theme, Adwaita theme and font hinting by default
+  # https://bugzilla.xfce.org/show_bug.cgi?id=15816
+  patch -Np1 -i ../0001-display-Assure-correct-gchar-Bug-15816.patch
+  patch -Np1 -i ../0002-display-Fix-profile-matching-in-xfsettingsd.patch
+
+  # Enable Adwaita theme and font hinting by default
   patch -Np1 -i "$srcdir/default-xsettings-xml.patch"
 }
 


More information about the arch-commits mailing list