[compiz/f18] do some major changes

Wolfgang Ulbrich raveit65 at fedoraproject.org
Tue Dec 25 18:34:08 UTC 2012


commit 85a42723210f0ecadcbef7059f58e4bc16c1778f
Author: raveit <chat-to-me at raveit.de>
Date:   Tue Dec 25 19:33:43 2012 +0100

    do some major changes
    
    - disable mateconf and use libini text file configuration backend
    - remove mateconf from scriptlet section
    - move glib annotate svg plugins to core package
    - disable gtk-windows-decorator
    - drop compiz-mate-gtk compiz session script
    - disable gtk-windows-decorator patches
    - disable marco/metacity
    - disable mate/gnome
    - disable mate/gnome keybindings
    - insert compiz-mate-emerald compiz session script
    - insert compiz-xfce-emerald compiz session script
    - insert compiz-lxde-emerald compiz session script
    - add emerald as require
    - add matecompat icon
    - add icon cache scriptlets

 50-marco-navigation.xml                            |   82 ------
 50-marco-system.xml                                |    8 -
 50-marco-windows.xml                               |   36 ---
 compiz-add-cursor-theme-support.patch              |  257 ++++++++++++++++++
 compiz-disable-child-window-clipping.patch         |   43 +++
 compiz-mate-gtk => compiz-lxde-emerald             |   12 +-
 compiz-lxde-emerald.desktop                        |    8 +
 compiz-mate-gtk => compiz-mate-emerald             |    8 +-
 compiz-mate-emerald.desktop                        |    7 +
 compiz-mate-gtk.desktop                            |    8 -
 compiz-plugins-main_plugin-matecompat.svg          |  134 ++++++++++
 compiz-mate-gtk => compiz-xfce-emerald             |   12 +-
 compiz-xfce-emerald.desktop                        |    8 +
 compiz.spec                                        |  279 +++++++++++++-------
 ...z_always_unredirect_screensaver_on_nvidia.patch |   32 +++
 compiz_call_glxwaitx_before_drawing.patch          |   17 ++
 compiz_damage-report-non-empty.patch               |   83 ++++++
 compiz_draw_dock_shadows_on_desktop.patch          |   85 ++++++
 compiz_fix-no-border-window-shadow.patch           |   21 ++
 compiz_fullscreen_stacking_fixes.patch             |   17 ++
 ...iz_gtk_window_decoration_button_placement.patch |   42 ---
 compiz_optional-fbo.patch                          |   55 ++++
 compiz_stacking.patch                              |   16 ++
 compiz_windows-decorator.patch                     |   35 ---
 24 files changed, 981 insertions(+), 324 deletions(-)
