diff --git a/marco.spec b/marco.spec index ae5cfbb..a4946a4 100644 --- a/marco.spec +++ b/marco.spec @@ -15,7 +15,7 @@ Name: marco Version: %{branch}.0 %if 0%{?rel_build} -Release: 2%{?dist} +Release: 3%{?dist} %else Release: 0.16%{?git_rel}%{?dist} %endif @@ -29,6 +29,14 @@ 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}} +# from 1.26 upstream branch +Patch1: marco_0001-Safeguard-against-calling-gdk_x11_window_get_xid-wit.patch +Patch2: marco_0002-fix-code-formatting-issue-of-previous-commit.patch +Patch3: marco_0003-prefs-fix-memory-leak.patch +Patch4: marco_0004-build-fix-meson-build.patch +Patch5: marco_0005-compositor-xrender-fix-memory-leak.patch +Patch6: marco_0006-theme-fix-memory-leak.patch + BuildRequires: desktop-file-utils BuildRequires: gtk3-devel BuildRequires: libcanberra-devel @@ -151,6 +159,9 @@ desktop-file-install \ %changelog +* Fri Jul 08 2022 Wolfgang Ulbrich - 1.26.0-3 +- use commits from 1.26 upstream branch + * Thu Jan 20 2022 Fedora Release Engineering - 1.26.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild diff --git a/marco_0001-Safeguard-against-calling-gdk_x11_window_get_xid-wit.patch b/marco_0001-Safeguard-against-calling-gdk_x11_window_get_xid-wit.patch new file mode 100644 index 0000000..77ee0fe --- /dev/null +++ b/marco_0001-Safeguard-against-calling-gdk_x11_window_get_xid-wit.patch @@ -0,0 +1,31 @@ +From d5c241e50517bfefd462ecbb60ce4e202db0142b Mon Sep 17 00:00:00 2001 +From: rcaridade145 +Date: Fri, 15 Oct 2021 21:28:44 +0100 +Subject: [PATCH 1/6] Safeguard against calling gdk_x11_window_get_xid with a + NULL GdkWindow + +--- + src/core/display.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/core/display.c b/src/core/display.c +index 3b52c8b4..7a6cf12e 100644 +--- a/src/core/display.c ++++ b/src/core/display.c +@@ -1615,8 +1615,11 @@ mouse_event_is_in_tab_popup (MetaDisplay *display, + GtkWidget *popup_widget = meta_ui_tab_popup_get_widget (screen->tab_popup); + if (ok1 && popup_widget != NULL) + { +- Window popup_xid = gdk_x11_window_get_xid (gtk_widget_get_window (popup_widget)); +- ++ GdkWindow * window = gtk_widget_get_window (popup_widget); ++ if (window == NULL) ++ return FALSE; ++ ++ Window popup_xid = gdk_x11_window_get_xid (window); + gboolean ok2 = XTranslateCoordinates (display->xdisplay, + event_window, popup_xid, + event_x, event_y, +-- +2.36.1 + diff --git a/marco_0002-fix-code-formatting-issue-of-previous-commit.patch b/marco_0002-fix-code-formatting-issue-of-previous-commit.patch new file mode 100644 index 0000000..91de66d --- /dev/null +++ b/marco_0002-fix-code-formatting-issue-of-previous-commit.patch @@ -0,0 +1,26 @@ +From ebc99e2b034a370d644189295e8c5e0180e8f65d Mon Sep 17 00:00:00 2001 +From: raveit65 +Date: Tue, 26 Oct 2021 12:07:51 +0200 +Subject: [PATCH 2/6] fix code-formatting issue of previous commit + +- drop white spaces +--- + src/core/display.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/core/display.c b/src/core/display.c +index 7a6cf12e..b56b3732 100644 +--- a/src/core/display.c ++++ b/src/core/display.c +@@ -1618,7 +1618,7 @@ mouse_event_is_in_tab_popup (MetaDisplay *display, + GdkWindow * window = gtk_widget_get_window (popup_widget); + if (window == NULL) + return FALSE; +- ++ + Window popup_xid = gdk_x11_window_get_xid (window); + gboolean ok2 = XTranslateCoordinates (display->xdisplay, + event_window, popup_xid, +-- +2.36.1 + diff --git a/marco_0003-prefs-fix-memory-leak.patch b/marco_0003-prefs-fix-memory-leak.patch new file mode 100644 index 0000000..1726e79 --- /dev/null +++ b/marco_0003-prefs-fix-memory-leak.patch @@ -0,0 +1,108 @@ +From 3624c5a41655df7c882aacd7e780f03609b895da Mon Sep 17 00:00:00 2001 +From: rbuj +Date: Sat, 23 Oct 2021 13:35:56 +0200 +Subject: [PATCH 3/6] prefs: fix memory leak + +--- + src/core/prefs.c | 48 +++++++++++++++++++++++++++--------------------- + 1 file changed, 27 insertions(+), 21 deletions(-) + +diff --git a/src/core/prefs.c b/src/core/prefs.c +index 0c11fff6..1198113a 100644 +--- a/src/core/prefs.c ++++ b/src/core/prefs.c +@@ -1746,21 +1746,23 @@ static void + init_bindings (GSettings *settings) + { + GSettingsSchema *schema; +- gchar **list = NULL; +- gchar *str_val = NULL; ++ gchar **list; ++ gsize i; + + g_object_get (settings, "settings-schema", &schema, NULL); + list = g_settings_schema_list_keys (schema); + g_settings_schema_unref (schema); + +- while (*list != NULL) ++ for (i = 0; list[i] != NULL; i++) + { +- str_val = g_settings_get_string (settings, *list); +- update_key_binding (*list, str_val); +- list++; ++ gchar *str_val; ++ ++ str_val = g_settings_get_string (settings, list[i]); ++ update_key_binding (list[i], str_val); ++ g_free (str_val); + } + +- g_free (str_val); ++ g_strfreev (list); + } + + static void +@@ -1779,42 +1781,46 @@ static void + init_commands (void) + { + GSettingsSchema *schema; +- gchar **list = NULL; +- gchar *str_val = NULL; ++ gchar **list; ++ gsize i; + + g_object_get (settings_command, "settings-schema", &schema, NULL); + list = g_settings_schema_list_keys (schema); + g_settings_schema_unref (schema); + +- while (*list != NULL) ++ for (i = 0; list[i] != NULL; i++) + { +- str_val = g_settings_get_string (settings_command, *list); +- update_command (*list, str_val); +- list++; ++ gchar *str_val; ++ ++ str_val = g_settings_get_string (settings_command, list[i]); ++ update_command (list[i], str_val); ++ g_free (str_val); + } + +- g_free (str_val); ++ g_strfreev (list); + } + + static void + init_workspace_names (void) + { + GSettingsSchema *schema; +- gchar **list = NULL; +- gchar *str_val = NULL; ++ gchar **list; ++ gsize i; + + g_object_get (settings_workspace_names, "settings-schema", &schema, NULL); + list = g_settings_schema_list_keys (schema); + g_settings_schema_unref (schema); + +- while (*list != NULL) ++ for (i = 0; list[i] != NULL; i++) + { +- str_val = g_settings_get_string (settings_workspace_names, *list); +- update_workspace_name (*list, str_val); +- list++; ++ gchar *str_val; ++ ++ str_val = g_settings_get_string (settings_workspace_names, list[i]); ++ update_workspace_name (list[i], str_val); ++ g_free (str_val); + } + +- g_free (str_val); ++ g_strfreev (list); + } + + static gboolean +-- +2.36.1 + diff --git a/marco_0004-build-fix-meson-build.patch b/marco_0004-build-fix-meson-build.patch new file mode 100644 index 0000000..c8a7889 --- /dev/null +++ b/marco_0004-build-fix-meson-build.patch @@ -0,0 +1,25 @@ +From 70e1412cb417eff42abfe171ec1c682dfb51b5f5 Mon Sep 17 00:00:00 2001 +From: rbuj +Date: Wed, 26 Jan 2022 23:01:48 +0100 +Subject: [PATCH 4/6] build: fix meson build + +--- + src/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/meson.build b/src/meson.build +index eb5a5820..e7dd0784 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -211,7 +211,7 @@ xml_files = [ + ] + + foreach xml : xml_files +- i18n.merge_file(xml, ++ i18n.merge_file( + input: xml+ '.in', + output: xml, + po_dir: '../po', +-- +2.36.1 + diff --git a/marco_0005-compositor-xrender-fix-memory-leak.patch b/marco_0005-compositor-xrender-fix-memory-leak.patch new file mode 100644 index 0000000..5946cf6 --- /dev/null +++ b/marco_0005-compositor-xrender-fix-memory-leak.patch @@ -0,0 +1,100 @@ +From 9dcaf0bfee7c656a0b6fd6321280d0190229cfbf Mon Sep 17 00:00:00 2001 +From: rbuj +Date: Tue, 21 Dec 2021 17:53:29 +0100 +Subject: [PATCH 5/6] compositor-xrender: fix memory leak + +--- + src/compositor/compositor-xrender.c | 52 ++++++++++++++++++----------- + 1 file changed, 33 insertions(+), 19 deletions(-) + +diff --git a/src/compositor/compositor-xrender.c b/src/compositor/compositor-xrender.c +index f70432a7..fff82b21 100644 +--- a/src/compositor/compositor-xrender.c ++++ b/src/compositor/compositor-xrender.c +@@ -78,7 +78,7 @@ typedef enum _MetaCompWindowType + + typedef enum _MetaShadowType + { +- META_SHADOW_SMALL, ++ META_SHADOW_SMALL = 0, + META_SHADOW_MEDIUM, + META_SHADOW_LARGE, + LAST_SHADOW_TYPE +@@ -450,18 +450,22 @@ presum_gaussian (shadow *shad) + static void + generate_shadows (MetaCompScreen *info) + { +- double radii[LAST_SHADOW_TYPE] = {SHADOW_SMALL_RADIUS, +- SHADOW_MEDIUM_RADIUS, +- SHADOW_LARGE_RADIUS}; +- int i; ++ double radii [LAST_SHADOW_TYPE] = { ++ [META_SHADOW_SMALL] = SHADOW_SMALL_RADIUS, ++ [META_SHADOW_MEDIUM] = SHADOW_MEDIUM_RADIUS, ++ [META_SHADOW_LARGE] = SHADOW_LARGE_RADIUS ++ }; + +- for (i = 0; i < LAST_SHADOW_TYPE; i++) { +- shadow *shad = g_new0 (shadow, 1); ++ MetaShadowType t; + +- shad->gaussian_map = make_gaussian_map (radii[i]); +- presum_gaussian (shad); ++ for (t = META_SHADOW_SMALL; t < LAST_SHADOW_TYPE; t++) ++ { ++ shadow *shad; + +- info->shadows[i] = shad; ++ shad = g_new0 (shadow, 1); ++ shad->gaussian_map = make_gaussian_map (radii [t]); ++ presum_gaussian (shad); ++ info->shadows [t] = shad; + } + } + +@@ -593,12 +597,17 @@ make_shadow (MetaDisplay *display, + return ximage; + } + +-double shadow_offsets_x[LAST_SHADOW_TYPE] = {SHADOW_SMALL_OFFSET_X, +- SHADOW_MEDIUM_OFFSET_X, +- SHADOW_LARGE_OFFSET_X}; +-double shadow_offsets_y[LAST_SHADOW_TYPE] = {SHADOW_SMALL_OFFSET_Y, +- SHADOW_MEDIUM_OFFSET_Y, +- SHADOW_LARGE_OFFSET_Y}; ++double shadow_offsets_x [LAST_SHADOW_TYPE] = { ++ [META_SHADOW_SMALL] = SHADOW_SMALL_OFFSET_X, ++ [META_SHADOW_MEDIUM] = SHADOW_MEDIUM_OFFSET_X, ++ [META_SHADOW_LARGE] = SHADOW_LARGE_OFFSET_X ++}; ++ ++double shadow_offsets_y[LAST_SHADOW_TYPE] = { ++ [META_SHADOW_SMALL] = SHADOW_SMALL_OFFSET_Y, ++ [META_SHADOW_MEDIUM] = SHADOW_MEDIUM_OFFSET_Y, ++ [META_SHADOW_LARGE] = SHADOW_LARGE_OFFSET_Y ++}; + + static XserverRegion + cairo_region_to_xserver_region (Display *xdisplay, +@@ -3072,10 +3081,15 @@ xrender_unmanage_screen (MetaCompositor *compositor, + + if (info->have_shadows) + { +- int i; ++ MetaShadowType t; + +- for (i = 0; i < LAST_SHADOW_TYPE; i++) +- g_free (info->shadows[i]->gaussian_map); ++ for (t = META_SHADOW_SMALL; t < LAST_SHADOW_TYPE; t++) ++ { ++ g_free (info->shadows[t]->gaussian_map); ++ g_free (info->shadows[t]->shadow_corner); ++ g_free (info->shadows[t]->shadow_top); ++ g_free (info->shadows[t]); ++ } + } + + XCompositeUnredirectSubwindows (xdisplay, xroot, +-- +2.36.1 + diff --git a/marco_0006-theme-fix-memory-leak.patch b/marco_0006-theme-fix-memory-leak.patch new file mode 100644 index 0000000..9c70617 --- /dev/null +++ b/marco_0006-theme-fix-memory-leak.patch @@ -0,0 +1,24 @@ +From d173ab019c6928cfdefa6355ab0aca61f969804f Mon Sep 17 00:00:00 2001 +From: rbuj +Date: Sun, 16 Jan 2022 10:26:02 +0100 +Subject: [PATCH 6/6] theme: fix memory leak + +--- + src/ui/theme.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/ui/theme.c b/src/ui/theme.c +index bd51673e..c117eeb8 100644 +--- a/src/ui/theme.c ++++ b/src/ui/theme.c +@@ -6241,7 +6241,6 @@ meta_gtk_widget_get_font_desc (GtkWidget *widget, + GtkStyleContext *style = gtk_widget_get_style_context (widget); + GtkStateFlags state = gtk_widget_get_state_flags (widget); + gtk_style_context_get(style, state, GTK_STYLE_PROPERTY_FONT, &font_desc, NULL); +- font_desc = pango_font_description_copy (font_desc); + + if (override) + pango_font_description_merge (font_desc, override, TRUE); +-- +2.36.1 +