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