--- mutter-2.31.5.orig/debian/mutter-theme-viewer.1 +++ mutter-2.31.5/debian/mutter-theme-viewer.1 @@ -0,0 +1,43 @@ +.\" In .TH, FOO should be all caps, SECTION should be 1-8, maybe w/ subsection +.\" other parms are allowed: see man(7), man(1) +.\" +.\" Based on template provided by Tom Christiansen . +.\" +.TH MUTTER-THEME-VIEWER 1 "1 June 2004" +.SH NAME +mutter-theme-viewer \- view mutter themes +.SH SYNOPSIS +.B mutter-theme-viewer +[ +.I THEMENAME +] +.SH DESCRIPTION +.\" Putting a newline after each sentence can generate better output. +.B mutter-theme-viewer +allows you to preview any installed Mutter theme. +.PP +When designing a new Mutter theme, you can use +.B mutter-theme-viewer +to measure the performance of a window frame option, and to preview +the option. +.SH OPTIONS +.TP +.I THEMENAME +Name of the theme to be shown (\fIAtlanta\fR by default). +It is case-sensitive. +.SH FILES +.br +.nf +.TP +.I /usr/share/themes +system themes directory +.TP +.I /usr/share/themes/*/mutter-1/mutter-theme-1.xml +theme specification file +.SH AUTHOR +This manual page was written by Jose M. Moya , for +the Debian GNU/Linux system (but may be used by others). +.SH "SEE ALSO" +.\" Always quote multiple words for .SH +.BR mutter (1), +.BR mutter-window-demo (1). --- mutter-2.31.5.orig/debian/libmutter-dev.debhelper.log +++ mutter-2.31.5/debian/libmutter-dev.debhelper.log @@ -0,0 +1 @@ +dh_autoreconf_clean --- mutter-2.31.5.orig/debian/rules +++ mutter-2.31.5/debian/rules @@ -0,0 +1,21 @@ +#!/usr/bin/make -f + +include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/cdbs/1/rules/patchsys-quilt.mk +include /usr/share/cdbs/1/class/gnome.mk +include /usr/share/cdbs/1/rules/utils.mk +include /usr/share/cdbs/1/rules/autoreconf.mk +include /usr/share/gnome-pkg-tools/1/rules/uploaders.mk +include /usr/share/gnome-pkg-tools/1/rules/gnome-version.mk +-include /usr/share/gnome-pkg-tools/1/rules/gnome-get-source.mk + +DEB_CONFIGURE_EXTRA_FLAGS += --enable-startup-notification=yes +DEB_DH_MAKESHLIBS_ARGS_libmetacity-private0 += -V 'libmutter-private0 (>= 2.29.0)' +DEB_INSTALL_DOCS_mutter += doc/theme-format.txt + +$(patsubst %,binary-predeb/%,$(DEB_ALL_PACKAGES)) :: + dh_girepository -p$(cdbs_curpkg) + +# This does not work with mutter; disabled, for now. +# LDFLAGS += -Wl,-z,defs -Wl,-O1 -Wl,--as-needed + --- mutter-2.31.5.orig/debian/control.in +++ mutter-2.31.5/debian/control.in @@ -0,0 +1,142 @@ +Source: mutter +Section: x11 +Priority: optional +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Debian GNOME Maintainers +Uploaders: @GNOME_TEAM@ +Build-Depends: cdbs (>= 0.4.41), + debhelper (>= 5), + quilt, + intltool (>= 0.34.90), + dh-autoreconf, + gobject-introspection (>= 0.6.5-3), + gir1.0-clutter-1.0, + gir1.0-glib-2.0, + gir1.0-freedesktop, + gir-repository-dev, + libgirepository1.0-dev (>= 0.9.3-0ubuntu2), + libclutter-1.0-dev (>= 1.2.12-0ubuntu4) + | libclutter-eglx-es20-1.0-dev (>= 1.2.12-0ubuntu4), + libgtk2.0-dev (>= 2.10.0), + libpango1.0-dev (>= 1.2.0), + libgconf2-dev (>= 2.6.1-2), + libglib2.0-dev (>= 2.6.0), + libstartup-notification0-dev (>= 0.7), + libxcomposite-dev (>= 1:0.2), + libxfixes-dev, + libxrender-dev, + libxdamage-dev, + libxcursor-dev, + libxt-dev, + libx11-dev, + libxinerama-dev, + libxext-dev, + libxrandr-dev, + libsm-dev, + libice-dev, + zenity, + gnome-doc-utils (>= 0.8), + gnome-pkg-tools (>= 0.10), + dpkg-dev (>= 1.13.19) +Standards-Version: 3.8.3 +Vcs-Bzr: https://code.launchpad.net/~ubuntu-desktop/mutter/ubuntu/ + +Package: mutter +Section: x11 +Architecture: any +Depends: ${shlibs:Depends}, + ${misc:Depends}, + mutter-common (>= ${gnome:Version}), + mutter-common (<< ${gnome:NextVersion}), + zenity +Provides: x-window-manager +Recommends: gnome-session | x-session-manager +Breaks: unity (<< 0.2.24), gnome-shell (<= 2.31.2-1ubuntu1) +Suggests: gnome-control-center (>= 1:2.5.4), + gnome-themes, + xdg-user-dirs +Description: lightweight GTK+ window manager + Mutter is a small window manager, using GTK+ and Clutter to do + everything. + . + Mutter is the clutter-based evolution of Metacity, which, as the + author says, is a "Boring window manager for the adult in you. Many + window managers are like Marshmallow Froot Loops; Metacity is like + Cheerios." + . + This package contains the core binaries. + +Package: libmutter-private0 +Section: libs +Architecture: any +Depends: ${shlibs:Depends}, + ${misc:Depends}, + mutter-common (>= ${gnome:Version}), + mutter-common (<< ${gnome:NextVersion}) +Conflicts: libmutter0 +Replaces: libmutter0 +Description: library for the Mutter window manager + Mutter is a small window manager, using GTK+ and Clutter to do + everything. + . + Mutter is the clutter-based evolution of Metacity, which, as the + author says, is a "Boring window manager for the adult in you. Many + window managers are like Marshmallow Froot Loops; Metacity is like + Cheerios." + . + This package contains the shared library. + +Package: mutter-common +Section: misc +Architecture: all +Depends: ${misc:Depends} +Replaces: mutter (<< 1:2.16.3) +Description: shared files for the Mutter window manager + Mutter is a small window manager, using GTK+ and Clutter to do + everything. + . + Mutter is the clutter-based evolution of Metacity, which, as the + author says, is a "Boring window manager for the adult in you. Many + window managers are like Marshmallow Froot Loops; Metacity is like + Cheerios." + . + This package contains the shared files. + +Package: libmutter-dev +Section: libdevel +Architecture: any +Depends: ${misc:Depends}, + libmutter-private0 (= ${binary:Version}), + libclutter-1.0-dev (>= 1.0.0) + | libclutter-eglx-es20-1.0-dev (>= 1.0.0), + libgtk2.0-dev (>= 2.10.0-1) +Description: Development files for the Mutter window manager + Mutter is a small window manager, using GTK+ and Clutter to do + everything. + . + Mutter is the clutter-based evolution of Metacity, which, as the + author says, is a "Boring window manager for the adult in you. Many + window managers are like Marshmallow Froot Loops; Metacity is like + Cheerios." + . + This package contains the development files. + +Package: gir1.0-mutter-2.31 +Section: libs +Architecture: any +Depends: ${gir:Depends}, + ${shlib:Depends}, + ${misc:Depends} +Conflicts: libmutter-private0 (<= 2.28.0-1), gir1.0-mutter-2.28, gir1.0-mutter-2.29 +Replaces: libmutter-private0 (<= 2.28.0-1), gir1.0-mutter-2.28, gir1.0-mutter-2.29 +Description: GObject introspection data for Mutter + Mutter is a small window manager, using GTK+ and Clutter to do + everything. + . + Mutter is the clutter-based evolution of Metacity, which, as the + author says, is a "Boring window manager for the adult in you. Many + window managers are like Marshmallow Froot Loops; Metacity is like + Cheerios." + . + This package contains the GObject introspection data which may be + used to generate dynamic bindings. --- mutter-2.31.5.orig/debian/mutter-common.debhelper.log +++ mutter-2.31.5/debian/mutter-common.debhelper.log @@ -0,0 +1 @@ +dh_autoreconf_clean --- mutter-2.31.5.orig/debian/README.Debian +++ mutter-2.31.5/debian/README.Debian @@ -0,0 +1,17 @@ +Mutter Compositor +=================== + +Mutter includes a compositor based on Clutter. Mutter by default adds +very simple effects using the compositor, such as a drop-shadow. The +compositor may be used by plugins to add more effects. GNOME Shell is +an example of one such plugin. + +The compositor can be enabled on the fly by setting the gconf key +/apps/mutter/general/compositing_manager to true by using +gconf-editor or gconftool-2. + +Before enabling the compositor, you need to make sure your X server +configuration has the composite extension, as well as DRI loaded and +enabled. + + -- Gustavo Noronha Silva , Sun, 26 Jul 2009 13:14:57 +0200 --- mutter-2.31.5.orig/debian/gir1.0-mutter-2.31.debhelper.log +++ mutter-2.31.5/debian/gir1.0-mutter-2.31.debhelper.log @@ -0,0 +1 @@ +dh_autoreconf_clean --- mutter-2.31.5.orig/debian/mutter.debhelper.log +++ mutter-2.31.5/debian/mutter.debhelper.log @@ -0,0 +1 @@ +dh_autoreconf_clean --- mutter-2.31.5.orig/debian/mutter.prerm +++ mutter-2.31.5/debian/mutter.prerm @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +action="$1" + +if [ "$action" = remove ]; then + update-alternatives --remove x-window-manager \ + /usr/bin/mutter +fi + +#DEBHELPER# --- mutter-2.31.5.orig/debian/mutter.1 +++ mutter-2.31.5/debian/mutter.1 @@ -0,0 +1,53 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH MUTTER 1 "19 August 2002" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +MUTTER \- minimal GTK2 Window Manager +.SH SYNOPSIS +.B mutter +[\-\-sm\-disable] [\-\-sm\-save\-file=\fIFILENAME\fP] [\-\-display=\fIDISPLAY\fP] [\-\-replace] +.SH DESCRIPTION +This manual page documents briefly the +.B mutter\fP. +This manual page was written for the Debian distribution +because the original program does not have a manual page. +.PP +.\" TeX users may be more comfortable with the \fB\fP and +.\" \fI\fP escape sequences to invode bold face and italics, +.\" respectively. +\fBmutter\fP is a minimal X window manager that tries to be as crack free as possible. It supports sloppy focussing and multiple desktops. +.SH OPTIONS +.TP +.B \-\-sm\-disable +Disable the session management. +.TP +.B \-\-sm\-save\-file=FILENAME +Save a session to \fIFILENAME\fP. +.TP +.B \-\-display=DISPLAY +Connect to X display \fIDISPLAY\fP. +.TP +.B \-\-replace +a window manager which is running is replaced by \fBmutter\fP. +.TP +.B \-h, \-\-help +Show summary of options. +.SH SEE ALSO +.BR mutter-message (1) +.SH AUTHOR +This manual page was written by Akira TAGOH , +for the Debian GNU/Linux system (but may be used by others). The original manual page was written by Thom May . --- mutter-2.31.5.orig/debian/libmutter-private0.install +++ mutter-2.31.5/debian/libmutter-private0.install @@ -0,0 +1 @@ +debian/tmp/usr/lib/lib*.so.* --- mutter-2.31.5.orig/debian/mutter-common.catalog +++ mutter-2.31.5/debian/mutter-common.catalog @@ -0,0 +1 @@ +PUBLIC "-//MetacityTheme//DTD MetacityTheme 1.0//EN//XML" "metacity-theme.dtd" --- mutter-2.31.5.orig/debian/mutter.postinst +++ mutter-2.31.5/debian/mutter.postinst @@ -0,0 +1,16 @@ +#!/bin/sh + +set -e + +action="$1" + +if [ "$action" = configure ]; then + # register the alternatives of x-window-manager manually + # because dh_installwm doesn't register manpage as slave yet. + update-alternatives --install /usr/bin/x-window-manager \ + x-window-manager /usr/bin/mutter 60 \ + --slave /usr/share/man/man1/x-window-manager.1.gz \ + x-window-manager.1.gz /usr/share/man/man1/mutter.1.gz +fi + +#DEBHELPER# --- mutter-2.31.5.orig/debian/mutter-message.1 +++ mutter-2.31.5/debian/mutter-message.1 @@ -0,0 +1,50 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH MUTTER\-MESSAGE 1 "28 August 2002" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +MUTTER\-MESSAGE \- a command to send a message to Mutter +.SH SYNOPSIS +.B MUTTER\-MESSAGE +[restart|reload\-theme|enable\-keybindings|disable\-keybindings] +.SH DESCRIPTION +This manual page documents briefly the +.B mutter\-message\fP. +This manual page was written for the Debian distribution +because the original program does not have a manual page. +.PP +.\" TeX users may be more comfortable with the \fB\fP and +.\" \fI\fP escape sequences to invode bold face and italics, +.\" respectively. +\fBmutter\-message\fP send a specified message to \fBmutter\fP(1). +.SH OPTIONS +.TP +.B restart +Restart \fBmutter\fP(1) which is running. +.TP +.B reload-theme +Reload a theme which is specified on gconf database. +.TP +.B enable-keybindings +Enable all of keybindings which is specified on gconf database. +.TP +.B disable-keybindings +Disable all of keybindings which is specified on gconf database. +.SH SEE ALSO +.BR mutter (1) +.SH AUTHOR +This manual page was written by Akira TAGOH , +for the Debian GNU/Linux system (but may be used by others). --- mutter-2.31.5.orig/debian/libmutter-dev.install +++ mutter-2.31.5/debian/libmutter-dev.install @@ -0,0 +1,5 @@ +debian/tmp/usr/include +debian/tmp/usr/lib/lib*.a +debian/tmp/usr/lib/lib*.so +debian/tmp/usr/lib/pkgconfig/*.pc +debian/tmp/usr/lib/mutter/Meta-*.gir --- mutter-2.31.5.orig/debian/mutter-common.sgmlcatalogs +++ mutter-2.31.5/debian/mutter-common.sgmlcatalogs @@ -0,0 +1 @@ +debian/mutter-common.catalog /usr/share/sgml/mutter-common/catalog --- mutter-2.31.5.orig/debian/compat +++ mutter-2.31.5/debian/compat @@ -0,0 +1 @@ +5 --- mutter-2.31.5.orig/debian/watch +++ mutter-2.31.5/debian/watch @@ -0,0 +1,2 @@ +version=3 +http://ftp.gnome.org/pub/GNOME/sources/mutter/([\d\.]+)\d/ mutter-(.*)\.tar\.gz debian uupdate --- mutter-2.31.5.orig/debian/copyright +++ mutter-2.31.5/debian/copyright @@ -0,0 +1,69 @@ +This package was debianized by Thom May on +Sun, 10 Feb 2002 12:03:22 +0000. + +It was downloaded from http://ftp.gnome.org/pub/GNOME/sources/metacity/ + +Upstream Author: Havoc Pennington + +Copyright: + Copyright © 2001-2008 Havoc Pennington, Red Hat, Inc., and others + Copyright © 2002 The Gnome Foundation + Copyright © 2007 The GNOME Project + Copyright © 2002 Ross Burton + Copyright © 2004-2006 Elijah Newren + Copyright © 2001 Dominik Vogt, Matthias Clasen, and fvwm2 team + Copyright © 2003-2004 Rob Adams + Copyright © 2002 Sun Microsystems, Inc. + Copyright © 1986-1998 The Open Group + Copyright © 1987 Digital Equipment Corporation + Copyright © 2001 Anders Carlsson + Copyright © 2008 Thomas Thurman + Copyright © 1995-2000 GTK+ Team + Copyright © 1988 Wyse Technology, Inc., + Copyright © 2008 Iain Holmes + Copyright © 2000-2001 Eazel, Inc. + Copyright © 2001 Ximian, Inc. + Copyright © 2002 Gaute Lindkvist + Copyright © 2002 James M. Cape + Copyright © 2002 Garrett LeSage + Copyright © 2002 Tuomas Kuosmanen + Copyright © 2002 Jorn Baayen + Copyright © 1997-2000 Dan Pascu and Alfredo Kojima + Copyright © 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + Copyright © 1998 Tim Janik + Copyright © 1999-2007 Free Software Foundation, Inc. + Copyright © 1995-1997 Ulrich Drepper + Copyright © 1994 X Consortium + Copyright © 2004-2008 Rodney Dawes + Copyright © 2004 Scott James Remnant + Copyright © 2002 Simos Xenitellis + Copyright © 2003-2006 Miloslav Trmac + Copyright © 2008 GNOME i18n Project for Vietnamese + Copyright © 2003-2006 Sharif FarsiWeb, Inc. + Copyright © 2003 Åsmund Skjæveland. + Copyright © 2005-2006 Canonical Ltd. and Rosetta Contributors + Copyright © 2004-2006 Adam Weinberger and the GNOME Foundation + Copyright © 2004 Kakilik Project + Copyright © Croatiann team + Copyright © 2007-2008 OpenedHand + Copyright © 2008-2009 Intel Corporation + Copyright © 2008 Matthew Allum + +License: + + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. --- mutter-2.31.5.orig/debian/control +++ mutter-2.31.5/debian/control @@ -0,0 +1,147 @@ +# This file is autogenerated. DO NOT EDIT! +# +# Modifications should be made to debian/control.in instead. +# This file is regenerated automatically in the clean target. + +Source: mutter +Section: x11 +Priority: optional +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Debian GNOME Maintainers +Uploaders: Debian GNOME Maintainers +Build-Depends: cdbs (>= 0.4.41), + debhelper (>= 5), + quilt, + intltool (>= 0.34.90), + dh-autoreconf, + gobject-introspection (>= 0.6.5-3), + gir1.0-clutter-1.0, + gir1.0-glib-2.0, + gir1.0-freedesktop, + gir-repository-dev, + libgirepository1.0-dev (>= 0.9.3-0ubuntu2), + libclutter-1.0-dev (>= 1.2.12-0ubuntu4) + | libclutter-eglx-es20-1.0-dev (>= 1.2.12-0ubuntu4), + libgtk2.0-dev (>= 2.10.0), + libpango1.0-dev (>= 1.2.0), + libgconf2-dev (>= 2.6.1-2), + libglib2.0-dev (>= 2.6.0), + libstartup-notification0-dev (>= 0.7), + libxcomposite-dev (>= 1:0.2), + libxfixes-dev, + libxrender-dev, + libxdamage-dev, + libxcursor-dev, + libxt-dev, + libx11-dev, + libxinerama-dev, + libxext-dev, + libxrandr-dev, + libsm-dev, + libice-dev, + zenity, + gnome-doc-utils (>= 0.8), + gnome-pkg-tools (>= 0.10), + dpkg-dev (>= 1.13.19) +Standards-Version: 3.8.3 +Vcs-Bzr: https://code.launchpad.net/~ubuntu-desktop/mutter/ubuntu/ + +Package: mutter +Section: x11 +Architecture: any +Depends: ${shlibs:Depends}, + ${misc:Depends}, + mutter-common (>= ${gnome:Version}), + mutter-common (<< ${gnome:NextVersion}), + zenity +Provides: x-window-manager +Recommends: gnome-session | x-session-manager +Breaks: unity (<< 0.2.24), gnome-shell (<= 2.31.2-1ubuntu1) +Suggests: gnome-control-center (>= 1:2.5.4), + gnome-themes, + xdg-user-dirs +Description: lightweight GTK+ window manager + Mutter is a small window manager, using GTK+ and Clutter to do + everything. + . + Mutter is the clutter-based evolution of Metacity, which, as the + author says, is a "Boring window manager for the adult in you. Many + window managers are like Marshmallow Froot Loops; Metacity is like + Cheerios." + . + This package contains the core binaries. + +Package: libmutter-private0 +Section: libs +Architecture: any +Depends: ${shlibs:Depends}, + ${misc:Depends}, + mutter-common (>= ${gnome:Version}), + mutter-common (<< ${gnome:NextVersion}) +Conflicts: libmutter0 +Replaces: libmutter0 +Description: library for the Mutter window manager + Mutter is a small window manager, using GTK+ and Clutter to do + everything. + . + Mutter is the clutter-based evolution of Metacity, which, as the + author says, is a "Boring window manager for the adult in you. Many + window managers are like Marshmallow Froot Loops; Metacity is like + Cheerios." + . + This package contains the shared library. + +Package: mutter-common +Section: misc +Architecture: all +Depends: ${misc:Depends} +Replaces: mutter (<< 1:2.16.3) +Description: shared files for the Mutter window manager + Mutter is a small window manager, using GTK+ and Clutter to do + everything. + . + Mutter is the clutter-based evolution of Metacity, which, as the + author says, is a "Boring window manager for the adult in you. Many + window managers are like Marshmallow Froot Loops; Metacity is like + Cheerios." + . + This package contains the shared files. + +Package: libmutter-dev +Section: libdevel +Architecture: any +Depends: ${misc:Depends}, + libmutter-private0 (= ${binary:Version}), + libclutter-1.0-dev (>= 1.0.0) + | libclutter-eglx-es20-1.0-dev (>= 1.0.0), + libgtk2.0-dev (>= 2.10.0-1) +Description: Development files for the Mutter window manager + Mutter is a small window manager, using GTK+ and Clutter to do + everything. + . + Mutter is the clutter-based evolution of Metacity, which, as the + author says, is a "Boring window manager for the adult in you. Many + window managers are like Marshmallow Froot Loops; Metacity is like + Cheerios." + . + This package contains the development files. + +Package: gir1.0-mutter-2.31 +Section: libs +Architecture: any +Depends: ${gir:Depends}, + ${shlib:Depends}, + ${misc:Depends} +Conflicts: libmutter-private0 (<= 2.28.0-1), gir1.0-mutter-2.28, gir1.0-mutter-2.29 +Replaces: libmutter-private0 (<= 2.28.0-1), gir1.0-mutter-2.28, gir1.0-mutter-2.29 +Description: GObject introspection data for Mutter + Mutter is a small window manager, using GTK+ and Clutter to do + everything. + . + Mutter is the clutter-based evolution of Metacity, which, as the + author says, is a "Boring window manager for the adult in you. Many + window managers are like Marshmallow Froot Loops; Metacity is like + Cheerios." + . + This package contains the GObject introspection data which may be + used to generate dynamic bindings. --- mutter-2.31.5.orig/debian/libmutter-private0.debhelper.log +++ mutter-2.31.5/debian/libmutter-private0.debhelper.log @@ -0,0 +1 @@ +dh_autoreconf_clean --- mutter-2.31.5.orig/debian/changelog +++ mutter-2.31.5/debian/changelog @@ -0,0 +1,1274 @@ +mutter (2.31.5-0ubuntu9alf3) maverick; urgency=low + + * debian/patches/51_disable_mask_texture.patch: + - Disable the mask texture to enable mutter to work with + clutter eglx texture-from-pixmap: Because of missing GLES2 NPOT support + in clutter, the mask texture ends up being a sliced texture and cannot + be used for multi-texturing. + + -- Alexandros Frantzis Thu, 11 Nov 2010 15:08:03 +0200 + +mutter (2.31.5-0ubuntu9alf2) maverick; urgency=low + + * debian/control, debian/control.in: + - Add libclutter-eglx-es20-1.0-dev as an alternative dependency for + libmutter-dev. + + -- Alexandros Frantzis Tue, 12 Oct 2010 13:04:48 +0300 + +mutter (2.31.5-0ubuntu9alf1) maverick; urgency=low + + * debian/patches/50_texture_rectangle.patch: + - Use the cogl_texture_rectangle API instead of direct GL calls. + * debian/control: + - Build depend on either the GL and GLES 2.0 variant of clutter. + - Remove libdbus-glib-1-dev build-dep. We are removing the + patch that uses libdbus-glib. + * debian/patches/20_unity_no_3D_detection.patch: + - Drop this patch, as it directly uses GLX calls that we don't + want to introduce to our GL agnostic mutter version. + + -- Alexandros Frantzis Mon, 04 Oct 2010 14:40:54 +0300 + +mutter (2.31.5-0ubuntu9) maverick; urgency=low + + * debian/patches/20_unity_no_3D_detection.patch: + - add an extra string in fallback mode to guide user in live session + (LP: #651085) + + -- Didier Roche Fri, 01 Oct 2010 11:39:17 +0200 + +mutter (2.31.5-0ubuntu8) maverick; urgency=low + + * debian/patches/20_unity_no_3D_detection.patch: + - detect in UNE session if the graphical driver is software-rendered. + if so, exit from the session after prompting and write the .dmrc file + to the gnome session (LP: #614088) + * debian/control: + - add libdbus-glib-1-dev build-dep + + -- Didier Roche Mon, 27 Sep 2010 21:53:21 +0200 + +mutter (2.31.5-0ubuntu7) maverick; urgency=low + + * debian/patches/18_unmimize.patch: + - Revert dropping this patch, it wasn't the causing + (LP: #637108), which is now fixed in indicator-appmenu + + -- Ken VanDine Thu, 16 Sep 2010 09:47:58 -0400 + +mutter (2.31.5-0ubuntu6) maverick; urgency=low + + * removing debian/patches/18_unmimize.patch making apps closing when opening + (reopening corresponding bug and fixing LP: #637108) + + -- Didier Roche Tue, 14 Sep 2010 16:52:01 +0200 + +mutter (2.31.5-0ubuntu5) maverick; urgency=low + + [ Robert Ancell ] + * debian/patches/00_git_cairo_api.patch: + * debian/patches/00_git_get_back_pixmap.patch: + - Take upstream git changes to fix FTBFS + * debian/patches/18_unmimize.patch: + - Fix unminimized windows not being mapped (LP: #620758) + + [ Didier Roche ] + * debian/patches/95_workaround_gdk_compat.patch: + - port 2.31.5-0ubuntu3.1 inline patch to quilt for vcs handling + + -- Didier Roche Thu, 02 Sep 2010 18:10:44 +0200 + +mutter (2.31.5-0ubuntu4) maverick; urgency=low + + * no change rebuild after landing clutter .pc file fixes; see LP: #623376 + + -- Alexander Sack Tue, 24 Aug 2010 23:09:35 +0200 + +mutter (2.31.5-0ubuntu3.1) maverick; urgency=low + + * src/gdk-compat.h: workaround issue with the new gdk there + + -- Sebastien Bacher Wed, 18 Aug 2010 23:24:19 +0200 + +mutter (2.31.5-0ubuntu3) maverick; urgency=low + + * debian/patches/17_add_overlay_key_signals.patch: + - additional signals when triggering key + + -- Didier Roche Thu, 12 Aug 2010 15:14:39 +0200 + +mutter (2.31.5-0ubuntu2) maverick; urgency=low + + * debian/control.in: + - build-dep on latest libgirepository1.0-dev and libclutter-1.0-dev + for gir change + + -- Didier Roche Tue, 10 Aug 2010 20:03:28 +0200 + +mutter (2.31.5-0ubuntu1) maverick; urgency=low + + * New upstream release: + - Don't use JsonClutter but rather system one (LP: #614230) + * adapt debian/patches/01_Wcast-align.patch + * debian/control.in, debian/rules: + - build-dep on dh-autoreconf and launch it on build + - remove debian/patches/90_autotools.patch + - Breaks: unity << 0.2.24 and gnome-shell <= 2.31.2-1ubuntu1 + * debian/mutter-common.install: + - locale no more installed + + -- Didier Roche Fri, 06 Aug 2010 16:24:26 +0200 + +mutter (2.31.2-3ubuntu3) maverick; urgency=low + + * add debian/patches/16_paint_clone_unclipped.patch: + Paint the full region and not only the clipped one for clone + (Jason Smith) + + -- Didier Roche Mon, 19 Jul 2010 14:12:04 +0200 + +mutter (2.31.2-3ubuntu2) maverick; urgency=low + + * debian/patches/92_handle_event_mask_when_managing_window.patch: + - Don't screw up the event mask when "managing" our own windows + + -- Didier Roche Thu, 15 Jul 2010 11:54:23 +0200 + +mutter (2.31.2-3ubuntu1) maverick; urgency=low + + * Merge from debian experimental, remaining changes: + + debian/control.in: + - Vcs-Bzr tag + - debian/patches/03_strict_focus.patch: + add a new focus mode META_FOCUS_MODE_STRICT + (/apps/metacity/general/focus_mode = strict) + - debian/patches/04_support_drag_drop_with_alt_tab.patch: + support alt-tab during drag and drop operation + - debian/patches/05_raise_on_click_for_click_mode.patch: + use raise on click option + + debian/patches/10_no-ws-switcher.patch: + Don't show ws selector when you only have one ws + + debian/patches/11_hide_tooltip_on_decorator.patch: + add a gconf key (/desktop/gnome/interface/hide_decorator_tooltip) + to disable tooltip in decorator bar. If key not present, show the + tooltip. + - debian/patches/13_better_support_for_button_layout.patch + Corrected support for buttons backgrounds with transparency + - debian/patches/14_wrong_colormap.patch: + Use correct colormap, causes crash with client side decorations. + - add debian/patches/15_detect_maximized_window.patch: + detect window's state + + debian/patches/91_add_window_groups.patch: + Adds support for a above, normal and below window groups, for more + control by plugins + + debian/rules: + use DEB_INSTALL_DOCS_mutter, not DEB_INSTALL_DOCS_metacity + + -- Didier Roche Tue, 29 Jun 2010 11:44:19 +0200 + +mutter (2.31.2-3) experimental; urgency=low + + * debian/gir1.0-mutter-2.{29->31}.install: + - actually install the typelib file + + -- Gustavo Noronha Silva Mon, 31 May 2010 11:37:33 -0300 + +mutter (2.31.2-2ubuntu6) maverick; urgency=low + + * remove debian/patches/80_no_session_delay.patch: + finally was an evil idea to delay mutter from WindowManager to + Initialization phase. This create a lot of weird effects like + gnome-keyring race condition not putting most of the time + SSH_AUTH_SOCK to the right value (LP: #599506) + + -- Didier Roche Mon, 28 Jun 2010 21:07:55 +0200 + +mutter (2.31.2-2ubuntu5) maverick; urgency=low + + * remove debian/patches/04_worspaces_default_name.patch: + - drop "Desk" term + * add debian/patches/04_support_drag_drop_with_alt_tab.patch: + - support alt-tab during drag and drop operation (LP: #11939) + + -- Didier Roche Thu, 24 Jun 2010 10:52:36 +0200 + +mutter (2.31.2-2ubuntu4) maverick; urgency=low + + * take some patches from metacity and adapt them to mutter: + - debian/patches/03_strict_focus.patch: + add a new focus mode META_FOCUS_MODE_STRICT + (/apps/metacity/general/focus_mode = strict) + - debian/patches/04_worspaces_default_name.patch + use "Desk" instead of "Workspace" for default workspaces naming. + - debian/patches/05_raise_on_click_for_click_mode.patch: + use raise on click option + - debian/patches/13_better_support_for_button_layout.patch + Corrected support for buttons backgrounds with transparency + + -- Didier Roche Wed, 23 Jun 2010 22:03:53 +0200 + +mutter (2.31.2-2ubuntu3) maverick; urgency=low + + * add debian/patches/15_detect_maximized_window.patch: + - detect window's state (needed for unity) + + -- Didier Roche Mon, 07 Jun 2010 16:20:38 +0200 + +mutter (2.31.2-2ubuntu2) maverick; urgency=low + + * debian/patches/14_wrong_colormap.patch: + - Use correct colormap, causes crash with client side decorations. Patch + from Fabien Tassin and Sarvatt + + -- Didier Roche Thu, 03 Jun 2010 21:32:35 +0200 + +mutter (2.31.2-2ubuntu1) maverick; urgency=low + + * Merge from debian experimental, remaining changes: + + debian/control.in: + - Vcs-Bzr tag + + renamed debian/gir1.0-mutter-2.29.install to + debian/gir1.0-mutter-2.31.install as bin package name changed + + debian/patches/10_no-ws-switcher.patch: + Don't show ws selector when you only have one ws + + debian/patches/11_hide_tooltip_on_decorator.patch: + add a gconf key (/desktop/gnome/interface/hide_decorator_tooltip) + to disable tooltip in decorator bar. If key not present, show the + tooltip. + + debian/patches/80_no_session_delay.patch: + Start mutter as early as possible, since with plugins (such as + gnome-shell) it will take the longest time to start up; Let the + scheduler deal with squeezing the other processes into mutter's + idle periods. + + debian/patches/91_add_window_groups.patch: + Adds support for a above, normal and below window groups, for more + control by plugins + + debian/rules: + use DEB_INSTALL_DOCS_mutter, not DEB_INSTALL_DOCS_metacity + + -- Didier Roche Wed, 02 Jun 2010 17:26:33 +0200 + +mutter (2.31.2-2) experimental; urgency=low + + * debian/control: + - fix GIR package name to account for GIR API name change + + -- Gustavo Noronha Silva Wed, 26 May 2010 15:15:34 -0300 + +mutter (2.31.2-1) experimental; urgency=low + + * New development release + + -- Gustavo Noronha Silva Wed, 26 May 2010 10:51:58 -0300 + +mutter (2.29.1-1) experimental; urgency=low + + * New development release. + * debian/control: + - build-dep on clutter >= 1.2 + + -- Gustavo Noronha Silva Thu, 08 Apr 2010 20:48:38 -0300 + +mutter (2.29.0-2) unstable; urgency=low + + * debian/control: + - fix gir package name, because the typelib has changed its name + + -- Gustavo Noronha Silva Mon, 15 Mar 2010 17:27:59 -0300 + +mutter (2.29.0-1) unstable; urgency=low + + * New upstream development release. + * debian/rules: + - update makeshlibs argument to require >= 2.29.0 + + -- Gustavo Noronha Silva Tue, 02 Mar 2010 19:19:44 -0300 + +mutter (2.28.1~git20100129-1) unstable; urgency=low + + * Upstream snapshot + + -- Gustavo Noronha Silva Fri, 29 Jan 2010 12:04:09 -0200 + +mutter (2.28.1~git20091208-1) unstable; urgency=low + + * New upstream snapshot + + -- Gustavo Noronha Silva Sat, 24 Oct 2009 13:16:53 -0200 + +mutter (2.28.1~git20091024-1) unstable; urgency=low + + * Upstream snapshot + * debian/control.in: + - fixed typo in description + - bump Standards-Version to 3.8.3 + + -- Gustavo Noronha Silva Sat, 24 Oct 2009 12:59:03 -0200 + +mutter (2.28.0-2) unstable; urgency=low + + * debian/control.in: + - adapt for the new GObject introspection policy + + -- Gustavo Noronha Silva Mon, 19 Oct 2009 15:59:57 -0200 + +mutter (2.28.0-1) unstable; urgency=low + + * New upstream release + + -- Gustavo Noronha Silva Fri, 09 Oct 2009 13:23:25 -0300 + +mutter (2.27.5-1) unstable; urgency=low + + * New upstream release + + -- Gustavo Noronha Silva Wed, 30 Sep 2009 21:19:05 +0100 + +mutter (2.27.3-2) unstable; urgency=low + + [ Simon Raven ] + * debian/control.in: + - adding missing build-dep to fix FTBFS (Closes: #544342) + + [ Gustavo Noronha Silva ] + * debian/control.in: + - also add gobject-introspection, gobject-introspection-glib-2.0, + gobject-introspection-freedesktop, which were also missing, to + build-depends + + -- Gustavo Noronha Silva Sun, 30 Aug 2009 19:02:46 -0300 + +mutter (2.27.3-1) unstable; urgency=low + + [ Josselin Mouette ] + * Update list of copyright holders. + + [ Gustavo Noronha Silva ] + * New upstream release + + -- Gustavo Noronha Silva Sat, 29 Aug 2009 21:53:05 -0300 + +mutter (2.27.2-1) unstable; urgency=low + + * First mutter release for Debian + - no ITP since this is in practice a branch of metacity + * debian/control.in: + - adapted descriptions + - added build-deps on gobject-introspection, and clutter >= 1.0 + - renamed packages + * debian/patches/10_ignore_callbacks.patch: + - removed; applied upstream + * debian/mutter-common.install: + - this package no longer provides themes and gnome-control-center + keybindings capplet; this will come in a separate module in the + future, it seems, and we may want to make sure it is installed + + -- Gustavo Noronha Silva Sun, 26 Jul 2009 13:33:08 +0200 + +metacity (1:2.26.0-3) unstable; urgency=high + + * 10_ignore_callbacks.patch: stolen upstream. Fix a bug leading to + some callbacks being ignored. Closes: #533917. + + -- Josselin Mouette Wed, 24 Jun 2009 12:04:26 +0200 + +metacity (1:2.26.0-2) unstable; urgency=low + + * Use patchsys-quilt; build-depend on quilt. + * 01_Wcast-align.patch: don’t use -Wcast-align, it gives incorrect + warnings (errors thanks to -Werror) when some pointers are converted + back and forth to XPointers. Closes: #532655. + * 90_autotools.patch: relibtoolize the whole package. + + -- Josselin Mouette Wed, 10 Jun 2009 21:52:35 +0200 + +metacity (1:2.26.0-1) unstable; urgency=low + + [ Josselin Mouette ] + * Fix typo in changelog entry. + + [ Loic Minier ] + * Let metacity suggest gnome-themes as it attempts to use the Clearlooks + Metacity theme by default and logs a warning when it can't be used. + * Let metacity suggest xdg-user-dirs as it fails creating the + .config/metacity sub-directory and logs a warning if .config isn't created + by xdg-user-dirs. + + [ Josselin Mouette ] + * Set the team as primary maintainer. Closes: #523545. + * Fixup in the descriptions. + * New upstream release. + * Update build-dependencies. + * Bump shlibs for libmetacity-private0. + + -- Josselin Mouette Tue, 09 Jun 2009 20:36:03 +0200 + +metacity (1:2.24.0-2) unstable; urgency=low + + * Rename libmetacity0 to libmetacity-private0 because of an + unexpected ABI change. Closes: #510096. + * Remove trailing -1's in build-depends. + * debian/copyright: write complete list of copyright holders. + * Upload to unstable. + + -- Josselin Mouette Mon, 16 Feb 2009 18:03:57 +0100 + +metacity (1:2.24.0-1) experimental; urgency=low + + * New upstream release. + + Implements one-way maximisation. Closes: #450837. + + Fixes issues when disabling the compositor. Closes: #476492. + * Bump shlibs version to 1:2.24.0. + * Standards version is 3.8.0. + * 01_doublefree_maximize.patch: dropped, merged upstream. + * Install the .desktop in the metacity package. + + -- Josselin Mouette Sat, 22 Nov 2008 15:57:58 +0100 + +metacity (1:2.22.0-2) unstable; urgency=low + + [ Sven Arvidsson ] + * Add README.Debian, describing how to enable the compositor. + (Closes: #471442) + + [ Josselin Mouette ] + * 01_doublefree_maximize.patch: stolen upstream (r3817). Fixes + vertical maximisation bug caused by an invalid free. + Closes: #452139. + * control.in: make metacity the first package so that it gets the + README.Debian. + + -- Josselin Mouette Thu, 18 Sep 2008 16:53:19 +0200 + +metacity (1:2.22.0-1) unstable; urgency=low + + [ Bradley Smith ] + * New upstream development release. + + [ Sam Morris ] + * Build-depend on libxcomposite-dev for composite manager. + + [ Sebastian Dröge ] + * New upstream stable release: + + debian/rules: + - Drop check-dist include. + - Update shlibs to >= 2.22.0 because of new API. + + -- Sebastian Dröge Fri, 14 Mar 2008 13:54:19 +0100 + +metacity (1:2.21.5-1) experimental; urgency=low + + [ Riccardo Setti ] + * New metacity package. + * build with compositor extension. + + [ Bradley Smith ] + * Update Standards Version to 3.7.3. (No changes) + * Add check-dist. + + -- Riccardo Setti Thu, 20 Dec 2007 02:29:13 +0100 + +metacity (1:2.20.1-2) UNRELEASED; urgency=low + + * Let metacity-common replace metacity instead of conflicting to ease + upgrades. + + -- Loic Minier Wed, 28 Nov 2007 19:00:45 +0100 + +metacity (1:2.20.1-1) unstable; urgency=low + + [ Josselin Mouette ] + * Recommend gnome-session | x-session-manager. Closes: #225640. + * Remove metacity.menu. Closes: #397645. + + [ Sebastian Dröge ] + * New upstream bugfix release. + + -- Sebastian Dröge Mon, 19 Nov 2007 13:57:21 +0100 + +metacity (1:2.20.0-1) unstable; urgency=low + + * New upstream release: + + debian/patches/01_session_tolerate_missing_file.patch, + debian/patches/02_fix_crash_on_session_saving.patch: + - Dropped, merged upstream. + + debian/rules: + - Bump shlibs to >= 2.19.5. + + debian/metacity-common.install: + - Ship keybinding stuff. + * debian/control.in: + + Drop duplicated libxinerama-dev build dependency. + + -- Sebastian Dröge Sat, 22 Sep 2007 10:46:36 +0200 + +metacity (1:2.18.5-1) unstable; urgency=low + + * New upstream stable release; no API change. + + -- Loic Minier Tue, 19 Jun 2007 12:07:17 +0200 + +metacity (1:2.18.3-2) unstable; urgency=low + + * 99_ltmain_as-needed.patch: make --as-needed work for the library + too. + + -- Josselin Mouette Wed, 06 Jun 2007 23:40:52 +0200 + +metacity (1:2.18.3-1) unstable; urgency=low + + * Drop metacity-common postinst as it was scheduled to be dropped post-etch. + * Rewrite metacity postinst and prerm to use safer individual if tests + instead of trying to list all possible args in a case; reported by + Lior Kaplan; closes: #421206. + * New upstream stable release; no API change. + + -- Loic Minier Mon, 28 May 2007 17:48:18 +0200 + +metacity (1:2.18.2-3) unstable; urgency=low + + * New patch 02_fix_crash_on_session_saving.patch, taken from Ubuntu. + Fix a crash that would occur when the current session is saved and would + corrupt ~/.gnome2/session. Gnome bug #433253 + + -- Sebastian Dröge Thu, 26 Apr 2007 15:44:10 +0200 + +metacity (1:2.18.2-2) unstable; urgency=low + + * Add -z defs to LDFLAGS; cleanups. + * Upload to unstable; drop check-dist include. + * Add a ${misc:Depends}. + * Drop useless --enable-xsync=yes from configure flags. + * Wrap build-deps and deps. + * Bump dep on libgtk2.0-dev to >= 2.10.0-1. + + -- Loic Minier Sat, 14 Apr 2007 15:12:50 +0200 + +metacity (1:2.18.2-1) experimental; urgency=low + + * New upstream stable release. + + -- Loic Minier Mon, 09 Apr 2007 08:47:47 +0200 + +metacity (1:2.18.1-1) experimental; urgency=low + + * New upstream stable release; no API change; bug fixes and translations. + * Drop obsolete README.Debian; misc cleanups. + + -- Loic Minier Sun, 08 Apr 2007 09:23:44 +0200 + +metacity (1:2.18.0-1) experimental; urgency=low + + [ Marco Cabizza ] + * New upstream release: not enabling compositor, too unstable, and libcm + seems dead upstream. + + [ Riccardo Setti ] + * Updated debhelper compatibility to 5 + + [ Loic Minier ] + * Set LDFLAGS directly instead of via DEB_CONFIGURE_SCRIPT_ENV; build-dep on + cdbs >= 0.4.41. + * Fix metacity-common.install to list the correct dirs. + + -- Loic Minier Mon, 26 Mar 2007 22:27:08 +0200 + +metacity (1:2.16.5-1) experimental; urgency=low + + [ Loic Minier ] + * Add a get-orig-source target to retrieve the upstream tarball. + * Include the new check-dist Makefile to prevent accidental uploads to + unstable; bump build-dep on gnome-pkg-tools to >= 0.10. + + [ Josselin Mouette ] + * 01_session_tolerate_missing_file.patch: register differently to the + session, in order to handle gracefully the case where a session file + is missing on the disk (closes: #315169, #391287). + * New upstream release. + + -- Josselin Mouette Sun, 4 Mar 2007 10:29:40 +0100 + +metacity (1:2.16.3-1) experimental; urgency=low + + [ Marco Cabizza ] + * New upstream release. + + [ Loic Minier ] + * Merge 1:2.14.5-2. + + [ Josselin Mouette ] + * Use ${gnome:Version} and ${gnome:NextVersion} to loosen the + dependencies. + * Build-depend on gnome-pkg-tools 0.6. + * Call gnome-version.mk. + * Replace the x-dev build-dependency by x11proto-core-dev. + + -- Josselin Mouette Tue, 21 Nov 2006 20:50:05 +0100 + +metacity (1:2.16.2-1) experimental; urgency=low + + * New upstream release, with backwards incompatible changes in internal API. + + -- Loic Minier Mon, 25 Sep 2006 17:47:56 +0200 + +metacity (1:2.16.1-1) experimental; urgency=low + + [ Loïc Minier ] + * Remove superfluous dh_installcatalogs call and bump cdbs build-dep to + >= 0.4.37, thanks Peter Eisentraut. (Closes: #361156) + [debian/control, debian/control.in, debian/rules] + * Don't mention non-existing Info documentation in the metacity and + metacity-message man pages, thanks Piotr Engelking. (Closes: #365450) + [debian/metacity.1, debian/metacity-message.1] + * Fix watch file. + + [ Marco Cabizza ] + * New upstream release, target experimental: + - Bumping up libgtk2.0-dev build-dep to 2.10 + * Setting myself as the maintainer. + + -- Marco Cabizza Wed, 13 Sep 2006 18:46:45 +0200 + +metacity (1:2.14.5-2) unstable; urgency=low + + * Remove superfluous dh_installcatalogs call and bump cdbs build-dep to + >= 0.4.37, thanks Peter Eisentraut. (Closes: #361156) + [debian/control, debian/control.in, debian/rules] + * Don't mention non-existing Info documentation in the metacity and + metacity-message man pages, thanks Piotr Engelking. (Closes: #365450) + [debian/metacity.1, debian/metacity-message.1] + * Fix watch file. + * Fix typo in debian/metacity-message.1; thanks Per Bojsen; closes: #397864. + + -- Loic Minier Fri, 10 Nov 2006 09:38:49 +0100 + +metacity (1:2.14.5-1) unstable; urgency=low + + * New upstream release. + + -- Loic Minier Tue, 30 May 2006 15:47:36 +0200 + +metacity (1:2.14.3-1) unstable; urgency=low + + [ Gustavo Noronha Silva ] + * New upstream release. + + Doesn't steal focus (closes: #361273). + + [ Josselin Mouette ] + * Make the package binNMU-safe. + + Build-depend on dpkg-dev 1.13.19. + + Use ${source:Version} and ${binary:Version}. + * Standards version is 3.7.2. + * Bump shlibs version to 2.14. + + [ Loic Minier ] + * Stop shipping /usr/lib/*.la files in libmetacity-dev. + [debian/libmetacity-dev.install] + + -- Josselin Mouette Sun, 14 May 2006 23:30:56 +0200 + +metacity (1:2.14.1-2) unstable; urgency=low + + * Simple rebuild to get rid of references to Xcursor.la / Xrender.la. + + -- Loic Minier Tue, 2 May 2006 16:45:22 +0200 + +metacity (1:2.14.1-1) unstable; urgency=low + + * New upstram version. + * Adds edge resistance. Closes: #191649. + * patches/000_raise-on-click.patch: Fixed upstream; dropped. + + -- Dafydd Harries Thu, 30 Mar 2006 19:50:23 +0100 + +metacity (1:2.12.3-3) unstable; urgency=low + + * Also explicitely remove catalogs installed by past metacity packages. + [debian/metacity-common.preinst] + * Move these clenaups to postinst. + [debian/metacity-common.preinst, debian/metacity-common.postinst] + + -- Loic Minier Sun, 12 Feb 2006 16:53:48 +0100 + +metacity (1:2.12.3-2) unstable; urgency=low + + * Clean up metacity's postinst. + [debian/metacity.postinst] + * Clean up /etc/sgml/metacity.cat and .old left over by metacity. + [debian/metacity-common.preinst] + + -- Loic Minier Sun, 12 Feb 2006 16:35:07 +0100 + +metacity (1:2.12.3-1) unstable; urgency=low + + * New upstream release. + * Update patch to support a new raise on click mode and choice of this mode + to apply without fuzz. Also note this patch has been rejected upstream. + [debian/patches/000_raise-on-click.patch] + * New metacity-common package holds arch-independent files and registers + schemas. (Closes: #218365, #234665, #240211) + [debian/metacity.dirs, debian/metacity-common.links, + debian/metacity.install, debian/control, debian/control.in, + debian/metacity-common.postinst, debian/metacity.catalog, + debian/metacity-common.manpages, debian/metacity.postrm, + debian/metacity-common.dirs, debian/metacity-common.install, + debian/metacity-common.catalog, debian/changelog, + debian/metacity-common.postrm, debian/rules, debian/metacity.links, + debian/metacity.postinst, debian/metacity.manpages] + * Actually ship license information. + [debian/copyright] + * Version the metacity and libmetacity dependency on metacity-common with + Source-Version. + [debian/control, debian/control.in] + * Install SGML catalogs with dh_installcatalogs, move them below + /usr/share/sgml/metacity-common, in the metacity-common package. + [debian/control, debian/control, debian/metacity-common.catalog, + debian/metacity-common.postinst, debian/metacity-common.postrm, + debian/metacity-common.sgmlcatalogs, debian/rules] + * Drop the /usr/share/metacity/dtd symlink. + [debian/metacity-common.links] + * Drop /usr/share/sgml/dtd creation. + [debian/metacity-common.dirs] + * Drop useless /usr/share/metacity from metacity-common. + [debian/metacity-common.install] + * Drop obsolete cleanup "rm -rf". + [debian/rules] + * Give .dtd installation to dh_install. + [debian/metacity-common.install, debian/rules] + + -- Loic Minier Sat, 11 Feb 2006 21:10:40 +0100 + +metacity (1:2.12.2-3) unstable; urgency=high + + * Add xorg build-deps (libice-dev, libsm-dev, libx11-dev, libxext-dev, + libxinerama-dev, libxrandr-dev, x-dev) thanks to "xlibs-split". + (Closes: #347000) + [debian/control, debian/control.in] + * Relibtoolizing would get Debian's AC_PATH_XTRA, but I add a libxt-dev + build-dep and pass --as-needed because the patch was like uh 1.1 MB. + [debian/control, debian/control.in, debian/rules] + + -- Loic Minier Mon, 9 Jan 2006 22:47:36 +0100 + +metacity (1:2.12.2-2) unstable; urgency=low + + * Upload to unstable. + + -- Josselin Mouette Sun, 8 Jan 2006 01:49:55 +0100 + +metacity (1:2.12.2-1) experimental; urgency=low + + * New upstream release. + + -- Jordi Mallach Sun, 25 Dec 2005 23:20:10 +0100 + +metacity (1:2.12.1-1) experimental; urgency=low + + * New upstream release. + * watch: update for 2.12. + * 000_raise-on-click.patch: update to make patch apply cleanly. + * rules: bump shlibs for new symbols. + + -- Josselin Mouette Sun, 9 Oct 2005 16:50:22 +0200 + +metacity (1:2.10.3-2) unstable; urgency=low + + * debian/control.in: + - don't Build-Depends on xlibs-pic, Build-Depend on libxinerama-dev + (Closes: #320589). + * debian/patches/000_metacity-debian-xinerama-pic.patch: + - not useful with xorg. + + -- Sebastien Bacher Tue, 2 Aug 2005 17:40:43 +0200 + +metacity (1:2.10.3-1) unstable; urgency=low + + * New upstream version. + * Bump Standards-Version to 3.6.2. + * Add CDBS' utils to rules. + + -- Loic Minier Fri, 29 Jul 2005 10:56:05 +0200 + +metacity (1:2.10.2-1) unstable; urgency=low + + * New upstream version. + + -- Sebastien Bacher Tue, 28 Jun 2005 23:09:14 +0200 + +metacity (1:2.10.1-2) unstable; urgency=low + + * Upload to unstable. + + -- Jordi Mallach Sun, 12 Jun 2005 19:03:18 +0200 + +metacity (1:2.10.1-1) experimental; urgency=low + + * New upstream version. + + -- Sebastien Bacher Wed, 13 Apr 2005 17:35:20 +0200 + +metacity (1:2.10.0-1) experimental; urgency=low + + * New upstream version. + * debian/patches/000_raise-on-click.patch: + - updated. + * debian/watch: + - updated. + + -- Sebastien Bacher Fri, 8 Apr 2005 21:33:44 +0200 + +metacity (1:2.8.8-1) unstable; urgency=low + + * GNOME team upload. + * New upstream release. + + -- Jordi Mallach Wed, 29 Dec 2004 17:18:05 +0100 + +metacity (1:2.8.6-1) unstable; urgency=low + + * New upstream release. + * Upload to unstable. + + -- Sebastien Bacher Thu, 18 Nov 2004 13:23:27 +0100 + +metacity (1:2.8.5-2) experimental; urgency=low + + * debian/metacity.postinst: + - removed the static gconf registration. + * debian/metacity-theme-viewer.1: + - manpage written by Jose M. Moya" (Closes: #252108). + * debian/metacity-window-demo.1: + - manpage written by Jose M. Moya" (Closes: #252110). + * debian/metacity.manpages: + - updated. + + -- Sebastien Bacher Fri, 17 Sep 2004 22:11:51 +0200 + +metacity (1:2.8.5-1) experimental; urgency=low + + * GNOME team upload. + * New upstream release. + * Sebastien Bacher: + - Switched to CDBS. + - debian/rules: converted to CDBS + - debian/*.files: replaced with .install files. + * J.H.M. Dassen (Ray): + - [debian/control.in] Bumped libstartup-notification0-dev as + configure requires 0.7. + * Jordi Mallach: + - debian/control.in: add cdbs to build-deps. + + -- Jordi Mallach Tue, 14 Sep 2004 20:30:36 +0200 + +metacity (1:2.8.1-4) unstable; urgency=low + + * debian/rules: + - added a dh_gconf call. + * debian/metacity.postinst: + - removed the static schemas registration, dh_gconf handles that right. + + -- Sebastien Bacher Fri, 6 Aug 2004 18:17:03 +0200 + +metacity (1:2.8.1-3) unstable; urgency=low + + * GNOME Team Upload. + * Upload in unstable. + + -- Sebastien Bacher Wed, 26 May 2004 14:28:32 +0200 + +metacity (1:2.8.1-2) experimental; urgency=low + + * debian/patches/000_raise-on-click.patch: + + patch from bugzilla to choose to raise or not the window which has + the focus in mouse and sloppy modes. (Closes: #228768). + The gconf key to use is /apps/metacity/general/raise_on_click. + * Gnome Team Upload. + + -- Sebastien Bacher Wed, 26 May 2004 14:19:51 +0200 + +metacity (1:2.8.1-1) experimental; urgency=low + + * New upstream release. + * debian/patches/000_metacity-debian-xinerama-pic.patch: + + updated + * GNOME Team Upload. + + -- Sebastien Bacher Wed, 5 May 2004 21:17:15 +0200 + +metacity (1:2.8.0-3) experimental; urgency=low + + * GNOME team upload. + * debian/rules: get the epoch included in the shlib version for + libmetacity0. + + -- Jordi Mallach Tue, 6 Apr 2004 14:04:36 +0200 + +metacity (1:2.8.0-2) experimental; urgency=low + + * Added Build-Depends on gnome-pkg-tools and libxml-parser-perl + (Closes: #240639). + + -- Sebastien Bacher Sat, 3 Apr 2004 23:46:56 +0200 + +metacity (1:2.8.0-1) experimental; urgency=low + + * New upstream release: + + converts "show desktop mode" to "all windows are minimized" when + you open a new window (Closes: #217467). + + fixes bug with panel not listed before clicking on them + (Closes: #224054). + + fixes multi-tab handling (Closes: #227708). + + includes always on top menu entry (Closes: #204212). + + includes wireframes support (Closes: #184849). + + should fix bug with applications changing workspace + (Closes: #224156, #230782). + + switches window truncates title (Closes: #186324). + * debian/control.in, debian/rules: + + adapted for the Gnome Team. + * debian/patches/000_metacity-debian-xinerama-pic.patch: + + updated. + * debian/patches/001_metacity-focus.patch: + + removed since the changes are included in the new version. + * debian/watch: + + updated to 2.8 branch. + + -- Sebastien Bacher Sun, 28 Mar 2004 12:26:22 +0200 + +metacity (1:2.6.3-2) unstable; urgency=low + + * debian/patches/001_metacity-focus.patch : + + new patch to fix focus problem with panels in mouse and sloppy modes + (Closes: #224858). + * Gnome Team Upload. + + -- Sebastien Bacher Sun, 18 Jan 2004 19:31:49 +0100 + +metacity (1:2.6.3-1) unstable; urgency=low + + * New upstream release. + * Gnome Team Upload. + + -- Sebastien Bacher Sat, 20 Dec 2003 23:17:21 +0100 + +metacity (1:2.6.2-2) unstable; urgency=low + + * debian/patches/000_metacity-debian-xinerama-pic.patch: + - updated to fix a link problem (Closes: #216693). + + -- Sebastien Bacher Tue, 21 Oct 2003 13:56:24 +0200 + +metacity (1:2.6.2-1) unstable; urgency=low + + * New upstream release. + * debian/patches/: + - 000_metacity-2.4.34-usage.patch: removed. + - 000_metacity-debian-xinerama-pic.patch: updated. + - 001_metacity-2.4.55-non-weak-symbols.patch: removed. + * Update Build-Depends. + * Gnome Team Upload. + + -- Sebastien Bacher Sat, 18 Oct 2003 19:33:23 +0200 + +metacity (1:2.4.55-3) unstable; urgency=low + + * debian/metacity.1: + - fixed the incorrect option. (closes: Bug#209159) + * debian/metacity.prerm: + - fixed removing alternatives issue. (closes: Bug#211502) + + -- Akira TAGOH Wed, 8 Oct 2003 18:44:56 +0900 + +metacity (1:2.4.55-2) unstable; urgency=low + + * debian/patches/000_metacity-debian-xinerama-pic.patch: + - update to fix the unnecessary library dependencies in .la. + (closes: Bug#195774) + + -- Akira TAGOH Thu, 12 Jun 2003 01:25:45 +0900 + +metacity (1:2.4.55-1) unstable; urgency=low + + * New upstream release. + * debian/patches/: + - 000_metacity-2.4.34-save-workspace.patch: removed. + - 001_metacity-2.4.55-non-weak-symbols.patch: updated. + + -- Akira TAGOH Mon, 2 Jun 2003 02:50:50 +0900 + +metacity (1:2.4.34-3) unstable; urgency=low + + * debian/control: + - suggests gnome-control-center instead of metacity-properties. + (closes: Bug#192752) + - bumped Standards-Version to 3.5.10.0. + * debian/patches/001_metacity-2.4.34-non-weak-symbols.patch: + - applied a backported patch to fix undefined non-weak symbols. + (closes: Bug#187347) + * debian/metacity.postinst: + - set a priority to 60 for x-window-manager according to the latest + policy. + + -- Akira TAGOH Mon, 19 May 2003 06:30:37 +0900 + +metacity (1:2.4.34-2) unstable; urgency=low + + * Revert to 2.4.34 to use stable release. + - should works now. (closes: Bug#187749, Bug#187387, Bug#187982) + * debian/README.Debian: + - described NVidia drivers issue. (closes: Bug#181056) + * debian/patches/: + - 000_metacity-2.4.34-usage.patch: applied it again. + - 000_metacity-2.4.34-save-workspace.patch: applied a backported patch + from CVS to really fix Bug#186033 in 2.4.34. + - 000_metacity-2.5.0-noframe-window.patch: removed. + + -- Akira TAGOH Mon, 14 Apr 2003 00:29:52 +0900 + +metacity (2.5.0-2) unstable; urgency=low + + * debian/patches/: + - 000_metacity-debian-xinerama-pic.patch: + use libXinerama_pic.a instead of libXinerama.a. + - 000_metacity-2.5.0-noframe-window.patch: + applied a backported patch from CVS to work no frame window. + (closes: Bug#187316) + * debian/control: + - requires xlibs-pic >= 4.2.1-6. + + -- Akira TAGOH Fri, 4 Apr 2003 04:26:49 +0900 + +metacity (2.5.0-1) unstable; urgency=low + + * New upsream release. + - Workspace names are saved now. (closes: Bug#186033) + * debian/control: + - bumped Standards-Version to 3.5.9. + - changed a section for libmetacity-dev to libdevel. + * debian/compat: + - use it instead of DH_COMPAT. + * debian/patches/ + - 000_metacity-2.4.34-usage.patch: removed. + + -- Akira TAGOH Wed, 2 Apr 2003 00:16:38 +0900 + +metacity (2.4.34-1) unstable; urgency=low + + * New upstream release. + - contains a fix of 64-bit bug. so should be fixed. (closes: Bug#179698) + - should be fixed. (closes: Bug#177814) + * debian/patches/000_metacity-2.4.34-usage.patch: + applied to fix a typo in usage. (closes: Bug#179699) + + -- Akira TAGOH Fri, 7 Feb 2003 04:38:32 +0900 + +metacity (2.4.21-2) unstable; urgency=low + + * debian/control: + - suggests metacity-properties instead of gnome-control-center. + * debian/metacity.docs: + - moved from libmetacity0. (closes: Bug#178966) + * debian/metacity.postinst: + - run gconftool-2 with HOME=/root + + -- Akira TAGOH Sun, 2 Feb 2003 16:50:02 +0900 + +metacity (2.4.21-1) unstable; urgency=low + + * New upstream release. + * debian/patches/: + - 000_metacity-2.4.13-args.patch: removed, because it was merged to the + upstream. + - 000_metacity-2.4.8-properties.patch: removed. + * debian/control: add Suggests: gnome-control-center. + * debian/rules: drop --enable-config-dialog. metacity-properties is + obsolete. use gnome-window-properties in gnome-control-center instead of. + + -- Akira TAGOH Wed, 29 Jan 2003 00:39:57 +0900 + +metacity (2.4.13-2) unstable; urgency=low + + * debian/docs: add NEWS file (closes: Bug#176317) + + -- Akira TAGOH Tue, 14 Jan 2003 23:15:48 +0900 + +metacity (2.4.13-1) unstable; urgency=low + + * New upstream release. + * debian/control: + - updated Build-Depends. + - add libgtk2.0-dev to Depends for libmetacity-dev + * debian/rules: enable startup-notification. + * debian/patches/: + - 000_metacity-2.4.8-dont-pass-NULL.patch: + removed. + - 000_metacity-2.4.13-args.patch: + applied to fix the working of configure options. + + -- Akira TAGOH Sat, 11 Jan 2003 07:06:24 +0900 + +metacity (2.4.8-4) unstable; urgency=low + + * upstream bug was closed. so it should be fixed. (closes: Bug#152075) + * debian/rules: don't use dh_installwm until it will supports the + registration of manpage as slave. + * debian/metacity.postinst: runs update-alternatives. (closes: Bug#175756) + * debian/metacity.prerm: runs update-alternatives. + + -- Akira TAGOH Thu, 9 Jan 2003 03:40:15 +0900 + +metacity (2.4.8-3) unstable; urgency=low + + * debian/metacity.postinst: + fix the wrong registration. (closes: Bug#173789, Bug#174358) + + -- Akira TAGOH Fri, 27 Dec 2002 05:01:25 +0900 + +metacity (2.4.8-2) unstable; urgency=low + + * debian/patches/000_metacity-2.4.8-dont-pass-NULL.patch: + applied to fix the segfault at startup. (closes: Bug#173594, Bug#173604) + + -- Akira TAGOH Fri, 20 Dec 2002 01:08:43 +0900 + +metacity (2.4.8-1) unstable; urgency=low + + * New upstream release. + * debian/patches/000_metacity-2.4.3-stack.patch: + removed, because this release contains it. + * debian/control: + - fix description-synopsis-ends-with-full-stop. + - add libmetacity0 and libmetacity-dev + * debian/rules: + - install metacity-theme.dtd as a sgml catalog. (closes: Bug#170041) + - build with --enable-config-dialog until we upload GNOME 2.2. + * debian/metacity.postinst: + - use gconftool-2 --get-default-source to get GCONF_CONFIG_SOURCE + - runs update-catalog. + * debian/patches/000_metacity-2.4.8-properties.patch: + applied to fix the missing file. + + -- Akira TAGOH Thu, 12 Dec 2002 09:21:35 +0900 + +metacity (2.4.3-2) unstable; urgency=low + + * debian/patches/000_metacity-2.4.3-stack.patch: backported to fix the + random crashes. (closes: Bug#168653) + + -- Akira TAGOH Wed, 13 Nov 2002 00:32:14 +0900 + +metacity (2.4.3-1) unstable; urgency=low + + * New upstream release. (closes: Bug#166919) + * debian/rules: support noopt option for DEB_BUILD_OPTIONS. + * debian/control: improve a description. Thanks stephen farrell. + + -- Akira TAGOH Thu, 7 Nov 2002 23:16:47 +0900 + +metacity (2.4.1-1) unstable; urgency=low + + * New upstream release. (closes: Bug#160535) + - Should be fixed. (closes: Bug#157995) + * Set a priority to 40 for x-window-manager according to Bug#155680. + (closes: Bug#155494) + * debian/metacity.1: updated. + * debian/metacity-message.1: added. + * debian/control: + - bumped Standards-Version to 3.5.7. + - updated Build-Depends. + + -- Akira TAGOH Sat, 14 Sep 2002 20:01:35 +0900 + +metacity (2.4.0-1) unstable; urgency=low + + * New upstream release. + - switching the workspaces should works now. (closes: Bug#151500) + * debian/control: update Build-Depends for libgtk2.0-dev. + + -- Akira TAGOH Fri, 9 Aug 2002 02:35:15 +0900 + +metacity (2.3.987-1) unstable; urgency=low + + * New upstream release. + * debian/control: add libglade2-dev to Build-Depends (closes: Bug#149489) + + -- Akira TAGOH Tue, 11 Jun 2002 14:38:06 +0900 + +metacity (2.3.610-1) unstable; urgency=low + + * New upstream release. + - Should be fixed in this release. (closes: Bug#146127) + + -- Akira TAGOH Wed, 5 Jun 2002 19:15:41 +0900 + +metacity (2.3.377-2) unstable; urgency=low + + * debian/docs: includes theme-format.txt (closes: Bug#147644) + + -- Akira TAGOH Tue, 21 May 2002 19:24:00 +0900 + +metacity (2.3.377-1) unstable; urgency=low + + * New upstream release. + + -- Akira TAGOH Tue, 21 May 2002 11:02:28 +0900 + +metacity (2.3.233-2) unstable; urgency=low + + * debian/control: fix the misleading description. (closes: Bug#145942) + + -- Akira TAGOH Tue, 7 May 2002 14:29:36 +0900 + +metacity (2.3.233-1) unstable; urgency=low + + * New upstream release. + + -- Akira TAGOH Sun, 5 May 2002 03:21:05 +0900 + +metacity (2.3.144-2) unstable; urgency=low + + * debian/control: Add Provides: x-window-manager. + + -- Akira TAGOH Fri, 3 May 2002 07:31:17 +0900 + +metacity (2.3.144-1) unstable; urgency=low + + * New upstream release. + - keybindings are configurable now. (closes: Bug#144657) + + -- Akira TAGOH Tue, 30 Apr 2002 03:32:36 +0900 + +metacity (2.3.89-1) unstable; urgency=low + + * New upstream release. + * debian/scripts/vars.build: fix bashism. + * debian/rules: add GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=yes to install + rule. + * debian/metacity.manpages: remove metacity-restart.1 entry. this command + no longer exists. + + -- Akira TAGOH Tue, 16 Apr 2002 21:35:19 +0900 + +metacity (2.3.55-1) unstable; urgency=low + + * I have taken over from Thom. + * New upstream release. + * Build against the latest libraries (closes: Bug#139215) + * debian/rules: + - support DEB_HOST_GNU_TYPE and DEB_BUILD_GNU_TYPE. + - support debug and nostrip options for DEB_BUILD_OPTIONS. + - copying the latest config.sub and config.guess. + + -- Akira TAGOH Tue, 26 Mar 2002 02:18:26 +0900 + +metacity (2.3.34-2) unstable; urgency=low + + * Added build-depend on docbook-to-man (Closes: #134433) + + -- Thom May Sun, 17 Feb 2002 20:14:28 +0000 + +metacity (2.3.34-1) unstable; urgency=low + + * Initial Release. (Closes: #107181) + + -- Thom May Sun, 10 Feb 2002 12:03:22 +0000 + --- mutter-2.31.5.orig/debian/mutter.install +++ mutter-2.31.5/debian/mutter.install @@ -0,0 +1,3 @@ +debian/tmp/usr/bin +debian/tmp/usr/lib/mutter/plugins +debian/tmp/usr/share/applications --- mutter-2.31.5.orig/debian/gir1.0-mutter-2.31.install +++ mutter-2.31.5/debian/gir1.0-mutter-2.31.install @@ -0,0 +1 @@ +debian/tmp/usr/lib/mutter/Meta-*.typelib --- mutter-2.31.5.orig/debian/mutter-window-demo.1 +++ mutter-2.31.5/debian/mutter-window-demo.1 @@ -0,0 +1,25 @@ +.\" In .TH, FOO should be all caps, SECTION should be 1-8, maybe w/ subsection +.\" other parms are allowed: see man(7), man(1) +.\" +.\" Based on template provided by Tom Christiansen . +.\" +.TH MUTTER-WINDOW-DEMO 1 "1 June 2004" +.SH NAME +mutter-window-demo \- demo of window features +.SH SYNOPSIS +.B mutter-window-demo +.SH DESCRIPTION +.\" Putting a newline after each sentence can generate better output. +This program demonstrates various kinds of windows that window +managers and window manager themes should handle. +.PP +Be sure to tear off the menu and toolbar, those are also a special +kind of window. +.SH AUTHOR +This manual page was written by Jose M. Moya , for +the Debian GNU/Linux system (but may be used by others). +.SH "SEE ALSO" +.\" Always quote multiple words for .SH +.BR x-window-manager (1), +.BR mutter (1), +.BR mutter-theme-viewer (1). --- mutter-2.31.5.orig/debian/mutter-common.install +++ mutter-2.31.5/debian/mutter-common.install @@ -0,0 +1,4 @@ +debian/tmp/etc +debian/tmp/usr/share/gnome +debian/tmp/usr/share/man +debian/tmp/usr/share/mutter --- mutter-2.31.5.orig/debian/mutter-common.manpages +++ mutter-2.31.5/debian/mutter-common.manpages @@ -0,0 +1,4 @@ +debian/mutter.1 +debian/mutter-message.1 +debian/mutter-theme-viewer.1 +debian/mutter-window-demo.1 --- mutter-2.31.5.orig/debian/patches/99_ltmain_as-needed.patch +++ mutter-2.31.5/debian/patches/99_ltmain_as-needed.patch @@ -0,0 +1,32 @@ +Index: mutter-2.27.1/ltmain.sh +=================================================================== +--- mutter-2.27.1.orig/ltmain.sh 2009-07-26 13:22:50.645790616 +0200 ++++ mutter-2.27.1/ltmain.sh 2009-07-26 13:23:14.265327137 +0200 +@@ -1684,6 +1684,11 @@ + func_dirname "$file" "" "." + dir="$func_dirname_result" + ;; ++ ++ -Wl,--as-needed) ++ deplibs="$deplibs $arg" ++ continue ++ ;; + + *) + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" +@@ -5074,6 +5079,15 @@ + lib= + found=no + case $deplib in ++ -Wl,--as-needed) ++ if test "$linkmode,$pass" = "prog,link"; then ++ compile_deplibs="$deplib $compile_deplibs" ++ finalize_deplibs="$deplib $finalize_deplibs" ++ else ++ deplibs="$deplib $deplibs" ++ fi ++ continue ++ ;; + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" --- mutter-2.31.5.orig/debian/patches/13_better_support_for_button_layout.patch +++ mutter-2.31.5/debian/patches/13_better_support_for_button_layout.patch @@ -0,0 +1,125 @@ +Description: Corrected support for buttons backgrounds with transparency + Added 'no background' if there is only one button and backgrounds no more + overlap if transparency used. + Remove also the left clickable dead zone area on the corner when window is + maximized +Origin: Ubuntu +Bug: https://bugzilla.gnome.org/show_bug.cgi?id=608511 +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/metacity/+bug/535088 +Author: Nicolas Desfontaine + +Index: metacity-2.30.1/src/ui/theme.c +=================================================================== +--- metacity-2.30.1.orig/src/ui/theme.c 2009-05-02 12:23:00.000000000 +1000 ++++ metacity-2.30.1/src/ui/theme.c 2010-06-02 09:52:36.032513731 +1000 +@@ -704,8 +704,14 @@ + + for (i = 0; i < n_left; i++) + { +- if (i == 0) /* prefer left background if only one button */ +- left_bg_rects[i] = &fgeom->left_left_background; ++ if (i == 0) /* For the first button (From left to right) */ ++ { ++ if (n_left > 1) /* Set left_left_background ++ if we have more than one button */ ++ left_bg_rects[i] = &fgeom->left_left_background; ++ else /* No background if we have only one single button */ ++ left_bg_rects[i] = &fgeom->left_single_background; ++ } + else if (i == (n_left - 1)) + left_bg_rects[i] = &fgeom->left_right_background; + else +@@ -714,15 +720,20 @@ + + for (i = 0; i < n_right; i++) + { +- /* prefer right background if only one button */ +- if (i == (n_right - 1)) +- right_bg_rects[i] = &fgeom->right_right_background; ++ if (i == (n_right - 1)) /* For the first button (From right to left) */ ++ { ++ if (n_right > 1) /* Set right_right_background ++ if we have more than one button */ ++ right_bg_rects[i] = &fgeom->right_right_background; ++ else /* No background if we have only one single button */ ++ right_bg_rects[i] = &fgeom->right_single_background; ++ } + else if (i == 0) + right_bg_rects[i] = &fgeom->right_left_background; + else + right_bg_rects[i] = &fgeom->right_middle_backgrounds[i - 1]; + } +- ++ + /* Be sure buttons fit */ + while (n_left > 0 || n_right > 0) + { +@@ -838,9 +849,9 @@ + if (flags & META_FRAME_MAXIMIZED) + { + rect->clickable.x = rect->visible.x; +- rect->clickable.y = 0; +- rect->clickable.width = rect->visible.width; +- rect->clickable.height = button_height + button_y; ++ rect->clickable.y = rect->visible.y; ++ rect->clickable.width = button_width; ++ rect->clickable.height = button_height; + + if (i == n_right - 1) + rect->clickable.width += layout->right_titlebar_edge + layout->right_width + layout->button_border.right; +@@ -876,23 +887,13 @@ + + if (flags & META_FRAME_MAXIMIZED) + { +- if (i==0) +- { +- rect->clickable.x = 0; +- rect->clickable.width = button_width + x; +- } +- else +- { +- rect->clickable.x = rect->visible.x; +- rect->clickable.width = button_width; +- } +- +- rect->clickable.y = 0; +- rect->clickable.height = button_height + button_y; +- } +- else +- g_memmove (&(rect->clickable), &(rect->visible), sizeof(rect->clickable)); +- ++ rect->clickable.x = rect->visible.x; ++ rect->clickable.y = rect->visible.y; ++ rect->clickable.width = button_width; ++ rect->clickable.height = button_height; ++ } ++ else ++ g_memmove (&(rect->clickable), &(rect->visible), sizeof(rect->clickable)); + + x = rect->visible.x + rect->visible.width + layout->button_border.right; + if (left_buttons_has_spacer[i]) +@@ -4525,7 +4526,7 @@ + /* MIDDLE_BACKGROUND type may get drawn more than once */ + if ((j == META_BUTTON_TYPE_RIGHT_MIDDLE_BACKGROUND || + j == META_BUTTON_TYPE_LEFT_MIDDLE_BACKGROUND) && +- middle_bg_offset < MAX_MIDDLE_BACKGROUNDS) ++ (middle_bg_offset < (MAX_MIDDLE_BACKGROUNDS - 1))) + { + ++middle_bg_offset; + } +Index: metacity-2.30.1/src/ui/theme.h +=================================================================== +--- metacity-2.30.1.orig/src/ui/theme.h 2009-05-02 12:23:00.000000000 +1000 ++++ metacity-2.30.1/src/ui/theme.h 2010-06-02 09:52:36.032513731 +1000 +@@ -200,9 +200,11 @@ + MetaButtonSpace unstick_rect; + + #define MAX_MIDDLE_BACKGROUNDS (MAX_BUTTONS_PER_CORNER - 2) ++ GdkRectangle left_single_background; + GdkRectangle left_left_background; + GdkRectangle left_middle_backgrounds[MAX_MIDDLE_BACKGROUNDS]; + GdkRectangle left_right_background; ++ GdkRectangle right_single_background; + GdkRectangle right_left_background; + GdkRectangle right_middle_backgrounds[MAX_MIDDLE_BACKGROUNDS]; + GdkRectangle right_right_background; --- mutter-2.31.5.orig/debian/patches/95_workaround_gdk_compat.patch +++ mutter-2.31.5/debian/patches/95_workaround_gdk_compat.patch @@ -0,0 +1,32 @@ +Index: mutter-2.31.5/src/gdk-compat.h +=================================================================== +--- mutter-2.31.5.orig/src/gdk-compat.h 2010-09-02 18:08:28.197537002 +0200 ++++ mutter-2.31.5/src/gdk-compat.h 2010-09-02 18:08:45.065537001 +0200 +@@ -9,10 +9,23 @@ + * using GDK_DISABLE_DEPRECATED. + */ + +-#if !GTK_CHECK_VERSION (2, 21, 1) +- ++#define gdk_window_get_background(w,c) *c = GDK_WINDOW_OBJECT (w)->bg_color + #define gdk_visual_get_depth(v) GDK_VISUAL(v)->depth +- +-#endif /*GTK_CHECK_VERSION */ ++#define gdk_window_get_back_pixmap(w,p,r) \ ++ G_STMT_START { \ ++ GdkWindowObject *priv = GDK_WINDOW_OBJECT (w); \ ++ \ ++ if (p != NULL) \ ++ { \ ++ if (priv->bg_pixmap == GDK_PARENT_RELATIVE_BG || \ ++ priv->bg_pixmap == GDK_NO_BG) \ ++ *p = NULL; \ ++ else \ ++ *p = priv->bg_pixmap; \ ++ } \ ++ \ ++ if (r != NULL) \ ++ *r = (priv->bg_pixmap == GDK_PARENT_RELATIVE_BG); \ ++ } G_STMT_END + + #endif /* __GDK_COMPAT_H__ */ --- mutter-2.31.5.orig/debian/patches/17_add_overlay_key_signals.patch +++ mutter-2.31.5/debian/patches/17_add_overlay_key_signals.patch @@ -0,0 +1,84 @@ +diff -rupb mutter-2.31.5//src/core/display.c mutter-2.31.5-keysym-patch//src/core/display.c +--- mutter-2.31.5//src/core/display.c2010-06-10 21:12:15.000000000 +0100 ++++ mutter-2.31.5-keysym-patch//src/core/display.c 2010-08-12 11:46:43.762909996 +0100 +@@ -131,6 +131,9 @@ G_DEFINE_TYPE(MetaDisplay, meta_display, + enum + { + OVERLAY_KEY, ++ OVERLAY_KEY_DOWN, ++ OVERLAY_KEY_WITH_MODIFIER, ++ OVERLAY_KEY_WITH_MODIFIER_DOWN, + FOCUS_WINDOW, + WINDOW_CREATED, + WINDOW_DEMANDS_ATTENTION, +@@ -234,6 +237,33 @@ meta_display_class_init (MetaDisplayClas + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + ++ display_signals[OVERLAY_KEY_DOWN] = ++ g_signal_new ("overlay-key-down", ++ G_TYPE_FROM_CLASS (klass), ++ G_SIGNAL_RUN_LAST, ++ 0, ++ NULL, NULL, ++ g_cclosure_marshal_VOID__VOID, ++ G_TYPE_NONE, 0); ++ ++ display_signals[OVERLAY_KEY_WITH_MODIFIER] = ++ g_signal_new ("overlay-key-with-modifier", ++ G_TYPE_FROM_CLASS (klass), ++ G_SIGNAL_RUN_LAST, ++ 0, ++ NULL, NULL, ++ g_cclosure_marshal_VOID__UINT, ++ G_TYPE_NONE, 1, G_TYPE_UINT); ++ ++ display_signals[OVERLAY_KEY_WITH_MODIFIER_DOWN] = ++ g_signal_new ("overlay-key-with-modifier-down", ++ G_TYPE_FROM_CLASS (klass), ++ G_SIGNAL_RUN_LAST, ++ 0, ++ NULL, NULL, ++ g_cclosure_marshal_VOID__UINT, ++ G_TYPE_NONE, 1, G_TYPE_UINT); ++ + display_signals[WINDOW_CREATED] = + g_signal_new ("window-created", + G_TYPE_FROM_CLASS (klass), +diff -rupb mutter-2.31.5//src/core/keybindings.c mutter-2.31.5-keysym-patch//src/core/keybindings.c +--- mutter-2.31.5//src/core/keybindings.c2010-04-18 01:44:38.000000000 +0100 ++++ mutter-2.31.5-keysym-patch//src/core/keybindings.c 2010-08-12 12:35:55.142909998 +0100 +@@ -1207,13 +1207,33 @@ process_overlay_key (MetaDisplay *displa + { + if (event->xkey.keycode != display->overlay_key_combo.keycode) + { ++ if (display->overlay_key_only_pressed == TRUE) ++ { ++ // emit signal ++ if (event->xkey.type == KeyPress) ++ { ++ g_signal_emit_by_name (display, "overlay-key-with-modifier-down", ++ event->xkey.keycode); + display->overlay_key_only_pressed = FALSE; ++ } ++ } ++ else ++ { ++ if (event->xkey.type == KeyRelease) ++ { ++ g_signal_emit_by_name (display, "overlay-key-with-modifier", ++ event->xkey.keycode); ++ display->overlay_key_only_pressed = TRUE; ++ } ++ } ++ + return FALSE; + } + + if (event->xkey.type == KeyPress) + { + display->overlay_key_only_pressed = TRUE; ++ g_signal_emit_by_name (display, "overlay-key-down", NULL); + } + else if (event->xkey.type == KeyRelease && display->overlay_key_only_pressed) + { --- mutter-2.31.5.orig/debian/patches/05_raise_on_click_for_click_mode.patch +++ mutter-2.31.5/debian/patches/05_raise_on_click_for_click_mode.patch @@ -0,0 +1,19 @@ +Description: Use raise on click option. +Author: ? + +Index: metacity-2.30.1/src/core/prefs.c +=================================================================== +--- metacity-2.30.1.orig/src/core/prefs.c 2010-06-02 09:52:28.360021840 +1000 ++++ metacity-2.30.1/src/core/prefs.c 2010-06-02 09:52:30.012514611 +1000 +@@ -1260,10 +1260,7 @@ + gboolean + meta_prefs_get_raise_on_click (void) + { +- /* Force raise_on_click on for click-to-focus, as requested by Havoc +- * in #326156. +- */ +- return raise_on_click || focus_mode == META_FOCUS_MODE_CLICK; ++ return raise_on_click; + } + + const char* --- mutter-2.31.5.orig/debian/patches/11_hide_tooltip_on_decorator.patch +++ mutter-2.31.5/debian/patches/11_hide_tooltip_on_decorator.patch @@ -0,0 +1,89 @@ +# Description: add a gconf key (/desktop/gnome/interface/hide_decorator_tooltip) +# to disable tooltip in decorator bar. If key not present, show the tooltip. +# Origin: Ubuntu +# Bug: https://bugzilla.gnome.org/show_bug.cgi?id=609563 +# Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/mutter/+bug/519856 + +Index: mutter-2.31.2/src/core/prefs.c +=================================================================== +--- mutter-2.31.2.orig/src/core/prefs.c 2010-04-18 02:44:38.000000000 +0200 ++++ mutter-2.31.2/src/core/prefs.c 2010-06-02 17:57:26.319480077 +0200 +@@ -103,6 +103,7 @@ + static int cursor_size = 24; + static gboolean compositing_manager = FALSE; + static gboolean resize_with_right_button = FALSE; ++static gboolean hide_decorator_tooltip = FALSE; + static gboolean force_fullscreen = TRUE; + + static MetaVisualBellType visual_bell_type = META_VISUAL_BELL_FULLSCREEN_FLASH; +@@ -426,6 +427,11 @@ + &no_tab_popup, + FALSE, + }, ++ { "/desktop/gnome/interface/hide_decorator_tooltip", ++ META_PREF_HIDE_DECORATOR_TOOLTIP, ++ &hide_decorator_tooltip, ++ FALSE, ++ }, + { NULL, 0, NULL, FALSE }, + }; + +@@ -1494,6 +1500,12 @@ + return raise_on_click || focus_mode == META_FOCUS_MODE_CLICK; + } + ++gboolean ++meta_prefs_get_hide_decorator_tooltip (void) ++{ ++ return hide_decorator_tooltip; ++} ++ + const char* + meta_prefs_get_theme (void) + { +@@ -1992,6 +2004,9 @@ + + case META_PREF_NO_TAB_POPUP: + return "NO_TAB_POPUP"; ++ ++ case META_PREF_HIDE_DECORATOR_TOOLTIP: ++ return "HIDE_DECORATOR_TOOLTIP"; + } + + return "(unknown)"; +Index: mutter-2.31.2/src/include/prefs.h +=================================================================== +--- mutter-2.31.2.orig/src/include/prefs.h 2010-04-18 02:44:38.000000000 +0200 ++++ mutter-2.31.2/src/include/prefs.h 2010-06-02 17:59:31.512353158 +0200 +@@ -62,7 +62,8 @@ + META_PREF_FORCE_FULLSCREEN, + META_PREF_CLUTTER_PLUGINS, + META_PREF_LIVE_HIDDEN_WINDOWS, +- META_PREF_NO_TAB_POPUP ++ META_PREF_NO_TAB_POPUP, ++ META_PREF_HIDE_DECORATOR_TOOLTIP + } MetaPreference; + + typedef void (* MetaPrefsChangedFunc) (MetaPreference pref, +@@ -86,6 +87,7 @@ + MetaFocusMode meta_prefs_get_focus_mode (void); + MetaFocusNewWindows meta_prefs_get_focus_new_windows (void); + gboolean meta_prefs_get_raise_on_click (void); ++gboolean meta_prefs_get_hide_decorator_tooltip (void); + const char* meta_prefs_get_theme (void); + /* returns NULL if GTK default should be used */ + const PangoFontDescription* meta_prefs_get_titlebar_font (void); +Index: mutter-2.31.2/src/ui/frames.c +=================================================================== +--- mutter-2.31.2.orig/src/ui/frames.c 2010-05-13 16:13:45.000000000 +0200 ++++ mutter-2.31.2/src/ui/frames.c 2010-06-02 17:57:07.099338161 +0200 +@@ -1121,6 +1121,9 @@ + if (frame == NULL) + return; + ++ if (meta_prefs_get_hide_decorator_tooltip ()) ++ return; ++ + XQueryPointer (gdk_display, + frame->xwindow, + &root, &child, --- mutter-2.31.5.orig/debian/patches/00_git_cairo_api.patch +++ mutter-2.31.5/debian/patches/00_git_cairo_api.patch @@ -0,0 +1,1045 @@ +From 08cfdcd802c762b04351798e8a03524e11db637e Mon Sep 17 00:00:00 2001 +From: Florian Müllner +Date: Mon, 19 Jul 2010 15:55:00 +0000 +Subject: Replace GDK drawing API with cairo + +The GDK drawing API was deprecated/removed. + +https://bugzilla.gnome.org/show_bug.cgi?id=626583 +--- +diff --git a/src/ui/draw-workspace.c b/src/ui/draw-workspace.c +index 4e81409..f43821a 100644 +--- a/src/ui/draw-workspace.c ++++ b/src/ui/draw-workspace.c +@@ -180,6 +180,7 @@ wnck_draw_workspace (GtkWidget *widget, + GdkRectangle workspace_rect; + GtkStateType state; + GtkStyle *style; ++ cairo_t *cr; + + workspace_rect.x = x; + workspace_rect.y = y; +@@ -194,28 +195,21 @@ wnck_draw_workspace (GtkWidget *widget, + state = GTK_STATE_NORMAL; + + style = gtk_widget_get_style (widget); ++ cr = gdk_cairo_create (drawable); + + if (workspace_background) + { +- gdk_draw_pixbuf (drawable, +- style->dark_gc[state], +- workspace_background, +- 0, 0, +- x, y, +- -1, -1, +- GDK_RGB_DITHER_MAX, +- 0, 0); ++ gdk_cairo_set_source_pixbuf (cr, workspace_background, x, y); ++ cairo_paint (cr); + } + else + { +- cairo_t *cr; +- +- cr = gdk_cairo_create (gtk_widget_get_window (widget)); + gdk_cairo_set_source_color (cr, &style->dark[state]); + cairo_rectangle (cr, x, y, width, height); + cairo_fill (cr); +- cairo_destroy (cr); + } ++ ++ cairo_destroy (cr); + + i = 0; + while (i < n_windows) +diff --git a/src/ui/frames.c b/src/ui/frames.c +index 03f733c..27a5381 100644 +--- a/src/ui/frames.c ++++ b/src/ui/frames.c +@@ -2004,15 +2004,12 @@ meta_frames_destroy_event (GtkWidget *widget, + return TRUE; + } + +-/* Cut and paste from GDK */ +-static GdkGC * +-get_bg_gc (GdkWindow *window, int x_offset, int y_offset) ++static void ++setup_bg_cr (cairo_t *cr, GdkWindow *window, int x_offset, int y_offset) + { + GdkWindow *parent = gdk_window_get_parent (window); + GdkPixmap *back_pixmap; + gboolean parent_relative; +- guint gc_mask = 0; +- GdkGCValues gc_values; + + gdk_window_get_back_pixmap (window, &back_pixmap, &parent_relative); + if (parent_relative && parent) +@@ -2020,30 +2017,19 @@ get_bg_gc (GdkWindow *window, int x_offset, int y_offset) + gint window_x, window_y; + + gdk_window_get_position (window, &window_x, &window_y); +- return get_bg_gc (parent, +- x_offset + window_x, +- y_offset + window_y); ++ setup_bg_cr (cr, parent, x_offset + window_x, y_offset + window_y); + } + else if (back_pixmap) + { +- gc_values.fill = GDK_TILED; +- gc_values.tile = back_pixmap; +- gc_values.ts_x_origin = x_offset; +- gc_values.ts_y_origin = y_offset; +- +- gc_mask = GDK_GC_FILL | GDK_GC_TILE | GDK_GC_TS_X_ORIGIN | GDK_GC_TS_Y_ORIGIN; +- +- return gdk_gc_new_with_values (window, &gc_values, gc_mask); ++ gdk_cairo_set_source_pixmap (cr, back_pixmap, x_offset, y_offset); ++ cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT); + } + else + { + GdkColor bg_color; +- GdkGC *gc = gdk_gc_new (window); + + gdk_window_get_background (window, &bg_color); +- gdk_gc_set_foreground (gc, &bg_color); +- +- return gc; ++ gdk_cairo_set_source_color (cr, &bg_color); + } + } + +@@ -2052,12 +2038,16 @@ clear_backing (GdkPixmap *pixmap, + GdkWindow *window, + int xoffset, int yoffset) + { +- GdkGC *tmp_gc = get_bg_gc (window, xoffset, yoffset); ++ int width, height; ++ cairo_t *cr = gdk_cairo_create (pixmap); ++ ++ setup_bg_cr (cr, window, xoffset, yoffset); + +- gdk_draw_rectangle (pixmap, tmp_gc, TRUE, +- 0, 0, -1, -1); ++ gdk_drawable_get_size (GDK_DRAWABLE (pixmap), &width, &height); ++ cairo_rectangle (cr, 0, 0, width, height); ++ cairo_fill (cr); + +- g_object_unref (tmp_gc); ++ cairo_destroy (cr); + } + + /* Returns a pixmap with a piece of the windows frame painted on it. +@@ -2220,10 +2210,10 @@ cached_pixels_draw (CachedPixels *pixels, + GdkWindow *window, + MetaRegion *region) + { +- GdkGC *gc; ++ cairo_t *cr; + int i; + +- gc = gdk_gc_new (window); ++ cr = gdk_cairo_create (window); + + for (i = 0; i < 4; i++) + { +@@ -2232,16 +2222,15 @@ cached_pixels_draw (CachedPixels *pixels, + + if (piece->pixmap) + { +- gdk_draw_drawable (window, gc, piece->pixmap, +- 0, 0, +- piece->rect.x, piece->rect.y, +- -1, -1); ++ gdk_cairo_set_source_pixmap (cr, piece->pixmap, ++ piece->rect.x, piece->rect.y); ++ cairo_paint (cr); + subtract_from_region (region, piece->pixmap, + piece->rect.x, piece->rect.y); + } + } + +- g_object_unref (gc); ++ cairo_destroy (cr); + } + + static gboolean +@@ -2550,11 +2539,6 @@ meta_frames_set_window_background (MetaFrames *frames, + GTK_WIDGET (frames), + &color); + +- /* Fill in color.pixel */ +- +- gdk_rgb_find_color (gtk_widget_get_colormap (GTK_WIDGET (frames)), +- &color); +- + /* Set A in ARGB to window_background_alpha, if we have ARGB */ + + visual = gtk_widget_get_visual (GTK_WIDGET (frames)); +diff --git a/src/ui/tabpopup.c b/src/ui/tabpopup.c +index 9351162..7dc4232 100644 +--- a/src/ui/tabpopup.c ++++ b/src/ui/tabpopup.c +@@ -83,6 +83,7 @@ outline_window_expose (GtkWidget *widget, + TabEntry *te; + GtkStyle *style; + GdkWindow *window; ++ cairo_t *cr; + + popup = data; + +@@ -92,20 +93,24 @@ outline_window_expose (GtkWidget *widget, + te = popup->current_selected_entry; + window = gtk_widget_get_window (widget); + style = gtk_widget_get_style (widget); +- +- gdk_draw_rectangle (window, +- style->white_gc, +- FALSE, +- 0, 0, +- te->rect.width - 1, +- te->rect.height - 1); +- +- gdk_draw_rectangle (window, +- style->white_gc, +- FALSE, +- te->inner_rect.x - 1, te->inner_rect.y - 1, +- te->inner_rect.width + 1, +- te->inner_rect.height + 1); ++ cr = gdk_cairo_create (window); ++ ++ cairo_set_line_width (cr, 1.0); ++ gdk_cairo_set_source_color (cr, &style->white); ++ ++ cairo_rectangle (cr, ++ 0.5, 0.5, ++ te->rect.width - 1, ++ te->rect.height - 1); ++ cairo_stroke (cr); ++ ++ cairo_rectangle (cr, ++ te->inner_rect.x - 0.5, te->inner_rect.y - 0.5, ++ te->inner_rect.width + 1, ++ te->inner_rect.height + 1); ++ cairo_stroke (cr); ++ ++ cairo_destroy (cr); + + return FALSE; + } +@@ -710,6 +715,7 @@ meta_select_image_expose_event (GtkWidget *widget, + int x, y, w, h; + gint xpad, ypad; + gfloat xalign, yalign; ++ cairo_t *cr; + + misc = GTK_MISC (widget); + +@@ -734,27 +740,28 @@ meta_select_image_expose_event (GtkWidget *widget, + window = gtk_widget_get_window (widget); + style = gtk_widget_get_style (widget); + state = gtk_widget_get_state (widget); ++ cr = gdk_cairo_create (window); + +- gdk_draw_rectangle (window, +- style->fg_gc[state], +- FALSE, +- x, y, w, h); +- gdk_draw_rectangle (window, +- style->fg_gc[state], +- FALSE, +- x - 1, y - 1, w + 2, h + 2); +- ++ cairo_set_line_width (cr, 2.0); ++ gdk_cairo_set_source_color (cr, &style->fg[state]); ++ ++ cairo_rectangle (cr, x, y, w + 1, h + 1); ++ cairo_stroke (cr); ++ ++ cairo_set_line_width (cr, 1.0); + #if 0 +- gdk_draw_rectangle (widget->window, +- widget->style->bg_gc[GTK_STATE_SELECTED], +- TRUE, +- x, y, w, h); ++ gdk_cairo_set_source_color (cr, &style->bg[GTK_STATE_SELECTED]); ++ cairo_rectangle (cr, x, y, w, h); ++ cairo_fill (cr); + #endif ++ + #if 0 + gtk_paint_focus (widget->style, widget->window, + &event->area, widget, "meta-tab-image", + x, y, w, h); + #endif ++ ++ cairo_destroy (cr); + } + + return GTK_WIDGET_CLASS (parent_class)->expose_event (widget, event); +@@ -906,6 +913,7 @@ meta_select_workspace_expose_event (GtkWidget *widget, + GtkAllocation allocation; + GtkStyle *style; + GdkWindow *window; ++ cairo_t *cr; + int i, n_windows; + GList *tmp, *list; + +@@ -965,20 +973,19 @@ meta_select_workspace_expose_event (GtkWidget *widget, + if (META_SELECT_WORKSPACE (widget)->selected) + { + style = gtk_widget_get_style (widget); +- i = SELECT_OUTLINE_WIDTH - 1; ++ cr = gdk_cairo_create (window); + +- while (i >= 0) +- { +- gdk_draw_rectangle (window, +- style->fg_gc[gtk_widget_get_state (widget)], +- FALSE, +- i, +- i, +- allocation.width - i * 2 - 1, +- allocation.height - i * 2 - 1); +- +- --i; +- } ++ gdk_cairo_set_source_color (cr, ++ &style->fg[gtk_widget_get_state (widget)]); ++ cairo_set_line_width (cr, SELECT_OUTLINE_WIDTH); ++ ++ cairo_rectangle (cr, ++ SELECT_OUTLINE_WIDTH / 2.0, SELECT_OUTLINE_WIDTH / 2.0, ++ allocation.width - SELECT_OUTLINE_WIDTH, ++ allocation.height - SELECT_OUTLINE_WIDTH); ++ cairo_stroke (cr); ++ ++ cairo_destroy (cr); + } + + return TRUE; +diff --git a/src/ui/testgradient.c b/src/ui/testgradient.c +index f60966f..2158984 100644 +--- a/src/ui/testgradient.c ++++ b/src/ui/testgradient.c +@@ -24,7 +24,7 @@ + #include + + typedef void (* RenderGradientFunc) (GdkDrawable *drawable, +- GdkGC *gc, ++ cairo_t *cr, + int width, + int height); + +@@ -34,28 +34,22 @@ draw_checkerboard (GdkDrawable *drawable, + int height) + { + gint i, j, xcount, ycount; +- GdkGC *gc1, *gc2; +- GdkColor color; ++ GdkColor color1, color2; ++ cairo_t *cr; + + #define CHECK_SIZE 10 + #define SPACING 2 + +- /* It would be a bit more efficient to keep these +- * GC's around instead of recreating on each expose, but +- * this is the lazy/slow way. +- */ +- gc1 = gdk_gc_new (drawable); +- color.red = 30000; +- color.green = 30000; +- color.blue = 30000; +- gdk_gc_set_rgb_fg_color (gc1, &color); +- +- gc2 = gdk_gc_new (drawable); +- color.red = 50000; +- color.green = 50000; +- color.blue = 50000; +- gdk_gc_set_rgb_fg_color (gc2, &color); +- ++ color1.red = 30000; ++ color1.green = 30000; ++ color1.blue = 30000; ++ ++ color2.red = 50000; ++ color2.green = 50000; ++ color2.blue = 50000; ++ ++ cr = gdk_cairo_create (drawable); ++ + xcount = 0; + i = SPACING; + while (i < width) +@@ -64,23 +58,17 @@ draw_checkerboard (GdkDrawable *drawable, + ycount = xcount % 2; /* start with even/odd depending on row */ + while (j < height) + { +- GdkGC *gc; +- + if (ycount % 2) +- gc = gc1; ++ gdk_cairo_set_source_color (cr, &color1); + else +- gc = gc2; ++ gdk_cairo_set_source_color (cr, &color2); + + /* If we're outside event->area, this will do nothing. + * It might be mildly more efficient if we handled + * the clipping ourselves, but again we're feeling lazy. + */ +- gdk_draw_rectangle (drawable, +- gc, +- TRUE, +- i, j, +- CHECK_SIZE, +- CHECK_SIZE); ++ cairo_rectangle (cr, i, j, CHECK_SIZE, CHECK_SIZE); ++ cairo_fill (cr); + + j += CHECK_SIZE + SPACING; + ++ycount; +@@ -90,13 +78,12 @@ draw_checkerboard (GdkDrawable *drawable, + ++xcount; + } + +- g_object_unref (G_OBJECT (gc1)); +- g_object_unref (G_OBJECT (gc2)); ++ cairo_destroy (cr); + } + + static void + render_simple (GdkDrawable *drawable, +- GdkGC *gc, ++ cairo_t *cr, + int width, int height, + MetaGradientType type, + gboolean with_alpha) +@@ -131,52 +118,48 @@ render_simple (GdkDrawable *drawable, + draw_checkerboard (drawable, width, height); + } + +- gdk_draw_pixbuf (drawable, +- gc, +- pixbuf, +- 0, 0, +- 0, 0, width, height, +- GDK_RGB_DITHER_MAX, +- 0, 0); ++ gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0); ++ cairo_rectangle (cr, 0, 0, width, height); ++ cairo_fill (cr); + + g_object_unref (G_OBJECT (pixbuf)); + } + + static void + render_vertical_func (GdkDrawable *drawable, +- GdkGC *gc, ++ cairo_t *cr, + int width, int height) + { +- render_simple (drawable, gc, width, height, META_GRADIENT_VERTICAL, FALSE); ++ render_simple (drawable, cr, width, height, META_GRADIENT_VERTICAL, FALSE); + } + + static void + render_horizontal_func (GdkDrawable *drawable, +- GdkGC *gc, ++ cairo_t *cr, + int width, int height) + { +- render_simple (drawable, gc, width, height, META_GRADIENT_HORIZONTAL, FALSE); ++ render_simple (drawable, cr, width, height, META_GRADIENT_HORIZONTAL, FALSE); + } + + static void + render_diagonal_func (GdkDrawable *drawable, +- GdkGC *gc, ++ cairo_t *cr, + int width, int height) + { +- render_simple (drawable, gc, width, height, META_GRADIENT_DIAGONAL, FALSE); ++ render_simple (drawable, cr, width, height, META_GRADIENT_DIAGONAL, FALSE); + } + + static void + render_diagonal_alpha_func (GdkDrawable *drawable, +- GdkGC *gc, ++ cairo_t *cr, + int width, int height) + { +- render_simple (drawable, gc, width, height, META_GRADIENT_DIAGONAL, TRUE); ++ render_simple (drawable, cr, width, height, META_GRADIENT_DIAGONAL, TRUE); + } + + static void + render_multi (GdkDrawable *drawable, +- GdkGC *gc, ++ cairo_t *cr, + int width, int height, + MetaGradientType type) + { +@@ -194,14 +177,9 @@ render_multi (GdkDrawable *drawable, + colors, N_COLORS, + type); + +- gdk_draw_pixbuf (drawable, +- gc, +- pixbuf, +- 0, 0, +- 0, 0, +- width, height, +- GDK_RGB_DITHER_NORMAL, +- 0, 0); ++ gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0); ++ cairo_rectangle (cr, 0, 0, width, height); ++ cairo_fill (cr); + + g_object_unref (G_OBJECT (pixbuf)); + #undef N_COLORS +@@ -209,31 +187,31 @@ render_multi (GdkDrawable *drawable, + + static void + render_vertical_multi_func (GdkDrawable *drawable, +- GdkGC *gc, ++ cairo_t *cr, + int width, int height) + { +- render_multi (drawable, gc, width, height, META_GRADIENT_VERTICAL); ++ render_multi (drawable, cr, width, height, META_GRADIENT_VERTICAL); + } + + static void + render_horizontal_multi_func (GdkDrawable *drawable, +- GdkGC *gc, ++ cairo_t *cr, + int width, int height) + { +- render_multi (drawable, gc, width, height, META_GRADIENT_HORIZONTAL); ++ render_multi (drawable, cr, width, height, META_GRADIENT_HORIZONTAL); + } + + static void + render_diagonal_multi_func (GdkDrawable *drawable, +- GdkGC *gc, ++ cairo_t *cr, + int width, int height) + { +- render_multi (drawable, gc, width, height, META_GRADIENT_DIAGONAL); ++ render_multi (drawable, cr, width, height, META_GRADIENT_DIAGONAL); + } + + static void + render_interwoven_func (GdkDrawable *drawable, +- GdkGC *gc, ++ cairo_t *cr, + int width, int height) + { + GdkPixbuf *pixbuf; +@@ -249,14 +227,9 @@ render_interwoven_func (GdkDrawable *drawable, + colors, height / 10, + colors + 2, height / 14); + +- gdk_draw_pixbuf (drawable, +- gc, +- pixbuf, +- 0, 0, +- 0, 0, +- width, height, +- GDK_RGB_DITHER_NORMAL, +- 0, 0); ++ gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0); ++ cairo_rectangle (cr, 0, 0, width, height); ++ cairo_fill (cr); + + g_object_unref (G_OBJECT (pixbuf)); + } +@@ -267,17 +240,25 @@ expose_callback (GtkWidget *widget, + gpointer data) + { + RenderGradientFunc func = data; ++ GdkWindow *window; + GtkAllocation allocation; + GtkStyle *style; ++ cairo_t *cr; + + style = gtk_widget_get_style (widget); + gtk_widget_get_allocation (widget, &allocation); + ++ window = gtk_widget_get_window (widget); ++ cr = gdk_cairo_create (window); ++ gdk_cairo_set_source_color (cr, &style->fg[gtk_widget_get_state (widget)]); ++ + (* func) (gtk_widget_get_window (widget), +- style->fg_gc[gtk_widget_get_state (widget)], ++ cr, + allocation.width, + allocation.height); + ++ cairo_destroy (cr); ++ + return TRUE; + } + +diff --git a/src/ui/theme.c b/src/ui/theme.c +index 3e90f4c..d4ed1bb 100644 +--- a/src/ui/theme.c ++++ b/src/ui/theme.c +@@ -2922,36 +2922,6 @@ meta_draw_op_free (MetaDrawOp *op) + g_free (op); + } + +-static GdkGC* +-get_gc_for_primitive (GtkWidget *widget, +- GdkDrawable *drawable, +- MetaColorSpec *color_spec, +- const GdkRectangle *clip, +- int line_width) +-{ +- GdkGC *gc; +- GdkGCValues values; +- GdkColor color; +- +- meta_color_spec_render (color_spec, widget, &color); +- +- values.foreground = color; +- +- gdk_rgb_find_color (gdk_drawable_get_colormap (drawable), +- &values.foreground); +- +- values.line_width = line_width; +- +- gc = gdk_gc_new_with_values (drawable, &values, +- GDK_GC_FOREGROUND | GDK_GC_LINE_WIDTH); +- +- if (clip) +- gdk_gc_set_clip_rectangle (gc, +- (GdkRectangle*) clip); /* const cast */ +- +- return gc; +-} +- + static GdkPixbuf* + apply_alpha (GdkPixbuf *pixbuf, + MetaAlphaGradientSpec *spec, +@@ -2988,54 +2958,6 @@ apply_alpha (GdkPixbuf *pixbuf, + return pixbuf; + } + +-static void +-render_pixbuf (GdkDrawable *drawable, +- const GdkRectangle *clip, +- GdkPixbuf *pixbuf, +- int x, +- int y) +-{ +- /* grumble, render_to_drawable_alpha does not accept a clip +- * mask, so we have to go through some BS +- */ +- /* FIXME once GTK 1.3.13 has been out a while we can use +- * render_to_drawable() which now does alpha with clip. +- * +- * Though the gdk_rectangle_intersect() check may be a useful +- * optimization anyway. +- */ +- GdkRectangle pixbuf_rect; +- GdkRectangle draw_rect; +- +- pixbuf_rect.x = x; +- pixbuf_rect.y = y; +- pixbuf_rect.width = gdk_pixbuf_get_width (pixbuf); +- pixbuf_rect.height = gdk_pixbuf_get_height (pixbuf); +- +- if (clip) +- { +- if (!gdk_rectangle_intersect ((GdkRectangle*)clip, +- &pixbuf_rect, &draw_rect)) +- return; +- } +- else +- { +- draw_rect = pixbuf_rect; +- } +- +- gdk_draw_pixbuf (drawable, +- NULL, +- pixbuf, +- draw_rect.x - pixbuf_rect.x, +- draw_rect.y - pixbuf_rect.y, +- draw_rect.x, draw_rect.y, +- draw_rect.width, +- draw_rect.height, +- GDK_RGB_DITHER_NORMAL, +- draw_rect.x - pixbuf_rect.x, +- draw_rect.y - pixbuf_rect.y); +-} +- + static GdkPixbuf* + pixbuf_tile (GdkPixbuf *tile, + int width, +@@ -3476,6 +3398,17 @@ fill_env (MetaPositionExprEnv *env, + env->theme = meta_current_theme; + } + ++/* This code was originally rendering anti-aliased using X primitives, and ++ * now has been switched to draw anti-aliased using cairo. In general, the ++ * closest correspondence between X rendering and cairo rendering is given ++ * by offsetting the geometry by 0.5 pixels in both directions before rendering ++ * with cairo. This is because X samples at the upper left corner of the ++ * pixel while cairo averages over the entire pixel. However, in the cases ++ * where the X rendering was an exact rectangle with no "jaggies" ++ * we need to be a bit careful about applying the offset. We want to produce ++ * the exact same pixel-aligned rectangle, rather than a rectangle with ++ * fuzz around the edges. ++ */ + static void + meta_draw_op_draw_with_env (const MetaDrawOp *op, + GtkStyle *style_gtk, +@@ -3486,7 +3419,18 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op, + MetaRectangle rect, + MetaPositionExprEnv *env) + { +- GdkGC *gc; ++ GdkColor color; ++ cairo_t *cr; ++ ++ cr = gdk_cairo_create (drawable); ++ ++ cairo_set_line_width (cr, 1.0); ++ ++ if (clip) ++ { ++ gdk_cairo_rectangle (cr, clip); ++ cairo_clip (cr); ++ } + + switch (op->type) + { +@@ -3494,18 +3438,19 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op, + { + int x1, x2, y1, y2; + +- gc = get_gc_for_primitive (widget, drawable, +- op->data.line.color_spec, +- clip, +- op->data.line.width); ++ meta_color_spec_render (op->data.line.color_spec, widget, &color); ++ gdk_cairo_set_source_color (cr, &color); ++ ++ if (op->data.line.width > 0) ++ cairo_set_line_width (cr, op->data.line.width); + + if (op->data.line.dash_on_length > 0 && + op->data.line.dash_off_length > 0) + { +- gint8 dash_list[2]; ++ double dash_list[2]; + dash_list[0] = op->data.line.dash_on_length; + dash_list[1] = op->data.line.dash_off_length; +- gdk_gc_set_dashes (gc, 0, dash_list, 2); ++ cairo_set_dash (cr, dash_list, 2, 0); + } + + x1 = parse_x_position_unchecked (op->data.line.x1, env); +@@ -3514,7 +3459,10 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op, + if (!op->data.line.x2 && + !op->data.line.y2 && + op->data.line.width==0) +- gdk_draw_point (drawable, gc, x1, y1); ++ { ++ cairo_rectangle (cr, x1, y1, 1, 1); ++ cairo_fill (cr); ++ } + else + { + if (op->data.line.x2) +@@ -3527,10 +3475,34 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op, + else + y2 = y1; + +- gdk_draw_line (drawable, gc, x1, y1, x2, y2); +- } ++ /* This is one of the cases where we are matching the exact ++ * pixel aligned rectangle produced by X. ++ */ ++ if (y1 == y2 || x1 == x2) ++ { ++ double offset = (op->data.line.width == 0 || ++ op->data.line.width % 2) ? .5 : 0; ++ /* X includes end points for lines of width 0 */ ++ double line_extend = op->data.line.width == 0 ? 1. : 0.; + +- g_object_unref (G_OBJECT (gc)); ++ if (y1 == y2) ++ { ++ cairo_move_to (cr, x1, y1 + offset); ++ cairo_line_to (cr, x2 + line_extend, y2 + offset); ++ } ++ else ++ { ++ cairo_move_to (cr, x1 + offset, y1); ++ cairo_line_to (cr, x2 + offset, y2 + line_extend); ++ } ++ } ++ else ++ { ++ cairo_move_to (cr, x1 + .5, y1 + .5); ++ cairo_line_to (cr, x2 + .5, y2 + .5); ++ } ++ cairo_stroke (cr); ++ } + } + break; + +@@ -3538,45 +3510,69 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op, + { + int rx, ry, rwidth, rheight; + +- gc = get_gc_for_primitive (widget, drawable, +- op->data.rectangle.color_spec, +- clip, 0); ++ meta_color_spec_render (op->data.rectangle.color_spec, widget, &color); ++ gdk_cairo_set_source_color (cr, &color); + + rx = parse_x_position_unchecked (op->data.rectangle.x, env); + ry = parse_y_position_unchecked (op->data.rectangle.y, env); + rwidth = parse_size_unchecked (op->data.rectangle.width, env); + rheight = parse_size_unchecked (op->data.rectangle.height, env); + +- gdk_draw_rectangle (drawable, gc, +- op->data.rectangle.filled, +- rx, ry, rwidth, rheight); +- +- g_object_unref (G_OBJECT (gc)); ++ /* Filled and stroked rectangles are the other cases ++ * we pixel-align to X rasterization ++ */ ++ if (op->data.rectangle.filled) ++ { ++ cairo_rectangle (cr, rx, ry, rwidth, rheight); ++ cairo_fill (cr); ++ } ++ else ++ { ++ cairo_rectangle (cr, rx + .5, ry + .5, rwidth, rheight); ++ cairo_stroke (cr); ++ } + } + break; + + case META_DRAW_ARC: + { + int rx, ry, rwidth, rheight; ++ double start_angle, end_angle; ++ double center_x, center_y; + +- gc = get_gc_for_primitive (widget, drawable, +- op->data.arc.color_spec, +- clip, 0); ++ meta_color_spec_render (op->data.arc.color_spec, widget, &color); ++ gdk_cairo_set_source_color (cr, &color); + + rx = parse_x_position_unchecked (op->data.arc.x, env); + ry = parse_y_position_unchecked (op->data.arc.y, env); + rwidth = parse_size_unchecked (op->data.arc.width, env); + rheight = parse_size_unchecked (op->data.arc.height, env); + +- gdk_draw_arc (drawable, +- gc, +- op->data.arc.filled, +- rx, ry, rwidth, rheight, +- op->data.arc.start_angle * (360.0 * 64.0) - +- (90.0 * 64.0), /* start at 12 instead of 3 oclock */ +- op->data.arc.extent_angle * (360.0 * 64.0)); ++ start_angle = op->data.arc.start_angle * (M_PI / 180.) ++ - (.25 * M_PI); /* start at 12 instead of 3 oclock */ ++ end_angle = start_angle + op->data.arc.extent_angle * (M_PI / 180.); ++ center_x = rx + (double)rwidth / 2. + .5; ++ center_y = ry + (double)rheight / 2. + .5; ++ ++ cairo_save (cr); ++ ++ cairo_translate (cr, center_x, center_y); ++ cairo_scale (cr, (double)rwidth / 2., (double)rheight / 2.); ++ ++ if (op->data.arc.extent_angle >= 0) ++ cairo_arc (cr, 0, 0, 1, start_angle, end_angle); ++ else ++ cairo_arc_negative (cr, 0, 0, 1, start_angle, end_angle); ++ ++ cairo_restore (cr); + +- g_object_unref (G_OBJECT (gc)); ++ if (op->data.arc.filled) ++ { ++ cairo_line_to (cr, center_x, center_y); ++ cairo_fill (cr); ++ } ++ else ++ cairo_stroke (cr); + } + break; + +@@ -3599,15 +3595,11 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op, + + if (!needs_alpha) + { +- gc = get_gc_for_primitive (widget, drawable, +- op->data.tint.color_spec, +- clip, 0); +- +- gdk_draw_rectangle (drawable, gc, +- TRUE, +- rx, ry, rwidth, rheight); ++ meta_color_spec_render (op->data.tint.color_spec, widget, &color); ++ gdk_cairo_set_source_color (cr, &color); + +- g_object_unref (G_OBJECT (gc)); ++ cairo_rectangle (cr, rx + .5, ry + .5, rwidth, rheight); ++ cairo_fill (cr); + } + else + { +@@ -3618,7 +3610,8 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op, + + if (pixbuf) + { +- render_pixbuf (drawable, clip, pixbuf, rx, ry); ++ gdk_cairo_set_source_pixbuf (cr, pixbuf, rx, ry); ++ cairo_paint (cr); + + g_object_unref (G_OBJECT (pixbuf)); + } +@@ -3641,7 +3634,8 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op, + + if (pixbuf) + { +- render_pixbuf (drawable, clip, pixbuf, rx, ry); ++ gdk_cairo_set_source_pixbuf (cr, pixbuf, rx, ry); ++ cairo_paint (cr); + + g_object_unref (G_OBJECT (pixbuf)); + } +@@ -3670,7 +3664,8 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op, + rx = parse_x_position_unchecked (op->data.image.x, env); + ry = parse_y_position_unchecked (op->data.image.y, env); + +- render_pixbuf (drawable, clip, pixbuf, rx, ry); ++ gdk_cairo_set_source_pixbuf (cr, pixbuf, rx, ry); ++ cairo_paint (cr); + + g_object_unref (G_OBJECT (pixbuf)); + } +@@ -3753,7 +3748,8 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op, + rx = parse_x_position_unchecked (op->data.icon.x, env); + ry = parse_y_position_unchecked (op->data.icon.y, env); + +- render_pixbuf (drawable, clip, pixbuf, rx, ry); ++ gdk_cairo_set_source_pixbuf (cr, pixbuf, rx, ry); ++ cairo_paint (cr); + + g_object_unref (G_OBJECT (pixbuf)); + } +@@ -3766,9 +3762,8 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op, + int rx, ry; + PangoRectangle ink_rect, logical_rect; + +- gc = get_gc_for_primitive (widget, drawable, +- op->data.title.color_spec, +- clip, 0); ++ meta_color_spec_render (op->data.title.color_spec, widget, &color); ++ gdk_cairo_set_source_color (cr, &color); + + rx = parse_x_position_unchecked (op->data.title.x, env); + ry = parse_y_position_unchecked (op->data.title.y, env); +@@ -3790,7 +3785,7 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op, + * correct for this, by reducing the ellipsization width by the overflow + * of the un-ellipsized text on the right... it's always the visual + * right we want regardless of bidi, since since the X we pass in to +- * gdk_draw_layout() is always the left edge of the line. ++ * cairo_move_to() is always the left edge of the line. + */ + right_bearing = (ink_rect.x + ink_rect.width) - (logical_rect.x + logical_rect.width); + right_bearing = MAX (right_bearing, 0); +@@ -3806,15 +3801,12 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op, + pango_layout_set_width (info->title_layout, PANGO_SCALE * ellipsize_width); + } + +- gdk_draw_layout (drawable, gc, +- rx, ry, +- info->title_layout); ++ cairo_move_to (cr, rx, ry); ++ pango_cairo_show_layout (cr, info->title_layout); + + /* Remove any ellipsization we might have set; will short-circuit + * if the width is already -1 */ + pango_layout_set_width (info->title_layout, -1); +- +- g_object_unref (G_OBJECT (gc)); + } + break; + +@@ -3882,6 +3874,8 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op, + } + break; + } ++ ++ cairo_destroy (cr); + } + + void +@@ -6637,7 +6631,8 @@ draw_bg_gradient_composite (const MetaTextureSpec *bg, + GDK_INTERP_BILINEAR, + 255 * alpha); + +- render_pixbuf (drawable, clip, composited, x, y); ++ gdk_cairo_set_source_pixbuf (cr, composited, x, y); ++ cairo_paint (cr); + + g_object_unref (G_OBJECT (bg_pixbuf)); + g_object_unref (G_OBJECT (fg_pixbuf)); +diff --git a/src/ui/ui.c b/src/ui/ui.c +index bdc8cd6..5ddafb2 100644 +--- a/src/ui/ui.c ++++ b/src/ui/ui.c +@@ -419,21 +419,17 @@ meta_image_window_set (MetaImageWindow *iw, + int y) + { + GdkWindow *window; ++ cairo_t *cr; + + /* We use a back pixmap to avoid having to handle exposes, because + * it's really too slow for large clients being minimized, etc. + * and this way flicker is genuinely zero. + */ + +- gdk_draw_pixbuf (iw->pixmap, +- gtk_widget_get_style (iw->window)->black_gc, +- pixbuf, +- 0, 0, +- 0, 0, +- gdk_pixbuf_get_width (pixbuf), +- gdk_pixbuf_get_height (pixbuf), +- GDK_RGB_DITHER_NORMAL, +- 0, 0); ++ cr = gdk_cairo_create (iw->pixmap); ++ gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0); ++ cairo_paint (cr); ++ cairo_destroy (cr); + + window = gtk_widget_get_window (iw->window); + +@@ -1001,7 +997,7 @@ meta_ui_get_pixbuf_from_pixmap (Pixmap pmap) + + depth = gdk_drawable_get_depth (GDK_DRAWABLE (gpmap)); + if (depth <= 24) +- cmap = gdk_screen_get_rgb_colormap (screen); ++ cmap = gdk_screen_get_system_colormap (screen); + else + cmap = gdk_screen_get_rgba_colormap (screen); + +-- +cgit v0.8.3.1 --- mutter-2.31.5.orig/debian/patches/01_Wcast-align.patch +++ mutter-2.31.5/debian/patches/01_Wcast-align.patch @@ -0,0 +1,16 @@ +Index: mutter-2.31.5/configure.in +=================================================================== +--- mutter-2.31.5.orig/configure.in 2010-07-12 17:40:34.000000000 +0200 ++++ mutter-2.31.5/configure.in 2010-07-15 11:55:53.994640001 +0200 +@@ -108,11 +108,6 @@ + esac + + case " $CFLAGS " in +- *[\ \ ]-Wcast-align[\ \ ]*) ;; +- *) CFLAGS="$CFLAGS -Wcast-align" ;; +- esac +- +- case " $CFLAGS " in + *[\ \ ]-Wsign-compare[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -Wsign-compare" ;; + esac --- mutter-2.31.5.orig/debian/patches/18_unmimize.patch +++ mutter-2.31.5/debian/patches/18_unmimize.patch @@ -0,0 +1,15 @@ +Description: Fix unminimized windows not being mapped +Bug-Ubuntu: https://launchpad.net/bugs/620758 + +--- a/src/compositor/mutter-window.c 2010-07-02 13:14:39.000000000 -0400 ++++ b/src/compositor/mutter-window.c 2010-08-26 03:03:09.034198001 -0400 + +@@ -1150,7 +1151,7 @@ mutter_window_show (MutterWindow *self + g_assert_not_reached(); + } + +- if (priv->redecorating || ++ if ( + info->switch_workspace_in_progress || + event == 0 || + !start_simple_effect (self, event)) --- mutter-2.31.5.orig/debian/patches/10_no-ws-switcher.patch +++ mutter-2.31.5/debian/patches/10_no-ws-switcher.patch @@ -0,0 +1,21 @@ +Description: Don't show the ws switcher if we only have one +Origin: Ubuntu +Bug: https://bugzilla.gnome.org/show_bug.cgi?id=606966 +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/mutter/+bug/506944 +Author: Didier Roche + +Index: mutter/src/core/keybindings.c +=================================================================== +--- mutter.orig/src/core/keybindings.c 2010-01-14 14:51:54.563213610 +0100 ++++ mutter/src/core/keybindings.c 2010-01-14 15:14:45.415187758 +0100 +@@ -3407,6 +3407,10 @@ + + g_assert (motion < 0); + ++ /* Don't show the ws switcher if we get just one ws */ ++ if (meta_screen_get_n_workspaces(screen) == 1) ++ return; ++ + meta_topic (META_DEBUG_KEYBINDINGS, + "Starting tab between workspaces, showing popup\n"); + --- mutter-2.31.5.orig/debian/patches/03_strict_focus.patch +++ mutter-2.31.5/debian/patches/03_strict_focus.patch @@ -0,0 +1,68 @@ +Description: Strict focus mode (/apps/metacity/general/focus_mode = strict) +Author: LaMont Jones + +Index: mutter-2.31.2/src/core/display.c +=================================================================== +--- mutter-2.31.2.orig/src/core/display.c 2010-05-25 19:24:30.000000000 +0200 ++++ mutter-2.31.2/src/core/display.c 2010-06-23 21:58:39.857704000 +0200 +@@ -2009,6 +2009,7 @@ + { + switch (meta_prefs_get_focus_mode ()) + { ++ case META_FOCUS_MODE_STRICT: + case META_FOCUS_MODE_SLOPPY: + case META_FOCUS_MODE_MOUSE: + display->mouse_mode = TRUE; +Index: mutter-2.31.2/src/core/prefs.c +=================================================================== +--- mutter-2.31.2.orig/src/core/prefs.c 2010-04-18 02:44:38.000000000 +0200 ++++ mutter-2.31.2/src/core/prefs.c 2010-06-23 21:58:39.857704000 +0200 +@@ -197,6 +197,7 @@ + { META_FOCUS_MODE_CLICK, "click" }, + { META_FOCUS_MODE_SLOPPY, "sloppy" }, + { META_FOCUS_MODE_MOUSE, "mouse" }, ++ { META_FOCUS_MODE_STRICT, "strict" }, + { 0, NULL }, + }; + +Index: mutter-2.31.2/src/core/window.c +=================================================================== +--- mutter-2.31.2.orig/src/core/window.c 2010-05-21 13:09:21.000000000 +0200 ++++ mutter-2.31.2/src/core/window.c 2010-06-23 21:59:56.961704001 +0200 +@@ -2697,7 +2697,7 @@ + if (window->showing_for_first_time) + { + window->showing_for_first_time = FALSE; +- if (takes_focus_on_map) ++ if (takes_focus_on_map && meta_prefs_get_focus_mode () != META_FOCUS_MODE_STRICT) + { + guint32 timestamp; + +Index: mutter-2.31.2/src/core/workspace.c +=================================================================== +--- mutter-2.31.2.orig/src/core/workspace.c 2010-04-18 02:44:38.000000000 +0200 ++++ mutter-2.31.2/src/core/workspace.c 2010-06-23 21:58:39.869704000 +0200 +@@ -1256,7 +1256,8 @@ + } + else if (meta_prefs_get_focus_mode () == META_FOCUS_MODE_SLOPPY) + focus_ancestor_or_mru_window (workspace, not_this_one, timestamp); +- else if (meta_prefs_get_focus_mode () == META_FOCUS_MODE_MOUSE) ++ else if (meta_prefs_get_focus_mode () == META_FOCUS_MODE_MOUSE || ++ meta_prefs_get_focus_mode () == META_FOCUS_MODE_STRICT) + { + meta_topic (META_DEBUG_FOCUS, + "Setting focus to no_focus_window, since no valid " +Index: mutter-2.31.2/src/include/common.h +=================================================================== +--- mutter-2.31.2.orig/src/include/common.h 2010-04-26 23:00:19.000000000 +0200 ++++ mutter-2.31.2/src/include/common.h 2010-06-23 21:58:39.873704000 +0200 +@@ -165,7 +165,8 @@ + { + META_FOCUS_MODE_CLICK, + META_FOCUS_MODE_SLOPPY, +- META_FOCUS_MODE_MOUSE ++ META_FOCUS_MODE_MOUSE, ++ META_FOCUS_MODE_STRICT + } MetaFocusMode; + + typedef enum --- mutter-2.31.5.orig/debian/patches/50_texture_rectangle.patch +++ mutter-2.31.5/debian/patches/50_texture_rectangle.patch @@ -0,0 +1,164 @@ +Description: Use the cogl_texture_rectangle API instead of direct GL calls. +Author: Alexandros Frantzis +Last-Updated: 2010-09-22 +--- a/src/compositor/mutter-shaped-texture.c 2010-09-23 07:54:46 +0000 ++++ b/src/compositor/mutter-shaped-texture.c 2010-09-23 08:36:47 +0000 +@@ -32,6 +32,10 @@ + #include + #include + ++#ifndef GL_TEXTURE_RECTANGLE_ARB ++#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 ++#endif ++ + static void mutter_shaped_texture_dispose (GObject *object); + static void mutter_shaped_texture_finalize (GObject *object); + static void mutter_shaped_texture_notify (GObject *object, +@@ -185,15 +189,6 @@ + + if (priv->mask_texture != COGL_INVALID_HANDLE) + { +- GLuint mask_gl_tex; +- GLenum mask_gl_target; +- +- cogl_texture_get_gl_texture (priv->mask_texture, +- &mask_gl_tex, &mask_gl_target); +- +- if (mask_gl_target == GL_TEXTURE_RECTANGLE_ARB) +- glDeleteTextures (1, &mask_gl_tex); +- + cogl_handle_unref (priv->mask_texture); + priv->mask_texture = COGL_INVALID_HANDLE; + } +@@ -225,7 +220,7 @@ + { + guchar *mask_data; + const XRectangle *rect; +- GLenum paint_gl_target; ++ guint paint_gl_target; + + /* Create data for an empty image */ + mask_data = g_malloc0 (tex_width * tex_height); +@@ -254,27 +249,15 @@ + + cogl_texture_get_gl_texture (paint_tex, NULL, &paint_gl_target); + +- if (paint_gl_target == GL_TEXTURE_RECTANGLE_ARB) +- { +- GLuint tex; +- +- glGenTextures (1, &tex); +- glBindTexture (GL_TEXTURE_RECTANGLE_ARB, tex); +- glPixelStorei (GL_UNPACK_ROW_LENGTH, tex_width); +- glPixelStorei (GL_UNPACK_ALIGNMENT, 1); +- glPixelStorei (GL_UNPACK_SKIP_ROWS, 0); +- glPixelStorei (GL_UNPACK_SKIP_PIXELS, 0); +- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, +- GL_ALPHA, tex_width, tex_height, +- 0, GL_ALPHA, GL_UNSIGNED_BYTE, mask_data); +- +- priv->mask_texture +- = cogl_texture_new_from_foreign (tex, +- GL_TEXTURE_RECTANGLE_ARB, +- tex_width, tex_height, +- 0, 0, +- COGL_PIXEL_FORMAT_A_8); +- } ++ if (paint_gl_target == GL_TEXTURE_RECTANGLE_ARB && ++ cogl_features_available(COGL_FEATURE_TEXTURE_RECTANGLE)) ++ priv->mask_texture = ++ cogl_texture_rectangle_new_from_data (tex_width, tex_height, ++ COGL_TEXTURE_NONE, ++ COGL_PIXEL_FORMAT_A_8, ++ COGL_PIXEL_FORMAT_ANY, ++ tex_width, ++ mask_data); + else + priv->mask_texture = cogl_texture_new_from_data (tex_width, tex_height, + COGL_TEXTURE_NONE, + +--- a/src/compositor/mutter-texture-tower.c 2010-09-23 07:54:46 +0000 ++++ b/src/compositor/mutter-texture-tower.c 2010-09-23 08:36:44 +0000 +@@ -27,6 +27,10 @@ + + #include "mutter-texture-tower.h" + ++#ifndef GL_TEXTURE_RECTANGLE_ARB ++#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 ++#endif ++ + #ifndef M_LOG2E + #define M_LOG2E 1.4426950408889634074 + #endif +@@ -100,24 +104,15 @@ + static gboolean + texture_is_rectangle (CoglHandle texture) + { +- GLuint gl_tex; +- GLenum gl_target; ++ guint gl_target; + +- cogl_texture_get_gl_texture (texture, &gl_tex, &gl_target); ++ cogl_texture_get_gl_texture (texture, NULL, &gl_target); + return gl_target == GL_TEXTURE_RECTANGLE_ARB; + } + + static void + free_texture (CoglHandle texture) + { +- GLuint gl_tex; +- GLenum gl_target; +- +- cogl_texture_get_gl_texture (texture, &gl_tex, &gl_target); +- +- if (gl_target == GL_TEXTURE_RECTANGLE_ARB) +- glDeleteTextures (1, &gl_tex); +- + cogl_handle_unref (texture); + } + +@@ -375,25 +370,13 @@ + int height) + { + if ((!is_power_of_two (width) || !is_power_of_two (height)) && +- texture_is_rectangle (tower->textures[level - 1])) ++ texture_is_rectangle (tower->textures[level - 1]) && ++ cogl_features_available(COGL_FEATURE_TEXTURE_RECTANGLE)) + { +- GLuint tex = 0; +- +- glGenTextures (1, &tex); +- glBindTexture (GL_TEXTURE_RECTANGLE_ARB, tex); +- glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, +- GL_RGBA, width,height, +-#if TEXTURE_FORMAT == COGL_PIXEL_FORMAT_BGRA_8888_PRE +- 0, GL_BGRA, GL_UNSIGNED_BYTE, +-#else /* assume big endian */ +- 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, +-#endif +- NULL); +- +- tower->textures[level] = cogl_texture_new_from_foreign (tex, GL_TEXTURE_RECTANGLE_ARB, +- width, height, +- 0, 0, +- TEXTURE_FORMAT); ++ tower->textures[level] = ++ cogl_texture_rectangle_new_with_size (width, height, ++ COGL_TEXTURE_NO_AUTO_MIPMAP, ++ TEXTURE_FORMAT); + } + else + { + +--- a/src/compositor/mutter-shaped-texture.h 2010-09-23 07:54:46 +0000 ++++ b/src/compositor/mutter-shaped-texture.h 2010-09-23 15:27:13 +0000 +@@ -30,7 +30,7 @@ + + #include + #ifdef HAVE_GLX_TEXTURE_PIXMAP +-#include ++#include + #endif /* HAVE_GLX_TEXTURE_PIXMAP */ + + #include "region.h" + --- mutter-2.31.5.orig/debian/patches/04_support_drag_drop_with_alt_tab.patch +++ mutter-2.31.5/debian/patches/04_support_drag_drop_with_alt_tab.patch @@ -0,0 +1,17 @@ +Description: Add drag and drop support when using alt + tab + Added to 1:2.30.1-2ubuntu2 +Author: Matthias Clasen +Upstream bug report: https://bugzilla.gnome.org/show_bug.cgi?id=135056 +Ubuntu bug report: https://bugs.launchpad.net/bugs/111939 + +--- metacity-2.27.0/src/core/display.c 2009-06-07 21:35:13.623787399 -0400 ++++ hacked/src/core/display.c 2009-06-06 00:20:58.889278832 -0400 +@@ -3307,7 +3307,7 @@ + meta_display_set_grab_op_cursor (display, screen, op, FALSE, grab_xwindow, + timestamp); + +- if (!display->grab_have_pointer) ++ if (!display->grab_have_pointer && !grab_op_is_keyboard (op)) + { + meta_topic (META_DEBUG_WINDOW_OPS, + "XGrabPointer() failed\n"); --- mutter-2.31.5.orig/debian/patches/series +++ mutter-2.31.5/debian/patches/series @@ -0,0 +1,20 @@ +00_git_cairo_api.patch +00_git_get_back_pixmap.patch +01_Wcast-align.patch +03_strict_focus.patch +04_support_drag_drop_with_alt_tab.patch +05_raise_on_click_for_click_mode.patch +10_no-ws-switcher.patch +11_hide_tooltip_on_decorator.patch +13_better_support_for_button_layout.patch +14_wrong_colormap.patch +15_detect_maximized_window.patch +16_paint_clone_unclipped.patch +17_add_overlay_key_signals.patch +18_unmimize.patch +50_texture_rectangle.patch +51_disable_mask_texture.patch +91_add_window_groups.patch +92_handle_event_mask_when_managing_window.patch +95_workaround_gdk_compat.patch +99_ltmain_as-needed.patch --- mutter-2.31.5.orig/debian/patches/16_paint_clone_unclipped.patch +++ mutter-2.31.5/debian/patches/16_paint_clone_unclipped.patch @@ -0,0 +1,15 @@ +Description: Paint the full region and not only the clipped one for clone +Origin: Ubuntu +Bug: ... +Author: Jason Smith +--- a/src/compositor/mutter-shaped-texture.c 2010-04-17 20:44:38.000000000 -0400 ++++ b/src/compositor/mutter-shaped-texture.c 2010-07-19 04:49:14.209580452 -0400 +@@ -376,7 +376,7 @@ + + clutter_actor_get_allocation_box (actor, &alloc); + +- if (priv->clip_region) ++ if (priv->clip_region && !clutter_actor_is_in_clone_paint (actor)) + { + GdkRectangle *rects; + int n_rects; --- mutter-2.31.5.orig/debian/patches/92_handle_event_mask_when_managing_window.patch +++ mutter-2.31.5/debian/patches/92_handle_event_mask_when_managing_window.patch @@ -0,0 +1,69 @@ +From 800f08d147a68aa4e8c890af5f18933825939018 Mon Sep 17 00:00:00 2001 +From: Owen W. Taylor +Date: Wed, 14 Jul 2010 16:08:16 -0400 +Subject: [PATCH] Don't screw up the event mask when "managing" our own windows + +When we do pseudo-management on an override-redirect window, we have to be +careful to augment the existing event mask, not replace it, or +delivery of pointer events will be disrupted. + +When we unmanage a window, we shouldn't try to unselect events at all, +since that will interfere with event selection done by GDK. + +http://bugzilla.gnome.org/show_bug.cgi?id=597763 +--- + src/core/window.c | 27 ++++++++++++++++++--------- + 1 files changed, 18 insertions(+), 9 deletions(-) + +diff --git a/src/core/window.c b/src/core/window.c +index ec92091..a9ab889 100644 +--- a/src/core/window.c ++++ b/src/core/window.c +@@ -636,7 +636,11 @@ meta_window_new_with_attrs (MetaDisplay *display, + if (attrs->override_redirect) + event_mask |= StructureNotifyMask; + +- XSelectInput (display->xdisplay, xwindow, event_mask); ++ /* If the window is from this client (a menu, say) we need to augment ++ * the event mask, not replace it. For windows from other clients, ++ * attrs->your_event_mask will be empty at this point. ++ */ ++ XSelectInput (display->xdisplay, xwindow, attrs->your_event_mask | event_mask); + + has_shape = FALSE; + #ifdef HAVE_SHAPE +@@ -1518,19 +1522,24 @@ meta_window_unmanage (MetaWindow *window, + XRemoveFromSaveSet (window->display->xdisplay, + window->xwindow); + +- /* Don't get events on not-managed windows */ +- XSelectInput (window->display->xdisplay, +- window->xwindow, +- NoEventMask); ++ /* Even though the window is now unmanaged, we can't unselect events. This ++ * window might be a window from this process, like a GdkMenu, in ++ * which case it will have pointer events and so forth selected ++ * for it by GDK. There's no way to disentangle those events from the events ++ * we've selected. Even for a window from a different X client, ++ * GDK could also have selected events for it for IPC purposes, so we ++ * can't unselect in that case either. ++ * ++ * Similarly, we can't unselected for events on window->user_time_window. ++ * It might be our own GDK focus window, or it might be a window that a ++ * different client is using for multiple different things: ++ * _NET_WM_USER_TIME_WINDOW and IPC, perhaps. ++ */ + +- /* Stop getting events for the window's _NET_WM_USER_TIME_WINDOW too */ + if (window->user_time_window != None) + { + meta_display_unregister_x_window (window->display, + window->user_time_window); +- XSelectInput (window->display->xdisplay, +- window->user_time_window, +- NoEventMask); + window->user_time_window = None; + } + +-- +1.7.1 \ No newline at end of file --- mutter-2.31.5.orig/debian/patches/00_git_get_back_pixmap.patch +++ mutter-2.31.5/debian/patches/00_git_get_back_pixmap.patch @@ -0,0 +1,125 @@ +From 0839c100c08932fdedacb7ceb43783431d5d3b6c Mon Sep 17 00:00:00 2001 +From: Florian Müllner +Date: Mon, 16 Aug 2010 17:20:44 +0000 +Subject: Use gdk_window_get_background_pattern() to clear the background + +gdk_window_get_back_pixmap() and gdk_window_get_background() have +been removed/deprecated. Use gdk_window_get_background_pattern() +as replacement. + +https://bugzilla.gnome.org/show_bug.cgi?id=626583 +--- +diff --git a/src/gdk-compat.h b/src/gdk-compat.h +index 236efab..31991e8 100644 +--- a/src/gdk-compat.h ++++ b/src/gdk-compat.h +@@ -11,24 +11,7 @@ + + #if !GTK_CHECK_VERSION (2, 21, 1) + +-#define gdk_window_get_background(w,c) *c = GDK_WINDOW_OBJECT (w)->bg_color + #define gdk_visual_get_depth(v) GDK_VISUAL(v)->depth +-#define gdk_window_get_back_pixmap(w,p,r) \ +- G_STMT_START { \ +- GdkWindowObject *priv = GDK_WINDOW_OBJECT (w); \ +- \ +- if (p != NULL) \ +- { \ +- if (priv->bg_pixmap == GDK_PARENT_RELATIVE_BG || \ +- priv->bg_pixmap == GDK_NO_BG) \ +- *p = NULL; \ +- else \ +- *p = priv->bg_pixmap; \ +- } \ +- \ +- if (r != NULL) \ +- *r = (priv->bg_pixmap == GDK_PARENT_RELATIVE_BG); \ +- } G_STMT_END + + #endif /*GTK_CHECK_VERSION */ + +diff --git a/src/ui/frames.c b/src/ui/frames.c +index 27a5381..5ec5b3a 100644 +--- a/src/ui/frames.c ++++ b/src/ui/frames.c +@@ -2004,32 +2004,64 @@ meta_frames_destroy_event (GtkWidget *widget, + return TRUE; + } + ++#if !GTK_CHECK_VERSION(2,21,6) ++/* Copied from GDK */ ++static cairo_pattern_t * ++gdk_window_get_background_pattern (GdkWindow *window) ++{ ++ GdkWindowObject *private = (GdkWindowObject *) window; ++ cairo_pattern_t *pattern; ++ ++ g_return_val_if_fail (GDK_IS_WINDOW (window), NULL); ++ ++ if (private->bg_pixmap == GDK_PARENT_RELATIVE_BG) ++ pattern = NULL; ++ else if (private->bg_pixmap != GDK_NO_BG && ++ private->bg_pixmap != NULL) ++ { ++ static cairo_user_data_key_t key; ++ cairo_surface_t *surface; ++ ++ surface = _gdk_drawable_ref_cairo_surface (private->bg_pixmap); ++ pattern = cairo_pattern_create_for_surface (surface); ++ cairo_surface_destroy (surface); ++ ++ cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); ++ cairo_pattern_set_user_data (pattern, ++ &key, ++ g_object_ref (private->bg_pixmap), ++ g_object_unref); ++ } ++ else ++ pattern = ++ cairo_pattern_create_rgb (private->bg_color.red / 65535., ++ private->bg_color.green / 65535., ++ private->bg_color.blue / 65535.); ++ } ++ ++ return pattern; ++} ++#endif ++ + static void + setup_bg_cr (cairo_t *cr, GdkWindow *window, int x_offset, int y_offset) + { + GdkWindow *parent = gdk_window_get_parent (window); +- GdkPixmap *back_pixmap; +- gboolean parent_relative; ++ cairo_pattern_t *bg_pattern; + +- gdk_window_get_back_pixmap (window, &back_pixmap, &parent_relative); +- if (parent_relative && parent) ++ bg_pattern = gdk_window_get_background_pattern (window); ++ if (bg_pattern == NULL && parent) + { + gint window_x, window_y; + + gdk_window_get_position (window, &window_x, &window_y); + setup_bg_cr (cr, parent, x_offset + window_x, y_offset + window_y); + } +- else if (back_pixmap) ++ else if (bg_pattern) + { +- gdk_cairo_set_source_pixmap (cr, back_pixmap, x_offset, y_offset); +- cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT); +- } +- else +- { +- GdkColor bg_color; +- +- gdk_window_get_background (window, &bg_color); +- gdk_cairo_set_source_color (cr, &bg_color); ++ cairo_translate (cr, - x_offset, - y_offset); ++ cairo_set_source (cr, bg_pattern); ++ cairo_translate (cr, x_offset, y_offset); + } + } + +-- +cgit v0.8.3.1 --- mutter-2.31.5.orig/debian/patches/51_disable_mask_texture.patch +++ mutter-2.31.5/debian/patches/51_disable_mask_texture.patch @@ -0,0 +1,26 @@ +Description: Disable the mask texture to enable mutter to work with + clutter eglx texture-from-pixmap: Because of missing GLES2 NPOT support in + clutter, the mask texture ends up being a sliced texture and cannot be + used for multi-texturing. +Author: Alexandros Frantzis +Last-Updated: 2010-11-11 +--- a/src/compositor/mutter-shaped-texture.c 2010-09-23 07:54:46 +0000 ++++ b/src/compositor/mutter-shaped-texture.c 2010-11-11 11:13:50 +0000 +@@ -354,13 +354,13 @@ + { + priv->material = cogl_material_new (); + +- cogl_material_set_layer_combine (priv->material, 1, ++ /* cogl_material_set_layer_combine (priv->material, 1, + "RGBA = MODULATE (PREVIOUS, TEXTURE[A])", +- NULL); ++ NULL); */ + } + material = priv->material; + +- cogl_material_set_layer (material, 1, priv->mask_texture); ++ /*cogl_material_set_layer (material, 1, priv->mask_texture);*/ + } + + cogl_material_set_layer (material, 0, paint_tex); + --- mutter-2.31.5.orig/debian/patches/14_wrong_colormap.patch +++ mutter-2.31.5/debian/patches/14_wrong_colormap.patch @@ -0,0 +1,22 @@ +From 00f0078808fa4e33cf4a5f1d88f33c121828a735 Mon Sep 17 00:00:00 2001 +From: Robert Ancell +Date: Wed, 2 Jun 2010 09:43:47 +1000 +Subject: [PATCH] Use gdk_screen_get_system_colormap with gdk_screen_get_system_visual as gdk_screen_get_default_colormap can return a colormap that is incompatible. + +--- + src/ui/ui.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +Index: metacity-2.30.1/src/ui/ui.c +=================================================================== +--- metacity-2.30.1.orig/src/ui/ui.c 2010-03-31 01:35:40.000000000 +1100 ++++ metacity-2.30.1/src/ui/ui.c 2010-06-02 09:52:38.250014076 +1000 +@@ -166,7 +166,7 @@ + gint attributes_mask; + GdkWindow *window; + GdkVisual *visual; +- GdkColormap *cmap = gdk_screen_get_default_colormap (screen); ++ GdkColormap *cmap = gdk_screen_get_system_colormap (screen); + + /* Default depth/visual handles clients with weird visuals; they can + * always be children of the root depth/visual obviously, but --- mutter-2.31.5.orig/debian/patches/91_add_window_groups.patch +++ mutter-2.31.5/debian/patches/91_add_window_groups.patch @@ -0,0 +1,249 @@ +diff -rup mutter-original/src/compositor/mutter-plugin.c mutter-mod/src/compositor/mutter-plugin.c +--- mutter-original/src/compositor/mutter-plugin.c 2009-10-02 15:50:14.000000000 -0400 ++++ mutter-mod/src/compositor/mutter-plugin.c 2010-01-21 11:01:59.780585475 -0500 +@@ -33,6 +33,7 @@ + + #include "compositor-private.h" + #include "mutter-window-private.h" ++#include "mutter-window-group.h" + + G_DEFINE_ABSTRACT_TYPE (MutterPlugin, mutter_plugin, G_TYPE_OBJECT); + +@@ -352,6 +353,48 @@ mutter_plugin_get_window_group (MutterPl + return mutter_get_window_group_for_screen (priv->screen); + } + ++ClutterActor * ++mutter_plugin_get_below_window_group (MutterPlugin *plugin) ++{ ++ ClutterActor *actor; ++ MutterWindowGroup *group; ++ MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv; ++ ++ ++ actor = mutter_get_window_group_for_screen (priv->screen); ++ group = MUTTER_WINDOW_GROUP (actor); ++ ++ return mutter_window_group_get_below (group); ++} ++ ++ClutterActor * ++mutter_plugin_get_normal_window_group (MutterPlugin *plugin) ++{ ++ ClutterActor *actor; ++ MutterWindowGroup *group; ++ MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv; ++ ++ ++ actor = mutter_get_window_group_for_screen (priv->screen); ++ group = MUTTER_WINDOW_GROUP (actor); ++ ++ return mutter_window_group_get_normal (group); ++} ++ ++ClutterActor * ++mutter_plugin_get_above_window_group (MutterPlugin *plugin) ++{ ++ ClutterActor *actor; ++ MutterWindowGroup *group; ++ MutterPluginPrivate *priv = MUTTER_PLUGIN (plugin)->priv; ++ ++ ++ actor = mutter_get_window_group_for_screen (priv->screen); ++ group = MUTTER_WINDOW_GROUP (actor); ++ ++ return mutter_window_group_get_above (group); ++} ++ + /** + * _mutter_plugin_effect_started: + * @plugin: the plugin +diff -rup mutter-original/src/compositor/mutter-window.c mutter-mod/src/compositor/mutter-window.c +--- mutter-original/src/compositor/mutter-window.c 2009-08-24 14:28:39.000000000 -0400 ++++ mutter-mod/src/compositor/mutter-window.c 2010-01-19 13:04:47.469591342 -0500 +@@ -19,6 +19,7 @@ + #include "compositor-private.h" + #include "mutter-shaped-texture.h" + #include "mutter-window-private.h" ++#include "mutter-window-group.h" + #include "shadow.h" + #include "tidy/tidy-texture-frame.h" + +@@ -1201,8 +1202,7 @@ mutter_window_new (MetaWindow *window) + /* Hang our compositor window state off the MetaWindow for fast retrieval */ + meta_window_set_compositor_private (window, G_OBJECT (self)); + +- clutter_container_add_actor (CLUTTER_CONTAINER (info->window_group), +- CLUTTER_ACTOR (self)); ++ mutter_window_group_pack_window (MUTTER_WINDOW_GROUP (info->window_group), self); + clutter_actor_hide (CLUTTER_ACTOR (self)); + + /* Initial position in the stack is arbitrary; stacking will be synced +diff -rup mutter-original/src/compositor/mutter-window-group.c mutter-mod/src/compositor/mutter-window-group.c +--- mutter-original/src/compositor/mutter-window-group.c 2009-08-19 10:46:43.000000000 -0400 ++++ mutter-mod/src/compositor/mutter-window-group.c 2010-01-19 21:34:45.310788603 -0500 +@@ -15,11 +15,72 @@ struct _MutterWindowGroup + { + ClutterGroup parent; + +- MetaScreen *screen; ++ MetaScreen *screen; ++ ClutterActor *above; ++ ClutterActor *normal; ++ ClutterActor *below; + }; + + G_DEFINE_TYPE (MutterWindowGroup, mutter_window_group, CLUTTER_TYPE_GROUP); + ++ClutterActor * ++mutter_window_group_get_above (MutterWindowGroup *group) ++{ ++ g_return_val_if_fail (MUTTER_IS_WINDOW_GROUP (group), NULL); ++ ++ return group->above; ++} ++ ++ClutterActor * ++mutter_window_group_get_normal (MutterWindowGroup *group) ++{ ++ g_return_val_if_fail (MUTTER_IS_WINDOW_GROUP (group), NULL); ++ ++ return group->normal; ++} ++ ++ClutterActor * ++mutter_window_group_get_below (MutterWindowGroup *group) ++{ ++ g_return_val_if_fail (MUTTER_IS_WINDOW_GROUP (group), NULL); ++ ++ return group->below; ++} ++ ++void ++mutter_window_group_pack_window (MutterWindowGroup *group, ++ MutterWindow *window) ++{ ++ MetaCompWindowType type; ++ ClutterContainer *container; ++ ++ g_return_if_fail (MUTTER_IS_WINDOW_GROUP (group)); ++ g_return_if_fail (MUTTER_IS_WINDOW (window)); ++ ++ type = mutter_window_get_window_type (window); ++ ++ if (type == META_COMP_WINDOW_DROPDOWN_MENU || ++ type == META_COMP_WINDOW_POPUP_MENU || ++ type == META_COMP_WINDOW_TOOLTIP || ++ type == META_COMP_WINDOW_NOTIFICATION || ++ type == META_COMP_WINDOW_COMBO || ++ type == META_COMP_WINDOW_DND || ++ type == META_COMP_WINDOW_OVERRIDE_OTHER) ++ { ++ container = CLUTTER_CONTAINER (group->above); ++ } ++ /*else if (type == META_COMP_WINDOW_DESKTOP) ++ { ++ container = CLUTTER_CONTAINER (group->below); ++ }*/ ++ else ++ { ++ container = CLUTTER_CONTAINER (group->normal); ++ } ++ ++ clutter_container_add_actor (container, CLUTTER_ACTOR (window)); ++} ++ + /* We want to find out if the window is "close enough" to + * 1:1 transform. We do that by converting the transformed coordinates + * to 24.8 fixed-point before checking if they look right. +@@ -95,6 +156,22 @@ actor_is_untransformed (ClutterActor *ac + return TRUE; + } + ++static GList * ++mutter_window_group_get_windows (MutterWindowGroup *window_group) ++{ ++ GList *children, *other; ++ ++ children = clutter_container_get_children (CLUTTER_CONTAINER (window_group->below)); ++ ++ other = clutter_container_get_children (CLUTTER_CONTAINER (window_group->normal)); ++ children = g_list_concat (children, other); ++ ++ other = clutter_container_get_children (CLUTTER_CONTAINER (window_group->above)); ++ children = g_list_concat (children, other); ++ ++ return children; ++} ++ + static void + mutter_window_group_paint (ClutterActor *actor) + { +@@ -107,7 +184,7 @@ mutter_window_group_paint (ClutterActor + * and subtract the opaque area of each window out of the visible + * region that we pass to the windows below. + */ +- children = clutter_container_get_children (CLUTTER_CONTAINER (actor)); ++ children = mutter_window_group_get_windows (window_group); + children = g_list_reverse (children); + + /* Start off with the full screen area (for a multihead setup, we +@@ -179,6 +256,17 @@ mutter_window_group_class_init (MutterWi + static void + mutter_window_group_init (MutterWindowGroup *window_group) + { ++ window_group->below = clutter_group_new (); ++ clutter_container_add_actor (CLUTTER_CONTAINER (window_group), window_group->below); ++ ++ window_group->normal = clutter_group_new (); ++ clutter_container_add_actor (CLUTTER_CONTAINER (window_group), window_group->normal); ++ ++ window_group->above = clutter_group_new (); ++ clutter_container_add_actor (CLUTTER_CONTAINER (window_group), window_group->above); ++ ++ clutter_container_raise_child (CLUTTER_CONTAINER (window_group), window_group->normal, NULL); ++ clutter_container_raise_child (CLUTTER_CONTAINER (window_group), window_group->above, NULL); + } + + ClutterActor * +diff -rup mutter-original/src/compositor/mutter-window-group.h mutter-mod/src/compositor/mutter-window-group.h +--- mutter-original/src/compositor/mutter-window-group.h 2009-08-05 17:53:31.000000000 -0400 ++++ mutter-mod/src/compositor/mutter-window-group.h 2010-01-19 11:34:26.599587232 -0500 +@@ -45,8 +45,16 @@ typedef struct _MutterWindowGroup + typedef struct _MutterWindowGroupClass MutterWindowGroupClass; + typedef struct _MutterWindowGroupPrivate MutterWindowGroupPrivate; + +-GType mutter_window_group_get_type (void); ++GType mutter_window_group_get_type (void); + +-ClutterActor *mutter_window_group_new (MetaScreen *screen); ++void mutter_window_group_pack_window (MutterWindowGroup *group, MutterWindow *window); ++ ++ClutterActor *mutter_window_group_get_above (MutterWindowGroup *group); ++ ++ClutterActor *mutter_window_group_get_normal (MutterWindowGroup *group); ++ ++ClutterActor *mutter_window_group_get_below (MutterWindowGroup *group); ++ ++ClutterActor *mutter_window_group_new (MetaScreen *screen); + + #endif /* MUTTER_WINDOW_GROUP_H */ +diff -rup mutter-original/src/include/mutter-plugin.h mutter-mod/src/include/mutter-plugin.h +--- mutter-original/src/include/mutter-plugin.h 2009-08-28 12:27:29.000000000 -0400 ++++ mutter-mod/src/include/mutter-plugin.h 2010-01-21 10:59:49.481835295 -0500 +@@ -236,6 +236,15 @@ ClutterActor * + mutter_plugin_get_window_group (MutterPlugin *plugin); + + ClutterActor * ++mutter_plugin_get_above_window_group (MutterPlugin *plugin); ++ ++ClutterActor * ++mutter_plugin_get_normal_window_group (MutterPlugin *plugin); ++ ++ClutterActor * ++mutter_plugin_get_below_window_group (MutterPlugin *plugin); ++ ++ClutterActor * + mutter_plugin_get_stage (MutterPlugin *plugin); + + void --- mutter-2.31.5.orig/debian/patches/15_detect_maximized_window.patch +++ mutter-2.31.5/debian/patches/15_detect_maximized_window.patch @@ -0,0 +1,59 @@ +Index: mutter-2.31.2/src/core/window.c +=================================================================== +--- mutter-2.31.2.orig/src/core/window.c 2010-06-07 16:18:06.415676136 +0200 ++++ mutter-2.31.2/src/core/window.c 2010-06-07 16:18:35.499676206 +0200 +@@ -1698,6 +1698,36 @@ + } + + gboolean ++meta_window_is_minimized (MetaWindow *window) ++{ ++ return window->minimized; ++} ++ ++gboolean ++meta_window_is_maximized (MetaWindow *window) ++{ ++ return META_WINDOW_MAXIMIZED(window); ++} ++ ++gboolean ++meta_window_is_maximized_horizontally (MetaWindow *window) ++{ ++ return META_WINDOW_MAXIMIZED_HORIZONTALLY (window); ++} ++ ++gboolean ++meta_window_is_maximized_vertically (MetaWindow *window) ++{ ++ return META_WINDOW_MAXIMIZED_VERTICALLY (window); ++} ++ ++gboolean ++meta_window_allows_resize (MetaWindow *window) ++{ ++ return META_WINDOW_ALLOWS_RESIZE (window); ++} ++ ++gboolean + meta_window_showing_on_its_workspace (MetaWindow *window) + { + gboolean showing; +Index: mutter-2.31.2/src/include/window.h +=================================================================== +--- mutter-2.31.2.orig/src/include/window.h 2010-06-07 16:18:12.031684237 +0200 ++++ mutter-2.31.2/src/include/window.h 2010-06-07 16:20:00.656728219 +0200 +@@ -89,6 +89,13 @@ + const char * meta_window_get_description (MetaWindow *window); + const char * meta_window_get_wm_class (MetaWindow *window); + const char * meta_window_get_wm_class_instance (MetaWindow *window); ++ ++gboolean meta_window_is_minimized (MetaWindow *window); ++gboolean meta_window_is_maximized (MetaWindow *window); ++gboolean meta_window_is_maximized_horizontally (MetaWindow *window); ++gboolean meta_window_is_maximized_vertically (MetaWindow *window); ++gboolean meta_window_allows_resize (MetaWindow *window); ++ + /* Return whether the window would be showing if we were on its workspace */ + gboolean meta_window_showing_on_its_workspace (MetaWindow *window); +