fix desktop redraw issues with gtk+-3.21.4

This commit is contained in:
raveit65 2016-07-24 16:14:09 +02:00
parent 81a01c2870
commit f91a30fb3a
3 changed files with 186 additions and 1 deletions

View File

@ -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 <chat-to-me@raveit.de> - 1.15.0-2
- fix desktop redraw issues with gtk+-3.21.4
* Thu Jun 09 2016 Wolfgang Ulbrich <chat-to-me@raveit.de> - 1.15.0-1
- update to 1.15.0 release
- switch to gtk+3

View File

@ -0,0 +1,51 @@
From 09a27ea066cf2ec09d5312e52714303873c35915 Mon Sep 17 00:00:00 2001
From: lukefromdc <lukefromdc@hushmail.com>
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

View File

@ -0,0 +1,125 @@
From 42a4285ca5148567008933516c2a472c529739eb Mon Sep 17 00:00:00 2001
From: lukefromdc <lukefromdc@hushmail.com>
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