public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/gnome:master commit in: x11-wm/mutter/, x11-wm/mutter/files/
@ 2011-03-09 11:34 Nirbheek Chauhan
  0 siblings, 0 replies; 7+ messages in thread
From: Nirbheek Chauhan @ 2011-03-09 11:34 UTC (permalink / raw
  To: gentoo-commits

commit:     c83319d791c80e03f3d007d6c72b565a1270ad20
Author:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
AuthorDate: Wed Mar  9 05:58:27 2011 +0000
Commit:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
CommitDate: Wed Mar  9 11:21:35 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=c83319d7

x11-wm/mutter: 2.91.90 → 2.91.91

---
 x11-wm/mutter/files/mutter-fix-ld-failure.patch    |   39 ++++++++++++++++++++
 ...mutter-2.91.90.ebuild => mutter-2.91.91.ebuild} |   16 ++++----
 x11-wm/mutter/mutter-9999.ebuild                   |    8 ++--
 3 files changed, 51 insertions(+), 12 deletions(-)

diff --git a/x11-wm/mutter/files/mutter-fix-ld-failure.patch b/x11-wm/mutter/files/mutter-fix-ld-failure.patch
new file mode 100644
index 0000000..ef36573
--- /dev/null
+++ b/x11-wm/mutter/files/mutter-fix-ld-failure.patch
@@ -0,0 +1,39 @@
+From bbd98e7b8612a1bba82a397525a673643cff3d6e Mon Sep 17 00:00:00 2001
+From: Rico Tzschichholz <ricotz@t-online.de>
+Date: Tue, 8 Mar 2011 12:20:08 +0100
+Subject: [PATCH] Fix ld failure caused by several incomplete LDADD statements
+
+https://bugzilla.gnome.org/show_bug.cgi?id=644188
+---
+ src/Makefile.am |    8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 4e02816..f87453d 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -218,7 +218,7 @@ mutter_theme_viewer_SOURCES=  \
+ bin_PROGRAMS=mutter mutter-theme-viewer
+ 
+ mutter_SOURCES = core/mutter.c
+-mutter_LDADD = libmutter-wm.la
++mutter_LDADD = $(MUTTER_LIBS) libmutter-wm.la
+ 
+ if HAVE_INTROSPECTION
+ include $(INTROSPECTION_MAKEFILE)
+@@ -257,9 +257,9 @@ testasyncgetprop_SOURCES = core/testasyncgetprop.c
+ 
+ noinst_PROGRAMS=testboxes testgradient testasyncgetprop
+ 
+-testboxes_LDADD = libmutter-wm.la
+-testgradient_LDADD = libmutter-wm.la
+-testasyncgetprop_LDADD = libmutter-wm.la
++testboxes_LDADD = $(MUTTER_LIBS) libmutter-wm.la
++testgradient_LDADD = $(MUTTER_LIBS) libmutter-wm.la
++testasyncgetprop_LDADD = $(MUTTER_LIBS) libmutter-wm.la
+ 
+ @INTLTOOL_DESKTOP_RULE@
+ 
+-- 
+1.7.3.4
+

diff --git a/x11-wm/mutter/mutter-2.91.90.ebuild b/x11-wm/mutter/mutter-2.91.91.ebuild
similarity index 85%
rename from x11-wm/mutter/mutter-2.91.90.ebuild
rename to x11-wm/mutter/mutter-2.91.91.ebuild
index c09aa97..25e2dde 100644
--- a/x11-wm/mutter/mutter-2.91.90.ebuild
+++ b/x11-wm/mutter/mutter-2.91.91.ebuild
@@ -5,14 +5,14 @@
 EAPI="2"
 GNOME2_LA_PUNT="yes"
 
-inherit autotools gnome2
+inherit gnome2
 
 DESCRIPTION="Upcoming GNOME 3 window manager (derived from metacity)"
 HOMEPAGE="http://blogs.gnome.org/metacity/"
 
 LICENSE="GPL-2"
 SLOT="0"
-IUSE="debug +introspection +sound test xinerama"
+IUSE="debug +introspection test xinerama"
 if [[ ${PV} = 9999 ]]; then
 	inherit gnome2-live
 	KEYWORDS=""
@@ -23,12 +23,13 @@ fi
 RDEPEND=">=x11-libs/pango-1.2[X,introspection?]
 	>=x11-libs/cairo-1.10[X]
 	>=x11-libs/gtk+-2.91.7:3[introspection?]
-	>=gnome-base/gconf-2
-	>=dev-libs/glib-2.14
+	>=gnome-base/gconf-2:2
+	>=dev-libs/glib-2.14:2
+	>=media-libs/clutter-1.2:1.0
+	>=media-libs/libcanberra-0.26[gtk3]
 	>=x11-libs/startup-notification-0.7
 	>=x11-libs/libXcomposite-0.2
 
-	>=media-libs/clutter-1.2
 	x11-libs/libICE
 	x11-libs/libSM
 	x11-libs/libX11
@@ -40,7 +41,6 @@ RDEPEND=">=x11-libs/pango-1.2[X,introspection?]
 	x11-libs/libXrender
 
 	introspection? ( >=dev-libs/gobject-introspection-0.9.5 )
-	sound? (  >=media-libs/libcanberra-0.26[gtk3] )
 	xinerama? ( x11-libs/libXinerama )
 	gnome-extra/zenity
 	!x11-misc/expocity"
@@ -66,8 +66,8 @@ src_prepare() {
 		--enable-xsync
 		--enable-verbose-mode
 		--enable-compile-warnings=maximum
-		$(use_with sound libcanberra)
-		$(use_with introspection)
+		--with-libcanberra
+		$(use_enable introspection)
 		$(use_enable xinerama)"
 	gnome2_src_prepare
 }

diff --git a/x11-wm/mutter/mutter-9999.ebuild b/x11-wm/mutter/mutter-9999.ebuild
index c09aa97..c16fc69 100644
--- a/x11-wm/mutter/mutter-9999.ebuild
+++ b/x11-wm/mutter/mutter-9999.ebuild
@@ -23,12 +23,12 @@ fi
 RDEPEND=">=x11-libs/pango-1.2[X,introspection?]
 	>=x11-libs/cairo-1.10[X]
 	>=x11-libs/gtk+-2.91.7:3[introspection?]
-	>=gnome-base/gconf-2
-	>=dev-libs/glib-2.14
+	>=gnome-base/gconf-2:2
+	>=dev-libs/glib-2.14:2
+	>=media-libs/clutter-1.2:1.0
 	>=x11-libs/startup-notification-0.7
 	>=x11-libs/libXcomposite-0.2
 
-	>=media-libs/clutter-1.2
 	x11-libs/libICE
 	x11-libs/libSM
 	x11-libs/libX11
@@ -67,7 +67,7 @@ src_prepare() {
 		--enable-verbose-mode
 		--enable-compile-warnings=maximum
 		$(use_with sound libcanberra)
-		$(use_with introspection)
+		$(use_enable introspection)
 		$(use_enable xinerama)"
 	gnome2_src_prepare
 }



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: x11-wm/mutter/, x11-wm/mutter/files/
@ 2011-03-29  8:35 Nirbheek Chauhan
  0 siblings, 0 replies; 7+ messages in thread
From: Nirbheek Chauhan @ 2011-03-29  8:35 UTC (permalink / raw
  To: gentoo-commits

commit:     95fa978e2de0e8daa30227526a7b30bbbff1e54d
Author:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
AuthorDate: Tue Mar 29 07:50:12 2011 +0000
Commit:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
CommitDate: Tue Mar 29 08:35:25 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=95fa978e

x11-wm/mutter: 2.91.92 → 2.91.93

---
 x11-wm/mutter/files/mutter-fix-ld-failure.patch    |   39 --------------------
 ...mutter-2.91.92.ebuild => mutter-2.91.93.ebuild} |    0
 2 files changed, 0 insertions(+), 39 deletions(-)

diff --git a/x11-wm/mutter/files/mutter-fix-ld-failure.patch b/x11-wm/mutter/files/mutter-fix-ld-failure.patch
deleted file mode 100644
index ef36573..0000000
--- a/x11-wm/mutter/files/mutter-fix-ld-failure.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From bbd98e7b8612a1bba82a397525a673643cff3d6e Mon Sep 17 00:00:00 2001
-From: Rico Tzschichholz <ricotz@t-online.de>
-Date: Tue, 8 Mar 2011 12:20:08 +0100
-Subject: [PATCH] Fix ld failure caused by several incomplete LDADD statements
-
-https://bugzilla.gnome.org/show_bug.cgi?id=644188
----
- src/Makefile.am |    8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 4e02816..f87453d 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -218,7 +218,7 @@ mutter_theme_viewer_SOURCES=  \
- bin_PROGRAMS=mutter mutter-theme-viewer
- 
- mutter_SOURCES = core/mutter.c
--mutter_LDADD = libmutter-wm.la
-+mutter_LDADD = $(MUTTER_LIBS) libmutter-wm.la
- 
- if HAVE_INTROSPECTION
- include $(INTROSPECTION_MAKEFILE)
-@@ -257,9 +257,9 @@ testasyncgetprop_SOURCES = core/testasyncgetprop.c
- 
- noinst_PROGRAMS=testboxes testgradient testasyncgetprop
- 
--testboxes_LDADD = libmutter-wm.la
--testgradient_LDADD = libmutter-wm.la
--testasyncgetprop_LDADD = libmutter-wm.la
-+testboxes_LDADD = $(MUTTER_LIBS) libmutter-wm.la
-+testgradient_LDADD = $(MUTTER_LIBS) libmutter-wm.la
-+testasyncgetprop_LDADD = $(MUTTER_LIBS) libmutter-wm.la
- 
- @INTLTOOL_DESKTOP_RULE@
- 
--- 
-1.7.3.4
-

diff --git a/x11-wm/mutter/mutter-2.91.92.ebuild b/x11-wm/mutter/mutter-2.91.93.ebuild
similarity index 100%
rename from x11-wm/mutter/mutter-2.91.92.ebuild
rename to x11-wm/mutter/mutter-2.91.93.ebuild



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: x11-wm/mutter/, x11-wm/mutter/files/
@ 2011-04-29 19:16 Nirbheek Chauhan
  0 siblings, 0 replies; 7+ messages in thread
