148 lines
6.2 KiB
Diff
148 lines
6.2 KiB
Diff
diff --git a/configure.ac b/configure.ac
|
|
index fe56026..f085550 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -76,7 +76,7 @@ MUTTER_PC_MODULES="
|
|
gsettings-desktop-schemas >= 3.7.3
|
|
xcomposite >= 0.2 xfixes xrender xdamage xi >= 1.6.0
|
|
$CLUTTER_PACKAGE >= 1.15.90
|
|
- cogl-1.0 >= 1.17.1
|
|
+ cogl-1.0 >= 1.15.6
|
|
upower-glib >= 0.99.0
|
|
gnome-desktop-3.0
|
|
"
|
|
diff --git a/src/compositor/meta-texture-rectangle.c b/src/compositor/meta-texture-rectangle.c
|
|
index cd585b5..3fc9430 100644
|
|
--- a/src/compositor/meta-texture-rectangle.c
|
|
+++ b/src/compositor/meta-texture-rectangle.c
|
|
@@ -26,6 +26,41 @@
|
|
#include <clutter/clutter.h>
|
|
#include "meta-texture-rectangle.h"
|
|
|
|
+CoglTexture *
|
|
+meta_texture_rectangle_new (unsigned int width,
|
|
+ unsigned int height,
|
|
+ CoglPixelFormat format,
|
|
+ CoglPixelFormat internal_format,
|
|
+ unsigned int rowstride,
|
|
+ const guint8 *data,
|
|
+ GError **error)
|
|
+{
|
|
+ ClutterBackend *backend =
|
|
+ clutter_get_default_backend ();
|
|
+ CoglContext *context =
|
|
+ clutter_backend_get_cogl_context (backend);
|
|
+ CoglTextureRectangle *tex_rect;
|
|
+
|
|
+ tex_rect = cogl_texture_rectangle_new_with_size (context,
|
|
+ width, height,
|
|
+ internal_format,
|
|
+ error);
|
|
+ if (tex_rect == NULL)
|
|
+ return NULL;
|
|
+
|
|
+ if (data)
|
|
+ cogl_texture_set_region (COGL_TEXTURE (tex_rect),
|
|
+ 0, 0, /* src_x/y */
|
|
+ 0, 0, /* dst_x/y */
|
|
+ width, height, /* dst_width/height */
|
|
+ width, height, /* width/height */
|
|
+ format,
|
|
+ rowstride,
|
|
+ data);
|
|
+
|
|
+ return COGL_TEXTURE (tex_rect);
|
|
+}
|
|
+
|
|
static void
|
|
texture_rectangle_check_cb (CoglTexture *sub_texture,
|
|
const float *sub_texture_coords,
|
|
diff --git a/src/compositor/meta-texture-rectangle.h b/src/compositor/meta-texture-rectangle.h
|
|
index ba2624f..30f60d3 100644
|
|
--- a/src/compositor/meta-texture-rectangle.h
|
|
+++ b/src/compositor/meta-texture-rectangle.h
|
|
@@ -28,6 +28,15 @@
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
+CoglTexture *
|
|
+meta_texture_rectangle_new (unsigned int width,
|
|
+ unsigned int height,
|
|
+ CoglPixelFormat format,
|
|
+ CoglPixelFormat internal_format,
|
|
+ unsigned int rowstride,
|
|
+ const guint8 *data,
|
|
+ GError **error);
|
|
+
|
|
gboolean
|
|
meta_texture_rectangle_check (CoglTexture *texture);
|
|
|
|
diff --git a/src/compositor/meta-texture-tower.c b/src/compositor/meta-texture-tower.c
|
|
index 5d82add..9a30de0 100644
|
|
--- a/src/compositor/meta-texture-tower.c
|
|
+++ b/src/compositor/meta-texture-tower.c
|
|
@@ -359,10 +359,18 @@ texture_tower_create_texture (MetaTextureTower *tower,
|
|
if ((!is_power_of_two (width) || !is_power_of_two (height)) &&
|
|
meta_texture_rectangle_check (tower->textures[level - 1]))
|
|
{
|
|
- ClutterBackend *backend = clutter_get_default_backend ();
|
|
- CoglContext *context = clutter_backend_get_cogl_context (backend);
|
|
-
|
|
- tower->textures[level] = cogl_texture_rectangle_new_with_size (context, width, height);
|
|
+ tower->textures[level] =
|
|
+ meta_texture_rectangle_new (width, height,
|
|
+ /* data format */
|
|
+ TEXTURE_FORMAT,
|
|
+ /* internal cogl format */
|
|
+ TEXTURE_FORMAT,
|
|
+ /* rowstride */
|
|
+ width * 4,
|
|
+ /* data */
|
|
+ NULL,
|
|
+ /* error */
|
|
+ NULL);
|
|
}
|
|
else
|
|
{
|
|
diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c
|
|
index b9473d2..a2c05ca 100644
|
|
--- a/src/compositor/meta-window-actor.c
|
|
+++ b/src/compositor/meta-window-actor.c
|
|
@@ -2165,18 +2165,12 @@ build_and_scan_frame_mask (MetaWindowActor *self,
|
|
|
|
if (meta_texture_rectangle_check (paint_tex))
|
|
{
|
|
- ClutterBackend *backend = clutter_get_default_backend ();
|
|
- CoglContext *context = clutter_backend_get_cogl_context (backend);
|
|
-
|
|
- mask_texture = COGL_TEXTURE (cogl_texture_rectangle_new_with_size (context, tex_width, tex_height));
|
|
- cogl_texture_set_components (mask_texture, COGL_TEXTURE_COMPONENTS_A);
|
|
- cogl_texture_set_region (mask_texture,
|
|
- 0, 0, /* src_x/y */
|
|
- 0, 0, /* dst_x/y */
|
|
- tex_width, tex_height, /* dst_width/height */
|
|
- tex_width, tex_height, /* width/height */
|
|
- COGL_PIXEL_FORMAT_A_8,
|
|
- stride, mask_data);
|
|
+ mask_texture = meta_texture_rectangle_new (tex_width, tex_height,
|
|
+ COGL_PIXEL_FORMAT_A_8,
|
|
+ COGL_PIXEL_FORMAT_A_8,
|
|
+ stride,
|
|
+ mask_data,
|
|
+ NULL /* error */);
|
|
}
|
|
else
|
|
{
|
|
diff --git a/src/core/meta-cursor-tracker.c b/src/core/meta-cursor-tracker.c
|
|
index 84f3185..d1b365e 100644
|
|
--- a/src/core/meta-cursor-tracker.c
|
|
+++ b/src/core/meta-cursor-tracker.c
|
|
@@ -307,6 +307,7 @@ ensure_xfixes_cursor (MetaCursorTracker *tracker)
|
|
cursor_image->width,
|
|
cursor_image->height,
|
|
CLUTTER_CAIRO_FORMAT_ARGB32,
|
|
+ COGL_PIXEL_FORMAT_ANY,
|
|
cursor_image->width * 4, /* stride */
|
|
cursor_data,
|
|
NULL);
|