diff --git a/mate-settings-daemon.spec b/mate-settings-daemon.spec index a358e8c..a2b2b21 100644 --- a/mate-settings-daemon.spec +++ b/mate-settings-daemon.spec @@ -15,7 +15,7 @@ Name: mate-settings-daemon Version: %{branch}.0 %if 0%{?rel_build} -Release: 1%{?dist} +Release: 2%{?dist} %else Release: 0.2%{?git_rel}%{?dist} %endif @@ -29,6 +29,9 @@ URL: http://mate-desktop.org # Source for snapshot-builds. %{!?rel_build:Source0: http://git.mate-desktop.org/%{name}/snapshot/%{name}-%{commit}.tar.xz#/%{git_tar}} +Patch1: mate-settings-daemon_0001-GTK-3.21-Fix-caja-startup-background.patch +Patch2: mate-settings-daemon_0002-GTK-3.21-Fix-background-changing-startup-delay.patch + BuildRequires: dbus-glib-devel BuildRequires: dconf-devel BuildRequires: desktop-file-utils @@ -66,6 +69,9 @@ under it. %prep %setup -q%{!?rel_build:n %{name}-%{commit}} +%patch1 -p1 -b .0001 +%patch2 -p1 -b .0002 + %if 0%{?rel_build} #NOCONFIGURE=1 ./autogen.sh %else # 0%{?rel_build} @@ -142,6 +148,9 @@ fi %changelog +* Sun Jul 24 2016 Wolfgang Ulbrich - 1.15.0-2 +- fix desktop redraw issues with gtk+-3.21.4 + * Thu Jun 09 2016 Wolfgang Ulbrich - 1.15.0-1 - update to 1.15.0 release - switch to gtk+3 diff --git a/mate-settings-daemon_0001-GTK-3.21-Fix-caja-startup-background.patch b/mate-settings-daemon_0001-GTK-3.21-Fix-caja-startup-background.patch new file mode 100644 index 0000000..dfe3ec6 --- /dev/null +++ b/mate-settings-daemon_0001-GTK-3.21-Fix-caja-startup-background.patch @@ -0,0 +1,51 @@ +From 09a27ea066cf2ec09d5312e52714303873c35915 Mon Sep 17 00:00:00 2001 +From: lukefromdc +Date: Sat, 23 Jul 2016 22:12:07 -0400 +Subject: [PATCH 1/2] GTK 3.21: Fix caja startup background + +Make sure m-s-d knows to draw the background unconditionally when used with transparent version of Caja for GTK 3.21.3 or later +--- + plugins/background/msd-background-manager.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/plugins/background/msd-background-manager.c b/plugins/background/msd-background-manager.c +index 586589b..0b02e73 100644 +--- a/plugins/background/msd-background-manager.c ++++ b/plugins/background/msd-background-manager.c +@@ -218,9 +218,10 @@ draw_background (MsdBackgroundManager *manager, + { + MsdBackgroundManagerPrivate *p = manager->priv; + ++#if !GTK_CHECK_VERSION(3, 21, 0) + if (!p->msd_can_draw || p->draw_in_progress || caja_is_drawing_bg (manager)) + return; +- ++#endif + mate_settings_profile_start (NULL); + + GdkDisplay *display = gdk_display_get_default (); +@@ -402,7 +403,7 @@ on_bg_handling_changed (GSettings *settings, + MsdBackgroundManagerPrivate *p = manager->priv; + + mate_settings_profile_start (NULL); +- ++#if !GTK_CHECK_VERSION(3, 21, 0) + if (caja_is_drawing_bg (manager)) + { + if (p->bg != NULL) +@@ -410,9 +411,11 @@ on_bg_handling_changed (GSettings *settings, + } + else if (p->msd_can_draw && p->bg == NULL) + { ++#endif + setup_background (manager); ++#if !GTK_CHECK_VERSION(3, 21, 0) + } +- ++#endif + mate_settings_profile_end (NULL); + } + +-- +2.7.4 + diff --git a/mate-settings-daemon_0002-GTK-3.21-Fix-background-changing-startup-delay.patch b/mate-settings-daemon_0002-GTK-3.21-Fix-background-changing-startup-delay.patch new file mode 100644 index 0000000..918e740 --- /dev/null +++ b/mate-settings-daemon_0002-GTK-3.21-Fix-background-changing-startup-delay.patch @@ -0,0 +1,125 @@ +From 42a4285ca5148567008933516c2a472c529739eb Mon Sep 17 00:00:00 2001 +From: lukefromdc +Date: Sat, 23 Jul 2016 22:41:53 -0400 +Subject: [PATCH 2/2] GTK 3.21: Fix background changing, startup delay + +Fix background changing with or without caja running. Remove all references to Caja from GTK 3.21 or later builds, remove resulting unused variable. +--- + plugins/background/msd-background-manager.c | 34 ++++++++++++++++++++++++----- + 1 file changed, 28 insertions(+), 6 deletions(-) + +diff --git a/plugins/background/msd-background-manager.c b/plugins/background/msd-background-manager.c +index 0b02e73..d693312 100644 +--- a/plugins/background/msd-background-manager.c ++++ b/plugins/background/msd-background-manager.c +@@ -67,7 +67,9 @@ struct MsdBackgroundManagerPrivate { + GList *scr_sizes; + + gboolean msd_can_draw; ++#if !GTK_CHECK_VERSION(3, 21, 0) + gboolean caja_can_draw; ++#endif + gboolean do_fade; + gboolean draw_in_progress; + +@@ -95,6 +97,7 @@ can_fade_bg (MsdBackgroundManager *manager) + return g_settings_get_boolean (manager->priv->settings, MATE_BG_KEY_BACKGROUND_FADE); + } + ++#if !GTK_CHECK_VERSION(3, 21, 0) + /* Whether Caja is configured to draw desktop (show-desktop-icons) */ + static gboolean + caja_can_draw_bg (MsdBackgroundManager *manager) +@@ -158,7 +161,7 @@ caja_is_drawing_bg (MsdBackgroundManager *manager) + + return running; + } +- ++#endif + static void + free_fade (MsdBackgroundManager *manager) + { +@@ -218,7 +221,10 @@ draw_background (MsdBackgroundManager *manager, + { + MsdBackgroundManagerPrivate *p = manager->priv; + +-#if !GTK_CHECK_VERSION(3, 21, 0) ++#if GTK_CHECK_VERSION(3, 21, 0) ++ if (!p->msd_can_draw || p->draw_in_progress) ++ return; ++#else + if (!p->msd_can_draw || p->draw_in_progress || caja_is_drawing_bg (manager)) + return; + #endif +@@ -264,10 +270,13 @@ on_screen_size_changed (GdkScreen *screen, + MsdBackgroundManager *manager) + { + MsdBackgroundManagerPrivate *p = manager->priv; +- ++#if GTK_CHECK_VERSION(3, 21, 0) ++ if (!p->msd_can_draw || p->draw_in_progress) ++ return; ++#else + if (!p->msd_can_draw || p->draw_in_progress || caja_is_drawing_bg (manager)) + return; +- ++#endif + gint scr_num = gdk_screen_get_number (screen); + gchar *old_size = g_list_nth_data (manager->priv->scr_sizes, scr_num); + gchar *new_size = g_strdup_printf ("%dx%d", gdk_screen_get_width (screen), +@@ -338,14 +347,20 @@ settings_change_event_cb (GSettings *settings, + + /* Complements on_bg_handling_changed() */ + p->msd_can_draw = msd_can_draw_bg (manager); ++#if GTK_CHECK_VERSION(3, 21, 0) ++ if (p->msd_can_draw && p->bg != NULL) ++ { ++ /* Defer signal processing to avoid making the dconf backend deadlock */ ++ g_idle_add ((GSourceFunc) settings_change_event_idle_cb, manager); ++ } ++#else + p->caja_can_draw = caja_can_draw_bg (manager); +- + if (p->msd_can_draw && p->bg != NULL && !caja_is_drawing_bg (manager)) + { + /* Defer signal processing to avoid making the dconf backend deadlock */ + g_idle_add ((GSourceFunc) settings_change_event_idle_cb, manager); + } +- ++#endif + return FALSE; /* let the event propagate further */ + } + +@@ -511,7 +526,9 @@ msd_background_manager_start (MsdBackgroundManager *manager, + p->settings = g_settings_new (MATE_BG_SCHEMA); + + p->msd_can_draw = msd_can_draw_bg (manager); ++#if !GTK_CHECK_VERSION(3, 21, 0) + p->caja_can_draw = caja_can_draw_bg (manager); ++#endif + + g_signal_connect (p->settings, "changed::" MATE_BG_KEY_DRAW_BACKGROUND, + G_CALLBACK (on_bg_handling_changed), manager); +@@ -524,14 +541,19 @@ msd_background_manager_start (MsdBackgroundManager *manager, + */ + if (p->msd_can_draw) + { ++#if !GTK_CHECK_VERSION(3, 21, 0) + if (p->caja_can_draw) + { ++ + draw_bg_after_session_loads (manager); + } + else + { ++#endif + setup_background (manager); ++#if !GTK_CHECK_VERSION(3, 21, 0) + } ++#endif + } + + mate_settings_profile_end (NULL); +-- +2.7.4 +