From: Nirbheek Chauhan @ 2011-04-29 19:16 UTC (permalink / raw
  To: gentoo-commits

commit:     74f208549efd045e73be0b08edb53594d567683f
Author:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
AuthorDate: Fri Apr 29 19:15:52 2011 +0000
Commit:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
CommitDate: Fri Apr 29 19:15:52 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=74f20854

x11-wm/mutter: fix session saving, bug 363853

---
 .../files/mutter-3.0.1-fix-session-saving.patch    |   69 ++++++++++++++++++++
 ...{mutter-3.0.1.ebuild => mutter-3.0.1-r1.ebuild} |    6 ++
 2 files changed, 75 insertions(+), 0 deletions(-)

diff --git a/x11-wm/mutter/files/mutter-3.0.1-fix-session-saving.patch b/x11-wm/mutter/files/mutter-3.0.1-fix-session-saving.patch
new file mode 100644
index 0000000..7352d2c
--- /dev/null
+++ b/x11-wm/mutter/files/mutter-3.0.1-fix-session-saving.patch
@@ -0,0 +1,69 @@
+From c248c57b6e48b230fc80e3bd53d0d41fb713848a Mon Sep 17 00:00:00 2001
+From: Matthias Clasen <mclasen@redhat.com>
+Date: Fri, 29 Apr 2011 11:23:30 +0000
+Subject: Make session saving work a bit better
+
+Previously, the restart command hardcoded "mutter" as the binary name.
+This commit changes it to use g_get_prgname() which has a better chance
+of being correct (and it does fix session saving for gnome-shell).
+
+Now that mutter is a library, it might be more correct (but also
+much higher overhead) to add api for setting these things from
+the outside.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=648828
+---
+diff --git a/src/core/session.c b/src/core/session.c
+index 65542f3..c19b17c 100644
+--- a/src/core/session.c
++++ b/src/core/session.c
+@@ -308,13 +308,16 @@ meta_session_init (const char *previous_client_id,
+      */
+     char hint = SmRestartIfRunning;
+     char priority = 20; /* low to run before other apps */
+-    
++    const char *prgname;
++
++    prgname = g_get_prgname ();
++
+     prop1.name = SmProgram;
+     prop1.type = SmARRAY8;
+     prop1.num_vals = 1;
+     prop1.vals = &prop1val;
+-    prop1val.value = "mutter";
+-    prop1val.length = strlen ("mutter");
++    prop1val.value = (char *)prgname;
++    prop1val.length = strlen (prgname);
+ 
+     /* twm sets getuid() for this, but the SM spec plainly
+      * says pw_name, twm is on crack
+@@ -573,6 +576,9 @@ set_clone_restart_commands (void)
+   char *discardv[10];
+   int i;
+   SmProp prop1, prop2, prop3, *props[3];
++  const char *prgname;
++
++  prgname = g_get_prgname ();
+   
+   /* Restart (use same client ID) */
+   
+@@ -582,7 +588,7 @@ set_clone_restart_commands (void)
+   g_return_if_fail (client_id);
+   
+   i = 0;
+-  restartv[i] = "mutter";
++  restartv[i] = (char *)prgname;
+   ++i;
+   restartv[i] = "--sm-client-id";
+   ++i;
+@@ -603,7 +609,7 @@ set_clone_restart_commands (void)
+   /* Clone (no client ID) */
+   
+   i = 0;
+-  clonev[i] = "mutter";
++  clonev[i] = (char *)prgname;
+   ++i;
+   clonev[i] = NULL;
+ 
+--
+cgit v0.9

diff --git a/x11-wm/mutter/mutter-3.0.1.ebuild b/x11-wm/mutter/mutter-3.0.1-r1.ebuild
similarity index 91%
rename from x11-wm/mutter/mutter-3.0.1.ebuild
rename to x11-wm/mutter/mutter-3.0.1-r1.ebuild
index 0eee508..d33255c 100644
--- a/x11-wm/mutter/mutter-3.0.1.ebuild
+++ b/x11-wm/mutter/mutter-3.0.1-r1.ebuild
@@ -76,3 +76,9 @@ pkg_setup() {
 		$(use_enable introspection)
 		$(use_enable xinerama)"
 }
+
+src_prepare() {
+	# https://bugs.gentoo.org/show_bug.cgi?id=363853
+	# Taken from upstream, remove for next release
+	epatch "${FILESDIR}/${P}-fix-session-saving.patch"
+}



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: x11-wm/mutter/, x11-wm/mutter/files/
@ 2011-06-02 14:43 Nirbheek Chauhan
  0 siblings, 0 replies; 7+ messages in thread
From: Nirbheek Chauhan @ 2011-06-02 14:43 UTC (permalink / raw
  To: gentoo-commits

commit:     ca057bf0f0093407f21c039ab440bf63bd31098d
Author:     Alexandre Rostovtsev <tetromino <AT> gmail <DOT> com>
AuthorDate: Sun May 29 23:54:29 2011 +0000
Commit:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
CommitDate: Thu Jun  2 14:07:45 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=ca057bf0

x11-wm/mutter: 3.0.1-r1 → 3.0.2.1 + argb windows patches

Version bump, remove session saving patch (was applied upstream), add
patches for properly handling argb windows such as transparent terminals
(see gnome bug 635268 and gentoo bug 367139).

Signed-off-by: Nirbheek Chauhan <nirbheek <AT> gentoo.org>

---
 .../files/mutter-3.0.1-fix-session-saving.patch    |   69 --
 .../files/mutter-3.0.2-argb-windows-shadow.patch   |  764 ++++++++++++++++++++
 x11-wm/mutter/files/mutter-3.0.2-fix-xshape.patch  |   30 +
 .../mutter-3.0.2-frame-region-cairo-region.patch   |  234 ++++++
 ...utter-3.0.1-r1.ebuild => mutter-3.0.2.1.ebuild} |   13 +-
 5 files changed, 1037 insertions(+), 73 deletions(-)

diff --git a/x11-wm/mutter/files/mutter-3.0.1-fix-session-saving.patch b/x11-wm/mutter/files/mutter-3.0.1-fix-session-saving.patch
deleted file mode 100644
index 7352d2c..0000000
--- a/x11-wm/mutter/files/mutter-3.0.1-fix-session-saving.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From c248c57b6e48b230fc80e3bd53d0d41fb713848a Mon Sep 17 00:00:00 2001
-From: Matthias Clasen <mclasen@redhat.com>
-Date: Fri, 29 Apr 2011 11:23:30 +0000
-Subject: Make session saving work a bit better
-
-Previously, the restart command hardcoded "mutter" as the binary name.
-This commit changes it to use g_get_prgname() which has a better chance
-of being correct (and it does fix session saving for gnome-shell).
-
-Now that mutter is a library, it might be more correct (but also
-much higher overhead) to add api for setting these things from
-the outside.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=648828
----
-diff --git a/src/core/session.c b/src/core/session.c
-index 65542f3..c19b17c 100644
---- a/src/core/session.c
-+++ b/src/core/session.c
-@@ -308,13 +308,16 @@ meta_session_init (const char *previous_client_id,
-      */
-     char hint = SmRestartIfRunning;
-     char priority = 20; /* low to run before other apps */
--    
-+    const char *prgname;
-+
-+    prgname = g_get_prgname ();
-+
-     prop1.name = SmProgram;
-     prop1.type = SmARRAY8;
-     prop1.num_vals = 1;
-     prop1.vals = &prop1val;
--    prop1val.value = "mutter";
--    prop1val.length = strlen ("mutter");
-+    prop1val.value = (char *)prgname;
-+    prop1val.length = strlen (prgname);
- 
-     /* twm sets getuid() for this, but the SM spec plainly
-      * says pw_name, twm is on crack
-@@ -573,6 +576,9 @@ set_clone_restart_commands (void)
-   char *discardv[10];
-   int i;
-   SmProp prop1, prop2, prop3, *props[3];
-+  const char *prgname;
-+
-+  prgname = g_get_prgname ();
-   
-   /* Restart (use same client ID) */
-   
-@@ -582,7 +588,7 @@ set_clone_restart_commands (void)
-   g_return_if_fail (client_id);
-   
-   i = 0;
--  restartv[i] = "mutter";
-+  restartv[i] = (char *)prgname;
-   ++i;
-   restartv[i] = "--sm-client-id";
-   ++i;
-@@ -603,7 +609,7 @@ set_clone_restart_commands (void)
-   /* Clone (no client ID) */
-   
-   i = 0;
--  clonev[i] = "mutter";
-+  clonev[i] = (char *)prgname;
-   ++i;
-   clonev[i] = NULL;
- 
---
-cgit v0.9

diff --git a/x11-wm/mutter/files/mutter-3.0.2-argb-windows-shadow.patch b/x11-wm/mutter/files/mutter-3.0.2-argb-windows-shadow.patch
new file mode 100644
index 0000000..2ae376d
--- /dev/null
+++ b/x11-wm/mutter/files/mutter-3.0.2-argb-windows-shadow.patch
@@ -0,0 +1,764 @@
+From 67c3c93b8fd1e11716e72142ca43deb978e15c98 Mon Sep 17 00:00:00 2001
+From: Owen W. Taylor <otaylor@fishsoup.net>
+Date: Tue, 22 Mar 2011 19:36:12 +0000
+Subject: Only shadow ARGB windows with a frame outside the frame
+
+An ARGB window with a frame is likely something like a transparent
+terminal. It looks awful (and breaks transparency) to draw a big
+opaque black shadow under the window, so clip out the region under
+the terminal from the shadow we draw.
+
+Add meta_window_get_frame_bounds() to get a cairo region for the
+outer bounds of the frame of a window, and modify the frame handling
+code to notice changes to the frame shape and discard a cached
+region. meta_frames_apply_shapes() is refactored so we can extract
+meta_frames_get_frame_bounds() from it.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=635268
+---
+diff --git a/src/compositor/meta-shadow-factory-private.h b/src/compositor/meta-shadow-factory-private.h
+index 3d51cbb..e6b033e 100644
+--- a/src/compositor/meta-shadow-factory-private.h
++++ b/src/compositor/meta-shadow-factory-private.h
+@@ -47,7 +47,8 @@ void        meta_shadow_paint       (MetaShadow            *shadow,
+                                      int                    window_width,
+                                      int                    window_height,
+                                      guint8                 opacity,
+-                                     cairo_region_t        *clip);
++                                     cairo_region_t        *clip,
++                                     gboolean               clip_strictly);
+ void        meta_shadow_get_bounds  (MetaShadow            *shadow,
+                                      int                    window_x,
+                                      int                    window_y,
+diff --git a/src/compositor/meta-shadow-factory.c b/src/compositor/meta-shadow-factory.c
+index 1a9a447..f8bb1a8 100644
+--- a/src/compositor/meta-shadow-factory.c
++++ b/src/compositor/meta-shadow-factory.c
+@@ -189,8 +189,10 @@ meta_shadow_unref (MetaShadow *shadow)
+  * @window_width: actual width of the region to paint a shadow for
+  * @window_height: actual height of the region to paint a shadow for
+  * @clip: (allow-none): if non-%NULL specifies the visible portion
+- *   of the shadow. Drawing won't be strictly clipped to this region
+- *   but it will be used to optimize what is drawn.
++ *   of the shadow.
++ * @clip_strictly: if %TRUE, drawing will be clipped strictly
++ *   to @clip, otherwise, it will be only used to optimize
++ *   drawing.
+  *
+  * Paints the shadow at the given position, for the specified actual
+  * size of the region. (Since a #MetaShadow can be shared between
+@@ -204,7 +206,8 @@ meta_shadow_paint (MetaShadow     *shadow,
+                    int             window_width,
+                    int             window_height,
+                    guint8          opacity,
+-                   cairo_region_t *clip)
++                   cairo_region_t *clip,
++                   gboolean        clip_strictly)
+ {
+   float texture_width = cogl_texture_get_width (shadow->texture);
+   float texture_height = cogl_texture_get_height (shadow->texture);
+@@ -276,6 +279,9 @@ meta_shadow_paint (MetaShadow     *shadow,
+       dest_rect.y = dest_y[j];
+       dest_rect.height = dest_y[j + 1] - dest_y[j];
+ 
++      if (dest_rect.height == 0)
++        continue;
++
+       for (i = 0; i < n_x; i++)
+         {
+           cairo_region_overlap_t overlap;
+@@ -283,16 +289,64 @@ meta_shadow_paint (MetaShadow     *shadow,
+           dest_rect.x = dest_x[i];
+           dest_rect.width = dest_x[i + 1] - dest_x[i];
+ 
++          if (dest_rect.width == 0)
++            continue;
++
+           if (clip)
+             overlap = cairo_region_contains_rectangle (clip, &dest_rect);
+           else
+-            overlap = CAIRO_REGION_OVERLAP_PART;
++            overlap = CAIRO_REGION_OVERLAP_IN;
+ 
+-          if (overlap != CAIRO_REGION_OVERLAP_OUT)
+-            cogl_rectangle_with_texture_coords (dest_x[i], dest_y[j],
+-                                                dest_x[i + 1], dest_y[j + 1],
+-                                                src_x[i], src_y[j],
+-                                                src_x[i + 1], src_y[j + 1]);
++          /* There's quite a bit of overhead from allocating a new
++           * region in order to find an exact intersection and
++           * generating more geometry - we make the assumption that
++           * unless we have to clip strictly it will be cheaper to
++           * just draw the entire rectangle.
++           */
++          if (overlap == CAIRO_REGION_OVERLAP_IN ||
++              (overlap == CAIRO_REGION_OVERLAP_PART && !clip_strictly))
++            {
++              cogl_rectangle_with_texture_coords (dest_x[i], dest_y[j],
++                                                  dest_x[i + 1], dest_y[j + 1],
++                                                  src_x[i], src_y[j],
++                                                  src_x[i + 1], src_y[j + 1]);
++            }
++          else if (overlap == CAIRO_REGION_OVERLAP_PART)
++            {
++              cairo_region_t *intersection;
++              int n_rectangles, k;
++
++              intersection = cairo_region_create_rectangle (&dest_rect);
++              cairo_region_intersect (intersection, clip);
++
++              n_rectangles = cairo_region_num_rectangles (intersection);
++              for (k = 0; k < n_rectangles; k++)
++                {
++                  cairo_rectangle_int_t rect;
++                  float src_x1, src_x2, src_y1, src_y2;
++
++                  cairo_region_get_rectangle (intersection, k, &rect);
++
++                  /* Separately linear interpolate X and Y coordinates in the source
++                   * based on the destination X and Y coordinates */
++
++                  src_x1 = (src_x[i] * (dest_rect.x + dest_rect.width - rect.x) +
++                            src_x[i + 1] * (rect.x - dest_rect.x)) / dest_rect.width;
++                  src_x2 = (src_x[i] * (dest_rect.x + dest_rect.width - (rect.x + rect.width)) +
++                            src_x[i + 1] * (rect.x + rect.width - dest_rect.x)) / dest_rect.width;
++
++                  src_y1 = (src_y[j] * (dest_rect.y + dest_rect.height - rect.y) +
++                            src_y[j + 1] * (rect.y - dest_rect.y)) / dest_rect.height;
++                  src_y2 = (src_y[j] * (dest_rect.y + dest_rect.height - (rect.y + rect.height)) +
++                            src_y[j + 1] * (rect.y + rect.height - dest_rect.y)) / dest_rect.height;
++
++                  cogl_rectangle_with_texture_coords (rect.x, rect.y,
++                                                      rect.x + rect.width, rect.y + rect.height,
++                                                      src_x1, src_y1, src_x2, src_y2);
++                }
++
++              cairo_region_destroy (intersection);
++            }
+         }
+     }
+ }
+diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c
+index 3be0363..4aab5c9 100644
+--- a/src/compositor/meta-window-actor.c
++++ b/src/compositor/meta-window-actor.c
+@@ -702,6 +702,26 @@ meta_window_actor_get_shadow_bounds (MetaWindowActor       *self,
+ }
+ #endif
+ 
++/* If we have an ARGB32 window that we decorate with a frame, it's
++ * probably something like a translucent terminal - something where
++ * the alpha channel represents transparency rather than a shape.  We
++ * don't want to show the shadow through the translucent areas since
++ * the shadow is wrong for translucent windows (it should be
++ * translucent itself and colored), and not only that, will /look/
++ * horribly wrong - a misplaced big black blob. As a hack, what we
++ * want to do is just draw the shadow as normal outside the frame, and
++ * inside the frame draw no shadow.  This is also not even close to
++ * the right result, but looks OK. We also apply this approach to
++ * windows set to be partially translucent with _NET_WM_WINDOW_OPACITY.
++ */
++static gboolean
++clip_shadow_under_window (MetaWindowActor *self)
++{
++  MetaWindowActorPrivate *priv = self->priv;
++
++  return (priv->argb32 || priv->opacity != 0xff) && priv->window->frame;
++}
++
+ static void
+ meta_window_actor_paint (ClutterActor *actor)
+ {
+@@ -714,17 +734,36 @@ meta_window_actor_paint (ClutterActor *actor)
+     {
+       MetaShadowParams params;
+       cairo_rectangle_int_t shape_bounds;
++      cairo_region_t *clip = priv->shadow_clip;
+ 
+       meta_window_actor_get_shape_bounds (self, &shape_bounds);
+       meta_window_actor_get_shadow_params (self, appears_focused, &params);
+ 
++      /* The frame bounds are already subtracted from priv->shadow_clip
++       * if that exists.
++       */
++      if (!clip && clip_shadow_under_window (self))
++        {
++          cairo_region_t *frame_bounds = meta_window_get_frame_bounds (priv->window);
++          cairo_rectangle_int_t bounds;
++
++          meta_window_actor_get_shadow_bounds (self, appears_focused, &bounds);
++          clip = cairo_region_create_rectangle (&bounds);
++
++          cairo_region_subtract (clip, frame_bounds);
++        }
++
+       meta_shadow_paint (shadow,
+                          params.x_offset + shape_bounds.x,
+                          params.y_offset + shape_bounds.y,
+                          shape_bounds.width,
+                          shape_bounds.height,
+                          (clutter_actor_get_paint_opacity (actor) * params.opacity * priv->opacity) / (255 * 255),
+-                         priv->shadow_clip);
++                         clip,
++                         clip_shadow_under_window (self)); /* clip_strictly - not just as an optimization */
++
++      if (clip && clip != priv->shadow_clip)
++        cairo_region_destroy (clip);
+     }
+ 
+   CLUTTER_ACTOR_CLASS (meta_window_actor_parent_class)->paint (actor);
+@@ -1787,6 +1826,12 @@ meta_window_actor_set_visible_region_beneath (MetaWindowActor *self,
+     {
+       meta_window_actor_clear_shadow_clip (self);
+       priv->shadow_clip = cairo_region_copy (beneath_region);
++
++      if (clip_shadow_under_window (self))
++        {
++          cairo_region_t *frame_bounds = meta_window_get_frame_bounds (priv->window);
++          cairo_region_subtract (priv->shadow_clip, frame_bounds);
++        }
+     }
+ }
+ 
+diff --git a/src/core/frame.c b/src/core/frame.c
+index 4db0002..155a0b8 100644
+--- a/src/core/frame.c
++++ b/src/core/frame.c
+@@ -328,7 +328,7 @@ meta_frame_calc_geometry (MetaFrame         *frame,
+   *geomp = geom;
+ }
+ 
+-static void
++static gboolean
+ update_shape (MetaFrame *frame)
+ {
+   if (frame->need_reapply_frame_shape)
+@@ -339,10 +339,14 @@ update_shape (MetaFrame *frame)
+                                  frame->rect.height,
+                                  frame->window->has_shape);
+       frame->need_reapply_frame_shape = FALSE;
++
++      return TRUE;
+     }
++  else
++    return FALSE;
+ }
+ 
+-void
++gboolean
+ meta_frame_sync_to_window (MetaFrame *frame,
+                            int        resize_gravity,
+                            gboolean   need_move,
+@@ -350,8 +354,7 @@ meta_frame_sync_to_window (MetaFrame *frame,
+ {
+   if (!(need_move || need_resize))
+     {
+-      update_shape (frame);
+-      return;
++      return update_shape (frame);
+     }
+ 
+   meta_topic (META_DEBUG_GEOMETRY,
+@@ -401,6 +404,17 @@ meta_frame_sync_to_window (MetaFrame *frame,
+         meta_ui_repaint_frame (frame->window->screen->ui,
+                                frame->xwindow);
+     }
++
++  return need_resize;
++}
++
++cairo_region_t *
++meta_frame_get_frame_bounds (MetaFrame *frame)
++{
++  return meta_ui_get_frame_bounds (frame->window->screen->ui,
++                                   frame->xwindow,
++                                   frame->rect.width,
++                                   frame->rect.height);
+ }
+ 
+ void
+diff --git a/src/core/frame.h b/src/core/frame.h
+index 019d6b3..7a637e8 100644
+--- a/src/core/frame.h
++++ b/src/core/frame.h
+@@ -73,11 +73,13 @@ Window         meta_frame_get_xwindow (MetaFrame *frame);
+ /* These should ONLY be called from meta_window_move_resize_internal */
+ void meta_frame_calc_geometry      (MetaFrame         *frame,
+                                     MetaFrameGeometry *geomp);
+-void meta_frame_sync_to_window     (MetaFrame         *frame,
++gboolean meta_frame_sync_to_window (MetaFrame         *frame,
+                                     int                gravity,
+                                     gboolean           need_move,
+                                     gboolean           need_resize);
+ 
++cairo_region_t *meta_frame_get_frame_bounds (MetaFrame *frame);
++
+ void meta_frame_set_screen_cursor (MetaFrame	*frame,
+ 				   MetaCursor	cursor);
+ 
+diff --git a/src/core/window-private.h b/src/core/window-private.h
+index cbac91d..7909943 100644
+--- a/src/core/window-private.h
++++ b/src/core/window-private.h
+@@ -42,6 +42,7 @@
+ #include "stack.h"
+ #include "iconcache.h"
+ #include <X11/Xutil.h>
++#include <cairo.h>
+ #include <gdk-pixbuf/gdk-pixbuf.h>
+ 
+ typedef struct _MetaWindowQueue MetaWindowQueue;
+@@ -316,6 +317,9 @@ struct _MetaWindow
+   /* if TRUE, application is buggy and SYNC resizing is turned off */
+   guint disable_sync : 1;
+ 
++  /* if non-NULL, the bounds of the window frame */
++  cairo_region_t *frame_bounds;
++
+   /* Note: can be NULL */
+   GSList *struts;
+ 
+diff --git a/src/core/window.c b/src/core/window.c
+index d442932..aa6d75c 100644
+--- a/src/core/window.c
++++ b/src/core/window.c
+@@ -181,6 +181,9 @@ meta_window_finalize (GObject *object)
+   if (window->mini_icon)
+     g_object_unref (G_OBJECT (window->mini_icon));
+ 
++  if (window->frame_bounds)
++    cairo_region_destroy (window->frame_bounds);
++
+   meta_icon_cache_free (&window->icon_cache);
+ 
+   g_free (window->sm_client_id);
+@@ -4295,6 +4298,7 @@ meta_window_move_resize_internal (MetaWindow          *window,
+   int frame_size_dy;
+   int size_dx;
+   int size_dy;
++  gboolean frame_shape_changed = FALSE;
+   gboolean is_configure_request;
+   gboolean do_gravity_adjust;
+   gboolean is_user_action;
+@@ -4598,9 +4602,9 @@ meta_window_move_resize_internal (MetaWindow          *window,
+     meta_window_set_gravity (window, StaticGravity);
+ 
+   if (configure_frame_first && window->frame)
+-    meta_frame_sync_to_window (window->frame,
+-                               gravity,
+-                               need_move_frame, need_resize_frame);
++    frame_shape_changed = meta_frame_sync_to_window (window->frame,
++                                                     gravity,
++                                                     need_move_frame, need_resize_frame);
+ 
+   values.border_width = 0;
+   values.x = client_move_x;
+@@ -4655,9 +4659,9 @@ meta_window_move_resize_internal (MetaWindow          *window,
+     }
+ 
+   if (!configure_frame_first && window->frame)
+-    meta_frame_sync_to_window (window->frame,
+-                               gravity,
+-                               need_move_frame, need_resize_frame);
++    frame_shape_changed = meta_frame_sync_to_window (window->frame,
++                                                     gravity,
++                                                     need_move_frame, need_resize_frame);
+ 
+   /* Put gravity back to be nice to lesser window managers */
+   if (use_static_gravity)
+@@ -4700,6 +4704,12 @@ meta_window_move_resize_internal (MetaWindow          *window,
+    *   b) all constraints are obeyed by window->rect and frame->rect
+    */
+ 
++  if (frame_shape_changed && window->frame_bounds)
++    {
++      cairo_region_destroy (window->frame_bounds);
++      window->frame_bounds = NULL;
++    }
++
+   if (meta_prefs_get_attach_modal_dialogs ())
+     meta_window_foreach_transient (window, move_attached_dialog, NULL);
+ }
+@@ -10204,3 +10214,24 @@ meta_window_get_frame_type (MetaWindow *window)
+       return base_type;
+     }
+ }
++
++/**
++ * meta_window_get_frame_bounds:
++ *
++ * Gets a region representing the outer bounds of the window's frame.
++ *
++ * Return value: (transfer none) (allow-none): a #cairo_region_t
++ *  holding the outer bounds of the window, or %NULL if the window
++ *  doesn't have a frame.
++ */
++cairo_region_t *
++meta_window_get_frame_bounds (MetaWindow *window)
++{
++  if (!window->frame_bounds)
++    {
++      if (window->frame)
++        window->frame_bounds = meta_frame_get_frame_bounds (window->frame);
++    }
++
++  return window->frame_bounds;
++}
+diff --git a/src/meta/window.h b/src/meta/window.h
+index a1c4b75..985a146 100644
+--- a/src/meta/window.h
++++ b/src/meta/window.h
+@@ -23,6 +23,7 @@
+ #define META_WINDOW_H
+ 
+ #include <glib-object.h>
++#include <cairo.h>
+ #include <X11/Xlib.h>
+ 
+ #include <meta/boxes.h>
+@@ -156,4 +157,6 @@ const char *meta_window_get_mutter_hints (MetaWindow *window);
+ 
+ MetaFrameType meta_window_get_frame_type (MetaWindow *window);
+ 
++cairo_region_t *meta_window_get_frame_bounds (MetaWindow *window);
++
+ #endif
+diff --git a/src/ui/frames.c b/src/ui/frames.c
+index 7c62898..520f29d 100644
+--- a/src/ui/frames.c
++++ b/src/ui/frames.c
+@@ -797,60 +797,22 @@ apply_cairo_region_to_window (Display        *display,
+ }
+ #endif
+ 
+-void
+-meta_frames_apply_shapes (MetaFrames *frames,
+-                          Window      xwindow,
+-                          int         new_window_width,
+-                          int         new_window_height,
+-                          gboolean    window_has_shape)
++static cairo_region_t *
++get_bounds_region (MetaFrames        *frames,
++                  MetaUIFrame       *frame,
++                  MetaFrameGeometry *fgeom,
++                  int                window_width,
++                  int                window_height)
+ {
+-#ifdef HAVE_SHAPE
+-  /* Apply shapes as if window had new_window_width, new_window_height */
+-  MetaUIFrame *frame;
+-  MetaFrameGeometry fgeom;
+-  cairo_rectangle_int_t rect;
+   cairo_region_t *corners_region;
+-  cairo_region_t *window_region;
+-  Display *display;
+-  
+-  frame = meta_frames_lookup_window (frames, xwindow);
+-  g_return_if_fail (frame != NULL);
+-
+-  display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
+-
+-  meta_frames_calc_geometry (frames, frame, &fgeom);
++  cairo_region_t *bounds_region;
++  cairo_rectangle_int_t rect;
+ 
+-  if (!(fgeom.top_left_corner_rounded_radius != 0 ||
+-        fgeom.top_right_corner_rounded_radius != 0 ||
+-        fgeom.bottom_left_corner_rounded_radius != 0 ||
+-        fgeom.bottom_right_corner_rounded_radius != 0 ||
+-        window_has_shape))
+-    {
+-      if (frame->shape_applied)
+-        {
+-          meta_topic (META_DEBUG_SHAPES,
+-                      "Unsetting shape mask on frame 0x%lx\n",
+-                      frame->xwindow);
+-          
+-          XShapeCombineMask (display, frame->xwindow,
+-                             ShapeBounding, 0, 0, None, ShapeSet);
+-          frame->shape_applied = FALSE;
+-        }
+-      else
+-        {
+-          meta_topic (META_DEBUG_SHAPES,
+-                      "Frame 0x%lx still doesn't need a shape mask\n",
+-                      frame->xwindow);
+-        }
+-      
+-      return; /* nothing to do */
+-    }
+-  
+   corners_region = cairo_region_create ();
+   
+-  if (fgeom.top_left_corner_rounded_radius != 0)
++  if (fgeom->top_left_corner_rounded_radius != 0)
+     {
+-      const int corner = fgeom.top_left_corner_rounded_radius;
++      const int corner = fgeom->top_left_corner_rounded_radius;
+       const float radius = sqrt(corner) + corner;
+       int i;
+ 
+@@ -866,16 +828,16 @@ meta_frames_apply_shapes (MetaFrames *frames,
+         }
+     }
+ 
+-  if (fgeom.top_right_corner_rounded_radius != 0)
++  if (fgeom->top_right_corner_rounded_radius != 0)
+     {
+-      const int corner = fgeom.top_right_corner_rounded_radius;
++      const int corner = fgeom->top_right_corner_rounded_radius;
+       const float radius = sqrt(corner) + corner;
+       int i;
+ 
+       for (i=0; i<corner; i++)
+         {
+           const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
+-          rect.x = new_window_width - width;
++          rect.x = window_width - width;
+           rect.y = i;
+           rect.width = width;
+           rect.height = 1;
+@@ -884,9 +846,9 @@ meta_frames_apply_shapes (MetaFrames *frames,
+         }
+     }
+ 
+-  if (fgeom.bottom_left_corner_rounded_radius != 0)
++  if (fgeom->bottom_left_corner_rounded_radius != 0)
+     {
+-      const int corner = fgeom.bottom_left_corner_rounded_radius;
++      const int corner = fgeom->bottom_left_corner_rounded_radius;
+       const float radius = sqrt(corner) + corner;
+       int i;
+ 
+@@ -894,7 +856,7 @@ meta_frames_apply_shapes (MetaFrames *frames,
+         {
+           const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
+           rect.x = 0;
+-          rect.y = new_window_height - i - 1;
++          rect.y = window_height - i - 1;
+           rect.width = width;
+           rect.height = 1;
+           
+@@ -902,17 +864,17 @@ meta_frames_apply_shapes (MetaFrames *frames,
+         }
+     }
+ 
+-  if (fgeom.bottom_right_corner_rounded_radius != 0)
++  if (fgeom->bottom_right_corner_rounded_radius != 0)
+     {
+-      const int corner = fgeom.bottom_right_corner_rounded_radius;
++      const int corner = fgeom->bottom_right_corner_rounded_radius;
+       const float radius = sqrt(corner) + corner;
+       int i;
+ 
+       for (i=0; i<corner; i++)
+         {
+           const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
+-          rect.x = new_window_width - width;
+-          rect.y = new_window_height - i - 1;
++          rect.x = window_width - width;
++          rect.y = window_height - i - 1;
+           rect.width = width;
+           rect.height = 1;
+           
+@@ -920,19 +882,88 @@ meta_frames_apply_shapes (MetaFrames *frames,
+         }
+     }
+   
+-  window_region = cairo_region_create ();
++  bounds_region = cairo_region_create ();
+   
+   rect.x = 0;
+   rect.y = 0;
+-  rect.width = new_window_width;
+-  rect.height = new_window_height;
++  rect.width = window_width;
++  rect.height = window_height;
+ 
+-  cairo_region_union_rectangle (window_region, &rect);
++  cairo_region_union_rectangle (bounds_region, &rect);
+ 
+-  cairo_region_subtract (window_region, corners_region);
++  cairo_region_subtract (bounds_region, corners_region);
+ 
+   cairo_region_destroy (corners_region);
++
++  return bounds_region;
++}
++
++static cairo_region_t *
++get_client_region (MetaFrameGeometry *fgeom,
++                   int                window_width,
++                   int                window_height)
++{
++  cairo_rectangle_int_t rect;
++
++  rect.x = fgeom->left_width;
++  rect.y = fgeom->top_height;
++  rect.width = window_width - fgeom->right_width - rect.x;
++  rect.height = window_height - fgeom->bottom_height - rect.y;
++
++  return cairo_region_create_rectangle (&rect);
++}
++
++void
++meta_frames_apply_shapes (MetaFrames *frames,
++                          Window      xwindow,
++                          int         new_window_width,
++                          int         new_window_height,
++                          gboolean    window_has_shape)
++{
++#ifdef HAVE_SHAPE
++  /* Apply shapes as if window had new_window_width, new_window_height */
++  MetaUIFrame *frame;
++  MetaFrameGeometry fgeom;
++  cairo_region_t *window_region;
++  Display *display;
+   
++  frame = meta_frames_lookup_window (frames, xwindow);
++  g_return_if_fail (frame != NULL);
++
++  display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
++
++  meta_frames_calc_geometry (frames, frame, &fgeom);
++
++  if (!(fgeom.top_left_corner_rounded_radius != 0 ||
++        fgeom.top_right_corner_rounded_radius != 0 ||
++        fgeom.bottom_left_corner_rounded_radius != 0 ||
++        fgeom.bottom_right_corner_rounded_radius != 0 ||
++        window_has_shape))
++    {
++      if (frame->shape_applied)
++        {
++          meta_topic (META_DEBUG_SHAPES,
++                      "Unsetting shape mask on frame 0x%lx\n",
++                      frame->xwindow);
++
++          XShapeCombineMask (display, frame->xwindow,
++                             ShapeBounding, 0, 0, None, ShapeSet);
++          frame->shape_applied = FALSE;
++        }
++      else
++        {
++          meta_topic (META_DEBUG_SHAPES,
++                      "Frame 0x%lx still doesn't need a shape mask\n",
++                      frame->xwindow);
++        }
++
++      return; /* nothing to do */
++    }
++
++  window_region = get_bounds_region (frames, frame,
++                                     &fgeom,
++                                     new_window_width, new_window_height);
++
+   if (window_has_shape)
+     {
+       /* The client window is oclock or something and has a shape
+@@ -984,15 +1015,10 @@ meta_frames_apply_shapes (MetaFrames *frames,
+       /* Punch the client area out of the normal frame shape,
+        * then union it with the shape_window's existing shape
+        */
+-      client_region = cairo_region_create ();
+-  
+-      rect.x = fgeom.left_width;
+-      rect.y = fgeom.top_height;
+-      rect.width = new_window_width - fgeom.right_width - rect.x;
+-      rect.height = new_window_height - fgeom.bottom_height - rect.y;
++      client_region = get_client_region (&fgeom,
++                                         new_window_width,
++                                         new_window_height);
+ 
+-      cairo_region_union_rectangle (client_region, &rect);
+-      
+       cairo_region_subtract (window_region, client_region);
+ 
+       cairo_region_destroy (client_region);
+@@ -1027,6 +1053,25 @@ meta_frames_apply_shapes (MetaFrames *frames,
+ #endif /* HAVE_SHAPE */
+ }
+ 
++cairo_region_t *
++meta_frames_get_frame_bounds (MetaFrames *frames,
++                              Window      xwindow,
++                              int         window_width,
++                              int         window_height)
++{
++  MetaUIFrame *frame;
++  MetaFrameGeometry fgeom;
++
++  frame = meta_frames_lookup_window (frames, xwindow);
++  g_return_val_if_fail (frame != NULL, NULL);
++
++  meta_frames_calc_geometry (frames, frame, &fgeom);
++
++  return get_bounds_region (frames, frame,
++                            &fgeom,
++                            window_width, window_height);
++}
++
+ void
+ meta_frames_move_resize_frame (MetaFrames *frames,
+                                Window      xwindow,
+diff --git a/src/ui/frames.h b/src/ui/frames.h
+index 5fdba63..d1807df 100644
+--- a/src/ui/frames.h
++++ b/src/ui/frames.h
+@@ -144,6 +144,10 @@ void meta_frames_apply_shapes (MetaFrames *frames,
+                                int         new_window_width,
+                                int         new_window_height,
+                                gboolean    window_has_shape);
++cairo_region_t *meta_frames_get_frame_bounds (MetaFrames *frames,
++                                              Window      xwindow,
++                                              int         window_width,
++                                              int         window_height);
+ void meta_frames_move_resize_frame (MetaFrames *frames,
+ 				    Window      xwindow,
+ 				    int         x,
+diff --git a/src/ui/ui.c b/src/ui/ui.c
+index 575f2ae..5381b8d 100644
+--- a/src/ui/ui.c
++++ b/src/ui/ui.c
+@@ -470,6 +470,16 @@ meta_ui_apply_frame_shape  (MetaUI  *ui,
+                             window_has_shape);
+ }
+ 
++cairo_region_t *
++meta_ui_get_frame_bounds (MetaUI  *ui,
++                          Window   xwindow,
++                          int      window_width,
++                          int      window_height)
++{
++  return meta_frames_get_frame_bounds (ui->frames, xwindow,
++                                       window_width, window_height);
++}
++
+ void
+ meta_ui_queue_frame_draw (MetaUI *ui,
+                           Window xwindow)
+diff --git a/src/ui/ui.h b/src/ui/ui.h
+index cc449bd..9a33d9d 100644
+--- a/src/ui/ui.h
++++ b/src/ui/ui.h
+@@ -28,6 +28,7 @@
+ #include <meta/common.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
++#include <cairo.h>
+ #include <glib.h>
+ #include <gdk-pixbuf/gdk-pixbuf.h>
+ 
+@@ -104,6 +105,11 @@ void meta_ui_apply_frame_shape  (MetaUI  *ui,
+                                  int      new_window_height,
+                                  gboolean window_has_shape);
+ 
++cairo_region_t *meta_ui_get_frame_bounds (MetaUI  *ui,
++                                          Window   xwindow,
++                                          int      window_width,
++                                          int      window_height);
++
+ void meta_ui_queue_frame_draw (MetaUI *ui,
+                                Window xwindow);
+ 
+--
+cgit v0.9

diff --git a/x11-wm/mutter/files/mutter-3.0.2-fix-xshape.patch b/x11-wm/mutter/files/mutter-3.0.2-fix-xshape.patch
new file mode 100644
index 0000000..bc65ab2
--- /dev/null
+++ b/x11-wm/mutter/files/mutter-3.0.2-fix-xshape.patch
@@ -0,0 +1,30 @@
+From 59efae8920ff919beffa3816874c2e7cc85f3f08 Mon Sep 17 00:00:00 2001
+From: Jasper St. Pierre <jstpierre@mecheye.net>
+Date: Wed, 25 May 2011 20:47:53 -0400
+Subject: [PATCH] Fix XShape
+
+Commit c3a04bf unintentionally broke XShape handling. By studying the code
+extremely carefully, I found this inconsistency with the code that was
+there before.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=635268
+---
+ src/ui/frames.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/src/ui/frames.c b/src/ui/frames.c
+index 9f0126c..4352e38 100644
+--- a/src/ui/frames.c
++++ b/src/ui/frames.c
+@@ -880,7 +880,7 @@ apply_cairo_region_to_window (Display        *display,
+ 
+   XShapeCombineRectangles (display, xwindow,
+                            ShapeBounding, 0, 0, rects, n_rects,
+-                           ShapeSet, YXBanded);
++                           op, YXBanded);
+ 
+   g_free (rects);
+ }
+-- 
+1.7.5.1
+

diff --git a/x11-wm/mutter/files/mutter-3.0.2-frame-region-cairo-region.patch b/x11-wm/mutter/files/mutter-3.0.2-frame-region-cairo-region.patch
new file mode 100644
index 0000000..2a41fea
--- /dev/null
+++ b/x11-wm/mutter/files/mutter-3.0.2-frame-region-cairo-region.patch
@@ -0,0 +1,234 @@
+From c3a04bf3948dae31cbd64e637c290ddee7bcc73b Mon Sep 17 00:00:00 2001
+From: Owen W. Taylor <otaylor@fishsoup.net>
+Date: Sun, 20 Mar 2011 20:26:27 +0000
+Subject: Convert frame region handling to cairo regions
+
+It's useful to get frame shapes and manipulate them within Mutter, for
+example so that the compositor can use them to clip drawing.
+For this, we'll need the regions as cairo regions not X regions, so
+convert frame shaping code to work in terms of cairo_region_t.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=635268
+---
+diff --git a/src/ui/frames.c b/src/ui/frames.c
+index 9c4782e..7c62898 100644
+--- a/src/ui/frames.c
++++ b/src/ui/frames.c
+@@ -764,6 +764,39 @@ meta_frames_unflicker_bg (MetaFrames *frames,
+   set_background_none (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), frame->xwindow);
+ }
+ 
++#ifdef HAVE_SHAPE
++static void
++apply_cairo_region_to_window (Display        *display,
++                              Window          xwindow,
++                              cairo_region_t *region,
++                              int             op)
++{
++  int n_rects, i;
++  XRectangle *rects;
++
++  n_rects = cairo_region_num_rectangles (region);
++  rects = g_new (XRectangle, n_rects);
++
++  for (i = 0; i < n_rects; i++)
++    {
++      cairo_rectangle_int_t rect;
++
++      cairo_region_get_rectangle (region, i, &rect);
++
++      rects[i].x = rect.x;
++      rects[i].y = rect.y;
++      rects[i].width = rect.width;
++      rects[i].height = rect.height;
++    }
++
++  XShapeCombineRectangles (display, xwindow,
++                           ShapeBounding, 0, 0, rects, n_rects,
++                           ShapeSet, YXBanded);
++
++  g_free (rects);
++}
++#endif
++
+ void
+ meta_frames_apply_shapes (MetaFrames *frames,
+                           Window      xwindow,
+@@ -775,9 +808,9 @@ meta_frames_apply_shapes (MetaFrames *frames,
+   /* Apply shapes as if window had new_window_width, new_window_height */
+   MetaUIFrame *frame;
+   MetaFrameGeometry fgeom;
+-  XRectangle xrect;
+-  Region corners_xregion;
+-  Region window_xregion;
++  cairo_rectangle_int_t rect;
++  cairo_region_t *corners_region;
++  cairo_region_t *window_region;
+   Display *display;
+   
+   frame = meta_frames_lookup_window (frames, xwindow);
+@@ -813,7 +846,7 @@ meta_frames_apply_shapes (MetaFrames *frames,
+       return; /* nothing to do */
+     }
+   
+-  corners_xregion = XCreateRegion ();
++  corners_region = cairo_region_create ();
+   
+   if (fgeom.top_left_corner_rounded_radius != 0)
+     {
+@@ -824,12 +857,12 @@ meta_frames_apply_shapes (MetaFrames *frames,
+       for (i=0; i<corner; i++)
+         {
+           const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
+-          xrect.x = 0;
+-          xrect.y = i;
+-          xrect.width = width;
+-          xrect.height = 1;
++          rect.x = 0;
++          rect.y = i;
++          rect.width = width;
++          rect.height = 1;
+           
+-          XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
++          cairo_region_union_rectangle (corners_region, &rect);
+         }
+     }
+ 
+@@ -842,12 +875,12 @@ meta_frames_apply_shapes (MetaFrames *frames,
+       for (i=0; i<corner; i++)
+         {
+           const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
+-          xrect.x = new_window_width - width;
+-          xrect.y = i;
+-          xrect.width = width;
+-          xrect.height = 1;
++          rect.x = new_window_width - width;
++          rect.y = i;
++          rect.width = width;
++          rect.height = 1;
+           
+-          XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
++          cairo_region_union_rectangle (corners_region, &rect);
+         }
+     }
+ 
+@@ -860,12 +893,12 @@ meta_frames_apply_shapes (MetaFrames *frames,
+       for (i=0; i<corner; i++)
+         {
+           const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
+-          xrect.x = 0;
+-          xrect.y = new_window_height - i - 1;
+-          xrect.width = width;
+-          xrect.height = 1;
++          rect.x = 0;
++          rect.y = new_window_height - i - 1;
++          rect.width = width;
++          rect.height = 1;
+           
+-          XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
++          cairo_region_union_rectangle (corners_region, &rect);
+         }
+     }
+ 
+@@ -878,27 +911,27 @@ meta_frames_apply_shapes (MetaFrames *frames,
+       for (i=0; i<corner; i++)
+         {
+           const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
+-          xrect.x = new_window_width - width;
+-          xrect.y = new_window_height - i - 1;
+-          xrect.width = width;
+-          xrect.height = 1;
++          rect.x = new_window_width - width;
++          rect.y = new_window_height - i - 1;
++          rect.width = width;
++          rect.height = 1;
+           
+-          XUnionRectWithRegion (&xrect, corners_xregion, corners_xregion);
++          cairo_region_union_rectangle (corners_region, &rect);
+         }
+     }
+   
+-  window_xregion = XCreateRegion ();
++  window_region = cairo_region_create ();
+   
+-  xrect.x = 0;
+-  xrect.y = 0;
+-  xrect.width = new_window_width;
+-  xrect.height = new_window_height;
++  rect.x = 0;
++  rect.y = 0;
++  rect.width = new_window_width;
++  rect.height = new_window_height;
+ 
+-  XUnionRectWithRegion (&xrect, window_xregion, window_xregion);
++  cairo_region_union_rectangle (window_region, &rect);
+ 
+-  XSubtractRegion (window_xregion, corners_xregion, window_xregion);
++  cairo_region_subtract (window_region, corners_region);
+ 
+-  XDestroyRegion (corners_xregion);
++  cairo_region_destroy (corners_region);
+   
+   if (window_has_shape)
+     {
+@@ -911,7 +944,7 @@ meta_frames_apply_shapes (MetaFrames *frames,
+       XSetWindowAttributes attrs;      
+       Window shape_window;
+       Window client_window;
+-      Region client_xregion;
++      cairo_region_t *client_region;
+       GdkScreen *screen;
+       int screen_number;
+       
+@@ -951,21 +984,21 @@ meta_frames_apply_shapes (MetaFrames *frames,
+       /* Punch the client area out of the normal frame shape,
+        * then union it with the shape_window's existing shape
+        */
+-      client_xregion = XCreateRegion ();
++      client_region = cairo_region_create ();
+   
+-      xrect.x = fgeom.left_width;
+-      xrect.y = fgeom.top_height;
+-      xrect.width = new_window_width - fgeom.right_width - xrect.x;
+-      xrect.height = new_window_height - fgeom.bottom_height - xrect.y;
++      rect.x = fgeom.left_width;
++      rect.y = fgeom.top_height;
++      rect.width = new_window_width - fgeom.right_width - rect.x;
++      rect.height = new_window_height - fgeom.bottom_height - rect.y;
+ 
+-      XUnionRectWithRegion (&xrect, client_xregion, client_xregion);
++      cairo_region_union_rectangle (client_region, &rect);
+       
+-      XSubtractRegion (window_xregion, client_xregion, window_xregion);
++      cairo_region_subtract (window_region, client_region);
+ 
+-      XDestroyRegion (client_xregion);
+-      
+-      XShapeCombineRegion (display, shape_window,
+-                           ShapeBounding, 0, 0, window_xregion, ShapeUnion);
++      cairo_region_destroy (client_region);
++
++      apply_cairo_region_to_window (display, shape_window,
++                                    window_region, ShapeUnion);
+       
+       /* Now copy shape_window shape to the real frame */
+       XShapeCombineShape (display, frame->xwindow, ShapeBounding,
+@@ -984,13 +1017,13 @@ meta_frames_apply_shapes (MetaFrames *frames,
+                   "Frame 0x%lx has shaped corners\n",
+                   frame->xwindow);
+       
+-      XShapeCombineRegion (display, frame->xwindow,
+-                           ShapeBounding, 0, 0, window_xregion, ShapeSet);
++      apply_cairo_region_to_window (display, frame->xwindow,
++                                    window_region, ShapeSet);
+     }
+   
+   frame->shape_applied = TRUE;
+   
+-  XDestroyRegion (window_xregion);
++  cairo_region_destroy (window_region);
+ #endif /* HAVE_SHAPE */
+ }
+ 
+--
+cgit v0.9

diff --git a/x11-wm/mutter/mutter-3.0.1-r1.ebuild b/x11-wm/mutter/mutter-3.0.2.1.ebuild
similarity index 80%
rename from x11-wm/mutter/mutter-3.0.1-r1.ebuild
rename to x11-wm/mutter/mutter-3.0.2.1.ebuild
index d33255c..c5f7d14 100644
--- a/x11-wm/mutter/mutter-3.0.1-r1.ebuild
+++ b/x11-wm/mutter/mutter-3.0.2.1.ebuild
@@ -6,7 +6,7 @@ EAPI="3"
 GCONF_DEBUG="no"
 GNOME2_LA_PUNT="yes"
 
-inherit gnome2
+inherit eutils gnome2
 if [[ ${PV} = 9999 ]]; then
 	inherit gnome2-live
 fi
@@ -78,7 +78,12 @@ pkg_setup() {
 }
 
 src_prepare() {
-	# https://bugs.gentoo.org/show_bug.cgi?id=363853
-	# Taken from upstream, remove for next release
-	epatch "${FILESDIR}/${P}-fix-session-saving.patch"
+	# Fix argb window shadows: https://bugzilla.gnome.org/show_bug.cgi?id=635268
+	# The first two patches are from upstream git master branch:
+	epatch "${FILESDIR}/${PN}-3.0.2-frame-region-cairo-region.patch"
+	epatch "${FILESDIR}/${PN}-3.0.2-argb-windows-shadow.patch"
+	# The third is from comment 33 in the gnome bug and unbreaks XShape handling
+	epatch "${FILESDIR}/${PN}-3.0.2-fix-xshape.patch"
+
+	gnome2_src_prepare
 }



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: x11-wm/mutter/, x11-wm/mutter/files/
@ 2011-10-18  7:37 Alexandre Restovtsev
  0 siblings, 0 replies; 7+ messages in thread
From: Alexandre Restovtsev @ 2011-10-18  7:37 UTC (permalink / raw
  To: gentoo-commits

commit:     34b3b429e948921b3a733b846bae4fa71b873440
Author:     Alexandre Rostovtsev <tetromino <AT> gmail <DOT> com>
AuthorDate: Tue Oct 18 05:19:17 2011 +0000
Commit:     Alexandre Restovtsev <tetromino <AT> gmail <DOT> com>
CommitDate: Tue Oct 18 05:19:17 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=34b3b429

x11-wm/mutter: 3.2.0 → 3.2.1

Bump, fixes crashes, multiple monitor support, invisible window border
drawing, and keyboard shortcuts.

---
 ...tter-3.2.0-clutter_actor_get_effects-leak.patch |   38 --------------------
 ...{mutter-3.2.0-r1.ebuild => mutter-3.2.1.ebuild} |    8 +----
 2 files changed, 1 insertions(+), 45 deletions(-)

diff --git a/x11-wm/mutter/files/mutter-3.2.0-clutter_actor_get_effects-leak.patch b/x11-wm/mutter/files/mutter-3.2.0-clutter_actor_get_effects-leak.patch
deleted file mode 100644
index e269c5b..0000000
--- a/x11-wm/mutter/files/mutter-3.2.0-clutter_actor_get_effects-leak.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 1b4dce6f843d50fbc9b0fa8f86527788fb0c29d7 Mon Sep 17 00:00:00 2001
-From: Adel Gadllah <adel.gadllah@gmail.com>
-Date: Thu, 29 Sep 2011 13:16:33 +0000
-Subject: meta-window-group: Plug memory leak
-
-We have to free the list returned by clutter_actor_get_effects() .
-
-https://bugzilla.gnome.org/show_bug.cgi?id=660464
----
-diff --git a/src/compositor/meta-window-group.c b/src/compositor/meta-window-group.c
-index 107e7ba..8889503 100644
---- a/src/compositor/meta-window-group.c
-+++ b/src/compositor/meta-window-group.c
-@@ -108,7 +108,7 @@ meta_window_group_paint (ClutterActor *actor)
-   cairo_region_t *unredirected_window_region = NULL;
-   ClutterActor *stage;
-   cairo_rectangle_int_t visible_rect, unredirected_rect;
--  GList *children, *l;
-+  GList *children, *l, *effects;
- 
-   MetaWindowGroup *window_group = META_WINDOW_GROUP (actor);
-   MetaCompScreen *info = meta_screen_get_compositor_data (window_group->screen);
-@@ -161,8 +161,11 @@ meta_window_group_paint (ClutterActor *actor)
-        * as well for the same reason, but omitted for simplicity in the
-        * hopes that no-one will do that.
-        */
--      if (clutter_actor_get_effects (l->data) != NULL)
--        continue;
-+      if ((effects = clutter_actor_get_effects (l->data)) != NULL)
-+        {
-+          g_list_free (effects);
-+          continue;
-+        }
- 
-       if (META_IS_WINDOW_ACTOR (l->data))
-         {
---
-cgit v0.9.0.2

diff --git a/x11-wm/mutter/mutter-3.2.0-r1.ebuild b/x11-wm/mutter/mutter-3.2.1.ebuild
similarity index 91%
rename from x11-wm/mutter/mutter-3.2.0-r1.ebuild
rename to x11-wm/mutter/mutter-3.2.1.ebuild
index afcaf9a..11ab719 100644
--- a/x11-wm/mutter/mutter-3.2.0-r1.ebuild
+++ b/x11-wm/mutter/mutter-3.2.1.ebuild
@@ -6,7 +6,7 @@ EAPI="4"
 GCONF_DEBUG="no"
 GNOME2_LA_PUNT="yes"
 
-inherit eutils gnome2
+inherit gnome2
 if [[ ${PV} = 9999 ]]; then
 	inherit gnome2-live
 fi
@@ -77,9 +77,3 @@ pkg_setup() {
 		$(use_enable introspection)
 		$(use_enable xinerama)"
 }
-
-src_prepare() {
-	gnome2_src_prepare
-	# Fix memory leak, will be in next release
-	epatch "${FILESDIR}/${P}-clutter_actor_get_effects-leak.patch"
-}



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: x11-wm/mutter/, x11-wm/mutter/files/
@ 2012-03-26  8:20 Nirbheek Chauhan
  0 siblings, 0 replies; 7+ messages in thread
From: Nirbheek Chauhan @ 2012-03-26  8:20 UTC (permalink / raw
  To: gentoo-commits

commit:     c254937bcd719a9a20158952fd3476e9d1264068
Author:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
AuthorDate: Sun Mar 25 05:36:01 2012 +0000
Commit:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
CommitDate: Mon Mar 26 08:19:37 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=c254937b

Add x11-wm/mutter-3.3.92

---
 .../mutter-3.2.1-ignore-shadow-and-padding.patch   |   91 ++++++++++++++++++++
 .../{mutter-9999.ebuild => mutter-3.3.92.ebuild}   |   15 +++-
 x11-wm/mutter/mutter-9999.ebuild                   |   15 +++-
 3 files changed, 115 insertions(+), 6 deletions(-)

diff --git a/x11-wm/mutter/files/mutter-3.2.1-ignore-shadow-and-padding.patch b/x11-wm/mutter/files/mutter-3.2.1-ignore-shadow-and-padding.patch
new file mode 100644
index 0000000..bf4649e
--- /dev/null
+++ b/x11-wm/mutter/files/mutter-3.2.1-ignore-shadow-and-padding.patch
@@ -0,0 +1,91 @@
+Patch author: Timo Kluck <tkluck@infty.nl>  Wed, 21 Sep 2011 17:51:28 +0200
+
+Patch to silently ignore padding and shadow tags in Ubuntu metacity themes.
+
+https://bugs.launchpad.net/bugs/800315
+https://bugs.gentoo.org/show_bug.cgi?id=396673
+
+diff --git a/src/ui/theme-parser.c b/src/ui/theme-parser.c
+index 9063541..63a881f 100644
+--- a/src/ui/theme-parser.c
++++ b/src/ui/theme-parser.c
+@@ -90,7 +90,9 @@ typedef enum
+   STATE_WINDOW,
+   /* things we don't use any more but we can still parse: */
+   STATE_MENU_ICON,
+-  STATE_FALLBACK
++  STATE_FALLBACK,
++  /* an ubuntu specific ignore-this-element state */
++  UBUNTU_STATE_IGNORE  
+ } ParseState;
+ 
+ typedef struct
+@@ -1306,7 +1308,19 @@ parse_toplevel_element (GMarkupParseContext  *context,
+        */
+       push_state (info, STATE_FALLBACK);
+     }
+-   else
++  else if (ELEMENT_IS ("shadow"))
++    {
++       /* ubuntu specific, workaround for light-themes: silently ignore shadow tag.
++        */
++      push_state (info, UBUNTU_STATE_IGNORE);
++    }
++  else if (ELEMENT_IS ("padding"))
++    {
++       /* ubuntu specific, workaround for light-themes: silently ignore padding tag.
++        */
++      push_state (info, UBUNTU_STATE_IGNORE);
++    }
++  else
+     {
+       set_error (error, context,
+                  G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE,
+@@ -3027,6 +3041,18 @@ parse_style_element (GMarkupParseContext  *context,
+       
+       push_state (info, STATE_BUTTON);
+     }
++  else if (ELEMENT_IS ("shadow"))
++    {
++       /* ubuntu specific, workaround for light-themes: silently ignore shadow tag.
++        */
++      push_state (info, UBUNTU_STATE_IGNORE);
++    }
++  else if (ELEMENT_IS ("padding"))
++    {
++       /* ubuntu specific, workaround for light-themes: silently ignore padding tag.
++        */
++      push_state (info, UBUNTU_STATE_IGNORE);
++    }
+   else
+     {
+       set_error (error, context,
+@@ -3671,6 +3697,8 @@ start_element_handler (GMarkupParseContext *context,
+                  _("Element <%s> is not allowed inside a <%s> element"),
+                  element_name, "fallback");
+       break;
++    case UBUNTU_STATE_IGNORE:
++      break;
+     }
+ }
+ 
+@@ -3960,6 +3988,9 @@ end_element_handler (GMarkupParseContext *context,
+       pop_state (info);
+       g_assert (peek_state (info) == STATE_THEME);
+       break;
++    case UBUNTU_STATE_IGNORE:
++      pop_state (info);
++      break;
+     }
+ 
+   pop_required_version (info);
+@@ -4165,6 +4196,9 @@ text_handler (GMarkupParseContext *context,
+     case STATE_FALLBACK:
+       NO_TEXT ("fallback");
+       break;
++    case UBUNTU_STATE_IGNORE:
++      NO_TEXT ("ignored_element");
++      break;
+     }
+ }
+ 

diff --git a/x11-wm/mutter/mutter-9999.ebuild b/x11-wm/mutter/mutter-3.3.92.ebuild
similarity index 82%
copy from x11-wm/mutter/mutter-9999.ebuild
copy to x11-wm/mutter/mutter-3.3.92.ebuild
index 143a423..414bbe3 100644
--- a/x11-wm/mutter/mutter-9999.ebuild
+++ b/x11-wm/mutter/mutter-3.3.92.ebuild
@@ -26,13 +26,15 @@ fi
 COMMON_DEPEND=">=x11-libs/pango-1.2[X,introspection?]
 	>=x11-libs/cairo-1.10[X]
 	x11-libs/gdk-pixbuf:2
-	>=x11-libs/gtk+-2.91.7:3[introspection?]
+	>=x11-libs/gtk+-3.3.7:3[introspection?]
 	>=gnome-base/gconf-2:2
-	>=dev-libs/glib-2.14:2
-	>=media-libs/clutter-1.7.5:1.0
+	>=dev-libs/glib-2.25.11:2
+	>=media-libs/clutter-1.9.10:1.0
+	>=media-libs/cogl-1.9.6:1.0
 	>=media-libs/libcanberra-0.26[gtk3]
 	>=x11-libs/startup-notification-0.7
 	>=x11-libs/libXcomposite-0.2
+	>=gnome-base/gsettings-desktop-schemas-3.3.0
 
 	x11-libs/libICE
 	x11-libs/libSM
@@ -76,3 +78,10 @@ pkg_setup() {
 		$(use_enable introspection)
 		$(use_enable xinerama)"
 }
+
+src_prepare() {
+	# Compat with Ubuntu metacity themes (e.g. x11-themes/light-themes)
+	epatch "${FILESDIR}/${PN}-3.2.1-ignore-shadow-and-padding.patch"
+
+	gnome2_src_prepare
+}

diff --git a/x11-wm/mutter/mutter-9999.ebuild b/x11-wm/mutter/mutter-9999.ebuild
index 143a423..414bbe3 100644
--- a/x11-wm/mutter/mutter-9999.ebuild
+++ b/x11-wm/mutter/mutter-9999.ebuild
@@ -26,13 +26,15 @@ fi
 COMMON_DEPEND=">=x11-libs/pango-1.2[X,introspection?]
 	>=x11-libs/cairo-1.10[X]
 	x11-libs/gdk-pixbuf:2
-	>=x11-libs/gtk+-2.91.7:3[introspection?]
+	>=x11-libs/gtk+-3.3.7:3[introspection?]
 	>=gnome-base/gconf-2:2
-	>=dev-libs/glib-2.14:2
-	>=media-libs/clutter-1.7.5:1.0
+	>=dev-libs/glib-2.25.11:2
+	>=media-libs/clutter-1.9.10:1.0
+	>=media-libs/cogl-1.9.6:1.0
 	>=media-libs/libcanberra-0.26[gtk3]
 	>=x11-libs/startup-notification-0.7
 	>=x11-libs/libXcomposite-0.2
+	>=gnome-base/gsettings-desktop-schemas-3.3.0
 
 	x11-libs/libICE
 	x11-libs/libSM
@@ -76,3 +78,10 @@ pkg_setup() {
 		$(use_enable introspection)
 		$(use_enable xinerama)"
 }
+
+src_prepare() {
+	# Compat with Ubuntu metacity themes (e.g. x11-themes/light-themes)
+	epatch "${FILESDIR}/${PN}-3.2.1-ignore-shadow-and-padding.patch"
+
+	gnome2_src_prepare
+}



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: x11-wm/mutter/, x11-wm/mutter/files/
@ 2015-04-18  9:00 Ole Reifschneider
  0 siblings, 0 replies; 7+ messages in thread
From: Ole Reifschneider @ 2015-04-18  9:00 UTC (permalink / raw
  To: gentoo-commits

commit:     48876a3a6d96c46f26a33523b59c13362bf3a51b
Author:     Ole Reifschneider <tranquility <AT> gentoo <DOT> org>
AuthorDate: Sat Apr 18 08:43:13 2015 +0000
Commit:     Ole Reifschneider <tranquility <AT> gentoo <DOT> org>
CommitDate: Sat Apr 18 08:49:23 2015 +0000
URL:        https://gitweb.gentoo.org/proj/gnome.git/commit/?id=48876a3a

Add x11-wm/mutter-3.16.1.1

Package-Manager: portage-2.2.14
Manifest-Sign-Key: 7E8B4D42

 x11-wm/mutter/files/mutter-3.14.2-automagic.patch  | 90 ---------------------
 .../mutter-3.2.1-ignore-shadow-and-padding.patch   | 91 ----------------------
 x11-wm/mutter/metadata.xml                         |  5 +-
 .../{mutter-9999.ebuild => mutter-3.16.1.1.ebuild} | 44 ++++-------
 x11-wm/mutter/mutter-9999.ebuild                   | 15 +---
 5 files changed, 20 insertions(+), 225 deletions(-)

diff --git a/x11-wm/mutter/files/mutter-3.14.2-automagic.patch b/x11-wm/mutter/files/mutter-3.14.2-automagic.patch
deleted file mode 100644
index 3956004..0000000
--- a/x11-wm/mutter/files/mutter-3.14.2-automagic.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From d723a752982e12b7a7fb7998c3e28efd9082abd9 Mon Sep 17 00:00:00 2001
-From: Gilles Dartiguelongue <eva@gentoo.org>
-Date: Mon, 8 Dec 2014 22:00:32 +0100
-Subject: [PATCH] Make wayland support optional
-
----
- configure.ac | 58 +++++++++++++++++++++++++++++++++++++++++++---------------
- 1 file changed, 43 insertions(+), 15 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 0870afa..251f909 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -200,23 +200,49 @@ AC_SUBST(XWAYLAND_PATH)
- 
- PKG_CHECK_MODULES(MUTTER, $MUTTER_PC_MODULES)
- 
--PKG_CHECK_MODULES(MUTTER_NATIVE_BACKEND, [clutter-egl-1.0 libdrm libsystemd libinput gbm >= 10.3], [have_native_backend=yes], [have_native_backend=no])
--if test $have_native_backend = yes; then
--   AC_DEFINE([HAVE_NATIVE_BACKEND],[1],[Define if you want to enable the native (KMS) backend based on systemd])
--fi
--AM_CONDITIONAL([HAVE_NATIVE_BACKEND],[test $have_native_backend = yes])
--
--PKG_CHECK_MODULES(MUTTER_WAYLAND, [clutter-wayland-1.0 clutter-wayland-compositor-1.0 wayland-server >= 1.5.90], [have_wayland=yes], [have_wayland=no])
--if test $have_wayland = yes; then
--   AC_PATH_PROG([WAYLAND_SCANNER],[wayland-scanner],[no])
--   AS_IF([test $WAYLAND_SCANNER = "no"],
--     AC_MSG_ERROR([Could not find wayland-scanner in your PATH, required for parsing wayland extension protocols]))
--   AC_SUBST([WAYLAND_SCANNER])
--
--   AC_DEFINE([HAVE_WAYLAND],[1],[Define if you want to enable Wayland support])
--fi
-+have_wayland=no
-+AC_ARG_ENABLE(
-+  [wayland],
-+  AS_HELP_STRING([--disable-wayland], [disable mutter on wayland support]),
-+  [],
-+  enable_wayland=yes
-+)
-+AS_IF([test "$enable_wayland" != "no"],
-+      [
-+        PKG_CHECK_MODULES([MUTTER_WAYLAND],
-+                          [clutter-wayland-1.0 clutter-wayland-compositor-1.0 wayland-server >= 1.5.90],
-+                          [
-+                            have_wayland=yes
-+                            AC_PATH_PROG([WAYLAND_SCANNER],[wayland-scanner],[no])
-+                            AS_IF([test $WAYLAND_SCANNER = "no"],
-+                                  [AC_MSG_ERROR([Could not find wayland-scanner in your PATH, required for parsing wayland extension protocols])])
-+                            AC_SUBST([WAYLAND_SCANNER])
-+                            AC_DEFINE([HAVE_WAYLAND],[1],[Define if you want to enable Wayland support])
-+                          ],
-+                          [have_wayland=no])
-+])
- AM_CONDITIONAL([HAVE_WAYLAND],[test $have_wayland = yes])
- 
-+have_native_backend=no
-+AC_ARG_ENABLE(
-+  [native-backend],
-+  AS_HELP_STRING([--disable-native-backend], [disable mutter native (KMS) backend]),
-+  [],
-+  enable_native_backend=yes
-+)
-+AS_IF([test "$enable_native_backend" != "no"],
-+      [
-+        PKG_CHECK_MODULES([MUTTER_NATIVE_BACKEND],
-+                          [clutter-egl-1.0 libdrm libsystemd libinput gudev-1.0 gbm >= 10.3],
-+                          [
-+                            have_native_backend=yes
-+                            AC_DEFINE([HAVE_NATIVE_BACKEND],[1],
-+                                      [Define if you want to enable the native (KMS) backend based on systemd])
-+                          ],
-+                          [have_native_backend=no])
-+])
-+AM_CONDITIONAL([HAVE_NATIVE_BACKEND],[test $have_native_backend = yes])
-+
- PKG_CHECK_EXISTS([xi >= 1.6.99.1],
-                  AC_DEFINE([HAVE_XI23],[1],[Define if you have support for XInput 2.3 or greater]))
- 
-@@ -416,6 +442,8 @@ mutter-$VERSION
- 	libcanberra:              ${have_libcanberra}
- 	Introspection:            ${found_introspection}
- 	Session management:       ${found_sm}
-+	Wayland:                  ${have_wayland}
-+	Native (KMS) backend:     ${have_native_backend}
- "
- 
- 
--- 
-2.2.0
-

diff --git a/x11-wm/mutter/files/mutter-3.2.1-ignore-shadow-and-padding.patch b/x11-wm/mutter/files/mutter-3.2.1-ignore-shadow-and-padding.patch
deleted file mode 100644
index bf4649e..0000000
--- a/x11-wm/mutter/files/mutter-3.2.1-ignore-shadow-and-padding.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-Patch author: Timo Kluck <tkluck@infty.nl>  Wed, 21 Sep 2011 17:51:28 +0200
-
-Patch to silently ignore padding and shadow tags in Ubuntu metacity themes.
-
-https://bugs.launchpad.net/bugs/800315
-https://bugs.gentoo.org/show_bug.cgi?id=396673
-
-diff --git a/src/ui/theme-parser.c b/src/ui/theme-parser.c
-index 9063541..63a881f 100644
---- a/src/ui/theme-parser.c
-+++ b/src/ui/theme-parser.c
-@@ -90,7 +90,9 @@ typedef enum
-   STATE_WINDOW,
-   /* things we don't use any more but we can still parse: */
-   STATE_MENU_ICON,
--  STATE_FALLBACK
-+  STATE_FALLBACK,
-+  /* an ubuntu specific ignore-this-element state */
-+  UBUNTU_STATE_IGNORE  
- } ParseState;
- 
- typedef struct
-@@ -1306,7 +1308,19 @@ parse_toplevel_element (GMarkupParseContext  *context,
-        */
-       push_state (info, STATE_FALLBACK);
-     }
--   else
-+  else if (ELEMENT_IS ("shadow"))
-+    {
-+       /* ubuntu specific, workaround for light-themes: silently ignore shadow tag.
-+        */
-+      push_state (info, UBUNTU_STATE_IGNORE);
-+    }
-+  else if (ELEMENT_IS ("padding"))
-+    {
-+       /* ubuntu specific, workaround for light-themes: silently ignore padding tag.
-+        */
-+      push_state (info, UBUNTU_STATE_IGNORE);
-+    }
-+  else
-     {
-       set_error (error, context,
-                  G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE,
-@@ -3027,6 +3041,18 @@ parse_style_element (GMarkupParseContext  *context,
-       
-       push_state (info, STATE_BUTTON);
-     }
-+  else if (ELEMENT_IS ("shadow"))
-+    {
-+       /* ubuntu specific, workaround for light-themes: silently ignore shadow tag.
-+        */
-+      push_state (info, UBUNTU_STATE_IGNORE);
-+    }
-+  else if (ELEMENT_IS ("padding"))
-+    {
-+       /* ubuntu specific, workaround for light-themes: silently ignore padding tag.
-+        */
-+      push_state (info, UBUNTU_STATE_IGNORE);
-+    }
-   else
-     {
-       set_error (error, context,
-@@ -3671,6 +3697,8 @@ start_element_handler (GMarkupParseContext *context,
-                  _("Element <%s> is not allowed inside a <%s> element"),
-                  element_name, "fallback");
-       break;
-+    case UBUNTU_STATE_IGNORE:
-+      break;
-     }
- }
- 
-@@ -3960,6 +3988,9 @@ end_element_handler (GMarkupParseContext *context,
-       pop_state (info);
-       g_assert (peek_state (info) == STATE_THEME);
-       break;
-+    case UBUNTU_STATE_IGNORE:
-+      pop_state (info);
-+      break;
-     }
- 
-   pop_required_version (info);
-@@ -4165,6 +4196,9 @@ text_handler (GMarkupParseContext *context,
-     case STATE_FALLBACK:
-       NO_TEXT ("fallback");
-       break;
-+    case UBUNTU_STATE_IGNORE:
-+      NO_TEXT ("ignored_element");
-+      break;
-     }
- }
- 

diff --git a/x11-wm/mutter/metadata.xml b/x11-wm/mutter/metadata.xml
index 6e0e2ec..31e8de5 100644
--- a/x11-wm/mutter/metadata.xml
+++ b/x11-wm/mutter/metadata.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
 <pkgmetadata>
-  <herd>gnome</herd>
+	<herd>gnome</herd>
+	<use>
+		<flag name="kms">Enable KMS support.</flag>
+	</use>
 </pkgmetadata>

diff --git a/x11-wm/mutter/mutter-9999.ebuild b/x11-wm/mutter/mutter-3.16.1.1.ebuild
similarity index 67%
copy from x11-wm/mutter/mutter-9999.ebuild
copy to x11-wm/mutter/mutter-3.16.1.1.ebuild
index f18cc50..23eee1c 100644
--- a/x11-wm/mutter/mutter-9999.ebuild
+++ b/x11-wm/mutter/mutter-3.16.1.1.ebuild
@@ -1,14 +1,11 @@
-# Copyright 1999-2014 Gentoo Foundation
+# Copyright 1999-2015 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: $
+# $Header: /var/cvsroot/gentoo-x86/x11-wm/mutter/mutter-3.14.4.ebuild,v 1.1 2015/03/28 09:21:51 pacho Exp $
 
 EAPI="5"
 GCONF_DEBUG="yes"
 
-inherit autotools eutils gnome2
-if [[ ${PV} = 9999 ]]; then
-	inherit gnome2-live
-fi
+inherit eutils gnome2
 
 DESCRIPTION="GNOME 3 compositing window manager based on Clutter"
 HOMEPAGE="http://git.gnome.org/browse/mutter/"
@@ -16,25 +13,23 @@ HOMEPAGE="http://git.gnome.org/browse/mutter/"
 LICENSE="GPL-2+"
 SLOT="0"
 IUSE="+introspection +kms test wayland"
-if [[ ${PV} = 9999 ]]; then
-	KEYWORDS=""
-else
-	KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc ~x86"
-fi
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc ~x86"
 
+# libXi-1.7.4 or newer needed per:
+# https://bugzilla.gnome.org/show_bug.cgi?id=738944
 COMMON_DEPEND="
 	>=x11-libs/pango-1.2[X,introspection?]
 	>=x11-libs/cairo-1.10[X]
 	>=x11-libs/gtk+-3.9.11:3[X,introspection?]
-	>=dev-libs/glib-2.36.0:2
-	>=media-libs/clutter-1.19.5:1.0[introspection?]
+	>=dev-libs/glib-2.36.0:2[dbus]
+	>=media-libs/clutter-1.21.3:1.0[introspection?]
 	>=media-libs/cogl-1.17.1:1.0=[introspection?]
 	>=media-libs/libcanberra-0.26[gtk3]
 	>=x11-libs/startup-notification-0.7
 	>=x11-libs/libXcomposite-0.2
-	>=gnome-base/gsettings-desktop-schemas-3.7.3[introspection?]
+	>=gnome-base/gsettings-desktop-schemas-3.15.92[introspection?]
 	gnome-base/gnome-desktop:3=
-	>sys-power/upower-0.99
+	>sys-power/upower-0.99:=
 
 	x11-libs/libICE
 	x11-libs/libSM
@@ -44,7 +39,7 @@ COMMON_DEPEND="
 	x11-libs/libXdamage
 	x11-libs/libXext
 	x11-libs/libXfixes
-	>=x11-libs/libXi-1.7
+	>=x11-libs/libXi-1.7.4
 	x11-libs/libXinerama
 	x11-libs/libXrandr
 	x11-libs/libXrender
@@ -55,10 +50,10 @@ COMMON_DEPEND="
 
 	gnome-extra/zenity
 
-	introspection? ( >=dev-libs/gobject-introspection-0.9.5 )
+	introspection? ( >=dev-libs/gobject-introspection-1.42:= )
 	kms? (
 		dev-libs/libinput
-		media-libs/clutter[egl]
+		>=media-libs/clutter-1.20[egl]
 		media-libs/cogl:1.0=[kms]
 		>=media-libs/mesa-10.3[gbm]
 		sys-apps/systemd
@@ -66,7 +61,7 @@ COMMON_DEPEND="
 		x11-libs/libdrm:= )
 	wayland? (
 		>=dev-libs/wayland-1.5.90
-		media-libs/clutter[wayland]
+		>=media-libs/clutter-1.20[wayland]
 		x11-base/xorg-server[wayland] )
 "
 DEPEND="${COMMON_DEPEND}
@@ -83,17 +78,6 @@ RDEPEND="${COMMON_DEPEND}
 	!x11-misc/expocity
 "
 
-src_prepare() {
-	# Compat with Ubuntu metacity themes (e.g. x11-themes/light-themes)
-	epatch "${FILESDIR}"/${PN}-3.2.1-ignore-shadow-and-padding.patch
-
-	# Automagic fixes
-	epatch "${FILESDIR}"/${PN}-3.14.2-automagic.patch
-
-	eautoreconf
-	gnome2_src_prepare
-}
-
 src_configure() {
 	gnome2_src_configure \
 		--disable-static \

diff --git a/x11-wm/mutter/mutter-9999.ebuild b/x11-wm/mutter/mutter-9999.ebuild
index f18cc50..aa58f3d 100644
--- a/x11-wm/mutter/mutter-9999.ebuild
+++ b/x11-wm/mutter/mutter-9999.ebuild
@@ -1,11 +1,11 @@
-# Copyright 1999-2014 Gentoo Foundation
+# Copyright 1999-2015 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 # $Header: $
 
 EAPI="5"
 GCONF_DEBUG="yes"
 
-inherit autotools eutils gnome2
+inherit eutils gnome2
 if [[ ${PV} = 9999 ]]; then
 	inherit gnome2-live
 fi
@@ -83,17 +83,6 @@ RDEPEND="${COMMON_DEPEND}
 	!x11-misc/expocity
 "
 
-src_prepare() {
-	# Compat with Ubuntu metacity themes (e.g. x11-themes/light-themes)
-	epatch "${FILESDIR}"/${PN}-3.2.1-ignore-shadow-and-padding.patch
-
-	# Automagic fixes
-	epatch "${FILESDIR}"/${PN}-3.14.2-automagic.patch
-
-	eautoreconf
-	gnome2_src_prepare
-}
-
 src_configure() {
 	gnome2_src_configure \
 		--disable-static \


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-04-18  9:00 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-02 14:43 [gentoo-commits] proj/gnome:master commit in: x11-wm/mutter/, x11-wm/mutter/files/ Nirbheek Chauhan
  -- strict thread matches above, loose matches on Subject: below --
2015-04-18  9:00 Ole Reifschneider
2012-03-26  8:20 Nirbheek Chauhan
2011-10-18  7:37 Alexandre Restovtsev
2011-04-29 19:16 Nirbheek Chauhan
2011-03-29  8:35 Nirbheek Chauhan
2011-03-09 11:34 Nirbheek Chauhan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox