* clutter/clutter-stage.c:
(clutter_stage_allocate): Check if the stage provided by the
backend is static (i.e. a framebuffer that cannot be resized)
and interrupt the allocation chain there.
* clutter/eglnative/clutter-stage-egl.c:
(clutter_stage_egl_class_init): Remove the ::allocate empty
stub.
actor clip being enabled or disabled in an actor paint
method. Otherwise the clip stack can be become unbalanced. This
was happening in ClutterEntry until it was fixed in revision 2983.
Bug 989 - Add a search path for clutter script assets
* clutter/clutter-script.h:
* clutter/clutter-script.c:
(clutter_script_finalize),
(clutter_script_add_search_paths),
(clutter_script_lookup_filename): Add the ability to define multiple
search paths inside ClutterScript and to look up a specific filename
inside those search paths. This is useful to define a set of
directories where the assets for a UI definition are and still
reference those assets by their name instead of the full path. (989,
based on a patch by Matthew Allum)
* clutter/clutter-texture.c:
(clutter_texture_set_custom_property): Use the newly added
clutter_script_lookup_filename() function.
* clutter/cogl/gles/cogl-gles2-wrapper.c: All of the settings and
uniforms are now proxied into COGL variables instead of setting
the GL uniforms directly. Just before glDrawArrays is executed a
shader is generated using the given settings to avoid using 'if'
statements. The shaders are cached.
* clutter/cogl/gles/cogl-fixed-vertex-shader.glsl:
* clutter/cogl/gles/cogl-fixed-fragment-shader.glsl: The shaders
are now split into parts using comments instead of 'if' statements
so that the simplest shader can be generated on the fly.
* clutter/cogl/gles/stringify.sh: Now splits up the shader sources
into separate C strings where deliminated by special comments.
* clutter/cogl/gles/cogl-program.h:
* clutter/cogl/gles/cogl-program.c: A custom shader can no longer
be directly linked with the fixed-functionality replacement
because the replacement changes depending on the settings. Instead
the bound shader is linked with the appropriate replacement shader
just before glDrawArrays is executed. The custom uniform variables
must also be proxied through COGL variables because their location
can change when relinked.
* clutter/x11/clutter-event-x11.c (event_translate): Set the
event type explicitly in the union members as well for the
key events, like we do for all the other events.
using COGL directly instead of setting the actor clip. Otherwise
the clip stack will be unbalanced after the first draw. This also
frees up the actor clip to be set by an application.
* NEWS:
Add a quick note on fruity multiple deivce support.
* README:
Add multiple device support details and some tweaks on
Clutter requirements (i.e GdkPixbuf).
* clutter/clutter-texture.c:
(clutter_texture_get_preferred_width),
(clutter_texture_get_preferred_height),
(clutter_texture_set_property),
(clutter_texture_get_property),
(clutter_texture_class_init),
(clutter_texture_init): Add the new :keep-aspect-ratio property
to ClutterTexture; when set to TRUE the texture will return a
preferred width maintaining the aspect ratio with the given height
and a preferred height maintaining the aspect ratio with the
given width. This allows to set the width or the height and have
the texture automatically request the height or the width respectively
while maintaining the aspect ratio of the original image.
* tests/test-script.json: Update to test the new :keep-aspect-ratio
property.
* clutter/cogl/common/cogl-clip-stack.h:
* clutter/cogl/common/cogl-clip-stack.c: Added functions to
maintain a stack of clipping rectangles.
* clutter/cogl/gles/cogl.c:
* clutter/cogl/gl/cogl.c: The cogl_clip_set and unset functions
have moved into cogl-clip-stack.c which calls back to cogl.c to
set the actual rectangles. Multiple clip rectangles are combined
by merging the stencil buffers.
* clutter/cogl/gles/cogl-primitives.c (_cogl_path_fill_nodes):
* clutter/cogl/gl/cogl-primitives.c (_cogl_path_fill_nodes): Merge
the stencil buffer with the contents of the clipping stack after
drawing the path.
* clutter/cogl/gles/cogl-context.h (CoglContext):
* clutter/cogl/gl/cogl-context.h (CoglContext): Store the number
of available stencil bits.
* clutter/cogl/common/Makefile.am
(libclutter_cogl_common_la_SOURCES): Added cogl-clip-stack.c
Bug 984 - pango_clutter_render_layout() declared void, but
returns (Haakon Sporsheim)
* clutter/pango/pangoclutter-render.c:
(pango_clutter_render_layout): Do not use a return statement.
Bug 905 - Paint cursor directly (Xan López)
* clutter/clutter-entry.c:
(clutter_entry_paint_cursor),
(clutter_entry_init),
(clutter_entry_set_color): Directly paint the cursor on the
entry instead of using an actor.
Bug 981 - clutter_stage_read_pixels temprow fix (Haakon Sporsheim)
* clutter/clutter-stage.c (clutter_stage_read_pixels): Allocate
the temporary row data used to flip the buffer from glReadPixels()
in order to fix compilation under MSVC. Also validate the input
parameters to avoid random segfaults.
* clutter/clutter-script.c: Be more explicit about the fact that
the script id is not the name of an actor, and that it is retrieved
by using clutter_get_script_id().
* clutter/clutter-actor.h:
* clutter/clutter-actor.c:
(clutter_actor_allocate_preferred_size): Add more documentation
and notes on where it's appropriate to call this function.
* clutter/clutter-actor.c:
* clutter/clutter-actor.h:
Clean up of parenting code (see #972)
Doc updates to section intro.
Add clutter_actor_allocate_preferred_size () utility call
* clutter/clutter-group.c: (clutter_fixed_layout_allocate):
Use clutter_actor_allocate_preferred_size ()
* doc/clutter-actor-invariants.txt:
Add some more notes
* clutter/clutter-actor.c:
(clutter_actor_set_parent): Do not emit ::parent-set when
reparenting.
(clutter_actor_unparent): Ditto, as above.
(clutter_actor_reparent): Emit ::parent-set with the old
parent and set the IN_REPARENT flag unconditionally.
* doc/clutter-actor-invariants.txt: Document the flags, the
invariants, the state changes and the minimum requirements for
actor implementations. Needs to be tweaked and fleshed out
before 0.8.0, and we obviously need to enforce the invariants.
* clutter/clutter-actor.c:
(clutter_actor_set_parent): Document and maintain the invariant
that after setting a realized parent on an actor, the actor is
also going to be realized.
(clutter_actor_unparent): Change the invariant that an unparented
actor is also unrealized: the paint is fast enough to avoid
unrealizing, since it also causes more problems that what it's
worth.
* tests/test-invariants.c (test_show_on_set_parent): Update the
invariants test because we changed the invariants.
* clutter/clutter-actor.c (clutter_actor_unparent): Reset the
:show-on-set-parent property to TRUE when unparenting.
* tests/Makefile.am: Add test-invariant to the build.
* tests/test-invariants.c: Test the invariants that we are going
to honour (and document, at some point).
* clutter/clutter-actor.c:
(clutter_actor_move_anchor_point):
(clutter_actor_move_anchor_pointu):
(clutter_actor_move_anchor_point_from_gravity):
Fixed incorrect sign of position adjustment.
Fixed replace call to _move_by with move_byu in
_move_anchor_pointu.
Stripped trailing whitespace.
Bug #967 - Mismatch of Timeline::marker-reached signal signature
* clutter/clutter-marshal.list:
* clutter/clutter-timeline.c:
(clutter_timeline_class_init): Fix the type of the frame_num
argument in the ::marker-reached signal creation to match the
signal class handler. (Armin Burgmeier)
* clutter/clutter-texture.c:
(clutter_texture_unrealize), (clutter_texture_dispose): Add a
guard against reading back memory during the unrealization on
dispose.
Bug #953 - Actors are not hidden before unrealized or
disposed (Tommi Komulainen)
* clutter/clutter-actor.c:
(clutter_actor_unrealize): Hide a visible actor when unrealizing
it.
(clutter_actor_dispose): Make sure to unrealize an actor when
disposing it.
* clutter/clutter-actor.c:
(clutter_actor_dispose), (clutter_actor_destroy),
(clutter_actor_unparent): Clean up the actor's destruction
sequence, making sure that every operation is performed
under the CLUTTER_ACTOR_IN_DESTRUCTION internal flag.