debian/changelog | 63 ++ debian/compiz-gtk.links | 1 debian/patches/010-disable-child-window-clipping.patch | 42 + debian/patches/012_snap-by-default.patch | 14 debian/patches/013-add-cursor-theme-support.patch | 243 +++++++++ debian/patches/014-fix-gtk-window-decorator-no-argb-crash.patch | 49 + debian/patches/014_fix-no-border-window-shadow.patch | 4 debian/patches/015_draw_dock_shadows_on_desktop.patch | 85 +++ debian/patches/015_optional-fbo.patch | 5 debian/patches/016_call_glxwaitx_before_drawing.patch | 17 debian/patches/017_always_unredirect_screensaver_on_nvidia.patch | 32 + debian/patches/018_use_metacity_settings.patch | 16 debian/patches/020_fix_focus.patch | 81 +++ debian/patches/029_default_options.patch | 143 +++++ debian/patches/030_from_git_crash_fix_multiscreen.patch | 45 + debian/patches/031_from_git_fix_gnome_keybindings.patch | 43 + debian/patches/035_ignore_workspaces.patch | 19 debian/patches/037_fullscreen_stacking_fixes.patch | 17 debian/patches/049-damage-report-non-empty.patch | 83 +++ debian/patches/050_stacking.patch | 16 debian/patches/060_move_checks_to_compiz.patch | 264 +++++++++ debian/patches/061_KWD_stubs.patch | 17 debian/patches/562027-fix-gconf-ftbfs.patch | 9 debian/patches/series | 40 - debian/patches/ubuntu/010-disable-child-window-clipping.patch | 41 - debian/patches/ubuntu/013-add-cursor-theme-support.patch | 239 --------- debian/patches/ubuntu/014-fix-gtk-window-decorator-no-argb-crash.patch | 44 - debian/patches/ubuntu/014_fix-no-border-window-shadow.patch | 21 debian/patches/ubuntu/015_draw_dock_shadows_on_desktop.patch | 82 --- debian/patches/ubuntu/016_call_glxwaitx_before_drawing.patch | 13 debian/patches/ubuntu/017_always_unredirect_screensaver_on_nvidia.patch | 28 - debian/patches/ubuntu/018_use_metacity_settings.patch | 13 debian/patches/ubuntu/020_fix_focus.patch | 81 --- debian/patches/ubuntu/029_default_options | 133 ----- debian/patches/ubuntu/030_from_git_crash_fix_multiscreen.patch | 45 - debian/patches/ubuntu/031_from_git_fix_gnome_keybindings.patch | 43 - debian/patches/ubuntu/035_ignore_workspaces | 13 debian/patches/ubuntu/037_fullscreen_stacking_fixes.patch | 16 debian/patches/ubuntu/049-damage-report-non-empty.patch | 81 --- debian/patches/ubuntu/050_stacking.patch | 13 debian/patches/ubuntu/060_move_checks_to_compiz.patch | 265 ---------- debian/patches/ubuntu/061_KWD_stubs.patch | 13 debian/patches/ubuntu/090_profiling | 118 ---- debian/patches/ubuntu/099-autogen.patch | 12 debian/patches/ubuntu/series | 20 45 files changed, 1317 insertions(+), 1365 deletions(-)
New commits: commit 46f472a364f12e150ba12329b21e6e2c873d4b95 Author: Sean Finney <sean...@debian.org> Date: Wed Feb 3 21:57:45 2010 +0100 Prepare changelog for 0.8.4-1 diff --git a/debian/changelog b/debian/changelog index 471394a..7f2033a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,66 @@ +compiz (0.8.4-1) unstable; urgency=low + + * New upstream release. + + [ Sean Finney ] + * Fix FTBFS: "gconf/gconf-client.h: No such file or directory" + - thanks to Sebastian Harl <tok...@debian.org> (Closes: #562027, #562438) + * Add compiz-decorator symlink for compatibility with ubuntu systems. + * Make all patches DEP-3 formatted. + * No longer keep the ubuntu patches logically separated from ours + * Enable 010-disable-child-window-clipping.patch, as there's an ABI bump. + Also, massage the patch a little so that it applies cleanly. + * Synchronize ubuntu patches from 0.8.4-0ubuntu10 + * 015_draw_dock_shadows_on_desktop.patch: + - change decoration plugin to draw dock shadows only on the + desktop window instead of on top of all other windows + * 016_call_glxwaitx_before_drawing.patch: + - 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. + * 017_always_unredirect_screensaver_on_nvidia.patch: + - always unredirect gnome-screensaver when using nvidia, workaround + for LP #160264 while still disabling unredirect fullscreen + windows for nvidia users + * 020_fix_focus.patch: + - give back the focus to the previous focused window (LP: #455900) + * 030_from_git_crash_fix_multiscreen.patch: + - merge commit 24dea72a395071b533dcf66b2eef37b20522cbba to fix + crash with wobbly windows in a multi screen setup + * 031_from_git_fix_gnome_keybindings.patch: + - fix gnome keybindings (terminal key) + * 060_move_checks_to_compiz.patch: + - add all relevant checks from compiz-manager to compiz itself + Compiz already checks for almost everything it needs so there is no + need to check twice. + * 061_KWD_stubs.patch (updated locally to remove fuzz): + - Horrible hack to define empty stubs for some new pure virtual + functions in KWD::Window, to fix FTBFS. + * The following patches have been updated to cleanly apply: + * 014-fix-gtk-window-decorator-no-argb-crash.patch + * 015_optional-fbo.patch + * ubuntu/010-disable-child-window-clipping.patch + * ubuntu/013-add-cursor-theme-support.patch + * ubuntu/018_use_metacity_settings.patch + * ubuntu/029_default_options + * ubuntu/035_ignore_workspaces + * ubuntu/037_fullscreen_stacking_fixes.patch + * ubuntu/049-damage-report-non-empty.patch + * ubuntu/050_stacking.patch + * Transition from compiz-manager to compiz binary for /usr/bin/compiz + * Remove all patches to the embedded compiz-manager script + * 028_compiz_manager_blacklist + * 029_compiz_manager_decoration.patch + * 029_compiz_manager_nvidia_settings.patch + * 030_compiz_manager_multi_display + * 031_compiz_manager_extra_blacklist_support + * 032_compiz_manager_add_gnomecompat + * 033_compiz_manager_xdg_dirs + * 042-compiz-manager-default-plugin + * 046_compiz_manager_second_screen.patch + + -- Sean Finney <sean...@debian.org> Thu, 11 Feb 2010 20:17:39 +0100 + compiz (0.8.2-6) unstable; urgency=low * Add libxcursor-dev build-dep as required by patch commit 93e263fd7bcc79d381c9f7741b4d99671a3f3c71 Author: Sean Finney <sean...@debian.org> Date: Thu Feb 11 20:06:26 2010 +0100 Update debian/patches/disable-child-window-clipping.patch to remove fuzz. diff --git a/debian/patches/010-disable-child-window-clipping.patch b/debian/patches/010-disable-child-window-clipping.patch index d1b858b..0807f32 100644 --- a/debian/patches/010-disable-child-window-clipping.patch +++ b/debian/patches/010-disable-child-window-clipping.patch @@ -1,9 +1,11 @@ Author: Matthew Garrett <mj...@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) --- compiz.orig/src/display.c +++ compiz/src/display.c -@@ -2234,6 +2234,23 @@ addDisplay (const char *name) +@@ -2194,6 +2194,23 @@ addDisplay (const char *name) lastScreen = ScreenCount (dpy) - 1; } @@ -36,5 +38,5 @@ Origin: vendor, ubuntu (1:0.3.6-1ubuntu10) + Window glIncludeInferiorsOwner; + Window activeWindow; - Window nextActiveWindow; + Window below; commit da37f41e8a3d1a3f2607731fd2cd6c600b3e79d5 Author: Sean Finney <sean...@debian.org> Date: Thu Feb 11 19:36:15 2010 +0100 update some debian default in the default options patch diff --git a/debian/patches/029_default_options.patch b/debian/patches/029_default_options.patch index 56fcb5c..05c573d 100644 --- a/debian/patches/029_default_options.patch +++ b/debian/patches/029_default_options.patch @@ -11,10 +11,16 @@ Description: Various default settings * Increase drop-shadow radius from 8 to 9. * Set default decorator to /usr/bin/compiz-decorator. * Change default colors for faces in cube plugin. - * Add ubuntu logo for top face of cube. - * Use placement mode 2 for placement plugin. - * Use default resize mode 2 in resize plugin. + * Use "Smart" placement mode (2) by default for placement plugin. + * Use "Rectangle" resize mode (2) by default for resize plugin. * Add exception to not fade notify-osd windows in fade plugin. + . + The following changes from the original Ubuntu patch were modified: + * Use slightly more Debianish/Gnomeish colors for the cube face top. + The following changes from the original Ubuntu patch were not included: + * Add Ubuntu logo for top face of cube. + The following changes were introduced to the Debian version of this patch: + * Add Debian logo for top face of cube. Origin: vendor, ubuntu (1:0.6.0+git20071006-0ubuntu1) or perhaps earlier. --- compiz.orig/metadata/core.xml.in.in +++ compiz/metadata/core.xml.in.in @@ -85,9 +91,9 @@ Origin: vendor, ubuntu (1:0.6.0+git20071006-0ubuntu1) or perhaps earlier. - <red>0xfefe</red> - <green>0xffff</green> - <blue>0xc7c7</blue> -+ <red>0xcdcd</red> -+ <green>0xbebe</green> -+ <blue>0x7070</blue> ++ <red>0x4545</red> ++ <green>0x9a9a</green> ++ <blue>0xf4f4</blue> </default> </option> <subgroup> @@ -98,7 +104,7 @@ Origin: vendor, ubuntu (1:0.6.0+git20071006-0ubuntu1) or perhaps earlier. - <default> - <value>freedesktop</value> - </default> -+ <default><value>/usr/share/gdm/themes/Human/ubuntu.png</value></default> ++ <default><value>/usr/share/images/desktop-base/debian-blueish-wallpaper-640x480.png</value></default> </option> <option name="adjust_image" type="bool"> <_short>Adjust Image</_short> commit 7559913fa794d2844ef7dfe86ab9d47f92f42fa0 Author: Sean Finney <sean...@debian.org> Date: Thu Feb 11 19:59:29 2010 +0100 No longer keep the ubuntu patches logically separated from ours Avoid the artifical partition between ubuntu patches and our own; it only makes merging back and forth more difficult in the long run. Conflicts: debian/patches/series diff --git a/debian/patches/010-disable-child-window-clipping.patch b/debian/patches/010-disable-child-window-clipping.patch new file mode 100644 index 0000000..d1b858b --- /dev/null +++ b/debian/patches/010-disable-child-window-clipping.patch @@ -0,0 +1,40 @@ +Author: Matthew Garrett <mj...@srcf.ucam.org> +Description: Disable clipping of child windows +Origin: vendor, ubuntu (1:0.3.6-1ubuntu10) +--- compiz.orig/src/display.c ++++ compiz/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; +--- compiz.orig/include/compiz-core.h ++++ compiz/include/compiz-core.h +@@ -1028,6 +1028,8 @@ struct _CompDisplay { + + GLenum textureFilter; + ++ Window glIncludeInferiorsOwner; ++ + Window activeWindow; + Window nextActiveWindow; + diff --git a/debian/patches/013-add-cursor-theme-support.patch b/debian/patches/013-add-cursor-theme-support.patch new file mode 100644 index 0000000..dd15503 --- /dev/null +++ b/debian/patches/013-add-cursor-theme-support.patch @@ -0,0 +1,243 @@ +Author: Sebastien Bacher <seb...@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 +--- compiz.orig/configure.ac ++++ compiz/configure.ac +@@ -123,6 +123,7 @@ COMPIZ_REQUIRES="xcomposite \ + xdamage \ + xrandr \ + xinerama \ ++ xcursor \ + ice \ + sm \ + libxml-2.0 \ +--- compiz.orig/gtk/window-decorator/gtk-window-decorator.c ++++ compiz/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 +@@ -83,6 +84,14 @@ + #include <metacity-private/theme.h> + #endif + ++#define GNOME_MOUSE_DIR "/desktop/gnome/peripherals/mouse" ++ ++#define GNOME_CURSOR_THEME_KEY \ ++ GNOME_MOUSE_DIR "/cursor_theme" ++ ++#define GNOME_CURSOR_SIZE_KEY \ ++ GNOME_MOUSE_DIR "/cursor_size" ++ + #define METACITY_GCONF_DIR "/apps/metacity/general" + + #define COMPIZ_USE_SYSTEM_FONT_KEY \ +@@ -146,6 +155,13 @@ + #define WHEEL_ACTION_KEY \ + GCONF_DIR "/mouse_wheel_action" + ++#define COMPIZ_GCONF_DIR2 "/apps/compiz/general/allscreens/options" ++#define COMPIZ_CURSOR_THEME_KEY \ ++ COMPIZ_GCONF_DIR2 "/cursor_theme" ++ ++#define COMPIZ_CURSOR_SIZE_KEY \ ++ COMPIZ_GCONF_DIR2 "/cursor_size" ++ + #define DBUS_DEST "org.freedesktop.compiz" + #define DBUS_PATH "/org/freedesktop/compiz/decoration/allscreens" + #define DBUS_INTERFACE "org.freedesktop.compiz" +@@ -6491,6 +6507,44 @@ button_layout_changed (GConfClient *clie + return FALSE; + } + ++ static void ++cursor_theme_changed (GConfClient *client) ++{ ++ gchar *theme; ++ gint size; ++ ++ theme = gconf_client_get_string(client, GNOME_CURSOR_THEME_KEY, NULL); ++ size = gconf_client_get_int(client, GNOME_CURSOR_SIZE_KEY, NULL); ++ ++ gconf_client_set_string(client, COMPIZ_CURSOR_THEME_KEY, theme, NULL); ++ ++ gconf_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 (GConfClient *client, + const gchar *key, +@@ -6569,6 +6623,11 @@ value_changed (GConfClient *client, + if (theme_opacity_changed (client)) + changed = TRUE; + } ++ else if (strcmp (key, GNOME_CURSOR_THEME_KEY) == 0 || ++ strcmp (key, GNOME_CURSOR_SIZE_KEY) == 0) ++ { ++ cursor_theme_changed (client); ++ } + + if (changed) + decorations_changed (data); +@@ -6732,6 +6791,11 @@ init_settings (WnckScreen *screen) + NULL); + + gconf_client_add_dir (gconf, ++ GNOME_MOUSE_DIR, ++ GCONF_CLIENT_PRELOAD_ONELEVEL, ++ NULL); ++ ++ gconf_client_add_dir (gconf, + COMPIZ_GCONF_DIR1, + GCONF_CLIENT_PRELOAD_ONELEVEL, + NULL); +@@ -6740,6 +6804,9 @@ init_settings (WnckScreen *screen) + "value_changed", + G_CALLBACK (value_changed), + screen); ++ ++ cursor_theme_changed(gconf); ++ + #elif USE_DBUS_GLIB + DBusConnection *connection; + DBusMessage *reply; +--- compiz.orig/metadata/core.xml.in.in ++++ compiz/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> +--- compiz.orig/src/display.c ++++ compiz/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; +--- compiz.orig/include/compiz-core.h ++++ compiz/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/debian/patches/014-fix-gtk-window-decorator-no-argb-crash.patch b/debian/patches/014-fix-gtk-window-decorator-no-argb-crash.patch new file mode 100644 index 0000000..aa8a270 --- /dev/null +++ b/debian/patches/014-fix-gtk-window-decorator-no-argb-crash.patch @@ -0,0 +1,49 @@ +Author: Sebastien Bacher <seb...@canonical.com> +Description: Fix decorator crash when ARGB isn't enabled + Fix gtk-window-decorator crash when ARGB isn't enabled and only + that, in this case window-decoration are invisible +Origin: vendor, ubuntu (1:0.3.6-1ubuntu9) +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/compiz/+bug/94140 +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/compiz/+bug/82205 +--- compiz.orig/gtk/window-decorator/gtk-window-decorator.c ++++ compiz/gtk/window-decorator/gtk-window-decorator.c +@@ -1918,10 +1918,8 @@ meta_draw_window_decoration (decor_t *d) + + size = MAX (fgeom.top_height, fgeom.bottom_height); + +- if (rect.width && size) ++ if (rect.width && size && (pixmap = create_pixmap (rect.width, size))) + { +- pixmap = create_pixmap (rect.width, size); +- + cr = gdk_cairo_create (GDK_DRAWABLE (pixmap)); + gdk_cairo_set_source_color_alpha (cr, &bg_color, bg_alpha); + cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); +@@ -2020,10 +2018,8 @@ meta_draw_window_decoration (decor_t *d) + + size = MAX (fgeom.left_width, fgeom.right_width); + +- if (size && rect.height) ++ if (size && rect.height && (pixmap = create_pixmap (size, rect.height))) + { +- pixmap = create_pixmap (size, rect.height); +- + cr = gdk_cairo_create (GDK_DRAWABLE (pixmap)); + gdk_cairo_set_source_color_alpha (cr, &bg_color, bg_alpha); + cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); +@@ -3320,9 +3316,12 @@ update_window_decoration_icon (WnckWindo + g_object_ref (G_OBJECT (d->icon_pixbuf)); + + d->icon_pixmap = pixmap_new_from_pixbuf (d->icon_pixbuf); +- cr = gdk_cairo_create (GDK_DRAWABLE (d->icon_pixmap)); +- d->icon = cairo_pattern_create_for_surface (cairo_get_target (cr)); +- cairo_destroy (cr); ++ if (d->icon_pixmap) ++ { ++ cr = gdk_cairo_create (GDK_DRAWABLE (d->icon_pixmap)); ++ d->icon = cairo_pattern_create_for_surface (cairo_get_target (cr)); ++ cairo_destroy (cr); ++ } + } + } + diff --git a/debian/patches/015_draw_dock_shadows_on_desktop.patch b/debian/patches/015_draw_dock_shadows_on_desktop.patch new file mode 100644 index 0000000..d9a7ec0 --- /dev/null +++ b/debian/patches/015_draw_dock_shadows_on_desktop.patch @@ -0,0 +1,85 @@ +Author: Travis Watkins <amara...@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) +--- compiz.orig/plugins/decoration.c ++++ compiz/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/debian/patches/016_call_glxwaitx_before_drawing.patch b/debian/patches/016_call_glxwaitx_before_drawing.patch new file mode 100644 index 0000000..3af8d05 --- /dev/null +++ b/debian/patches/016_call_glxwaitx_before_drawing.patch @@ -0,0 +1,17 @@ +Author: Travis Watkins <amara...@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) +--- compiz.orig/src/display.c ++++ compiz/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/debian/patches/017_always_unredirect_screensaver_on_nvidia.patch b/debian/patches/017_always_unredirect_screensaver_on_nvidia.patch new file mode 100644 index 0000000..15656ee --- /dev/null +++ b/debian/patches/017_always_unredirect_screensaver_on_nvidia.patch @@ -0,0 +1,32 @@ +Author: Travis Watkins <amara...@ubuntu.com> +Description: Always unredirect gnome-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 +--- compiz.orig/src/paint.c ++++ compiz/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 gnome-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, "gnome-screensaver") && ++ XQueryExtension (screen->display->display, "NV-GLX", ++ &dontcare, &dontcare, &dontcare)))) + { + if (XEqualRegion (w->region, &screen->region) && + !REGION_NOT_EMPTY (tmpRegion)) diff --git a/debian/patches/018_use_metacity_settings.patch b/debian/patches/018_use_metacity_settings.patch new file mode 100644 index 0000000..03eb58b --- /dev/null +++ b/debian/patches/018_use_metacity_settings.patch @@ -0,0 +1,16 @@ +Author: Michael Vogt <michael.v...@ubuntu.com> +Description: Use metacity control center applet instead of compiz one. + The rationale is that the ccp backend will transparently work with the + metacity options under gnome. +Origin: vendor, ubuntu (1:0.5.1+git20070618-0ubuntu2) +--- compiz.orig/gtk/gnome/compiz.desktop.in ++++ compiz/gtk/gnome/compiz.desktop.in +@@ -5,7 +5,7 @@ _Name=Compiz + Exec=compiz + NoDisplay=true + # name of loadable control center module +-X-GNOME-WMSettingsModule=compiz ++X-GNOME-WMSettingsModule=metacity + # autostart phase + X-GNOME-Autostart-Phase=WindowManager + X-GNOME-Provides=windowmanager diff --git a/debian/patches/020_fix_focus.patch b/debian/patches/020_fix_focus.patch new file mode 100644 index 0000000..1d2f179 --- /dev/null +++ b/debian/patches/020_fix_focus.patch @@ -0,0 +1,81 @@ +Index: compiz-0.8.4/include/compiz-core.h +=================================================================== +--- compiz-0.8.4.orig/include/compiz-core.h 2009-11-01 11:14:28.704773780 -0600 ++++ compiz-0.8.4/include/compiz-core.h 2009-11-01 11:15:04.254773783 -0600 +@@ -142,6 +142,7 @@ + #define CompWindowStateBelowMask (1 << 10) + #define CompWindowStateDemandsAttentionMask (1 << 11) + #define CompWindowStateDisplayModalMask (1 << 12) ++#define CompWindowStateUnmanagingMask (1 << 13) + + #define MAXIMIZE_STATE (CompWindowStateMaximizedHorzMask | \ + CompWindowStateMaximizedVertMask) +Index: compiz-0.8.4/src/event.c +=================================================================== +--- compiz-0.8.4.orig/src/event.c 2009-11-01 11:14:04.764750121 -0600 ++++ compiz-0.8.4/src/event.c 2009-11-01 11:15:04.254773783 -0600 +@@ -1366,13 +1366,14 @@ + } + else /* X -> Withdrawn */ + { ++ unsigned int newState = w->state; ++ + /* Iconic -> Withdrawn */ + if (w->state & CompWindowStateHiddenMask) + { + w->minimized = FALSE; + +- changeWindowState (w, +- w->state & ~CompWindowStateHiddenMask); ++ newState &= ~CompWindowStateHiddenMask; + + updateClientListForScreen (w->screen); + } +@@ -1380,6 +1381,12 @@ + if (!w->attrib.override_redirect) + setWmState (d, WithdrawnState, w->id); + ++ if (w->managed) ++ newState |= CompWindowStateUnmanagingMask; ++ ++ changeWindowState (w, newState); ++ ++ w->managed = FALSE; + w->placed = FALSE; + } + +Index: compiz-0.8.4/src/window.c +=================================================================== +--- compiz-0.8.4.orig/src/window.c 2009-11-01 11:14:04.774749786 -0600 ++++ compiz-0.8.4/src/window.c 2009-11-01 11:15:04.264770655 -0600 +@@ -2554,7 +2554,7 @@ + if (w->unmapRefCnt > 0) + return; + +- if (w->managed && !w->placed) /* only for managed and closed windows */ ++ if (w->state & CompWindowStateUnmanagingMask) + { + XWindowChanges xwc; + unsigned int xwcm; +@@ -2573,7 +2573,7 @@ + if (xwcm) + configureXWindow (w, xwcm, &xwc); + +- w->managed = FALSE; ++ changeWindowState (w, w->state & ~CompWindowStateUnmanagingMask); + } + + if (w->struts) +@@ -2948,6 +2948,12 @@ + if (!w->managed) + return FALSE; + ++ if (w->destroyed) ++ return FALSE; ++ ++ if (w->state & CompWindowStateUnmanagingMask) ++ return FALSE; ++ + if (!onCurrentDesktop (w)) + return FALSE; + diff --git a/debian/patches/029_default_options.patch b/debian/patches/029_default_options.patch new file mode 100644 index 0000000..56fcb5c --- /dev/null +++ b/debian/patches/029_default_options.patch @@ -0,0 +1,137 @@ +Author: Michael Vogt <michael.v...@ubuntu.com> +Description: Various default settings + Changes in various defaults. From what I can tell (these were originally + from ubuntu, but I (the debian maintainer) will do my best to summarize + them below). + . + * Desktop Horizontal virtual size of 2 instead of 4. + * Sync to vblank: false by default. + * Make an exception to focus prevention matching for PolicyKit windows. + * Remove top-right hotcorner from scale plugin by default. + * Increase drop-shadow radius from 8 to 9. + * Set default decorator to /usr/bin/compiz-decorator. + * Change default colors for faces in cube plugin. + * Add ubuntu logo for top face of cube. + * Use placement mode 2 for placement plugin. + * Use default resize mode 2 in resize plugin. + * Add exception to not fade notify-osd windows in fade plugin. +Origin: vendor, ubuntu (1:0.6.0+git20071006-0ubuntu1) or perhaps earlier. +--- compiz.orig/metadata/core.xml.in.in ++++ compiz/metadata/core.xml.in.in +@@ -211,7 +211,7 @@ + <option name="hsize" type="int"> + <_short>Horizontal Virtual Size</_short> + <_long>Screen size multiplier for horizontal virtual size</_long> +- <default>4</default> ++ <default>2</default> + <min>1</min> + <max>32</max> + </option> +@@ -284,7 +284,7 @@ + <option name="sync_to_vblank" type="bool"> + <_short>Sync To VBlank</_short> + <_long>Only perform screen updates during vertical blanking period</_long> +- <default>true</default> ++ <default>false</default> + </option> + </group> + <group> +@@ -319,7 +319,7 @@ + <option name="focus_prevention_match" type="match"> + <_short>Focus Prevention Windows</_short> + <_long>Focus prevention windows</_long> +- <default>any</default> ++ <default>!(class=Polkit-gnome-authentication-agent-1)</default> + </option> + </group> + <option name="unredirect_fullscreen_windows" type="bool"> +--- compiz.orig/metadata/scale.xml.in ++++ compiz/metadata/scale.xml.in +@@ -27,9 +27,6 @@ + <option name="initiate_edge" type="edge"> + <_short>Initiate Window Picker</_short> + <_long>Layout and start transforming windows</_long> +- <default> +- <edge name="TopRight"/> +- </default> + <allowed edgednd="true"/> + </option> + <option name="initiate_key" type="key"> +--- compiz.orig/metadata/decoration.xml.in ++++ compiz/metadata/decoration.xml.in +@@ -16,7 +16,7 @@ + <option name="shadow_radius" type="float"> + <_short>Shadow Radius</_short> + <_long>Drop shadow radius</_long> +- <default>8.0</default> ++ <default>9.0</default> + <min>0.1</min> + <max>18.0</max> + <precision>0.1</precision> +@@ -50,6 +50,7 @@ + <option name="command" type="string"> + <_short>Command</_short> + <_long>Decorator command line that is executed if no decorator is already running</_long> ++ <default>/usr/bin/compiz-decorator</default> + </option> + <option name="mipmap" type="bool"> + <_short>Mipmap</_short> +--- compiz.orig/metadata/cube.xml.in ++++ compiz/metadata/cube.xml.in +@@ -92,9 +92,9 @@ + <_short>Cube Color</_short> + <_long>Color of top and bottom sides of the cube</_long> + <default> +- <red>0xfefe</red> +- <green>0xffff</green> +- <blue>0xc7c7</blue> ++ <red>0xcdcd</red> ++ <green>0xbebe</green> ++ <blue>0x7070</blue> + </default> + </option> + <subgroup> +@@ -109,9 +109,7 @@ + <_long>List of PNG and SVG files that should be rendered on top face of cube</_long> + <type>string</type> + <hints>file;image;</hints> +- <default> +- <value>freedesktop</value> +- </default> ++ <default><value>/usr/share/gdm/themes/Human/ubuntu.png</value></default> + </option> + <option name="adjust_image" type="bool"> + <_short>Adjust Image</_short> +--- compiz.orig/metadata/place.xml.in ++++ compiz/metadata/place.xml.in +@@ -12,7 +12,7 @@ + <option name="mode" type="int"> + <_short>Placement Mode</_short> + <_long>Algorithm to use for window placement</_long> +- <default>0</default> ++ <default>2</default> + <min>0</min> + <max>5</max> + <desc> +--- compiz.orig/metadata/resize.xml.in ++++ compiz/metadata/resize.xml.in +@@ -40,7 +40,7 @@ + <option name="mode" type="int"> + <_short>Default Resize Mode</_short> + <_long>Default mode used for window resizing</_long> +- <default>0</default> ++ <default>2</default> + <min>0</min> + <max>3</max> + <desc> +--- compiz.orig/metadata/fade.xml.in ++++ compiz/metadata/fade.xml.in +@@ -51,7 +51,7 @@ + <option name="window_match" type="match"> + <_short>Fade windows</_short> + <_long>Windows that should be fading</_long> +- <default>any</default> ++ <default>any & !(title=notify-osd)</default> + </option> + <option name="visual_bell" type="bool"> + <_short>Visual Bell</_short> diff --git a/debian/patches/030_from_git_crash_fix_multiscreen.patch b/debian/patches/030_from_git_crash_fix_multiscreen.patch new file mode 100644 index 0000000..18a5841 --- /dev/null +++ b/debian/patches/030_from_git_crash_fix_multiscreen.patch @@ -0,0 +1,45 @@ +diff --git a/plugins/wobbly.c b/plugins/wobbly.c +index bf92680..51f733e 100644 +--- a/plugins/wobbly.c ++++ b/plugins/wobbly.c +@@ -1709,22 +1709,20 @@ wobblyPreparePaintScreen (CompScreen *s, + ww->wobbly |= WobblyInitial; + } + +- if (!ww->grabbed && wd->yConstrained) ++ if (!ww->grabbed && ws->grabWindowWorkArea) + { + float bottommostYPos = MINSHORT; +- int i; ++ int i, decorTop; + + /* find the bottommost top-row object */ + for (i = 0; i < GRID_WIDTH; i++) -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org