r30480 - in /packages/unstable/mutter/debian: changelog control control.in libmutter0.symbols patches/00git-Use-a-utility-function-to-create-GL_ARB_texture_rect.patch patches/00git-meta-window-group-Use-clutter_stage_get_redraw_clip_.patch patches/series
ricotz-guest at users.alioth.debian.org
ricotz-guest at users.alioth.debian.org
Fri Oct 14 14:56:40 UTC 2011
Author: ricotz-guest
Date: Fri Oct 14 14:56:39 2011
New Revision: 30480
URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=30480
Log:
Add patches to remove direct GL usages to let it build with EGL/GLES2 on arm
Added:
packages/unstable/mutter/debian/patches/00git-Use-a-utility-function-to-create-GL_ARB_texture_rect.patch
packages/unstable/mutter/debian/patches/00git-meta-window-group-Use-clutter_stage_get_redraw_clip_.patch
Modified:
packages/unstable/mutter/debian/changelog
packages/unstable/mutter/debian/control
packages/unstable/mutter/debian/control.in
packages/unstable/mutter/debian/libmutter0.symbols
packages/unstable/mutter/debian/patches/series
Modified: packages/unstable/mutter/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/packages/unstable/mutter/debian/changelog?rev=30480&op=diff
==============================================================================
--- packages/unstable/mutter/debian/changelog [utf-8] (original)
+++ packages/unstable/mutter/debian/changelog [utf-8] Fri Oct 14 14:56:39 2011
@@ -1,3 +1,16 @@
+mutter (3.0.2.1-3) UNRELEASED; urgency=low
+
+ * debian/patches:
+ - Add 00git-meta-window-group-Use-clutter_stage_get_redraw_clip_.patch,
+ 00git-Use-a-utility-function-to-create-GL_ARB_texture_rect.patch
+ to remove direct GL usages to let it build with EGL/GLES2 on arm
+ * debian/control:
+ - Bump build-dep on clutter-1.0-dev (>= 1.7.5)
+ * debian/libmutter0.symbols:
+ - updated (leave with debian revision since it is added by a patch)
+
+ -- Rico Tzschichholz <ricotz at ubuntu.com> Fri, 14 Oct 2011 16:39:27 +0200
+
mutter (3.0.2.1-2) unstable; urgency=low
[ Laurent Bigonville ]
Modified: packages/unstable/mutter/debian/control
URL: http://svn.debian.org/wsvn/pkg-gnome/packages/unstable/mutter/debian/control?rev=30480&op=diff
==============================================================================
--- packages/unstable/mutter/debian/control [utf-8] (original)
+++ packages/unstable/mutter/debian/control [utf-8] Fri Oct 14 14:56:39 2011
@@ -17,7 +17,7 @@
gobject-introspection (>= 0.9.12-5~),
libgirepository1.0-dev (>= 0.9.12),
libjson-glib-dev (>= 0.13.2-1~),
- libclutter-1.0-dev (>= 1.6.14-1~),
+ libclutter-1.0-dev (>= 1.7.5),
libpango1.0-dev (>= 1.2.0),
libgconf2-dev (>= 2.6.1-2),
libglib2.0-dev (>= 2.6.0),
Modified: packages/unstable/mutter/debian/control.in
URL: http://svn.debian.org/wsvn/pkg-gnome/packages/unstable/mutter/debian/control.in?rev=30480&op=diff
==============================================================================
--- packages/unstable/mutter/debian/control.in [utf-8] (original)
+++ packages/unstable/mutter/debian/control.in [utf-8] Fri Oct 14 14:56:39 2011
@@ -12,7 +12,7 @@
gobject-introspection (>= 0.9.12-5~),
libgirepository1.0-dev (>= 0.9.12),
libjson-glib-dev (>= 0.13.2-1~),
- libclutter-1.0-dev (>= 1.6.14-1~),
+ libclutter-1.0-dev (>= 1.7.5),
libpango1.0-dev (>= 1.2.0),
libgconf2-dev (>= 2.6.1-2),
libglib2.0-dev (>= 2.6.0),
Modified: packages/unstable/mutter/debian/libmutter0.symbols
URL: http://svn.debian.org/wsvn/pkg-gnome/packages/unstable/mutter/debian/libmutter0.symbols?rev=30480&op=diff
==============================================================================
--- packages/unstable/mutter/debian/libmutter0.symbols [utf-8] (original)
+++ packages/unstable/mutter/debian/libmutter0.symbols [utf-8] Fri Oct 14 14:56:39 2011
@@ -628,6 +628,7 @@
meta_tab_list_get_type at Base 2.91.92
meta_tab_show_type_get_type at Base 2.91.92
meta_text_property_to_utf8 at Base 2.91.92
+ meta_texture_rectangle_new at Base 3.0.2.1-3
meta_texture_tower_free at Base 2.91.92
meta_texture_tower_get_paint_texture at Base 2.91.92
meta_texture_tower_new at Base 2.91.92
Added: packages/unstable/mutter/debian/patches/00git-Use-a-utility-function-to-create-GL_ARB_texture_rect.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/packages/unstable/mutter/debian/patches/00git-Use-a-utility-function-to-create-GL_ARB_texture_rect.patch?rev=30480&op=file
==============================================================================
--- packages/unstable/mutter/debian/patches/00git-Use-a-utility-function-to-create-GL_ARB_texture_rect.patch (added)
+++ packages/unstable/mutter/debian/patches/00git-Use-a-utility-function-to-create-GL_ARB_texture_rect.patch [utf-8] Fri Oct 14 14:56:39 2011
@@ -1,0 +1,371 @@
+From fccd6266048520ce3a5917c687c876a4ec645d6e Mon Sep 17 00:00:00 2001
+From: Neil Roberts <neil at linux.intel.com>
+Date: Wed, 13 Jul 2011 15:47:10 +0100
+Subject: [PATCH] Use a utility function to create GL_ARB_texture_rectangles
+
+meta-texture-rectangle and meta-shaped-texture both create textures
+with GL_TEXTURE_RECTANGLE_ARB as the target using direct GL
+calls. This patch moves that code into a shared utility function in a
+separate file instead. The function resolves the required GL symbols
+dynamically instead of linking to them directly so that if Clutter
+eventually stops linking to -lGL mutter will continue to build. The
+function also splits the texture creation into a separate texture
+creation and data upload stage so that it can use
+cogl_texture_set_region to upload the data. That way it can avoid
+clobbering the glPixelStore state and it can let Cogl do any necessary
+format conversion. The code preserves the old value of the rectangle
+texture binding instead of clobbering it because Cogl expects to be
+able to cache this value to avoid redundant glBindTexture
+calls. Finally, the function uses cogl_object_set_data to
+automatically destroy the GL texture when the Cogl texture is
+destroyed. This avoids having to have special code to destroy the cogl
+texture.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=654569
+---
+ src/Makefile.am | 2 +
+ src/compositor/meta-shaped-texture.c | 40 +++-------
+ src/compositor/meta-texture-rectangle.c | 118 +++++++++++++++++++++++++++++++
+ src/compositor/meta-texture-rectangle.h | 45 ++++++++++++
+ src/compositor/meta-texture-tower.c | 48 ++++---------
+ 5 files changed, 191 insertions(+), 62 deletions(-)
+ create mode 100644 src/compositor/meta-texture-rectangle.c
+ create mode 100644 src/compositor/meta-texture-rectangle.h
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index c313e81..c6e2077 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -55,6 +55,8 @@ libmutter_la_SOURCES = \
+ compositor/meta-shadow-factory-private.h \
+ compositor/meta-shaped-texture.c \
+ compositor/meta-shaped-texture.h \
++ compositor/meta-texture-rectangle.c \
++ compositor/meta-texture-rectangle.h \
+ compositor/meta-texture-tower.c \
+ compositor/meta-texture-tower.h \
+ compositor/meta-window-actor.c \
+diff --git a/src/compositor/meta-shaped-texture.c b/src/compositor/meta-shaped-texture.c
+index 273dfd3..feeedda 100644
+--- a/src/compositor/meta-shaped-texture.c
++++ b/src/compositor/meta-shaped-texture.c
+@@ -27,6 +27,7 @@
+
+ #include "meta-shaped-texture.h"
+ #include "meta-texture-tower.h"
++#include "meta-texture-rectangle.h"
+
+ #include <clutter/clutter.h>
+ #include <cogl/cogl.h>
+@@ -181,17 +182,6 @@ meta_shaped_texture_dirty_mask (MetaShapedTexture *stex)
+
+ 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);
+-
+-#ifdef GL_TEXTURE_RECTANGLE_ARB
+- if (mask_gl_target == GL_TEXTURE_RECTANGLE_ARB)
+- glDeleteTextures (1, &mask_gl_tex);
+-#endif
+-
+ cogl_handle_unref (priv->mask_texture);
+ priv->mask_texture = COGL_INVALID_HANDLE;
+
+@@ -258,24 +248,18 @@ meta_shaped_texture_ensure_mask (MetaShapedTexture *stex)
+ #ifdef GL_TEXTURE_RECTANGLE_ARB
+ 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);
++ = meta_texture_rectangle_new (tex_width, tex_height,
++ 0, /* flags */
++ /* data format */
++ COGL_PIXEL_FORMAT_A_8,
++ /* internal GL format */
++ GL_ALPHA,
++ /* internal cogl format */
++ COGL_PIXEL_FORMAT_A_8,
++ /* rowstride */
++ tex_width,
++ mask_data);
+ }
+ else
+ #endif /* GL_TEXTURE_RECTANGLE_ARB */
+diff --git a/src/compositor/meta-texture-rectangle.c b/src/compositor/meta-texture-rectangle.c
+new file mode 100644
+index 0000000..d699729
+--- /dev/null
++++ b/src/compositor/meta-texture-rectangle.c
+@@ -0,0 +1,118 @@
++/*
++ * texture rectangle
++ *
++ * A small utility function to help create a rectangle texture
++ *
++ * Authored By Neil Roberts <neil at linux.intel.com>
++ *
++ * Copyright (C) 2011 Intel Corporation
++ *
++ * This program 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 program 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 program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++ * 02111-1307, USA.
++ */
++
++#include <config.h>
++
++#include "meta-texture-rectangle.h"
++
++#ifdef GL_TEXTURE_RECTANGLE_ARB
++
++static void (* pf_glGetIntegerv) (GLenum pname, GLint *params);
++static void (* pf_glTexImage2D) (GLenum target, GLint level,
++ GLint internalFormat,
++ GLsizei width, GLsizei height,
++ GLint border, GLenum format, GLenum type,
++ const GLvoid *pixels);
++static void (* pf_glGenTextures) (GLsizei n, GLuint *textures);
++static void (* pf_glDeleteTextures) (GLsizei n, const GLuint *texture);
++static void (* pf_glBindTexture) (GLenum target, GLuint texture);
++
++static void
++rectangle_texture_destroy_cb (void *user_data)
++{
++ GLuint tex = GPOINTER_TO_UINT (user_data);
++
++ pf_glDeleteTextures (1, &tex);
++}
++
++#endif /* GL_TEXTURE_RECTANGLE_ARB */
++
++CoglHandle
++meta_texture_rectangle_new (unsigned int width,
++ unsigned int height,
++ CoglTextureFlags flags,
++ CoglPixelFormat format,
++ GLenum internal_gl_format,
++ GLenum internal_format,
++ unsigned int rowstride,
++ const guint8 *data)
++{
++ CoglHandle cogl_tex = COGL_INVALID_HANDLE;
++
++#ifdef GL_TEXTURE_RECTANGLE_ARB
++
++ static CoglUserDataKey user_data_key;
++ GLint old_binding;
++ GLuint tex;
++
++ if (pf_glGenTextures == NULL)
++ {
++ pf_glGetIntegerv = (void *) cogl_get_proc_address ("glGetIntegerv");
++ pf_glTexImage2D = (void *) cogl_get_proc_address ("glTexImage2D");
++ pf_glGenTextures = (void *) cogl_get_proc_address ("glGenTextures");
++ pf_glDeleteTextures = (void *) cogl_get_proc_address ("glDeleteTextures");
++ pf_glBindTexture = (void *) cogl_get_proc_address ("glBindTexture");
++ }
++
++ pf_glGenTextures (1, &tex);
++ pf_glGetIntegerv (GL_TEXTURE_BINDING_RECTANGLE_ARB, &old_binding);
++ pf_glBindTexture (GL_TEXTURE_RECTANGLE_ARB, tex);
++ pf_glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0,
++ internal_gl_format, width, height,
++ 0, internal_gl_format,
++ GL_UNSIGNED_BYTE, NULL);
++ pf_glBindTexture (GL_TEXTURE_RECTANGLE_ARB, old_binding);
++
++ cogl_tex = cogl_texture_new_from_foreign (tex,
++ GL_TEXTURE_RECTANGLE_ARB,
++ width, height,
++ 0, 0, /* no waste */
++ internal_format);
++
++ /* Cogl won't destroy the GL texture when a foreign texture is used
++ so we need to destroy it manually. We can set a destroy
++ notification callback to do this transparently */
++ cogl_object_set_user_data (cogl_tex,
++ &user_data_key,
++ GUINT_TO_POINTER (tex),
++ rectangle_texture_destroy_cb);
++
++ /* Use cogl_texture_set_region instead of uploading the data
++ directly with GL calls so that we can let Cogl deal with setting
++ the pixel store parameters and handling format conversion */
++ if (data)
++ cogl_texture_set_region (cogl_tex,
++ 0, 0, /* src x/y */
++ 0, 0, /* dst x/y */
++ width, height, /* dst width/height */
++ width, height, /* src width/height */
++ format,
++ rowstride,
++ data);
++
++#endif /* GL_TEXTURE_RECTANGLE_ARB */
++
++ return cogl_tex;
++}
+diff --git a/src/compositor/meta-texture-rectangle.h b/src/compositor/meta-texture-rectangle.h
+new file mode 100644
+index 0000000..b777316
+--- /dev/null
++++ b/src/compositor/meta-texture-rectangle.h
+@@ -0,0 +1,45 @@
++/*
++ * texture rectangle
++ *
++ * A small utility function to help create a rectangle texture
++ *
++ * Authored By Neil Roberts <neil at linux.intel.com>
++ *
++ * Copyright (C) 2011 Intel Corporation
++ *
++ * This program 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 program 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 program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++ * 02111-1307, USA.
++ */
++
++#ifndef __META_TEXTURE_RECTANGLE_H__
++#define __META_TEXTURE_RECTANGLE_H__
++
++#include <cogl/cogl.h>
++
++G_BEGIN_DECLS
++
++CoglHandle
++meta_texture_rectangle_new (unsigned int width,
++ unsigned int height,
++ CoglTextureFlags flags,
++ CoglPixelFormat format,
++ GLenum internal_gl_format,
++ GLenum internal_format,
++ unsigned int rowstride,
++ const guint8 *data);
++
++G_END_DECLS
++
++#endif /* __META_TEXTURE_RECTANGLE_H__ */
+diff --git a/src/compositor/meta-texture-tower.c b/src/compositor/meta-texture-tower.c
+index 73e1227..551450c 100644
+--- a/src/compositor/meta-texture-tower.c
++++ b/src/compositor/meta-texture-tower.c
+@@ -26,6 +26,7 @@
+ #include <string.h>
+
+ #include "meta-texture-tower.h"
++#include "meta-texture-rectangle.h"
+
+ #ifndef M_LOG2E
+ #define M_LOG2E 1.4426950408889634074
+@@ -109,22 +110,6 @@ texture_is_rectangle (CoglHandle texture)
+ }
+ #endif /* GL_TEXTURE_RECTANGLE_ARB */
+
+-static void
+-free_texture (CoglHandle texture)
+-{
+-#ifdef GL_TEXTURE_RECTANGLE_ARB
+- 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);
+-#endif /* GL_TEXTURE_RECTANGLE_ARB */
+-
+- cogl_handle_unref (texture);
+-}
+-
+ /**
+ * meta_texture_tower_update_area:
+ * @tower: a MetaTextureTower
+@@ -152,7 +137,7 @@ meta_texture_tower_set_base_texture (MetaTextureTower *tower,
+ {
+ if (tower->textures[i] != COGL_INVALID_HANDLE)
+ {
+- free_texture (tower->textures[i]);
++ cogl_handle_unref (tower->textures[i]);
+ tower->textures[i] = COGL_INVALID_HANDLE;
+ }
+
+@@ -384,23 +369,18 @@ texture_tower_create_texture (MetaTextureTower *tower,
+ if ((!is_power_of_two (width) || !is_power_of_two (height)) &&
+ texture_is_rectangle (tower->textures[level - 1]))
+ {
+- 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] =
++ meta_texture_rectangle_new (width, height,
++ 0, /* flags */
++ /* data format */
++ TEXTURE_FORMAT,
++ /* internal GL format */
++ GL_RGBA,
++ /* internal cogl format */
++ TEXTURE_FORMAT,
++ /* rowstride */
++ width * 4,
++ NULL);
+ }
+ else
+ #endif /* GL_TEXTURE_RECTANGLE_ARB */
+--
+1.7.5.4
+
Added: packages/unstable/mutter/debian/patches/00git-meta-window-group-Use-clutter_stage_get_redraw_clip_.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/packages/unstable/mutter/debian/patches/00git-meta-window-group-Use-clutter_stage_get_redraw_clip_.patch?rev=30480&op=file
==============================================================================
--- packages/unstable/mutter/debian/patches/00git-meta-window-group-Use-clutter_stage_get_redraw_clip_.patch (added)
+++ packages/unstable/mutter/debian/patches/00git-meta-window-group-Use-clutter_stage_get_redraw_clip_.patch [utf-8] Fri Oct 14 14:56:39 2011
@@ -1,0 +1,101 @@
+From 4167ef870c9a03b360bb6d0eead230ea40559927 Mon Sep 17 00:00:00 2001
+From: Neil Roberts <neil at linux.intel.com>
+Date: Wed, 13 Jul 2011 14:01:05 +0100
+Subject: [PATCH] meta-window-group: Use clutter_stage_get_redraw_clip_bounds
+
+Clutter now has some API to get the bounds of the current redraw clip
+so Mutter no longer needs to make direct GL calls to get the scissor
+rect. This should make it more robust against Cogl or Clutter changing
+how it does the clipping.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=654551
+---
+ configure.in | 2 +-
+ src/compositor/meta-window-group.c | 50 +++++++++--------------------------
+ 2 files changed, 14 insertions(+), 38 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index 27e650f..25bcc86 100644
+--- a/configure.in
++++ b/configure.in
+@@ -185,7 +185,7 @@ else
+ AC_MSG_ERROR([no. Mutter requires the Xcomposite extension to build.])
+ fi
+
+-CLUTTER_VERSION=1.2.0
++CLUTTER_VERSION=1.7.5
+ CLUTTER_PACKAGE=clutter-1.0
+ AC_SUBST(CLUTTER_PACKAGE)
+ if $PKG_CONFIG --atleast-version $CLUTTER_VERSION $CLUTTER_PACKAGE ; then
+diff --git a/src/compositor/meta-window-group.c b/src/compositor/meta-window-group.c
+index 857eab0..c5fc397 100644
+--- a/src/compositor/meta-window-group.c
++++ b/src/compositor/meta-window-group.c
+@@ -103,11 +103,9 @@ actor_is_untransformed (ClutterActor *actor,
+ static void
+ meta_window_group_paint (ClutterActor *actor)
+ {
+- MetaWindowGroup *window_group = META_WINDOW_GROUP (actor);
+ cairo_region_t *visible_region;
+- GLboolean scissor_test;
+- cairo_rectangle_int_t screen_rect = { 0 };
+- cairo_rectangle_int_t scissor_rect;
++ ClutterActor *stage;
++ cairo_rectangle_int_t visible_rect;
+ GList *children, *l;
+
+ /* We walk the list from top to bottom (opposite of painting order),
+@@ -117,39 +115,17 @@ meta_window_group_paint (ClutterActor *actor)
+ children = clutter_container_get_children (CLUTTER_CONTAINER (actor));
+ children = g_list_reverse (children);
+
+- /* Start off with the full screen area (for a multihead setup, we
+- * might want to use a more accurate union of the monitors to avoid
+- * painting in holes from mismatched monitor sizes. That's just an
+- * optimization, however.)
+- */
+- meta_screen_get_size (window_group->screen, &screen_rect.width, &screen_rect.height);
+-
+- /* When doing a partial stage paint, Clutter will set the GL scissor
+- * box to the clip rectangle for the partial repaint. We combine the screen
+- * rectangle with the scissor box to get the region we need to
+- * paint. (Strangely, the scissor box sometimes seems to be bigger
+- * than the stage ... Clutter should probably be clampimg)
+- */
+- glGetBooleanv (GL_SCISSOR_TEST, &scissor_test);
+-
+- if (scissor_test)
+- {
+- GLint scissor_box[4];
+- glGetIntegerv (GL_SCISSOR_BOX, scissor_box);
+-
+- scissor_rect.x = scissor_box[0];
+- scissor_rect.y = screen_rect.height - (scissor_box[1] + scissor_box[3]);
+- scissor_rect.width = scissor_box[2];
+- scissor_rect.height = scissor_box[3];
+-
+- gdk_rectangle_intersect (&scissor_rect, &screen_rect, &scissor_rect);
+- }
+- else
+- {
+- scissor_rect = screen_rect;
+- }
+-
+- visible_region = cairo_region_create_rectangle (&scissor_rect);
++ /* Get the clipped redraw bounds from Clutter so that we can avoid
++ * painting shadows on windows that don't need to be painted in this
++ * frame. In the case of a multihead setup with mismatched monitor
++ * sizes, we could intersect this with an accurate union of the
++ * monitors to avoid painting shadows that are visible only in the
++ * holes. */
++ stage = clutter_actor_get_stage (actor);
++ clutter_stage_get_redraw_clip_bounds (CLUTTER_STAGE (stage),
++ &visible_rect);
++
++ visible_region = cairo_region_create_rectangle (&visible_rect);
+
+ for (l = children; l; l = l->next)
+ {
+--
+1.7.5.4
+
Modified: packages/unstable/mutter/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-gnome/packages/unstable/mutter/debian/patches/series?rev=30480&op=diff
==============================================================================
--- packages/unstable/mutter/debian/patches/series [utf-8] (original)
+++ packages/unstable/mutter/debian/patches/series [utf-8] Fri Oct 14 14:56:39 2011
@@ -1,1 +1,3 @@
+00git-meta-window-group-Use-clutter_stage_get_redraw_clip_.patch
+00git-Use-a-utility-function-to-create-GL_ARB_texture_rect.patch
01_Wcast-align.patch
More information about the pkg-gnome-commits
mailing list