diff --git a/0001-atlas-texture-Keep-reference-on-potential-destinatio.patch b/0001-atlas-texture-Keep-reference-on-potential-destinatio.patch new file mode 100644 index 0000000..5388f39 --- /dev/null +++ b/0001-atlas-texture-Keep-reference-on-potential-destinatio.patch @@ -0,0 +1,58 @@ +From 5556241b67a58b1d28997e752ecf45244f6003d1 Mon Sep 17 00:00:00 2001 +From: Felix Riemann +Date: Sat, 12 Apr 2014 00:26:00 +0200 +Subject: [PATCH] atlas-texture: Keep reference on potential destination atlas + +When a new CoglAtlasTexture tries to fit into an existing CoglAtlas +it should make sure the atlas stays valid while it expands. + +https://bugzilla.gnome.org/show_bug.cgi?id=728064 + +Reviewed-by: Neil Roberts +(cherry picked from commit 2eec9758f67e9073371c2edd63379324849373c4) +--- + cogl/cogl-atlas-texture.c | 28 +++++++++++++++++++--------- + 1 file changed, 19 insertions(+), 9 deletions(-) + +diff --git a/cogl/cogl-atlas-texture.c b/cogl/cogl-atlas-texture.c +index beaaf24..1c8b569 100644 +--- a/cogl/cogl-atlas-texture.c ++++ b/cogl/cogl-atlas-texture.c +@@ -746,15 +746,25 @@ allocate_space (CoglAtlasTexture *atlas_tex, + + /* Look for an existing atlas that can hold the texture */ + for (l = ctx->atlases; l; l = l->next) +- /* Try to make some space in the atlas for the texture */ +- if (_cogl_atlas_reserve_space (atlas = l->data, +- /* Add two pixels for the border */ +- width + 2, height + 2, +- atlas_tex)) +- { +- cogl_object_ref (atlas); +- break; +- } ++ { ++ /* We need to take a reference on the atlas before trying to ++ * reserve space because in some circumstances atlas migration ++ * can cause the atlas to be freed */ ++ atlas = cogl_object_ref (l->data); ++ /* Try to make some space in the atlas for the texture */ ++ if (_cogl_atlas_reserve_space (atlas, ++ /* Add two pixels for the border */ ++ width + 2, height + 2, ++ atlas_tex)) ++ { ++ /* keep the atlas reference */ ++ break; ++ } ++ else ++ { ++ cogl_object_unref (atlas); ++ } ++ } + + /* If we couldn't find a suitable atlas then start another */ + if (l == NULL) +-- +1.9.3 + diff --git a/cogl.spec b/cogl.spec index 90e616a..e93ccfe 100644 --- a/cogl.spec +++ b/cogl.spec @@ -6,7 +6,7 @@ Name: cogl Version: 1.18.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: A library for using 3D graphics hardware to draw pretty pictures Group: Development/Libraries @@ -14,6 +14,9 @@ License: LGPLv2+ URL: http://www.clutter-project.org/ Source0: http://download.gnome.org/sources/cogl/1.18/cogl-%{version}.tar.xz +# Backported upstream fix for a totem crash +Patch0: 0001-atlas-texture-Keep-reference-on-potential-destinatio.patch + BuildRequires: cairo-devel BuildRequires: gdk-pixbuf2-devel BuildRequires: glib2-devel @@ -84,6 +87,7 @@ This package contains the installable tests for %{cogl}. %prep %setup -q +%patch0 -p1 %build CFLAGS="$RPM_OPT_FLAGS -fPIC" @@ -142,6 +146,9 @@ rm %{buildroot}%{_datadir}/cogl/examples-data/crate.jpg %endif %changelog +* Fri May 23 2014 Kalev Lember - 1.18.0-3 +- Backport an upstream fix for a totem crash + * Thu May 08 2014 Adam Jackson - Add optional installed-tests subpackage