diff -u compiz-0.7.7+git20080807/debian/patches/series compiz-0.7.7+git20080807/debian/patches/series --- compiz-0.7.7+git20080807/debian/patches/series +++ compiz-0.7.7+git20080807/debian/patches/series @@ -33,0 +34 @@ +046-limit-number-damage-rects.patch diff -u compiz-0.7.7+git20080807/debian/changelog compiz-0.7.7+git20080807/debian/changelog --- compiz-0.7.7+git20080807/debian/changelog +++ compiz-0.7.7+git20080807/debian/changelog @@ -1,3 +1,11 @@ +compiz (1:0.7.7+git20080807-0ubuntu6~damrect) intrepid; urgency=low + + * debian/patches/044-limit-number-damage-rects.patch: + - picked from upstream git, fixes crashes when running some + screensavers (LP: #101943) + + -- Tormod Volden Sat, 30 Aug 2008 17:41:53 +0200 + compiz (1:0.7.7+git20080807-0ubuntu5) intrepid; urgency=low * drop debian/patches/036_blacklist_ati_on_laptop.patch only in patch2: unchanged: --- compiz-0.7.7+git20080807.orig/debian/patches/046-limit-number-damage-rects.patch +++ compiz-0.7.7+git20080807/debian/patches/046-limit-number-damage-rects.patch @@ -0,0 +1,21 @@ +Upstream commit: http://cgit.freedesktop.org/xorg/app/compiz/commit/?id=aed97c441881d9c382c7865d0305fc8f884c10ac +Ubuntu bug: https://bugs.edge.launchpad.net/ubuntu/+bug/101943 + +Index: compiz-0.7.7+git20080807/src/screen.c +=================================================================== +--- compiz-0.7.7+git20080807.orig/src/screen.c 2008-08-30 17:40:23.000000000 +0200 ++++ compiz-0.7.7+git20080807/src/screen.c 2008-08-30 17:40:27.000000000 +0200 +@@ -2401,6 +2401,13 @@ + XUnionRegion (screen->damage, region, screen->damage); + + screen->damageMask |= COMP_SCREEN_DAMAGE_REGION_MASK; ++ ++ /* if the number of damage rectangles grows two much between repaints, ++ we have a lot of overhead just for doing the damage tracking - ++ in order to make sure we're not having too much overhead, damage ++ the whole screen if we have a lot of damage rects */ ++ if (screen->damage->numRects > 100) ++ damageScreen (screen); + } + + void