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 #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);