mirror of
https://github.com/brl/mutter.git
synced 2024-12-23 11:32:04 +00:00
2007-07-30 Matthew Allum <mallum@openedhand.com>
* clutter/clutter-texture.c: Fix re-relisation for large tiled textures. * tests/test-textures.c: (main): Add a show/hide to trigger above (see #442)
This commit is contained in:
parent
249ada48bc
commit
0151f842d7
@ -1,3 +1,10 @@
|
|||||||
|
2007-07-30 Matthew Allum <mallum@openedhand.com>
|
||||||
|
|
||||||
|
* clutter/clutter-texture.c:
|
||||||
|
Fix re-relisation for large tiled textures.
|
||||||
|
* tests/test-textures.c: (main):
|
||||||
|
Add a show/hide to trigger above (see #442)
|
||||||
|
|
||||||
2007-07-29 Emmanuele Bassi <ebassi@openedhand.com>
|
2007-07-29 Emmanuele Bassi <ebassi@openedhand.com>
|
||||||
|
|
||||||
* clutter/clutter-types.h: Document ClutterGravity enumeration
|
* clutter/clutter-types.h: Document ClutterGravity enumeration
|
||||||
|
@ -649,6 +649,8 @@ clutter_texture_realize (ClutterActor *actor)
|
|||||||
/* Move any local image data we have from unrealization
|
/* Move any local image data we have from unrealization
|
||||||
* back into video memory.
|
* back into video memory.
|
||||||
*/
|
*/
|
||||||
|
if (priv->is_tiled)
|
||||||
|
texture_init_tiles (texture);
|
||||||
clutter_texture_set_pixbuf (texture, priv->local_pixbuf, NULL);
|
clutter_texture_set_pixbuf (texture, priv->local_pixbuf, NULL);
|
||||||
g_object_unref (priv->local_pixbuf);
|
g_object_unref (priv->local_pixbuf);
|
||||||
priv->local_pixbuf = NULL;
|
priv->local_pixbuf = NULL;
|
||||||
@ -1146,7 +1148,7 @@ clutter_texture_get_pixbuf (ClutterTexture* texture)
|
|||||||
src_w = priv->x_tiles[x].size;
|
src_w = priv->x_tiles[x].size;
|
||||||
src_h = priv->y_tiles[y].size;
|
src_h = priv->y_tiles[y].size;
|
||||||
|
|
||||||
pixels = g_malloc (((src_w * bpp) &~ 3) * src_h);
|
pixels = g_malloc (((src_w * bpp + 3) &~ 3) * src_h);
|
||||||
|
|
||||||
glBindTexture(priv->target_type, priv->tiles[i]);
|
glBindTexture(priv->target_type, priv->tiles[i]);
|
||||||
|
|
||||||
@ -1161,13 +1163,6 @@ clutter_texture_get_pixbuf (ClutterTexture* texture)
|
|||||||
PIXEL_TYPE,
|
PIXEL_TYPE,
|
||||||
(GLvoid *) pixels);
|
(GLvoid *) pixels);
|
||||||
|
|
||||||
/* Clip */
|
|
||||||
if (priv->x_tiles[x].pos + src_w > priv->width)
|
|
||||||
src_w = priv->width - priv->x_tiles[x].pos;
|
|
||||||
|
|
||||||
if (priv->y_tiles[y].pos + src_h > priv->height)
|
|
||||||
src_h = priv->height - priv->y_tiles[y].pos;
|
|
||||||
|
|
||||||
tmp_pixb =
|
tmp_pixb =
|
||||||
gdk_pixbuf_new_from_data ((const guchar*)pixels,
|
gdk_pixbuf_new_from_data ((const guchar*)pixels,
|
||||||
GDK_COLORSPACE_RGB,
|
GDK_COLORSPACE_RGB,
|
||||||
@ -1180,6 +1175,13 @@ clutter_texture_get_pixbuf (ClutterTexture* texture)
|
|||||||
pixbuf_destroy_notify,
|
pixbuf_destroy_notify,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
/* Clip */
|
||||||
|
if (priv->x_tiles[x].pos + src_w > priv->width)
|
||||||
|
src_w = priv->width - priv->x_tiles[x].pos;
|
||||||
|
|
||||||
|
if (priv->y_tiles[y].pos + src_h > priv->height)
|
||||||
|
src_h = priv->height - priv->y_tiles[y].pos;
|
||||||
|
|
||||||
gdk_pixbuf_copy_area (tmp_pixb,
|
gdk_pixbuf_copy_area (tmp_pixb,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
@ -1248,7 +1250,7 @@ clutter_texture_set_from_rgb_data (ClutterTexture *texture,
|
|||||||
g_return_val_if_fail (bpp == 4, FALSE);
|
g_return_val_if_fail (bpp == 4, FALSE);
|
||||||
|
|
||||||
texture_dirty = size_change =
|
texture_dirty = size_change =
|
||||||
(width != priv->width || height != priv->height);
|
(width != priv->width || height != priv->height) ;
|
||||||
|
|
||||||
prev_format = priv->pixel_format;
|
prev_format = priv->pixel_format;
|
||||||
|
|
||||||
|
@ -87,6 +87,10 @@ main (int argc, char *argv[])
|
|||||||
clutter_actor_set_size (texture, 400, 400);
|
clutter_actor_set_size (texture, 400, 400);
|
||||||
clutter_actor_show (texture);
|
clutter_actor_show (texture);
|
||||||
|
|
||||||
|
/* Hide & show to unreaise then realise the texture */
|
||||||
|
clutter_actor_hide (texture);
|
||||||
|
clutter_actor_show (texture);
|
||||||
|
|
||||||
clutter_texture_get_n_tiles(CLUTTER_TEXTURE(texture), &cols, &rows);
|
clutter_texture_get_n_tiles(CLUTTER_TEXTURE(texture), &cols, &rows);
|
||||||
|
|
||||||
printf("with tiles: %i x %i\n", cols, rows);
|
printf("with tiles: %i x %i\n", cols, rows);
|
||||||
|
Loading…
Reference in New Issue
Block a user