---
diff --git a/compiz-add-cursor-theme-support.patch b/compiz-add-cursor-theme-support.patch
new file mode 100644
index 0000000..d6209b2
--- /dev/null
+++ b/compiz-add-cursor-theme-support.patch
@@ -0,0 +1,257 @@
+Author: Sebastien Bacher <seb128 at canonical.com>
+Description: add cursor theme and size support
+Origin: vendor, ubuntu (1:0.3.6-1ubuntu4)
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/compiz/+bug/86184
+
+Author: Jasmine Hassan <jasmine.aura at gmail.com>
+Description: Updated to migrate to Mate Desktop
+Origin: <other>, build for LMDE/Debian Testing
+Last-Updated: 2012-10-09
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -125,6 +125,7 @@ COMPIZ_REQUIRES="x11        \
+ 		 xdamage    \
+ 		 xrandr	    \
+ 		 xinerama   \
++		 xcursor    \
+ 		 ice	    \
+ 		 sm	    \
+ 		 libxml-2.0 \
+@@ -301,6 +302,7 @@ AC_ARG_ENABLE(mate-keybindings,
+ if test "x$use_gtk" = "xyes"; then
+   PKG_CHECK_MODULES(GTK_WINDOW_DECORATOR,
+ 		    xrender >= 0.8.4  \
++		    xcursor \
+ 		    gtk+-2.0 >= 2.8.0 \
+ 		    libwnck-1.0	      \
+ 		    pangocairo,
+--- a/gtk/window-decorator/gtk-window-decorator.c
++++ b/gtk/window-decorator/gtk-window-decorator.c
+@@ -30,6 +30,7 @@
+ #include <X11/cursorfont.h>
+ #include <X11/extensions/Xrender.h>
+ #include <X11/Xregion.h>
++#include <X11/Xcursor/Xcursor.h>
+ 
+ #ifndef GDK_DISABLE_DEPRECATED
+ #define GDK_DISABLE_DEPRECATED
+@@ -75,6 +76,14 @@
+ #include <marco-private/theme.h>
+ #endif
+ 
++#define MATE_MOUSE_DIR "/desktop/mate/peripherals/mouse"
++
++#define MATE_CURSOR_THEME_KEY		\
++    MATE_MOUSE_DIR "/cursor_theme"
++
++#define MATE_CURSOR_SIZE_KEY		\
++    MATE_MOUSE_DIR "/cursor_size"
++
+ #define MARCO_MATECONF_DIR "/apps/marco/general"
+ 
+ #define COMPIZ_USE_SYSTEM_FONT_KEY		    \
+@@ -138,6 +147,13 @@
+ #define WHEEL_ACTION_KEY   \
+     MATECONF_DIR "/mouse_wheel_action"
+ 
++#define COMPIZ_MATECONF_DIR2 "/apps/compiz/general/allscreens/options"
++#define COMPIZ_CURSOR_THEME_KEY          \
++    COMPIZ_MATECONF_DIR2 "/cursor_theme"
++
++#define COMPIZ_CURSOR_SIZE_KEY           \
++    COMPIZ_MATECONF_DIR2 "/cursor_size"
++
+ #define DBUS_DEST       "org.freedesktop.compiz"
+ #define DBUS_PATH       "/org/freedesktop/compiz/decoration/allscreens"
+ #define DBUS_INTERFACE  "org.freedesktop.compiz"
+@@ -6462,6 +6478,44 @@ button_layout_changed (MateConfClient *c
+ }
+ 
+ static void
++cursor_theme_changed (MateConfClient *client)
++{
++    gchar *theme;
++    gint size;
++
++    theme = mateconf_client_get_string(client, MATE_CURSOR_THEME_KEY, NULL);
++    size = mateconf_client_get_int(client, MATE_CURSOR_SIZE_KEY, NULL);
++
++    mateconf_client_set_string(client, COMPIZ_CURSOR_THEME_KEY, theme, NULL);
++
++    mateconf_client_set_int(client, COMPIZ_CURSOR_SIZE_KEY, size, NULL);
++
++    if (theme && strlen(theme))
++    {
++	gint i, j;
++	GdkDisplay *gdkdisplay = gdk_display_get_default ();
++	Display *xdisplay   = gdk_x11_display_get_xdisplay (gdkdisplay);
++
++
++	XcursorSetTheme (xdisplay, theme);
++	XcursorSetDefaultSize (xdisplay, size);
++
++	for (i = 0; i < 3; i++)
++	{
++	    for (j = 0; j < 3; j++)
++	    {
++		if (cursor[i][j].shape != XC_left_ptr)
++		{
++		    XFreeCursor (xdisplay, cursor[i][j].cursor);
++		    cursor[i][j].cursor =
++			XCreateFontCursor (xdisplay, cursor[i][j].shape);
++		}
++	    }
++	}
++    }
++}
++
++static void
+ value_changed (MateConfClient *client,
+ 	       const gchar *key,
+ 	       MateConfValue  *value,
+@@ -6539,6 +6593,11 @@ value_changed (MateConfClient *client,
+ 	if (theme_opacity_changed (client))
+ 	    changed = TRUE;
+     }
++    else if (strcmp (key, MATE_CURSOR_THEME_KEY) == 0 ||
++	     strcmp (key, MATE_CURSOR_SIZE_KEY) == 0)
++    {
++	cursor_theme_changed (client);
++    }
+ 
+     if (changed)
+ 	decorations_changed (data);
+@@ -6702,6 +6761,11 @@ init_settings (WnckScreen *screen)
+ 			  NULL);
+ 
+     mateconf_client_add_dir (mateconf,
++			  MATE_MOUSE_DIR,
++			  MATECONF_CLIENT_PRELOAD_ONELEVEL,
++			  NULL);
++
++    mateconf_client_add_dir (mateconf,
+ 			  COMPIZ_MATECONF_DIR1,
+ 			  MATECONF_CLIENT_PRELOAD_ONELEVEL,
+ 			  NULL);
+@@ -6710,6 +6774,9 @@ init_settings (WnckScreen *screen)
+ 		      "value_changed",
+ 		      G_CALLBACK (value_changed),
+ 		      screen);
++
++    cursor_theme_changed(mateconf);
++
+ #elif USE_DBUS_GLIB
+     DBusConnection *connection;
+     DBusMessage	   *reply;
+--- a/metadata/core.xml.in.in
++++ b/metadata/core.xml.in.in
+@@ -35,6 +35,18 @@
+ 		<min>0</min>
+ 		<max>10000</max>
+ 	    </option>
++	    <option name="cursor_theme" type="string">
++		<_short>Cursor theme</_short>
++		<_long>Cursor theme name</_long>
++		<default></default>
++	    </option>
++	    <option name="cursor_size" type="int">
++		<_short>Cursor size</_short>
++		<_long>Size of the cursor</_long>
++		<default>18</default>
++		<min>8</min>
++		<max>128</max>
++	    </option>
+ 	    <option name="ping_delay" type="int">
+ 		<_short>Ping Delay</_short>
+ 		<_long>Interval between ping messages</_long>
+--- a/src/display.c
++++ b/src/display.c
+@@ -41,6 +41,8 @@
+ #include <X11/extensions/Xcomposite.h>
+ #include <X11/extensions/Xrandr.h>
+ #include <X11/extensions/shape.h>
++#include <X11/Xcursor/Xcursor.h>
++#include <X11/cursorfont.h>
+ 
+ #include <compiz-core.h>
+ 
+@@ -474,6 +476,32 @@ shade (CompDisplay     *d,
+     return TRUE;
+ }
+ 
++static void
++compDisplaySetCursorTheme (CompDisplay *display)
++{
++    char *theme = display->opt[COMP_DISPLAY_OPTION_CURSOR_THEME].value.s;
++    int size = display->opt[COMP_DISPLAY_OPTION_CURSOR_SIZE].value.i;
++
++    if (theme && strlen(theme))
++    {
++	CompScreen *s;
++
++	XcursorSetTheme (display->display, theme);
++	XcursorSetDefaultSize (display->display, size);
++	for (s = display->screens; s; s = s->next)
++	{
++	    XFreeCursor (display->display, s->normalCursor);
++	    s->busyCursor = XCreateFontCursor (display->display, XC_watch);
++	    XFlush (display->display);
++
++	    XFreeCursor (display->display, s->normalCursor);
++	    s->normalCursor = XCreateFontCursor (display->display, XC_left_ptr);
++	    XDefineCursor (display->display, s->root, s->normalCursor);
++	    XFlush (display->display);
++	}
++    }
++}
++
+ const CompMetadataOptionInfo coreDisplayOptionInfo[COMP_DISPLAY_OPTION_NUM] = {
+     { "abi", "int", 0, 0, 0 },
+     { "active_plugins", "list", "<type>string</type>", 0, 0 },
+@@ -510,7 +538,9 @@ const CompMetadataOptionInfo coreDisplay
+     { "toggle_window_shaded_key", "key", 0, shade, 0 },
+     { "ignore_hints_when_maximized", "bool", 0, 0, 0 },
+     { "ping_delay", "int", "<min>1000</min>", 0, 0 },
+-    { "edge_delay", "int", "<min>0</min>", 0, 0 }
++    { "edge_delay", "int", "<min>0</min>", 0, 0 },
++    { "cursor_theme", "string", 0, 0, 0 },
++    { "cursor_size", "int", 0, 0, 0 }
+ };
+ 
+ CompOption *
+@@ -661,6 +691,20 @@ setDisplayOption (CompPlugin	  *plugin,
+ 	    return TRUE;
+ 	}
+ 	break;
++    case COMP_DISPLAY_OPTION_CURSOR_THEME:
++	if (compSetStringOption(o, value))
++	{
++	    compDisplaySetCursorTheme(display);
++	    return TRUE;
++	}
++	break;
++    case COMP_DISPLAY_OPTION_CURSOR_SIZE:
++	if (compSetIntOption(o, value))
++	{
++	    compDisplaySetCursorTheme(display);
++	    return TRUE;
++	}
++	break;
+     default:
+ 	if (compSetDisplayOption (display, o, value))
+ 	    return TRUE;
+--- a/include/compiz-core.h
++++ b/include/compiz-core.h
+@@ -776,7 +776,10 @@ removeFileWatch (CompFileWatchHandle han
+ #define COMP_DISPLAY_OPTION_IGNORE_HINTS_WHEN_MAXIMIZED      31
+ #define COMP_DISPLAY_OPTION_PING_DELAY			     32
+ #define COMP_DISPLAY_OPTION_EDGE_DELAY                       33
+-#define COMP_DISPLAY_OPTION_NUM				     34
++#define COMP_DISPLAY_OPTION_CURSOR_THEME                     34
++#define COMP_DISPLAY_OPTION_CURSOR_SIZE                      35
++#define COMP_DISPLAY_OPTION_NUM				     36
++
+ 
+ typedef void (*HandleEventProc) (CompDisplay *display,
+ 				 XEvent	     *event);
diff --git a/compiz-disable-child-window-clipping.patch b/compiz-disable-child-window-clipping.patch
new file mode 100644
index 0000000..40beb17
--- /dev/null
+++ b/compiz-disable-child-window-clipping.patch
@@ -0,0 +1,43 @@
+Author: Matthew Garrett <mjg59 at srcf.ucam.org>
+Description: Disable clipping of child windows
+ * This patch was modified to apply cleanly in 0.8.4-1
+Last-Modified: Thu, 11 Feb 2010 20:06:12 +0100
+Origin: vendor, ubuntu (1:0.3.6-1ubuntu10)
+
+--- a/src/display.c
++++ b/src/display.c
+@@ -2234,6 +2234,23 @@ addDisplay (const char *name)
+ 	lastScreen  = ScreenCount (dpy) - 1;
+     }
+ 
++    {
++	XSetWindowAttributes attr;
++	Atom atom;
++
++	attr.override_redirect = TRUE;
++	d->glIncludeInferiorsOwner =
++	    XCreateWindow (dpy, XRootWindow (dpy, 0),
++			   -100, -100, 1, 1, 0,
++			   CopyFromParent, CopyFromParent,
++			   CopyFromParent,
++			   CWOverrideRedirect,
++			   &attr);
++
++	atom = XInternAtom (dpy, "_COMPIZ_GL_INCLUDE_INFERIORS", False);
++	XSetSelectionOwner(dpy, atom, d->glIncludeInferiorsOwner, CurrentTime);
++    }
++
+     for (i = firstScreen; i <= lastScreen; i++)
+     {
+ 	Window		     newWmSnOwner = None, newCmSnOwner = None;
+--- a/include/compiz-core.h
++++ b/include/compiz-core.h
+@@ -1028,6 +1028,8 @@ struct _CompDisplay {
+ 
+     GLenum textureFilter;
+ 
++    Window glIncludeInferiorsOwner;
++
+     Window activeWindow;
+     Window nextActiveWindow;
+ 
diff --git a/compiz-mate-gtk b/compiz-lxde-emerald
similarity index 56%
copy from compiz-mate-gtk
copy to compiz-lxde-emerald
index a0656fc..9dfcea4 100644
--- a/compiz-mate-gtk
+++ b/compiz-lxde-emerald
@@ -1,12 +1,12 @@
 #!/bin/bash
 
 function runCompiz() {
-	gtk-window-decorator &
-	if ( [ -e /usr/lib/compizconfig/backends/libmateconf.so ] || [ -e /usr/lib64/compizconfig/backends/libmateconf.so ] )
+    if ( [ -e /usr/lib/compizconfig/backends/libini.so ] || [ -e /usr/lib64/compizconfig/backends/libini.so ] )
         then
-                exec compiz --ignore-desktop-hints ccp $@
+            exec compiz --replace --sm-disable --ignore-desktop-hints ccp &&
+            emerald --replace $@
         else
-        	exec compiz --ignore-desktop-hints glib mateconf matecompat $@
+        	exec compiz --replace --sm-disable --ignore-desktop-hints ccp glib ini $@
         fi
 }
 
@@ -28,5 +28,5 @@ if ( [ $ISSW == 0 ] && [ $HAVETFP -gt 2 ] ); then
 	runCompiz $@
 fi
 
-# Fall back to marco
-exec marco $@
+# Fall back to openbox-lxde
+exec openbox-lxde $@
diff --git a/compiz-lxde-emerald.desktop b/compiz-lxde-emerald.desktop
new file mode 100644
index 0000000..9998214
--- /dev/null
+++ b/compiz-lxde-emerald.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Application
+Name=Compiz
+TryExec=compiz-lxde-emerald
+Exec=compiz-lxde-emerald
+NoDisplay=true
+Name[de_DE]=compiz-lxde-emerald.desktop
+X-Desktop-File-Install-Version=0.21
diff --git a/compiz-mate-gtk b/compiz-mate-emerald
similarity index 61%
copy from compiz-mate-gtk
copy to compiz-mate-emerald
index a0656fc..a6798a8 100644
--- a/compiz-mate-gtk
+++ b/compiz-mate-emerald
@@ -1,12 +1,12 @@
 #!/bin/bash
 
 function runCompiz() {
-	gtk-window-decorator &
-	if ( [ -e /usr/lib/compizconfig/backends/libmateconf.so ] || [ -e /usr/lib64/compizconfig/backends/libmateconf.so ] )
+    if ( [ -e /usr/lib/compizconfig/backends/libini.so ] || [ -e /usr/lib64/compizconfig/backends/libini.so ] )
         then
-                exec compiz --ignore-desktop-hints ccp $@
+            exec compiz --replace --sm-disable --ignore-desktop-hints ccp &&
+            emerald --replace $@
         else
-        	exec compiz --ignore-desktop-hints glib mateconf matecompat $@
+        	exec compiz --replace --sm-disable --ignore-desktop-hints glib ini matecompat $@
         fi
 }
 
diff --git a/compiz-mate-emerald.desktop b/compiz-mate-emerald.desktop
new file mode 100644
index 0000000..1f3082d
--- /dev/null
+++ b/compiz-mate-emerald.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Type=Application
+Name=Compiz
+TryExec=compiz-mate-emerald
+Exec=compiz-mate-emerald
+NoDisplay=true
+Name[de_DE]=compiz-mate-emerald.desktop
diff --git a/compiz-plugins-main_plugin-matecompat.svg b/compiz-plugins-main_plugin-matecompat.svg
new file mode 100644
index 0000000..c5d3bf1
--- /dev/null
+++ b/compiz-plugins-main_plugin-matecompat.svg
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="svg3315"
+   version="1.1"
+   inkscape:version="0.48.1 r9760"
+   width="48"
+   height="48"
+   sodipodi:docname="mate.png">
+  <metadata
+     id="metadata3321">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3319" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="480"
+     id="namedview3317"
+     showgrid="false"
+     inkscape:zoom="5.9375"
+     inkscape:cx="24"
+     inkscape:cy="24"
+     inkscape:window-x="587"
+     inkscape:window-y="157"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg3315" />
+  <image
+     width="48"
+     height="48"
+     xlink:href="data:image/png;base64,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
+"
+     id="image3323"
+     x="0"
+     y="0" />
+</svg>
diff --git a/compiz-mate-gtk b/compiz-xfce-emerald
similarity index 57%
rename from compiz-mate-gtk
rename to compiz-xfce-emerald
index a0656fc..cc5bc45 100644
--- a/compiz-mate-gtk
+++ b/compiz-xfce-emerald
@@ -1,12 +1,12 @@
 #!/bin/bash
 
 function runCompiz() {
-	gtk-window-decorator &
-	if ( [ -e /usr/lib/compizconfig/backends/libmateconf.so ] || [ -e /usr/lib64/compizconfig/backends/libmateconf.so ] )
+    if ( [ -e /usr/lib/compizconfig/backends/libini.so ] || [ -e /usr/lib64/compizconfig/backends/libini.so ] )
         then
-                exec compiz --ignore-desktop-hints ccp $@
+            exec compiz --replace --sm-disable --ignore-desktop-hints ccp &&
+            emerald --replace $@
         else
-        	exec compiz --ignore-desktop-hints glib mateconf matecompat $@
+        	exec compiz --replace --sm-disable --ignore-desktop-hints ccp glib ini $@
         fi
 }
 
@@ -28,5 +28,5 @@ if ( [ $ISSW == 0 ] && [ $HAVETFP -gt 2 ] ); then
 	runCompiz $@
 fi
 
-# Fall back to marco
-exec marco $@
+# Fall back to xfwm4
+exec xfwm4 $@
diff --git a/compiz-xfce-emerald.desktop b/compiz-xfce-emerald.desktop
new file mode 100644
index 0000000..d9091f3
--- /dev/null
+++ b/compiz-xfce-emerald.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Application
+Name=Compiz
+TryExec=compiz-xfce-emerald
+Exec=compiz-xfce-emerald
+NoDisplay=true
+Name[de_DE]=compiz-xfce-emerald.desktop
+X-Desktop-File-Install-Version=0.21
diff --git a/compiz.spec b/compiz.spec
index 4109e56..cb9ebb3 100644
--- a/compiz.spec
+++ b/compiz.spec
@@ -1,27 +1,29 @@
-%global    core_plugins    blur clone cube dbus decoration fade ini inotify minimize move place png regex resize rotate scale screenshot switcher video water wobbly zoom fs obs commands wall
-
-%global    mate_plugins    annotate mateconf glib svg matecompat
-
+%global    core_plugins    blur clone cube dbus decoration fade ini inotify minimize move place png regex resize rotate scale screenshot switcher video water wobbly zoom fs obs commands wall glib annotate svg
+ 
+%global    mate_plugins    matecompat
+ 
 # List of plugins passed to ./configure.  The order is important
+ 
+%global    plugins         core,glib,dbus,png,svg,video,screenshot,decoration,clone,place,fade,minimize,move,resize,switcher,scale,wall,obs
 
-%global    plugins         core,glib,mateconf,dbus,png,svg,video,screenshot,decoration,clone,place,fade,minimize,move,resize,switcher,scale,wall,obs
 
 Name:           compiz
 URL:            http://www.compiz.org
 License:        GPLv2+ and LGPLv2+ and MIT
 Group:          User Interface/Desktops
 Version:        0.8.8
-Release:        7%{?dist}
+Release:        11%{?dist}
 Epoch:          1
 Summary:        OpenGL window and compositing manager
-
+ 
 # libdrm is not available on these arches
 ExcludeArch:   s390 s390x
-
+ 
 Requires:       system-logos
 Requires:       glx-utils
-Requires(post): desktop-file-utils
-
+# this is an inverse require which is needed for build without gtk-windows-decorator
+Requires:       emerald
+ 
 BuildRequires: libX11-devel
 BuildRequires: libdrm-devel
 BuildRequires: libwnck-devel
@@ -35,8 +37,6 @@ BuildRequires: libXt-devel
 BuildRequires: libSM-devel
 BuildRequires: libICE-devel
 BuildRequires: libXmu-devel
-BuildRequires: mate-desktop-devel
-BuildRequires: mate-control-center-devel
 BuildRequires: mate-conf-devel
 BuildRequires: desktop-file-utils
 BuildRequires: intltool
@@ -44,25 +44,27 @@ BuildRequires: gettext
 BuildRequires: dbus-devel
 BuildRequires: dbus-glib-devel
 BuildRequires: librsvg2-devel
-BuildRequires: mate-window-manager-devel
 BuildRequires: mesa-libGLU-devel
 BuildRequires: fuse-devel
 BuildRequires: cairo-devel
 BuildRequires: libtool
 BuildRequires: libxslt-devel
 
+ 
 Source0:       http://releases.compiz.org/%{version}/%{name}-%{version}.tar.bz2
-Source2:       compiz-mate-gtk
-Source3:       compiz-mate-gtk.desktop
-Source4:       50-marco-navigation.xml
-Source5:       50-marco-system.xml
-Source6:       50-marco-windows.xml
-
+Source2:       compiz-mate-emerald
+Source3:       compiz-mate-emerald.desktop
+Source4:       compiz-xfce-emerald
+Source5:       compiz-xfce-emerald.desktop
+Source6:       compiz-lxde-emerald
+Source7:       compiz-lxde-emerald.desktop
+Source8:       compiz-plugins-main_plugin-matecompat.svg
+ 
 # fork gnome to mate
 Patch0:        comiz_mate_fork.patch
 # fix http://forums.mate-desktop.org/viewtopic.php?f=8&t=818
-Patch1:        compiz_gtk_window_decoration_button_placement.patch
-Patch2:        compiz_windows-decorator.patch
+#Patch1:        compiz_gtk_window_decoration_button_placement.patch
+#Patch2:        compiz_windows-decorator.patch
 # Patches that are not upstream
 Patch3:        composite-cube-logo.patch
 Patch4:        fedora-logo.patch
@@ -71,7 +73,20 @@ Patch6:        compiz-0.8.6-wall.patch
 Patch7:        compiz-0.8.6-unloadpluginfix.patch
 Patch8:        no-more-mate-wm-settings.patch
 Patch9:        compiz-0.88_incorrect-fsf-address.patch
-
+Patch10:       compiz-disable-child-window-clipping.patch
+Patch11:       compiz-add-cursor-theme-support.patch
+#Patch12:       compiz-fix-gtk-window-decorator-no-argb-crash.patch
+Patch13:       compiz_fix-no-border-window-shadow.patch
+Patch14:       compiz_draw_dock_shadows_on_desktop.patch
+Patch15:       compiz_optional-fbo.patch
+Patch16:       compiz_call_glxwaitx_before_drawing.patch
+Patch17:       compiz_always_unredirect_screensaver_on_nvidia.patch
+#Patch18:       compiz_hide_tooltip_on_decorator.patch
+Patch19:       compiz_fullscreen_stacking_fixes.patch
+Patch20:       compiz_damage-report-non-empty.patch
+Patch21:       compiz_stacking.patch
+ 
+ 
 %description
 Compiz is one of the first OpenGL-accelerated compositing window
 managers for the X Window System. The integration allows it to perform
@@ -79,7 +94,7 @@ compositing effects in window management, such as a minimization
 effect and a cube work space. Compiz is an OpenGL compositing manager
 that use Compiz use EXT_texture_from_pixmap OpenGL extension for
 binding redirected top-level windows to texture objects.
-
+ 
 %package devel
 Summary: Development packages for compiz
 Group: Development/Libraries
@@ -88,32 +103,47 @@ Requires: pkgconfig
 Requires: libXcomposite-devel libXfixes-devel libXdamage-devel libXrandr-devel
 Requires: libXinerama-devel libICE-devel libSM-devel libxml2-devel
 Requires: libxslt-devel startup-notification-devel
-
+ 
 %description devel
 The compiz-devel package includes the header files,
 and developer docs for the compiz package.
-
+ 
 Install compiz-devel if you want to develop plugins for the compiz
 windows and compositing manager.
-
+ 
 %package mate
 Summary: Compiz mate integration bits
 Group: User Interface/Desktops
 Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
-Requires(pre): mate-conf
-Requires(post): mate-conf
-Requires(preun): mate-conf
-
+ 
 %description mate
-The compiz-mate package contains gtk-window-decorator,
-and other mate integration related stuff.
+The compiz-mate package contains matecompat plugin
+and a compiz start script for mate.
 
+%package xfce
+Summary: Compiz mate integration bits
+Group: User Interface/Desktops
+Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
+ 
+%description xfce
+The compiz-xfce package contains a compiz start script
+for xfce.
+
+%package lxde
+Summary: Compiz mate integration bits
+Group: User Interface/Desktops
+Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
+ 
+%description lxde
+The compiz-lxde package contains a compiz start script
+for lxde.
 
+ 
 %prep
 %setup -q
 %patch0 -p1 -b .comiz_mate_fork
-%patch1 -p1 -b .compiz_gtk_window_decoration_button
-%patch2 -p1 -b .compiz_windows-decorator
+#%patch1 -p1 -b .compiz_gtk_window_decoration_button
+#%patch2 -p1 -b .compiz_windows-decorator
 %patch3 -p1 -b .composite-cube-logo
 %if 0%{?fedora}
 %patch4 -p1 -b .fedora-logo
@@ -124,89 +154,113 @@ and other mate integration related stuff.
 %patch7 -p1 -b .unloadfix
 %patch8 -p1 -b .mate-wm-settings
 %patch9 -p1 -b .incorrect-fsf-address
-
+%patch11 -p1 -b .cursor-theme-support
+#%patch12 -p1 -b .gtk-window-decorator-no-argb-crash
+%patch13 -p1 -b .no-border-window-shadow
+%patch14 -p1 -b .draw_dock_shadows
+%patch15 -p1 -b .fbo
+%patch16 -p1 -b .glxwaitx_before_drawing
+%patch17 -p1 -b .always_unredirect_screensaver
+#%patch18 -p1 -b .tooltip_on_decorator
+%patch19 -p1 -b .fullscreen_stacking
+%patch20 -p1 -b .damage-report
+%patch21 -p1 -b .stacking
+ 
+ 
 %build
-
+ 
 libtoolize
 aclocal
 autoconf
 automake
 %configure \
-    --enable-mateconf \
+    --disable-mateconf \
     --enable-dbus \
     --enable-librsvg \
-    --enable-gtk \
-    --enable-marco \
+    --disable-gtk \
+    --disable-marco \
     --enable-mate \
     --with-default-plugins=%{plugins} \
-    --enable-mate-keybindings \
+    --disable-mate-keybindings \
     --disable-kde \
     --disable-kde4 \
     --disable-kconfig
 
+ 
 make %{?_smp_mflags} imagedir=%{_datadir}/pixmaps
-
-
+ 
+ 
 %install
-export MATECONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1
 make DESTDIR=$RPM_BUILD_ROOT install || exit 1
-unset MATECONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
 
 install %SOURCE2 $RPM_BUILD_ROOT%{_bindir}
+install %SOURCE4 $RPM_BUILD_ROOT%{_bindir}
+install %SOURCE6 $RPM_BUILD_ROOT%{_bindir}
 
 desktop-file-install --vendor="" \
   --dir $RPM_BUILD_ROOT%{_datadir}/applications \
   %SOURCE3
+desktop-file-install --vendor="" \
+  --dir $RPM_BUILD_ROOT%{_datadir}/applications \
+  %SOURCE5
+desktop-file-install --vendor="" \
+  --dir $RPM_BUILD_ROOT%{_datadir}/applications \
+  %SOURCE7
 
-rm $RPM_BUILD_ROOT%{_datadir}/compiz/kconfig.xml
-rm $RPM_BUILD_ROOT%{_sysconfdir}/mateconf/schemas/compiz-kconfig.schemas
+# matecompat icon
+mkdir -p $RPM_BUILD_ROOT%{_datadir}/ccsm/icons/hicolor/scalable/apps
+cp -f %SOURCE8 $RPM_BUILD_ROOT%{_datadir}/ccsm/icons/hicolor/scalable/apps/plugin-matecompat.svg
 
+rm $RPM_BUILD_ROOT%{_datadir}/compiz/kconfig.xml
+rm $RPM_BUILD_ROOT%{_datadir}/compiz/mateconf.xml
+rm $RPM_BUILD_ROOT%{_datadir}/applications/compiz.desktop
+ 
 find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'
 find $RPM_BUILD_ROOT -name '*.a' -exec rm -f {} ';'
 
-# create compiz keybindings file based on the marco ones
-# lifted straight from Ubuntu, as long as installation of the upstream
-# ones is broken at least (I've reported this upstream)
-mkdir -p $RPM_BUILD_ROOT/%{_datadir}/mate-control-center/keybindings
-sed 's/wm_name=\"Marco\" package=\"marco\"/wm_name=\"Compiz\" package=\"compiz\"/'  /usr/share/mate-control-center/keybindings/50-marco-desktop-key.xml > $RPM_BUILD_ROOT/%{_datadir}/mate-control-center/keybindings/50-compiz-desktop-key.xml
-sed 's/wm_name=\"Marco\" package=\"marco\"/wm_name=\"Compiz\" package=\"compiz\"/'  /usr/share/mate-control-center/keybindings/50-marco-key.xml > $RPM_BUILD_ROOT/%{_datadir}/mate-control-center/keybindings/50-compiz-key.xml
-
-cp %SOURCE4 $RPM_BUILD_ROOT%{_datadir}/mate-control-center/keybindings/50-compiz-navigation.xml
-cp %SOURCE5 $RPM_BUILD_ROOT%{_datadir}/mate-control-center/keybindings/50-compiz-system.xml
-cp %SOURCE6 $RPM_BUILD_ROOT%{_datadir}/mate-control-center/keybindings/50-compiz-windows.xml
-
-sed -i 's#key=\"/apps/marco/general/num_workspaces\" comparison=\"gt\"##g' $RPM_BUILD_ROOT/%{_datadir}/mate-control-center/keybindings/50-compiz-desktop-key.xml
-sed -i 's#key=\"/apps/marco/general/num_workspaces\" comparison=\"gt\"##g' $RPM_BUILD_ROOT/%{_datadir}/mate-control-center/keybindings/50-compiz-key.xml
-
-
-%find_lang compiz
-
-cat compiz.lang > core-files.txt
-
+%find_lang %{name}
+ 
+cat %{name}.lang > core-files.txt
+ 
 for f in %{core_plugins}; do
   echo %{_libdir}/compiz/lib$f.so
   echo %{_datadir}/compiz/$f.xml
 done >> core-files.txt
-
+ 
 for f in %{mate_plugins}; do
   echo %{_libdir}/compiz/lib$f.so
   echo %{_datadir}/compiz/$f.xml
 done >> mate-files.txt
-
-%post -p /sbin/ldconfig
-
-%postun -p /sbin/ldconfig
-
-%post mate
-%mateconf_schema_upgrade compiz-annotate compiz-blur compiz-clone compiz-commands compiz-core compiz-cube compiz-dbus compiz-decoration compiz-fade compiz-fs compiz-glib compiz-ini compiz-inotify compiz-matecompat compiz-mateconf compiz-minimize compiz-move compiz-obs compiz-place compiz-png compiz-regex compiz-resize compiz-rotate compiz-scale compiz-screenshot compiz-svg compiz-switcher compiz-video compiz-wall compiz-water compiz-wobbly compiz-zoom gwd
-
-%pre mate
-%mateconf_schema_prepare compiz-annotate compiz-blur compiz-clone compiz-commands compiz-core compiz-cube compiz-dbus compiz-decoration compiz-fade compiz-fs compiz-glib compiz-ini compiz-inotify compiz-matecompat compiz-mateconf compiz-minimize compiz-move compiz-obs compiz-place compiz-png compiz-regex compiz-resize compiz-rotate compiz-scale compiz-screenshot compiz-svg compiz-switcher compiz-video compiz-wall compiz-water compiz-wobbly compiz-zoom gwd
-%gconf_schema_obsolete compiz-kconfig
-
-%preun mate
-%mateconf_schema_remove compiz-annotate compiz-blur compiz-clone compiz-commands compiz-core compiz-cube compiz-dbus compiz-decoration compiz-fade compiz-fs compiz-glib compiz-ini compiz-inotify compiz-matecompat compiz-mateconf compiz-minimize compiz-move compiz-obs compiz-place compiz-png compiz-regex compiz-resize compiz-rotate compiz-scale compiz-screenshot compiz-svg compiz-switcher compiz-video compiz-wall compiz-water compiz-wobbly compiz-zoom gwd
-
+ 
+ 
+%check
+desktop-file-validate $RPM_BUILD_ROOT/%{_datadir}/applications/compiz-mate-emerald.desktop
+desktop-file-validate $RPM_BUILD_ROOT/%{_datadir}/applications/compiz-xfce-emerald.desktop
+desktop-file-validate $RPM_BUILD_ROOT/%{_datadir}/applications/compiz-lxde-emerald.desktop
+ 
+ 
+%post
+/sbin/ldconfig
+/bin/touch --no-create %{_datadir}/compiz &>/dev/null || :
+/bin/touch --no-create %{_datadir}/ccsm/icons/hicolor/scalable/apps &>/dev/null || :
+ 
+%postun
+/sbin/ldconfig
+if [ $1 -eq 0 ] ; then
+    /bin/touch --no-create %{_datadir}/compiz &>/dev/null
+    /usr/bin/gtk-update-icon-cache %{_datadir}/compiz &>/dev/null || :
+fi
+if [ $1 -eq 0 ] ; then
+    /bin/touch --no-create %{_datadir}/ccsm/icons/hicolor/scalable/apps &>/dev/null
+    /usr/bin/gtk-update-icon-cache %{_datadir}/ccsm/icons/hicolor/scalable/apps &>/dev/null || :
+fi
+
+%posttrans
+/usr/bin/gtk-update-icon-cache %{_datadir}/compiz &>/dev/null || :
+/usr/bin/gtk-update-icon-cache %{_datadir}/ccsm/icons/hicolor/scalable/apps &>/dev/null || :
+
+ 
+ 
 %files -f core-files.txt
 %doc AUTHORS ChangeLog COPYING.GPL COPYING.LGPL README TODO NEWS
 %{_bindir}/compiz
@@ -215,33 +269,64 @@ done >> mate-files.txt
 %dir %{_datadir}/compiz
 %{_datadir}/compiz/*.png
 %{_datadir}/compiz/core.xml
-
-
+ 
 %files mate -f mate-files.txt
-%{_bindir}/compiz-mate-gtk
-%{_bindir}/gtk-window-decorator
-%{_datadir}/mate-control-center/keybindings/50-compiz-desktop-key.xml
-%{_datadir}/mate-control-center/keybindings/50-compiz-key.xml
-%{_datadir}/mate-control-center/keybindings/50-compiz-navigation.xml
-%{_datadir}/mate-control-center/keybindings/50-compiz-system.xml
-%{_datadir}/mate-control-center/keybindings/50-compiz-windows.xml
-%{_datadir}/applications/compiz-mate-gtk.desktop
-%exclude %{_datadir}/applications/compiz.desktop
-%config(noreplace) %{_sysconfdir}/mateconf/schemas/*.schemas
-
-
+%{_bindir}/compiz-mate-emerald
+%{_datadir}/applications/compiz-mate-emerald.desktop
+%{_datadir}/ccsm/icons/hicolor/scalable/apps/plugin-matecompat.svg
+
+%files xfce
+%{_bindir}/compiz-xfce-emerald
+%{_datadir}/applications/compiz-xfce-emerald.desktop
+
+%files lxde
+%{_bindir}/compiz-lxde-emerald
+%{_datadir}/applications/compiz-lxde-emerald.desktop
+ 
 %files devel
 %{_libdir}/pkgconfig/compiz.pc
 %{_libdir}/pkgconfig/libdecoration.pc
 %{_libdir}/pkgconfig/compiz-cube.pc
-%{_libdir}/pkgconfig/compiz-mateconf.pc
 %{_libdir}/pkgconfig/compiz-scale.pc
-%{_datadir}/compiz/schemas.xslt
 %{_includedir}/compiz/
 %{_libdir}/libdecoration.so
 
 
 %changelog
+* Sat Dec 22 2012 Wolfgang Ulbrich <chat-to-me at raveit.de> - 1:0.8.8-11
+- do some major changes
+- disable mateconf and use libini text file configuration backend
+- remove mateconf from scriptlet section
+- move glib annotate svg plugins to core package
+- disable gtk-windows-decorator
+- drop compiz-mate-gtk compiz session script
+- disable gtk-windows-decorator patches
+- disable marco/metacity
+- disable mate/gnome
+- disable mate/gnome keybindings
+- insert compiz-mate-emerald compiz session script
+- insert compiz-xfce-emerald compiz session script
+- insert compiz-lxde-emerald compiz session script
+- add emerald as require
+- add matecompat icon
+- add icon cache scriptlets 
+
+
+* Sun Dec 02 2012 Wolfgang Ulbrich <chat-to-me at raveit.de> - 1:0.8.8-10
+- add %%global  plugins_schemas again
+
+* Sun Dec 02 2012 Wolfgang Ulbrich <chat-to-me at raveit.de> - 1:0.8.8-9
+- revert scriptlet change
+
+* Sun Dec 02 2012 Wolfgang Ulbrich <chat-to-me at raveit.de> - 1:0.8.8-8
+- add %%global  plugins_schemas
+- change mateconf scriptlets
+- remove (Requires(post): desktop-file-utils)
+- add some patches from Jasmine Hassan jasmine.aura at gmail.com
+- remove (noreplace) from mateconf schema directory
+- add desktop-file-validate
+- disable mate keybindings for the moment
+
 * Fri Oct 05 2012 Leigh Scott <leigh123linux at googlemail.com> - 1:0.8.8-7
 - remove and obsolete compiz-kconfig schema
 
diff --git a/compiz_always_unredirect_screensaver_on_nvidia.patch b/compiz_always_unredirect_screensaver_on_nvidia.patch
new file mode 100644
index 0000000..14f3aa7
--- /dev/null
+++ b/compiz_always_unredirect_screensaver_on_nvidia.patch
@@ -0,0 +1,32 @@
+Author: Travis Watkins <amaranth at ubuntu.com>
+Description: Always unredirect mate-screensaver when using nvidia
+ Workaround for LP #160264 while still disabling unredirect fullscreen
+ windows for nvidia users
+Origin: vendor, ubuntu (1:0.8.3+git20090917-0ubuntu4)
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/compiz/+bug/160264
+--- a/src/paint.c
++++ b/src/paint.c
+@@ -262,6 +262,7 @@ paintOutputRegion (CompScreen	       *sc
+     CompTransform vTransform;
+     int           offX, offY;
+     Region        clip = region;
++    int           dontcare;
+ 
+     if (!tmpRegion)
+     {
+@@ -341,8 +342,14 @@ paintOutputRegion (CompScreen	       *sc
+ 		    XSubtractRegion (tmpRegion, w->region, tmpRegion);
+ 
+ 		/* unredirect top most fullscreen windows. */
++		/* if the fullscreen window is mate-screensaver and we're
++		   on nvidia we want to always unredirect even if this
++		   option is disabled to work around LP #160264 */
+ 		if (count == 0 &&
+-		    screen->opt[COMP_SCREEN_OPTION_UNREDIRECT_FS].value.b)
++		    (screen->opt[COMP_SCREEN_OPTION_UNREDIRECT_FS].value.b ||
++		    (w->resName && !strcmp(w->resName, "mate-screensaver") &&
++		    XQueryExtension (screen->display->display, "NV-GLX",
++				     &dontcare, &dontcare, &dontcare))))
+ 		{
+ 		    if (XEqualRegion (w->region, &screen->region) &&
+ 			!REGION_NOT_EMPTY (tmpRegion))
diff --git a/compiz_call_glxwaitx_before_drawing.patch b/compiz_call_glxwaitx_before_drawing.patch
new file mode 100644
index 0000000..3fc881b
--- /dev/null
+++ b/compiz_call_glxwaitx_before_drawing.patch
@@ -0,0 +1,17 @@
+Author: Travis Watkins <amaranth at ubuntu.com>
+Description: Call glXWaitX before we start drawing
+ Call glXWaitX before we start drawing to make sure X is done
+ handling rendering calls. Suggested by Michel Dänzer to ensure
+ we don't have any rendering glitches.
+Origin: vendor, ubuntu (1:0.8.3+git20090917-0ubuntu3)
+--- a/src/display.c
++++ b/src/display.c
+@@ -1537,6 +1537,8 @@ eventLoop (void)
+ 			    timeDiff = 0;
+ 
+ 			makeScreenCurrent (s);
++			/* make sure X is ready for us to draw */
++			glXWaitX ();
+ 
+ 			if (s->slowAnimations)
+ 			{
diff --git a/compiz_damage-report-non-empty.patch b/compiz_damage-report-non-empty.patch
new file mode 100644
index 0000000..33079f0
--- /dev/null
+++ b/compiz_damage-report-non-empty.patch
@@ -0,0 +1,83 @@
+Author: Michael Vogt <michael.vogt at ubuntu.com>
+Description: Workaround for problems with damage extension and refresh
+ Add workaround patch by Aaron Plattner to fix problems with the damage
+ extension and refresh (LP: #269904)
+Origin: vendor, ubuntu (1:0.7.8-0ubuntu4)
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/compiz/+bug/269904
+--- a/src/event.c
++++ b/src/event.c
+@@ -2315,32 +2315,50 @@ handleEvent (CompDisplay *d,
+ 
+ 	    if (w)
+ 	    {
++		XserverRegion parts = XFixesCreateRegion(de->display, NULL, 0);
++		XRectangle *rects;
++		int nRects;
++
+ 		w->texture->oldMipmaps = TRUE;
+ 
++		// Get the damage region
++		XDamageSubtract(de->display, de->damage, None, parts);
++		rects = XFixesFetchRegion(de->display, parts, &nRects);
++		XFixesDestroyRegion(de->display, parts);
++
+ 		if (w->syncWait)
+ 		{
+-		    if (w->nDamage == w->sizeDamage)
++		    int i;
++
++		    if (w->nDamage + nRects - 1 >= w->sizeDamage)
+ 		    {
+ 			w->damageRects = realloc (w->damageRects,
+-						  (w->sizeDamage + 1) *
++						  (w->sizeDamage + nRects) *
+ 						  sizeof (XRectangle));
+-			w->sizeDamage += 1;
++			w->sizeDamage += nRects;
+ 		    }
+ 
+-		    w->damageRects[w->nDamage].x      = de->area.x;
+-		    w->damageRects[w->nDamage].y      = de->area.y;
+-		    w->damageRects[w->nDamage].width  = de->area.width;
+-		    w->damageRects[w->nDamage].height = de->area.height;
+-		    w->nDamage++;
++		    for (i = 0; i < nRects; i++)
++		    {
++			w->damageRects[w->nDamage] = rects[i];
++			w->nDamage++;
++		    }
+ 		}
+ 		else
+ 		{
+-		    handleWindowDamageRect (w,
+-					    de->area.x,
+-					    de->area.y,
+-					    de->area.width,
+-					    de->area.height);
++		    int i;
++
++		    for (i = 0; i < nRects; i++)
++		    {
++			handleWindowDamageRect (w,
++						rects[i].x,
++						rects[i].y,
++						rects[i].width,
++						rects[i].height);
++		    }
+ 		}
++
++		XFree(rects);
+ 	    }
+ 	}
+ 	else if (d->shapeExtension &&
+--- a/src/window.c
++++ b/src/window.c
+@@ -2207,7 +2207,7 @@ addWindow (CompScreen *screen,
+ 	XUnionRegion (&rect, w->region, w->region);
+ 
+ 	w->damage = XDamageCreate (d->display, id,
+-				   XDamageReportRawRectangles);
++				   XDamageReportNonEmpty);
+ 
+ 	/* need to check for DisplayModal state on all windows */
+ 	w->state = getWindowState (d, w->id);
diff --git a/compiz_draw_dock_shadows_on_desktop.patch b/compiz_draw_dock_shadows_on_desktop.patch
new file mode 100644
index 0000000..2259bc9
--- /dev/null
+++ b/compiz_draw_dock_shadows_on_desktop.patch
@@ -0,0 +1,85 @@
+Author: Travis Watkins <amaranth at ubuntu.com>
+Description: Change decoration plugin dock shadow drawing behavior
+ change decoration plugin to draw dock shadows only on the
+ desktop window instead of on top of all other windows
+Origin: vendor, ubuntu (1:0.8.2-0ubuntu16)
+--- a/plugins/decoration.c
++++ b/plugins/decoration.c
+@@ -190,6 +190,11 @@ decorDrawWindow (CompWindow	      *w,
+     status = (*w->screen->drawWindow) (w, transform, attrib, region, mask);
+     WRAP (ds, w->screen, drawWindow, decorDrawWindow);
+ 
++    /* we wait to draw dock shadows until we get to the lowest
++       desktop window in the stack */
++    if (w->type & CompWindowTypeDockMask)
++	return status;
++
+     if (mask & PAINT_WINDOW_TRANSFORMED_MASK)
+ 	region = &infiniteRegion;
+ 
+@@ -226,6 +231,65 @@ decorDrawWindow (CompWindow	      *w,
+ 					     attrib, mask);
+     }
+ 
++    if (w->type & CompWindowTypeDesktopMask)
++    {
++	/* we only want to draw on the lowest desktop window, find it and see
++	   if we the window we have is it */
++	CompWindow *window = w->screen->windows;
++	for (window = w->screen->windows; window; window = window->next)
++	{
++	    if (window->type & CompWindowTypeDesktopMask)
++	    {
++		if (window == w)
++		    break;
++		else
++		    return status;
++	    }
++	}
++
++	/* drawing dock shadows now */
++	for (window = w->screen->windows; window; window = window->next)
++	{
++	    if (window->type & CompWindowTypeDockMask && !window->destroyed && !window->invisible)
++	    {
++		DECOR_WINDOW (window);
++
++		if (dw->wd && region->numRects)
++		{
++		    WindowDecoration *wd = dw->wd;
++		    REGION	     box;
++		    int		     i;
++
++		    mask |= PAINT_WINDOW_BLEND_MASK;
++
++		    box.rects	 = &box.extents;
++		    box.numRects = 1;
++
++		    window->vCount = window->indexCount = 0;
++
++		    for (i = 0; i < wd->nQuad; i++)
++		    {
++			box.extents = wd->quad[i].box;
++
++			if (box.extents.x1 < box.extents.x2 &&
++			    box.extents.y1 < box.extents.y2)
++			{
++			    (*window->screen->addWindowGeometry) (window,
++								  &wd->quad[i].matrix, 1,
++								  &box,
++								  region);
++			}
++		    }
++
++		    if (window->vCount)
++			(*window->screen->drawWindowTexture) (window,
++							      &wd->decor->texture->texture,
++							      attrib, mask);
++		}
++	    }
++	}
++    }
++
+     return status;
+ }
+ 
diff --git a/compiz_fix-no-border-window-shadow.patch b/compiz_fix-no-border-window-shadow.patch
new file mode 100644
index 0000000..03eee5e
--- /dev/null
+++ b/compiz_fix-no-border-window-shadow.patch
@@ -0,0 +1,21 @@
+From abf9d0b9c431f56e3fe88cb5a22b2f5e7b41e92e Mon Sep 17 00:00:00 2001
+From: Nicolas Bruguier <gandalfn at mithrandir.(none)>
+Date: Tue, 12 Dec 2006 22:59:22 +0100
+Subject: [PATCH] Fix no border window shadow
+---
+ libdecoration/decoration.c |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+--- a/libdecoration/decoration.c
++++ b/libdecoration/decoration.c
+@@ -1243,7 +1243,9 @@ decor_shadow_create (Display		    *xdisp
+     }
+ 
+     /* create pixmap for temporary decorations */
+-    d_pixmap = XCreatePixmap (xdisplay, xroot, d_width, d_height, 32);
++    d_pixmap = XCreatePixmap (xdisplay, xroot, 
++                              (d_width % 32) ? d_width : d_width + 1, 
++                              d_height, 32);
+     if (!d_pixmap)
+     {
+ 	XFreePixmap (xdisplay, pixmap);
diff --git a/compiz_fullscreen_stacking_fixes.patch b/compiz_fullscreen_stacking_fixes.patch
new file mode 100644
index 0000000..ab1aff5
--- /dev/null
+++ b/compiz_fullscreen_stacking_fixes.patch
@@ -0,0 +1,17 @@
+Author: Travis Watkins <amaranth at ubuntu.com>
+Description: keep window on top of fullscreen windows during move
+Origin: vendor, ubuntu (1:0.7.2-0ubuntu2)
+--- a/plugins/move.c
++++ b/plugins/move.c
+@@ -124,6 +124,11 @@ moveInitiate (CompDisplay     *d,
+     xid = getIntOptionNamed (option, nOption, "window", 0);
+ 
+     w = findWindowAtDisplay (d, xid);
++
++    /* make window stay above fullscreen windows while moving */
++    if (w)
++	updateWindowAttributes (w, CompStackingUpdateModeAboveFullscreen);
++
+     if (w && (w->actions & CompWindowActionMoveMask))
+     {
+ 	XRectangle   workArea;
diff --git a/compiz_optional-fbo.patch b/compiz_optional-fbo.patch
new file mode 100644
index 0000000..e0e7f33
--- /dev/null
+++ b/compiz_optional-fbo.patch
@@ -0,0 +1,55 @@
+Author: David Nusinow <dnusinow at debian.org>
+Description: Add a command-line option for disabling the use of FBOs
+  This is to work around buggy drivers. Add the --no-fbo option to
+  command-line to compiz.
+Origin: vendor, debian (0.3.6-1)
+--- a/include/compiz-core.h
++++ b/include/compiz-core.h
+@@ -219,6 +219,7 @@ extern Bool       useCow;
+ extern Bool       noDetection;
+ extern Bool	  useDesktopHints;
+ extern Bool       onlyCurrentScreen;
++extern Bool       noFBO;
+ 
+ extern char	**initialPlugins;
+ extern int 	nInitialPlugins;
+--- a/src/main.c
++++ b/src/main.c
+@@ -66,6 +66,7 @@ Bool strictBinding = TRUE;
+ Bool noDetection = FALSE;
+ Bool useDesktopHints = FALSE;
+ Bool onlyCurrentScreen = FALSE;
++Bool noFBO = FALSE;
+ static Bool debugOutput = FALSE;
+ 
+ #ifdef USE_COW
+@@ -87,6 +88,7 @@ usage (void)
+ 	    "[--keep-desktop-hints] "
+ 	    "[--loose-binding] "
+ 	    "[--replace]\n       "
++	    "[--no-fbo] "
+ 	    "[--sm-disable] "
+ 	    "[--sm-client-id ID] "
+ 	    "[--only-current-screen]\n      "
+@@ -346,6 +348,10 @@ main (int argc, char **argv)
+ 	{
+ 	    onlyCurrentScreen = TRUE;
+ 	}
++	else if (!strcmp (argv[i], "--no-fbo"))
++	{
++		noFBO = TRUE;
++	}
+ 
+ #ifdef USE_COW
+ 	else if (!strcmp (argv[i], "--use-root-window"))
+--- a/src/screen.c
++++ b/src/screen.c
+@@ -2183,7 +2183,7 @@ addScreen (CompDisplay *display,
+     s->generateMipmap         = NULL;
+ 
+     s->fbo = 0;
+-    if (strstr (glExtensions, "GL_EXT_framebuffer_object"))
++    if (!noFBO && strstr (glExtensions, "GL_EXT_framebuffer_object"))
+     {
+ 	s->genFramebuffers = (GLGenFramebuffersProc)
+ 	    getProcAddress (s, "glGenFramebuffersEXT");
diff --git a/compiz_stacking.patch b/compiz_stacking.patch
new file mode 100644
index 0000000..884cad9
--- /dev/null
+++ b/compiz_stacking.patch
@@ -0,0 +1,16 @@
+Author: Michael Vogt <michael.vogt at ubuntu.com>
+Description: map windows with focus_on_map=FALSE in the background 
+ map windows with focus_on_map=FALSE in the background (just like metacity)
+Origin: vendor, ubuntu (1:0.8.2-0ubuntu6)
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/compiz/+bug/333284
+--- a/src/event.c
++++ b/src/event.c
+@@ -2075,7 +2075,7 @@ handleEvent (CompDisplay *d,
+ 		focus = allowWindowFocus (w, NO_FOCUS_MASK,
+ 					  w->screen->x, w->screen->y, 0);
+ 
+-		if (focus == CompFocusDenied)
++		if ((focus == CompFocusDenied || focus == CompFocusPrevent) && (w->type & ~NO_FOCUS_MASK))
+ 		    stackingMode = CompStackingUpdateModeInitialMapDeniedFocus;
+ 		else
+ 		    stackingMode = CompStackingUpdateModeInitialMap;


More information about the scm-commits mailing list