Bug 1154 - clutter_timeout_pool_new() documentation doesn't say
how to free
* clutter/clutter-timeout-pool.c: Update the documentation to
note that you must use g_source_unref() to free the timeout
pool. (Murray Cumming)
Bug 1124 - Clutter causes an additional size request in each
allocation
* clutter/clutter-actor.c:
(clutter_actor_store_old_geometry): Store the allocation instead
of causing a new size-request cycle. (Johan Bilien)
Bug 1125 - Save an extra pango_layout_get_size in many cases
* clutter/clutter-label.c:
(clutter_label_create_layout_no_cache): Add a simple check
before calling pango_layout_get_size(). (Johan Bilien)
* clutter/clutter-alpha.c:
(clutter_alpha_get_alpha): Do not return the cached value but
just compute the current alpha value. The use case is pretty
much straightforward: stop a timeline, advance it, and retrieve
the alpha value before starting the timeline to adjust an
animation dependent on the alpha. Caching the alpha value is
not needed because the behaviours will always pass the alpha
value inside the ::alpha-notify virtual function anyway, so
there is no need for them to call clutter_alpha_get_alpha().
This change makes it also possible to reliably unit-test
ClutterAlpha.
(timeline_new_frame_cb): Call clutter_alpha_get_alpha().
* clutter/clutter-main.c:
* clutter/clutter-main.h:
* clutter/clutter-private.h:
* clutter/x11/clutter-backend-x11.c:
(clutter_get_option_group_without_init):
Function to obtain clutter option group without opening display
(for use with foreign display and gtk_clutter_init). Bug 1033.
Stripped trailing whitespace.
* clutter/clutter-main.c: Don't free the ClutterMainContext so
that the main loop can be restarted.
* clutter/eglx/clutter-backend-egl.c:
* clutter/eglnative/clutter-backend-egl.c: Register an atexit
handler which disposes the backend object so that we are still
guaranteed to call eglTerminate on GLES.
Bug 1033 - Manually parsing command line options prevents
initializing clutter
* clutter/clutter-main.c:
(post_parse_hook), (clutter_init_with_args),
(clutter_parse_args), (clutter_init): Move the initialization
of Clutter at the end of the post-parse hook of Clutter's
GOptionGroup. Clutter must be initialized at the end of the
argument parsing.
* clutter/clutter-main.c: Properly document the
clutter_get_option_group() function and the invariant that
after parsing Clutter's option group the library will be
initialized. (Thanks to Tomas Frydrych for pointing this
out)
* clutter/x11/clutter-backend-x11.c: Properly document the
usage of clutter_x11_set_display().
* clutter/x11/clutter-x11.h: clutter_x11_set_display() is
public API and should be declared in the header we install.
* clutter/cogl/gl/cogl-texture.c (cogl_texture_set_region):
* clutter/cogl/gles/cogl-texture.c (cogl_texture_set_region):
Don't attempt to upload any data if the width or height of the
subregion is zero. Thanks to Gwenole Beauchesne.
* clutter/cogl/gles/cogl.c (cogl_get_viewport): Use glGetIntegerv
instead of glGetFixedv to read the viewport because the latter
converts incorrectly on some hardware.
* clutter/clutter-stage.c (clutter_stage_read_pixels): Use
OpenGL's coordinate system for the arguments to glReadPixels (so
that y zero is the bottom of the window). Use clutter_redraw
instead of clutter_stage_paint to ensure the right GL context is
selected. Set some of the glPixelStore parameters that might have
been changed by Cogl.
* tests/test-stage-read-pixels.c: Replace with a different test
that gets a sub-region of the stage around the cursor.
* clutter/glx/clutter-stage-glx.c (clutter_stage_glx_realize):
Don't set a backing pixel on the X window. Otherwise when the
window resizes it will flicker when X paints the background
immediatly before Clutter repaints the whole stage.
* clutter/clutter-actor.c
(clutter_actor_set_anchor_point_from_gravity)
(clutter_actor_move_anchor_point_from_gravity): Add documentation
to make it clear that the anchor point won't move when the actor
is resized.
window_style correction.
* clutter/win32/clutter-stage-win32.c (get_window_style): Remove
the WS_MAXIMIZEBOX style if the stage isn't resizable.
(clutter_stage_win32_set_user_resize): Queue a redraw of the
window frame when the user_resize property is changed.
* clutter/win32/clutter-event-win32.c (message_translate): Don't
update the size of the stage when handling WM_SIZE messages that
result from the stage being minimized. Thanks to Roman Yazmin.
* clutter/glx/clutter-glx-texture-pixmap.c:
* clutter/x11/clutter-x11-texture-pixmap.c:
TFP resyncing on MapNotify/ConfigureNotify (bug 1020; patch by
Andy Wingo <wingo@pobox.com>).
* clutter/clutter-main.c (_clutter_id_to_color): When choosing a
pick color, set all but the most significant of the unused
bits. This should make make it more likely that the GL
implementation will round down to the right value.
* tests/test-pick.c: Test case for picking. It creates 192 actors
at known positions and stores their gids. It then calls
clutter_stage_get_actor_at_pos with each position to check that
the right gid is returned.
* tests/Makefile.am (noinst_PROGRAMS): Add test-pick
* clutter/clutter-label.c: Bring back layout caching. This time it
will cache up to three different layouts. The width for which each
layout was generated is stored so that if the same width is
requested again it can use the cached version. If no cached
version is available it will try to replace the oldest
layout. 'Age' is determined by a counter which is incremented
every time a layout is created. The cache is cleared after any
property changes that might affect the layout.
(struct _ClutterLabelPrivate): Removed extents_width,
extents_height and context because they weren't used anywhere.
* tests/test-label-cache.c: Add a test which checks whether the
label is using a different layout when properties are
changed. Also compares the extents of the label's layout with an
independent layout and fails if they aren't the same.
* tests/Makefile.am (noinst_PROGRAMS): Add test-label-cache
* clutter/clutter-actor.c (clutter_actor_set_property): When
changing the anchor point properties, use set_anchor_pointu
instead of changing the value directly so that a redraw will be
queued.
(clutter_actor_set_anchor_pointu): Queue a redraw when the anchor
point is changed. Thanks to Johan Bilien.
Bug 1082 - Texture bitmap is destroyed in wrong way
* clutter/cogl/common/cogl-bitmap-pixbuf.c:
(_cogl_bitmap_from_file): Make a copy of the pixbuf data in
the internal image loader so that we can keep working under
the assumption that we are using the GLib memory allocation
and deallocation functions.
Bug 1099 - No ClutterScript API to get a list of IDs in a given file
* clutter/clutter-script.[ch]: Add clutter_script_list_objects(),
a function for retrieving all the objects built by a ClutterScript
instance. (Based on a patch by Noah Gibbs)
Bug 1090 - Label somtimes returns natural_width < min_width
* clutter/clutter-label.c:
(clutter_label_get_preferred_width): Check that the width of the
layout is always greater than 0. (Johan Bilien)
* doc/reference/clutter/subclassing-ClutterActor.xml: Update the
custom actor example since the Cogl API was changed to namespace
all of the path related functions in cogl_path_*. Thanks to Nati
Berkover.
* clutter/clutter-score.c: Add missing parameter in example of
calling clutter_score_start().
x-align property
* clutter/clutter-entry.c (clutter_entry_paint): When calculating
the position to draw the cursor at, take into account the
alignment of the text. Queue a redraw when the x-align property is
changed.
* clutter/win32/clutter-event-win32.c (message_translate): The
coordinates in a WM_MOUSEWEEL message are given relative to the
screen so they need to be converted to client coordinates before
use. Thanks to Roman Yazmin.
* clutter/clutter-child-meta.c:
(clutter_child_meta_set_property),
(clutter_child_meta_class_init): Make the :container and
:actor properties of ChildMeta construct-only, to allow
bindings to actually use ChildMeta without abusing the API.
* clutter/clutter-container.c (create_child_meta): Instead of
setting the members of the ChildMeta structure, use the
constructor properties.
* clutter/clutter-script-parser.c:
* clutter/clutter-script-private.h: Clean up the code; add a
conversion function for reading a ClutterColor out of a
JSON object or array definition.
* clutter/clutter-script.c: Clean up the code; document properly
how we translate from type name to type function.
* clutter/cogl/gl/cogl.c:
* clutter/cogl/gles/cogl.c:
* clutter/cogl/cogl.h.in: Add cogl_clip_stack_save,
cogl_clip_stack_restore, cogl_viewport and cogl_frustum.
* clutter/cogl/gl/cogl-fbo.h:
* clutter/cogl/gl/cogl-fbo.c: Try to attach a stencil buffer when
creating an FBO.
* clutter/cogl/common/cogl-clip-stack.c: Add functions to save and
restore the whole state of the stack.
* clutter/clutter-texture.c (clutter_texture_paint): When
rendering the FBO source, setup a temporary asymmetric perspective
projection matrix to render it as it would appear on screen.
* clutter/clutter-private.h:
* clutter/clutter-actor.c
(_clutter_actor_apply_modelview_transform_recursive): No longer
static and exported in clutter-private.h
* clutter/clutter-timeline.c: Calculate the 'duration' property
on-demand instead of storing it as a member variable. Notify
duration property changes whenever the fps or num_frames changes.
* clutter/clutter-score.c (clutter_score_is_playing): Check
whether priv->running_timelines is NULL before checking its
length.
(foreach_running_timeline): Remove the completed signal handler
when stopping the score. Otherwise the completed callback will get
called multiple times if the timeline is started later.
* clutter/clutter-stage.c (clutter_stage_dispose): Unrealize the
stage before removing the update idle handler. Otherwise
unrealizing causes another redraw to be queued and if the stage
object remains alive it will cause an assert and abort.
* clutter/clutter-fixed.h:
* clutter/clutter-units.h: Fix the upper and lower boundaries of
ClutterFixed and ClutterUnit types; G_MAXINT16 and G_MININT16
were not enough to describe those values.
* clutter/clutter-main.c:
Destroy the debugging timer when the context is freed.
* clutter/clutter-stage.c:
Free the stage title when the stage is finalized.
function is supposed to accept -1 to disable sorting. However it
checks for whether the column is >= the number of columns, but
clutter_model_get_n_columns() returns an unsigned int so the
column number also gets promoted to unsigned for the
comparison. Therefore -1 is always greater than the number of
columns so it wouldn't let you set it.
* clutter/clutter-rectangle.c:
* clutter/clutter-group.c:
* clutter/clutter-entry.c:
* clutter/clutter-clone-texture.c: Remove unnecessary calls to
cogl_{push,pop}_matrix. The matrix is preserved in
clutter_actor_paint whenever the actor's transformation is applied
so there should be no need to push the matrix in actor paint
implementations unless it does some additional transformations
itself.
* clutter/clutter-stage.c:
(clutter_stage_hide_cursor):
Fixed C&P bug that made it impossible to show cursor once hidden.
Stripped trailing whitespace.
Bug 1011 - Fix TFP fallback mechanism (take 2)
* clutter/glx/clutter-glx-texture-pixmap.c:
* tests/test-pixmap.c:
Slightly modified patch from Gwenole Beauchesne applied
to better handle both falling back to non accelerated tfp
and improvements to the test case.
Bug 1033 - Manually parsing command line options prevents
initializing clutter (Armin Burgmeier)
* clutter/clutter-main.c:
(post_parse_hook), (clutter_init_real): Set the is_initialized
flag inside the real initialization function.
new layout code
* clutter/clutter-texture.c (clutter_texture_new_from_actor): Now
parents the source actor if it doesn't already have a parent so
that it will get an allocation during layout.
* tests/test-fbo.c: One of the tests tries to ensure that the
ClutterTexture clone keeps the source actor alive by derefing
it. However as actors have a floating reference then test-fbo
doesn't have its own reference once the source is parented so
unrefing just steals the parent's reference and causes
badness. The test now claims the floating reference before cloning
the source so that it can safely be unref'd later.
(clutter_actor_get_abs_allocation_vertices): The initialization of
the local stage pointer got moved away in revision 3081 so it was
crashing if the function is called before the layout is run.
* clutter/clutter-label.c:
(clutter_label_create_layout_no_cache),
(clutter_label_create_layout): Split the layout creation in two
functions: one creating the layout, the other creating the layout
and hitting the glyphs cache. The first one is for the offscren
operations - like requesting the preferred size; the second one
is for paint and allocation.
(clutter_label_allocate): Try to aggressively cache the PangoLayout
between allocations - to avoid recreating it even when the label
just moved because of an animation. See bug #1010.
robust. There are situations though where the device seems to stop
generating any touch events until all fingers have been lifted and
a new interaction session is started.
Bug 1010 - ClutterLabel does not update the layout (Lee Jusung)
* clutter/clutter-actor.c:
(clutter_actor_queue_relayout): Remove some pointer dereferencing.
* clutter/clutter-label.c:
(clutter_label_allocate): Revert the change of r2883 and remove the
layout width cache and force a recreation of the layout every time
we receive an allocation.
This is now do-what-I-mean like clutter_actor_get_size so that if
the allocation box is available it will use that, otherwise it
will use the preferred size. clutter_actor_transform_vertices has
been converted to clutter_actor_transform_and_project_box so that
it can be used by both functions. Based on a patch by Emmanuele
Bassi.
(clutter_actor_get_abs_allocation_vertices)
(clutter_actor_get_allocation_vertices): These two functions now
force a relayout if the allocation box is not available.
* tests/test-fbo.c: Fixed the shader to use texture2D instead of
texture2DRect now that GL_EXT_texture_rectangle is no longer used.
Add a note to the clutter_stage_read_pixels doc that the alpha channel
isn't guaranteed to contain sensible data
* tests/test-stage-read-pixels.c: (update_snapshot):
Overwrite the alpha data when using clutter_stage_read_pixels; fixes
this test on non-nvidia drivers
* clutter/glx/clutter-stage-glx.c:
* clutter/x11/clutter-backend-x11.c:
* clutter/x11/clutter-backend-x11.h:
* clutter/x11/clutter-event-x11.c:
* clutter/x11/clutter-x11.h:
* tests/test-devices.c:
Disable use of XInput and add an explicit clutter_x11_enable_xinput
to enable it.
Also fix up the x11 pre-init calls to not need g_type_init.
* clutter/clutter-event.c: (clutter_event_get_device_id): swap
arguments of g_return_val_if_fail around.
* clutter/clutter-event.h: added *device field to crossing events as
well.
* clutter/clutter-main.c: (emit_pointer_event): added a device
argument and check for per device grabs if this device is passed.
(clutter_do_event): pass the device if present for all pointer event
emissions.
(generate_enter_leave_events): copy the device from the motion events
when generating enter/leave events.
Correct documentation about accepted pixel formats
* tests/test-stage-read-pixels.c: (main):
Don't try to free a ClutterTexture after main, fixes segfault on quit
* clutter/clutter-behaviour-bspline.h:
* clutter/clutter-behaviour.h:
* clutter/clutter-event.h:
* clutter/clutter-texture.h: Add missing documentation and
change the copyright and licensing notice to use the FSF
website instead of its address. (#512)
* clutter/cogl/gl/cogl.c (set_clip_plane):
* clutter/clutter-alpha.c (sinc_func): Use G_PI instead of M_PI
because M_PI isn't defined in MSVC without a special
#define. Thanks to Haakon Sporsheim
Bug 1007 - Fix TFP fallback mechanism
* clutter/glx/clutter-glx-texture-pixmap.c:
* clutter/x11/clutter-x11-texture-pixmap.c:
Add some extra safety to glx pixmap creations and tidy up some notes.
Patch from Gwenole Beauchesne.
Bug 1000 - clutter-x11 should define gtypes for its enumerations
* clutter/x11/Makefile.am:
* clutter/x11/clutter-event-x11.c:
* clutter/x11/clutter-x11-enum-types.c.in:
* clutter/x11/clutter-x11-enum-types.h.in:
* clutter/x11/clutter-x11.h: Add the GTypes for the X11-specific
enumerations, so that they can be used by the bindings. (Andy
Wingo)
Bug 997 - automatic updates not working for named TFP pixmaps,
at least in x11
* clutter/glx/clutter-glx-texture-pixmap.c:
* clutter/glx/clutter-glx-texture-pixmap.h:
* clutter/x11/clutter-backend-x11.c:
* clutter/x11/clutter-x11-texture-pixmap.c:
* clutter/x11/clutter-x11-texture-pixmap.h:
* clutter/x11/clutter-x11.h:
* configure.ac:
* tests/test-pixmap.c:
Rework Andy Wingos patch a little adding more safety for now also
handling redirect Windows (as well as pixmaps)
Bug 980 - cogl-bitmap-fallback.c compiler error/warning due to
cast issue (Haakon Sporsheim)
* clutter/cogl/common/cogl-bitmap-fallback.c:
(_cogl_unpremult_alpha_last),
(_cogl_unpremult_alpha_first): Cast to avoid a compiler warning
with MSC.
release events when pointer is outside window as well as re-enabling
keyrepeat.
* clutter/glx/clutter-stage-glx.c: (clutter_stage_glx_realize): select
for KeyPressMask and KeyReleaseMask even with XInput enabled.
* clutter/x11/clutter-backend-x11.c: (_clutter_x11_register_xinput):
Disabled the XInput keyboard code paths (comments and #if 0's)
* clutter/x11/clutter-event-x11.c: (event_translate): always handle
keyboard events without regard to XInput.
* clutter/osx/clutter-osx.h (_clutter_event_osx_put)
* clutter/osx/clutter-event-osx.c (clutter_event_osx_translate,
NSEvent:clutterStage:)
* clutter/osx/clutter-stage-osx.c (EVENT_HANDLER): Since events are
delivered to ClutterGLView, pass the associated ClutterStage directly
to event translation. Avoids relying on being embedded in
ClutterGLWindow, which makes it easier to implement clutter-gtk.
* clutter/osx/clutter-event.osx.c (NSEvent:clutterKeyVal:): Add
comment, on OSX backend the Shift modifier is included in 'keyval'
making it identical to 'unicode_value' Instead of <Shift>a or
<Shift>3 you'd get <Shift>A and <Shift>#
* clutter/cogl/gl/cogl.c:
Temp workaround for 10.4 ATI card OSX folks, see #929
(Tommi Komulainen)
Bug 998 - clutter always captures X input events
* clutter/eglx/clutter-stage-egl.c:
* clutter/glx/clutter-stage-glx.c:
When we disable X event retrival, dont still select for window
events.
* clutter/pango/pangoclutter-render.c: Fixed so that instead
of trying to set the color in prepare_run it uses draw_glyphs
to draw groups of glyphs and requests the color for each part
from Pango.
* clutter/clutter-actor.c:
(clutter_actor_set_min_width),
(clutter_actor_set_min_height),
(clutter_actor_set_natural_width),
(clutter_actor_set_natural_height): Ignore any override of the
minimum and natural size of the stage on backends that only
support static stages.
* clutter/clutter-stage.c (clutter_stage_allocate): Use the
preferred size of the ClutterStage implementation instead of
the display size.
* clutter/clutter-backend.[ch]: Remove get_display_size() and
clutter_backend_get_display_size().
* clutter/eglnative/clutter-backend-egl.c:
* clutter/fruity/clutter-backend-fruity.c:
* clutter/osx/clutter-backend-osx.c:
* clutter/sdl/clutter-backend-sdl.c:
* clutter/win32/clutter-backend-win32.c:
* clutter/x11/clutter-backend-x11.c: Remove get_display_size()
implementations.
* clutter/glx/clutter-glx-texture-pixmap.c:
Move the gl extension probe into the regular object init() rather than
class_init. Should be a little safer.
* clutter/clutter-main.h: Make the priority constants public.
* clutter/clutter-stage.c: Use CLUTTER_PRIORITY_REDRAW.
* clutter/clutter-timeline.c: Use CLUTTER_PRIORITY_TIMELINE.
* clutter/clutter-actor.c:
(clutter_actor_set_min_width),
(clutter_actor_set_min_height),
(clutter_actor_set_natural_width),
(clutter_actor_set_natural_height): Add a comment explaining
the override in place for backends providing a fixed size
on a stage.
* clutter/clutter-actor.c:
(clutter_actor_set_min_width),
(clutter_actor_set_min_height),
(clutter_actor_set_natural_width),
(clutter_actor_set_natural_height): If setting the minimum
and natural width and height on a top-level actor, and on
a backend that provides only static stages, then override
the value and use the size of the display as returned by
the backend.
* clutter/eglnative/clutter-stage-egl.c:
(clutter_stage_egl_realize): Remove the setting of the
minimum and natural width and height.
* clutter/clutter-stage.c:
(clutter_stage_allocate): Minor optimization.
(clutter_stage_init): Do not set the minimum size of the
stage wrapper, and require that the backends set the size
themselves.
* clutter/clutter-backend.c:
(clutter_backend_get_display_size): Provide a fallback for
backends not implementing get_display_size().
* clutter/clutter-stage.c:
(clutter_stage_allocate): Add debug messages.
* clutter/sdl/clutter-backend-sdl.c:
(clutter_backend_sdl_get_display_size),
(clutter_backend_sdl_class_init): Implement get_display_size()
on the SDL backend.
* clutter/clutter-backend.h:
* clutter/clutter-backend.c:
(clutter_backend_get_display_size): Add a function for getting the
display size out of the backend.
* clutter/clutter-stage.c:
(clutter_stage_allocate): When allocating on a backend with a
static stage, we simply ignore the passed box and override it with
the size of the display.
* clutter/eglnative/clutter-backend-egl.c:
(clutter_backend_egl_get_display_size),
(clutter_backend_egl_class_init): Implement get_display_size() by
returning the size of the EGL surface.
* clutter/fruity/clutter-backend-fruity.c:
(clutter_backend_egl_get_display_size),
(clutter_backend_egl_class_init): Ditto as above.
* clutter/x11/clutter-backend-x11.c:
(clutter_backend_x11_get_display_size),
(clutter_backend_x11_class_init): Implement get_display_size() by
returning the DisplayWidth and DisplayHeight of the current
screen.
(clutter_stage_win32_realize): Use a more direct method to choose
the best pixel format instead of ChoosePixelFormat because
otherwise if the display's depth is 16 then it will prefer the
non-accelerated software implementation when the requested depth
is 24.
* 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.
* 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.
* 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.
Bug #960 - PangoContext creation code should not be duplicated
* clutter/clutter-private.h:
* clutter/clutter-main.c:
(_clutter_context_create_pango_context): Abstract the creation
of the PangoContext inside its own function, to avoid code and
bugs duplication. (Tommi Komulainen)
* clutter/clutter-entry.c (clutter_entry_init): Use the newly
added PangoContext creation function.
* clutter/clutter-label.c (clutter_label_init): Ditto as above.
Bug #964 - "unrealized" signal of ClutterActor wrongly named
* clutter/clutter-actor.c (clutter_actor_class_init): Fix typo
in the ::unrealize signal name. (Armin Burgmeier)
* doc/reference/cogl/Makefile.am: Ignore cogl/gl and cogl/gles
when building the documentation.
* clutter/cogl/cogl.h.in: Add sections in the header file.
* clutter/clutter-actor.c: Add more clarifications on the
size and position accessors and the distinction between
transformed and untransformed actor box inside the actor's
description.
API. All code to do with positioning the stage has been removed so
the window is left where Windows wants to put it and it can not be
moved with clutter_actor_set_position.
* clutter/win32/clutter-stage-win32.h (ClutterStageWin32): Remove
win_xpos and win_ypos.
* clutter/win32/clutter-event-win32.c (message_translate): Remove
the handler for WM_MOVE because the stage no longer cares where it
is positioned.
* configure.ac: Detect the GL headers in flavour=fruity
* clutter/fruity/clutter-stage-fruity.c: Update the Fruity
backend to
use the new size negotiation API.
* clutter/clutter-label.c (clutter_label_allocate): Keep the
layout if the size of the allocation is the same as the last
allocation received by the label.
Bug #815 - Split up request, allocation, and paint box
* clutter/clutter-actor.[ch]: Rework the size allocation,
request and paint area. Now ::request_coords() is called
::allocate(), and ::query_coords() has been split into
::get_preferred_width() and ::get_preferred_height(). See
the documentation and the layout test on how to implement
a container and layout manager with the new API. (#915,
based on a patch by Havoc Pennington, Lucas Rocha and Johan
Bilien)
* clutter/clutter-clone-texture.c: Port CloneTexture to
the new size negotiation API; it just means forwarding
the requests to the parent texture.
* clutter/clutter-deprecated.h: Add deprecated and replaced
API.
* clutter/clutter-entry.c: Port Entry to the new size
negotiation API.
* clutter/clutter-group.c: Port Group to the new size
negotiation API; the semantics of the Group actor do not
change.
* clutter/clutter-label.c: Port Label to the new size
negotiation API, and vastly simplify the code.
* clutter/clutter-main.[ch]: Add API for executing a
relayout when needed.
* clutter/clutter-private.h: Add new Stage private API.
* clutter/clutter-rectangle.c: Update the get_abs_opacity()
call to get_paint_opacity().
* clutter/clutter-stage.c:
(clutter_stage_get_preferred_width),
(clutter_stage_get_preferred_height),
(clutter_stage_allocate),
(clutter_stage_class_init): Port Stage to the new size
negotiation API.
* clutter/clutter-texture.c: Port Texture to the new size
negotiation API.
* clutter/clutter-types.h: Add ClutterRequestMode enumeration.
* clutter/x11/clutter-stage-x11.c: Port the X11 stage
implementation to the new size negotiation API.
* tests/Makefile.am: Add the layout manager test case.
* tests/test-opacity.c: Update.
* tests/test-project.c: Update.
* tests/test-layout.c: Test case for a layout manager implemented
using the new size negotiation API; the layout manager handles
both transformed and untransformed children.
* autogen.sh: Check for, and run glib-gettextize.
* configure.ac: Set up the localization support.
* clutter/clutter-main.c: Do not define the GETTEXT_PACKAGE,
but use the one from the configure script.
* po/POTFILES.in: Template for the translatable files.
Bug #950 - AltGr not handled
* clutter/osx/clutter-event-osx.c: (clutter_event_osx_translate):
* clutter/x11/clutter-event-x11.c: (translate_key_event):
* tests/test-events.c: (fill_keybuf), (input_cb):
Apply patch from Tommi Komulainen, fill the unicode_value attribute of
the ClutterKeyEvent struct. Also use XKeycodeToKeysym, as suggested in
bug #950, comment #2
* clutter/clutter-texture.c:
Minor reformatting cleanups. Emit filter-quality prop on change.
* clutter/glx/clutter-glx-texture-pixmap.c:
Support mipmaps via filter quality prop.
Bug#959 - Multiple minor improvements
* configure.ac: pick up GDKPIXBUF_PREFIX from gdk-pixbuf-2.0
module, not pango
* clutter/clutter-keysyms-table.h: cosmetic fix for ifdef guard
name in the comment (leftover from earlier commit)
* tests/test-textures.c: don't depend on GdkPixbuf as we're not
using any actual features from it, just plain pixel buffer
manipulation
* clutter/clutter-timeline.c
* clutter/clutter-timeline.h (clutter_timeline_list_markers): Use
gsize* to return number of items, not guint*
* tests/test-paint-wrapper.c: use correct type (guint*) in call
to clutter_actor_get_size()
* tests/test-depth.c (janus_group): properly take height2 into
account when calculating needed height for the rectangle
* tests/test-cogl-tex-getset.c: use rowstride, not width*4, when
calculating pixel offsets
* tests/test-cogl-tex-getset.c: Don't assume/force RGBA format,
also support ARGB format (needed with quartz imageloader.)
Bug #930 - add support for quartz imagebackend
* clutter/cogl/common/cogl-bitmap-pixbuf.c
(_cogl_bitmap_from_file): When USE_QUARTZ is defined implement
using Core Graphics.
* configure.ac: support --with-imagebackend=quartz and print
which imagebackend is selected. Make quartz default on OSX
* configure.ac: Clean up a bit the X11 and X extensions
checks with PKG_CHECK_EXISTS(). Since we are filling up the
X11_CFLAGS and X11_LIBS variables ourselves there is no
point in polluting the Makefiles with unused variables.
* clutter/Makefile.am: Remove the pkg-config variable
evaluation and use the values retrieved from the configure
script.
* clutter/clutter-entry.c: (clutter_entry_ensure_layout),
(clutter_entry_handle_key_event_internal),
(clutter_entry_set_text):
Fix mix-up of character and byte counts, handle unicode correctly.
Use clutter_key_event_unicode() instead of
clutter_keysym_to_unicode().
* clutter/clutter-event.c: (clutter_key_event_unicode):
Don't ignore ClutterKeyEvent.unicode_value
* clutter/clutter-keysyms-table.h:
Rename header define so as not to conflict with clutter-keysyms.h
Patch originally by Emmanuele Bassi, with input from Tommi Komulainen.
control the use of mipmapping.
* clutter/clutter-texture.h: added ClutterTextureQuality enum.
* tests/test-texture-quality.c: new test.
* tests/Makefile.am: added test-texture-quality
* clutter/clutter-texture.c:
(clutter_texture_class_init): Do not unrealize on hide(), and
do not realize() on show. By default, clutter_actor_show() will
realize ourselves, and we don't want to unrealize when hidden
to avoid paying the penalty of reading back the texture data
from the video memory.
* tests/test-actors.c: Show all textures again when pressing
the 'r' key.
Bug #955 - ClutterLabel is missing fallback resolution handling
* clutter/clutter-label.c (clutter_label_init): Handle
clutter_backend_get_resolution() return value -1 similar to
ClutterEntry (falling back to 96.0). (#955, Tommi Komulainen)
(clutter_stage_egl_realize): Use ES 2 renderable type when
building for GLES 2.
* clutter/eglnative/clutter-event-egl.c (get_backend_time): Added
a NULL for the microseconds parameter of g_timer_elapsed.
* clutter/eglnative/clutter-stage-egl.h:
* clutter/eglnative/clutter-egl.h:
* clutter/eglnative/clutter-backend-egl.h: Include
clutter-egl-headers.h instead of including the GL headers directly
so it can include gl2.h when building for GLES 2.
* clutter/eglnative/clutter-egl-headers.h:
* clutter/eglnative/Makefile.am (libclutter_eglnative_la_SOURCES):
Added clutter-egl-headers.h
* clutter/cogl/gles/cogl-fixed-fragment-shader.glsl: GLES 2
doesn't provide a default precision for floats in the fragment
shader and it will reject the shader if there isn't one.
Bug #948 - Remove texture rectangle support
* clutter/clutter-feature.c:
* clutter/clutter-feature.h:
* clutter/clutter-texture.c:
* clutter/cogl/gl/cogl.c:
* clutter/glx/clutter-glx-texture-pixmap.c:
Remove support for GL_TEXTURE_RECTANGLE_ARB (now using just regular
2D textures, with optional npots extension). Simplifys code, + makes
mipmap & shader support much more sane.
Bug 913 - cogl fails to build on OSX
* clutter/cogl/gl/cogl-fbo.c: define GL_READ_FRAMEBUFFER_EXT and
GL_DRAW_FRAMEBUFFER_EXT if not defined in the build system. The
#ifdef can fail if they're not #defines but variables or enums.
As the values are supposed to be industry standard even then
it shouldn't have ill effects.
Bug #911 - OSX: add multistage support
* clutter/osx/clutter-backend-osx.{c,h}
(clutter_backend_osx_init_stage, clutter_backend_osx_get_stage,
clutter_backend_osx_redraw, clutter_backend_osx_create_stage,
clutter_backend_osx_ensure_context, clutter_backend_osx_class_init,
clutter_backend_osx_dispose, ClutterGLView:drawRect:):
* clutter/osx/clutter-stage-osx.{c,h} (clutter_stage_osx_realize,
ClutterGLWindow:setFrameSize:):
Adapt to new multistage backend API. Don't keep a pointer to
default stage. Derive from ClutterActor instead of ClutterStage.
Implement ClutterStageWindow interface. Paint, resize and
otherwise manipulate the wrapper rather than self when necessary.
(clutter_backend_post_parse): Create our singleton GL context
here. We could probably create the context when the default
stage is created, but I think this is more clean.
* clutter/osx/clutter-event-osx.c (clutter_event_osx_translate)
* clutter/osx/clutter-stage-osx.c (clutter_stage_osx_state_update,
ClutterGLWindow:windowShouldClose:):
* clutter/osx/clutter-stage-osx.h: Export ClutterGLWindow interface
for clutter-event-osx.c to easily get the stage for NSWindow.
Fill in ClutterEventAny::stage on our events.
Consistently use 'stage_osx' and 'wrapper' as variable names
when referring to ClutterStageOSX and ClutterStage objects
respectively.
Bug #840 - Implement prepare-paint and finish-paint signals.
* clutter/clutter-actor.c:
(clutter_actor_class_init): Add the ::paint, ::realize and
::unrealize signals to ClutterActor. It is possible to
override the paint, realization and unrealization of an
actor without subclassing it. The ::paint signal handlers
have the same limitations of a ClutterActor::paint implementation
inside a subclass.
(clutter_actor_realize),
(clutter_actor_unrealize),
(clutter_actor_paint): Emit the signals instead of calling
the functions from the class vtable.