* 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.
* clutter/clutter-stage.c (clutter_stage_get_default): Don't grab
the floating reference when creating the default stage. The stage
manager will take a reference to it so it will behave as any other
stage.
(clutter_stage_new): Don't take the floating reference to the new
stage but let the stage manager keep it instead.
* clutter/clutter-stage-manager.c
(_clutter_stage_manager_add_stage): Take a reference to the stage
when it is added to the list.
(_clutter_stage_manager_remove_stage): Unref the stage when it is
removed from the list.
(clutter_stage_manager_dispose): Keep track of the 'next' pointer
as a separate variable so we can cope when the stage being
destroyed removes itself from the list as the list is being
iterated.
* clutter/clutter-actor.c (clutter_actor_destroy): Take a
reference at the beginning of the function even if there is no
parent container so that overall the reference count is not
changed when the actor is unref'd again at the bottom of the
function. Previously it would have a net effect of leaving the
reference count alone unless it is a top level actor in which case
it would unref it.
* clutter/glx/clutter-glx-texture-pixmap.c:
Dont always fallback to x11 (slow) updates for a single
failed pixmap.
Minor cleanups.
* clutter/x11/clutter-x11-texture-pixmap.c:
Move shm allocation to only area updates.
* clutter/cogl/gles/cogl.c:
* clutter/cogl/gl/cogl.c: The clip planes are now set using the
inverse projection matrix as the modelview matrix so that they can
be specified in screen coordinates.
* clutter/cogl/gles/cogl-context.h (CoglContext):
* clutter/cogl/gl/cogl-context.h (CoglContext): Added a member to
cache the inverse projection matrix
* clutter/clutter-fixed.h: Added a constant for converting from
radians to degrees.
* clutter/clutter-fixed.c (clutter_atani, clutter_atan2i): Added
fixed-point versions of atan and atan2.
* tests/test-clip.c: Added a test for clipping with various
rotations and depths.
* tests/Makefile.am (noinst_PROGRAMS): Added test-clip
now stored in a separate struct so they can be stored for
application program objects as well.
* clutter/cogl/gles/cogl.c: Moved stub shader functions into
separate files.
(_cogl_features_init): Report support for the shaders feature on
GLES 2
* clutter/cogl/gles/cogl-shader.h:
* clutter/cogl/gles/cogl-shader.c:
* clutter/cogl/gles/cogl-program.h:
* clutter/cogl/gles/cogl-program.c: Separate files to handle
shaders on programs on GLES. If version 1.1 is being used then the
stub functions which all fail are still used.
* clutter/cogl/gles/cogl-gles2-wrapper.c
(cogl_gles2_wrapper_init, cogl_gles2_wrapper_bind_attributes),
(cogl_gles2_wrapper_get_uniforms): Move the uniforms and attribute
bindings into a separate function so they can be used to bind on
application shaders as well.
(cogl_gles2_wrapper_update_matrix): Now takes a parameter and is
no longer static so that it can be used to update all of the
matrices when a new shader is bound.
* clutter/cogl/gles/cogl-defines.h.in: Use GL_COMPILE_STATUS for
CGL_OBJECT_COMPILE_STATUS if the latter isn't available (for
example on GLES 2).
* clutter/cogl/gles/cogl-context.h (CoglContext): Added handle
arrays for programs and shaders.
* clutter/cogl/gles/cogl-context.c (cogl_create_context)
(cogl_destroy_context): Initialize and destroy program and shader
handle array.
* clutter/cogl/gles/Makefile.am (libclutter_cogl_la_SOURCES): Add
cogl-{shader,program}.{c,h}
Merge from clutter-0-6:
* clutter/clutter-model.c:
(clutter_model_iter_set_internal_valist): Add an internal function
wrapping ClutterModelIter::set_value that does not emit the
::row-changed signal. Emitting this signal before the ::row-added
one is wrong: a row cannot change before being inserted.
(clutter_model_append), (clutter_model_prepend),
(clutter_model_insert): Use the non-signal emitting variant of
clutter_model_iter_set_valist().
(clutter_model_iter_set_valist): Use the internal version and emit
the ::row-changed signal at the end.
Bug #943 - Signals are only emitted within a certain area of
the stage
* clutter/clutter-main.c (clutter_do_event): Use the proper
API and not the macros for the default stage, in case we are
using a backend supporting multiple stages. (Julian Aron Prenner)
* clutter/pango/pangoclutter-fontmap.c:
* clutter/pango/pangoclutter-renderer.c:
* clutter/pango/pangoclutter.h
* clutter/pango/pangoclutter-private.h: Add a function retrieving
the font mipmapping setting.
uniforms for alpha testing.
* clutter/cogl/gles/cogl-gles2-wrapper.c
(cogl_gles2_wrapper_init): Get the uniforms for alpha testing
settings.
(cogl_wrap_glEnable, cogl_wrap_glDisable): Enable/disable alpha
testing.
(cogl_wrap_glAlphaFunc): Filled in the wrapper.
* clutter/cogl/gles/cogl-fixed-fragment-shader.glsl: Added alpha
testing.
* clutter/cogl/gles/cogl-gles2-wrapper.h:
* clutter/cogl/gles/cogl-gles2-wrapper.c
(cogl_wrap_glGetIntegerv): Added a wrapper for glGetIntegerv so
that it can report zero clip planes.
* clutter/cogl/gles/cogl.c:
* clutter/cogl/gles/cogl-texture.c: Use the wrapped version of
glGetIntegerv
* clutter/cogl/gles/cogl-primitives.c (_cogl_path_fill_nodes): Use
_cogl_features_available to check for the stencil buffer instead
of an #ifdef. The stencil buffer is available in the default
profile for the GLES 2 simulator.
(cogl_gles2_wrapper_init): Get uniforms for fog parameters and
initialise them.
(cogl_wrap_glDrawArrays): Store the modelview matrix in a uniform
as well so that it can be used for fogging calculations.
(cogl_wrap_glEnable, cogl_wrap_glDisable): Enable/disable fogging.
(cogl_wrap_glFogx, cogl_wrap_glFogxv): Fill in wrapper to set
fogging parameters.
* clutter/cogl/gles/cogl-fixed-vertex-shader.glsl: Calculate the
fog amount if fogging is enabled.
* clutter/cogl/gles/cogl-fixed-fragment-shader.glsl: Mix with fog
color.
* clutter/cogl/gles/cogl-gles2-wrapper.h (CoglGles2Wrapper): Add
uniforms for fogging.
Bug #919 - Replacement pango renderer (Neil Roberts)
* clutter/clutter-backend.h:
* clutter/clutter-backend.c:
(clutter_backend_set_font_options),
(clutter_backend_get_font_options): Add the ability to set
the cairo_font_options_t* for the backend at construction
time, so that backend implementations can have their own
options.
* clutter/clutter-color.c: Include pango/pango-attributes.h
for the pango_color_parse() function.
* clutter/clutter-label.c:
(clutter_label_ensure_layout),
(clutter_label_init), (clutter_label_set_text),
(clutter_label_set_font_name), (clutter_label_set_ellipsize),
(clutter_label_set_use_markup): Ensure that the cache is
always primed when the Label changes; this makes sure that
the cache is rebuilt outside the paint run, which should
make the painting perform better especially on embedded
devices.
* clutter/clutter-entry.c:
(clutter_entry_ensure_layout),
(clutter_entry_init), (clutter_entry_set_text),
(clutter_entry_set_font_name): Ditto as above.
* clutter/clutter-private.h:
* clutter/clutter-main.[ch]: Create the font-map inside the
main context; add two new functions:
clutter_clear_glyph_cache()
clutter_set_use_mipmapped_text()
that control the glyphs cache.
* clutter/pango/Makefile.am:
* clutter/pango/pangoclutter-fontmap.c:
* clutter/pango/pangoclutter-private.h:
* clutter/pango/pangoclutter-render.c:
* clutter/pango/pangoclutter.h: Rewrite the Pango renderer
using a PangoCairo context and saving the glyphs inside a
more efficient cache.
* configure.ac: Depend on pangocairo instead of pangoft2.
Bug 882 - Allow child properties for containers implementing the
ClutterContainer interface (Øyvind Kolås)
* clutter/clutter-child-meta.[ch]: Base class for the metadata
of a ClutterActor inside a ClutterContainer; the ChildMeta
object implements a wrapper for storing data that is attached
to a ClutterActor only when it's part of a ClutterContainer.
The ChildMeta object is used to store the child properties
accessible through the ClutterContainer API.
* clutter/clutter-container.[ch]: Creates the ChildMeta for
each actor, in case the Container specifies the ChildMeta
type to use.
* clutter/Makefile.am: Add clutter-child-meta.[ch] to the build.
* clutter/clutter-marshal.list: Add the marshaller for the
ClutterContainer::child-notify signal.
* clutter/clutter-types.h: Declare ClutterContainer and
ClutterChildMeta to avoid recursive inclusion.
Fix merging of objects with the same id.
* clutter/clutter-script.c:
(json_object_end): If there already is an ObjectInfo under the
parsed id, merge the construction with the currently stored
state.
(parse_children), (parse_signals),
(parse_behaviours): Append the newly parsed children, signals
and behaviours, in case the ObjectInfo already has unresolved
items.
(clutter_script_construct_object): Fix a typo in the type check.
(clutter_script_init): Do not copy the key inside the hash
table holding the objects - we are already holding it inside
the value.
glTexParameteri. Call glGenerateMipmap after every change to the
texture image data.
* clutter/cogl/gles/cogl-gles2-wrapper.h:
* clutter/cogl/gles/cogl-gles2-wrapper.c: Added a wrapper for
glTexParameteri so that it can ignore requests to set
GL_GENERATE_MIPMAP. Added a wrapper for glGenerateMipmap that does
nothing on GLES 1
* clutter/clutter-script.c:
(clutter_script_construct_object): Mark top-level objects,
that is objects that don't have their ownership transferred
when building up a ClutterScript.
(object_info_free): Merge a fix from the stable branch, but
do not check the type - check whether the object is a top
level (we still need the ClutterActor type check in order to
call clutter_actor_destroy()).
* clutter/clutter-rectangle.c:
(clutter_rectangle_paint): Remove commented out call to
cogl_enable(); the call is not needed and the comment is
in C99.
* clutter/eglx/clutter-stage-egl.h:
* clutter/eglx/clutter-egl-headers.h:
* clutter/eglx/clutter-backend-egl.h:
* clutter/eglx/Makefile.am: Include the GLES and EGL headers via
clutter-egl-headers.h so that the right version can be used
depending on whether the GLES 2 wrapper is being used.
* configure.ac: Added an automake conditional for whether the GLES
2 wrapper should be used.
* clutter/eglx/clutter-stage-egl.c (clutter_stage_egl_realize):
Remove the call to glGetIntegerv to get the max texture size. It
was being called before the GL context was bound so it didn't work
anyway and it was causing trouble for the GLES 2 simulator.
* clutter/cogl/gles/stringify.sh: Shell script to convert the
shaders into a C string.
* clutter/cogl/gles/cogl-gles2-wrapper.h:
* clutter/cogl/gles/cogl-gles2-wrapper.c: Wrappers for most of the
missing GL functions in GLES 2.
* clutter/cogl/gles/cogl-fixed-fragment-shader.glsl:
* clutter/cogl/gles/cogl-fixed-vertex-shader.glsl: New shaders for
GLES 2
* clutter/cogl/gles/cogl-defines.h.in: Use the @CLUTTER_GL_HEADER@
macro instead of always using the GLES 1 header.
* clutter/cogl/gles/cogl-context.h (CoglContext): Include a field
for the state of the GLES 2 wrapper.
* clutter/cogl/gles/cogl-texture.c:
* clutter/cogl/gles/cogl-primitives.c:
* clutter/cogl/gles/cogl.c: Use wrapped versions of the GL
functions where neccessary.
* clutter/cogl/gles/Makefile.am: Add sources for the GLES 2
wrapper and an extra build step to put the GLSL files into a C
string whenever the files change.
Bug #912 - Invalid use of int* as parameter for glGetIntegerv
* clutter/cogl/gl/cogl.c (_cogl_features_init): Use GLint
instead of int. (#912, Tommi Komulainen)
Bug #928 - Reparenting a child that itself is a container
doesn't work
* clutter/clutter-actor.c (clutter_actor_set_parent): Realize
an actor when setting its parent, if the parent is realized.
* clutter/clutter-group.c:
(clutter_group_realize), (clutter_group_class_init): Add the
missing implementation of the ::realize() virtual function; this
makes sure that the children of a Group are realized if the Group
is realized. (#928)
* clutter/cogl/gles/cogl.c (error_string): Rename to
_cogl_error_string and remove the static scoping so that it can be
called in cogl-texture etc.
* clutter/cogl/gl/cogl-texture.c (cogl_texture_new_from_foreign):
* clutter/cogl/gles/cogl-texture.c (cogl_texture_new_from_foreign):
GE(*) can't be used to wrap around calls that use the return
value.
* clutter/cogl/gl/cogl-texture.c (_cogl_texture_quad_sw)
(_cogl_texture_quad_hw, cogl_texture_polygon): Remove GE(*)
wrapper around calls in the middle of a glBegin/glEnd pair which
otherwise always generate an error because glGetError can only be
called outside of the pair.
* clutter/cogl/gl/cogl-internal.h: Include stdio.h when definig
COGL_DEBUG and declare a prototype for _cogl_error_string.
* clutter/cogl/gles/cogl-internal.h: Match GE(*) macro to GL
version.
race when both are set from clutter script also makes it more
consistent with the behavior of other actors.)
* clutter/clutter-rectangle.c: (clutter_rectangle_set_color): stop
setting the opacity of the actor from the specified color.
(clutter_rectangle_paint): combine the absolute opacity of the actor
with the alpha of the color when painting.
(cogl_texture_download_from_gl:) Implemented a workaround
for missing alpha framebuffer channel. There are still
some issues with detecting whether alpha is present in the
framebuffer. See comments in code. Test-cogl-tex-getset now
successfully retrieves a RGBA texture image data.
(cogl_texture_download_from_gl:) Store old blending factors
and restore them when done. The lack of ability to retrieve
the alpha channel now more noticable in test-cogl-tex-getset
since the edges of the hand are not antialiased.
* clutter/cogl/gl(es)/cogl-internal.h: Declare
cogl_blend_func to avoid "implicit implementation" compile
warning.
cogl_blend_func caches blending setup much like cogl_enable
does with the enable flags. This separates blending factors
setup from the enable/disable operation in preparation of
the texture image retrieval fix for alpha channel on GLES.
(cogl_enable:) Does not modify blending factors anymore.
* clutter/cogl/gl(es)/cogl-context.h: CoglContext holds two
new variables to cache blending src and dst factors.
* clutter/cogl/gl(es)/cogl-context.c:
(cogl_create_context:) Initialize blending factors.
* clutter/cogl/gles/cogl-texture.c:
(cogl_texture_download_from_gl:) Set blending factors to
CGL_ONE, CGL_ZERO which fixes the slighlty improper behavior
where source colour was actually multiplied with its alpha
value in the result (not noticable on current tests).
* clutter/eglx/Makefile.am: Fix the INCLUDE directives to
properly include the X11 backend headers.
* clutter/glx/Makefile.am: Add the libclutter-x11.la static
library to the LDADD directives.
builds.
* configure.ac: No longer check for GLee
* clutter/cogl/gl/cogl-defines.h.in: Don't bother including GLee.h
* build/mingw/mingw-cross-compile.sh: No longer downloads libGLee
but downloads the Mesa library instead and installs the headers
from that. Fixed the libpng version.
* clutter/glx/Makefile.am:
* clutter/x11/Makefile.am:
Install glx and x11 specific includes into clutter/glx and
clutter/x11 so that header files that include glx/*.h or x11/*.h
when installed.
signedness of old_xpos and old_ypos to get rid of compiler
warnings.
* clutter/win32/clutter-backend-win32.c
(clutter_backend_win32_get_features): Cast the result of
glGetString to a signed char pointer to avoid compiler warnings.
* clutter/win32/clutter-backend-win32.c: Reflect changes to the
GLX/X11 backend in revisions 2708-2709 and 2713-2715 which
simplify the backend a little.
* clutter/x11/clutter-backend-x11.c:
* clutter/clutter-event.h:
* clutter/clutter-feature.h:
* clutter/clutter-fixed.c:
* clutter/clutter-model.h: Fix documentation.
* clutter/eglnative/clutter-backend-egl.[ch]:
* clutter/eglnative/clutter-event-egl.c: Add the same solution
used for the SDL backend in order to get the time of an event.
This should fix the motion event throttling and the click count
on button press.
* tests/test-pixmap.c (create_pixmap), (main): Fix preprocessor
directives.
* clutter/clutter-actor.c:
* clutter/clutter-main.c:
* clutter/clutter-private.h:
Rejid Øyvind's previous commit a little moving more into
clutter-main.c and using ClutterContext.
Also Refactor clutter_init & clutter_init_with_args to share
same core init code.
framebuffer are only approximately the correct value.
* clutter/clutter-actor.c:
(init_bits): initialize constants about how many bits are
available/will be used for r,g,b components.
(_clutter_pix_to_id): now own function, compute an id from a
pixel into its own function (used from _clutter_do_pick).
(_clutter_id_to_col): now own function, computes the color to use for
a given id.
(clutter_actor_paint): use clutter_id_to_col.
* clutter/clutter-main.c:
(_clutter_do_pick): use _clutter_pix_to_id
(clutter_main): re-enable invocation of fruity app shell.
* clutter/fruity/clutter-stage-fruity.c:
(clutter_stage_egl_show), (clutter_stage_egl_hide): Don't chain
up and set flags, as it is not needed anymore.
(clutter_stage_egl_realize): Set the REALIZED flag.
* clutter/eglnative/clutter-stage-egl.c:
(clutter_stage_egl_show), (clutter_stage_egl_hide): Don't chain
up and set flags, as it is not needed anymore.
* clutter/glx/clutter-stage-glx.c:
(clutter_stage_glx_unrealize): Move the shaders release from here...
* clutter/glx/clutter-backend-glx.c:
(clutter_backend_glx_dispose): ... to here. Shaders should be
released when the GL context is being destroyed, and that only
happens when the backend is being disposed, now that we support
multiple stages.
* clutter/clutter-backend.c:
(_clutter_backend_create_stage): Call _clutter_stage_set_window()
ourselves, thus removing yet another action that backends must
implement and might get wrong; also cuts a backend-agnostic piece
of code duplication.
* clutter/eglnative/clutter-backend-egl.c:
(clutter_backend_egl_create_stage): Update the EGL native backend.
* clutter/eglx/clutter-backend-egl.c:
(clutter_backend_egl_create_stage): Update the EGLX backend.
* clutter/fruity/clutter-backend-fruity.c:
(clutter_backend_egl_create_stage): Update the fruity backend
* clutter/glx/clutter-backend-glx.c:
(clutter_backend_glx_create_stage): Update the GLX backend.
* clutter/sdl/clutter-backend-sdl.c:
(clutter_backend_sdl_create_stage): Update the SDL backend.
* HACKING.backends: Update the ::create_stage() description.
* clutter/x11/clutter-event-x11.c (event_translate): Remove the
cheap Expose event compression, as it seems to play games when a
composite manager is running. It's also not really needed, as
the redraw queue will avoid redraws too close to each other
anyway.
* clutter/x11/clutter-stage-x11.c:
(clutter_stage_x11_show), (clutter_stage_x11_hide): Do not chain
up just to set the flags. This fixes a critical warning coming
from ClutterActor::hide() default implementation.
Defined GL extension functions used by Cogl inside the COGL_
namespace.
* clutter/cogl/gl/cogl-context.h:
* clutter/cogl/gl/cogl.c:
Use COGL_ extension function prototypes instead of relying
on glext.h to define them. Should fix the mac compilability
bug, but haven't tested it yet.
* clutter/x11/clutter-x11-texture-pixmap.c:
* configure.ac:
* tests/Makefile.am:
Remove the XComposite dep from Clutter itself, just use
in test-pixmap (if available)
Rework the stage wrapper/implementation relation: remove
duplicated code and all the bookkeeping from the backends into
ClutterStage whenever possible, to reduce the amount of work a
backend must do (and possibly get wrong). Thanks to Tommi
Komulainen.
* clutter/clutter-main.c:
(clutter_init_with_args), (clutter_init): Realize the default
stage after creation. The default stage is special, because we
use it in the initialization sequence. This removes the burden
from the backends and reduces the things a backend can get
wrong.
* clutter/clutter-stage.c:
(clutter_stage_show): Make sure to realize the implementation if
it hasn't been realized yet.
(clutter_stage_realize): Set the REALIZED flag and call
clutter_stage_ensure_current() if the implementation was
successfully realized.
(clutter_stage_unrealized): Call clutter_stage_ensure_current()
on unrealize.
* clutter/glx/clutter-backend-glx.c:
(clutter_backend_glx_create_stage): Do not realize the stage anymore
when creating it, and let the normal realization sequence take
place.
(clutter_backend_glx_ensure_context): Trap for X11 errors.
* clutter/glx/clutter-stage-glx.c:
(clutter_stage_glx_realize): Chain up to the X11 implementation
so that we can set up the window state (title, cursor visibility)
when we actually have a X window. Also, do not call
clutter_stage_ensure_current(), and rely on the wrapper to do
it for us. This means we can drop setting the REALIZED flag on
the wrapper.
(clutter_stage_glx_unrealize): Do not call
clutter_stage_ensure_current() ourselves, and rely on the wrapper
to do it for us.
* clutter/x11/clutter-stage-x11.c:
(set_wm_title), (set_cursor_visible): Move the WM title and
cursor visibility code inside their own functions.
(clutter_stage_x11_realize): Set the window title and whether the
cursor is visible or not after realizing the stage.
(clutter_stage_x11_set_cursor_visible),
(clutter_stage_x11_set_title): Call set_wm_title() and
set_cursor_visible().
(clutter_stage_x11_finalize): Free the title string.
* clutter/x11/clutter-stage-x11.h: Save more of the stage state,
so that we can set it even when the stage hasn't been realized
yet.
* clutter/eglnative/clutter-backend-egl.c:
(clutter_backend_egl_create_stage):
* clutter/eglnative/clutter-stage-egl.c:
(clutter_stage_egl_unrealize),
(clutter_stage_egl_realize): Update the eglnative backend.
* clutter/eglx/clutter-backend-egl.c:
(clutter_backend_egl_ensure_context),
(clutter_backend_egl_create_stage):
* clutter/eglx/clutter-stage-egl.c:
(clutter_stage_egl_unrealize),
(clutter_stage_egl_realize): Update the eglx backend.
* clutter/sdl/clutter-backend-sdl.c:
(clutter_backend_sdl_create_stage):
* clutter/sdl/clutter-stage-sdl.c:
(clutter_stage_sdl_realize): Update the sdl backend.
* clutter/fruity/clutter-backend-fruity.c:
(clutter_backend_fruity_create_stage):
* clutter/sdl/clutter-stage-fruity.c:
(clutter_stage_fruity_realize): Update the fruity backend.
* tests/test-multistage.c (on_button_press): Bail out if
clutter_stage_new() returns NULL.
* HACKING.backends: Update backend writing documentation.
(clutter_frame_source_add_full): Add gtk-doc and rename the
'function' parameter to 'func'.
* clutter/clutter-frame-source.h: Rename the 'function' parameters
to 'func'.
* clutter/Makefile.am (source_h): Make clutter-frame-source.h a
public header.
* clutter/clutter-main.c (clutter_threads_add_frame_source_full):
Improve gtk-doc
* doc/reference/clutter/clutter-sections.txt: Added
clutter_threads_add_frame_source,
clutter_threads_add_frame_source_full,
clutter_frame_source_add and clutter_frame_source_add_full.
* clutter/clutter-script-private.h: Add a flag for the
default stage.
* clutter/clutter-script.c:
(json_object_end): If the "type" member is "ClutterStage"
and we have a "is-default" member set to true then this
is the default stage.
(clutter_script_construct_object): Special case the default
stage instead of each ClutterStage.
(object_info_free): Ditto as above.
* tests/test-script.json: Test the creation of a non-default
stage and the ::destroy handler to quit.
Bug #902 - Support transform from G_TYPE_INT to ClutterUnit
* clutter/clutter-units.c:
(clutter_value_transform_int_unit),
(clutter_unit_get_type): Add GValue transformation function from
integer values to ClutterUnit. (#902)
(param_unit_validate): Fix validation for ClutterParamSpecUnit;
this allows writable ClutterUnit properties.
* clutter/clutter-fixed.c:
(clutter_value_transform_int_fixed),
(clutter_value_transform_double_fixed),
(clutter_value_transform_float_fixed): Add GValue transformation
functions from native types (int, double, float) to ClutterFixed.
(clutter_fixed_get_type): Register the new transformation functions.
(param_fixed_validate): Fix validation for ClutterParamSpecUnit;
this allows writable ClutterFixed properties.
* clutter/cogl/gl(es)/cogl-texture.h:
* clutter/cogl/gl(es)/cogl-texture.c:
cogl_texture_new_* functions take a gboolean auto_mipmap argument.
If TRUE automatic mipmap generation is enabled during the process
of slice texture object creation.
(cogl_texture_new_from_foreign:) now allows mipmap min filter
flags.
* clutter/clutter-texture.c:
* clutter/glx/clutter-glx-texture-pixmap.c:
* tests/test-cogl-offscreen.c:
* tests/test-cogl-tex-tile.c:
* tests/test-cogl-tex-convert.c:
* tests/test-cogl-tex-polygon.c:
* tests/test-cogl-tex-getset.c:
Pass FALSE for auto_mipmap to cogl_texture_new_*.
* clutter/pango/pangoclutter-render.c:
(tc_get:) Pass TRUE to cogl_texture_new_with_size and use mipmap
min filter for nicer glyphs at small scales. As a result test-text
has gone all beautiful now.
* clutter/sdl/clutter-backend-sdl.c:
(clutter_backend_sdl_dispose): Destroy the timer that we created...
(clutter_backend_sdl_init): ... here.
* clutter/sdl/clutter-backend-sdl.h: Add a GTimer for time-based
operations, like the event time.
* clutter/sdl/clutter-event-sdl.c:
(get_backend_time): Get the elapsed milliseconds for the SDL
backend.
(_clutter_events_init): Start the timer provided by the backend...
(_clutter_events_uninit): ... and the stop it.
(key_event_translate), (event_translate): Use the backend time
to fill out the time field of the event structures. This fixes
the motion notification throttling on the SDL backend.
* clutter/cogl/gles/cogl-primitives.c:
* clutter/cogl/common/cogl-primitives.c: moved declaration of
gegl_rectangle and gegl_rectanglex here to satisfy linking
requirements when building the fruity backend.
* clutter/cogl/common/cogl-primitives.c: api review touch ups.
* clutter/cogl/gl/cogl-primitives.c: (cogl_path_fill),
(cogl_path_stroke): indentation.
* clutter/cogl/gles/cogl-primitives.c:
(_cogl_path_fill_nodes): free allocated resources.
* tests/test-cogl-primitives.c: updated to new API, added rotation to
test to show that cogl renders paths correct under perspective
distortion.
Bug #900 - clutter_actor_lower() and friends do not queue redraw
* clutter/clutter-actor.c:
(clutter_actor_raise),
(clutter_actor_lower): Queue a redraw after raising and lowering
and actor in the paint order stack. (#900)
Build fixes for the SDL flavour.
* clutter/sdl/clutter-backend-sdl.c: Remove an unused function.
* clutter/sdl/clutter-event-sdl.c:
(clutter_event_dispatch): Properly cast the stage pointer.
* clutter/sdl/clutter-stage-sdl.c:
(clutter_stage_window_iface_init): Remove the draw_to_pixbuf()
stub and assignment.
* clutter/clutter-behaviour.c:
(clutter_behaviour_remove_all): Disconnect the ::destroy
handler when removing all actors, to match the behaviour
of clutter_behaviour_remove().
* clutter/glx/clutter-glx-texture-pixmap.c:
* tests/test-pixmap.c:
Fix up texture-pixmap, now works.
Thanks to Neil for spotting we were actually using
wrong texture type in fbconfig (COGL change).
* clutter/clutter-effect.c:
(clutter_effect_closure_destroy): Do not remove the actor
from the behaviour; the behaviour is an internal detail of the
effect, and it will remove the actors anyway when finalized
when g_object_unref() is called. This should guard against
actors being destroyed while an effect is running.
actor position was being moved in the wrong direction. Perhaps
this was a cut-and-paste bug from move_anchor_point_from_gravity
because in that function ax and ay represent the old anchor
position, but in this function they represent the new.
wrapped in reference-counted CoglHandles instead.
* clutter/cogl/gl/cogl-shader.c:
* clutter/cogl/gl/cogl-shader.h:
* clutter/cogl/gl/cogl-program.c:
* clutter/cogl/gl/cogl-program.h:
New files to hold the shader and program functions.
* clutter/cogl/gl/cogl.c: Removed shader and program functions.
* clutter/cogl/common/cogl-handle.h: New header to define
COGL_HANDLE_DEFINE which helps build functions to create
reference-counted handles. This reduces the amount of duplicated
code.
* clutter/cogl/gl/cogl-texture.c:
* clutter/cogl/gles/cogl-texture.c:
* clutter/cogl/gl/cogl-fbo.c: Converted to use COGL_HANDLE_DEFINE
from cogl-handle.h to avoid duplicating some of the common code.
* clutter/cogl/gles/cogl-defines.h.in:
* clutter/cogl/gl/cogl-defines.h.in: Removed COGLhandle
* clutter/cogl/gl/cogl-context.h: Added handle arrays for programs
and shaders.
* clutter/cogl/gl/cogl-context.c (cogl_create_context): Added
initialisers for shader_handles and program_handles.
(cogl_destroy_context): Added calls to g_array_free for all handle
arrays.
* clutter/cogl/gl/Makefile.am (libclutter_cogl_la_SOURCES): Added
cogl-{program,shader}.{c,h}
* clutter/cogl/common/Makefile.am
(libclutter_cogl_common_la_SOURCES): Added cogl-handle.h
* clutter/cogl/gles/cogl.c:
* clutter/cogl/cogl.h.in: Programs and shaders are now wrapped in
CoglHandles instead of COGLhandles. cogl_program_destroy and
cogl_shader_destroy is now replaced with cogl_program_unref and
cogl_shader_unref. cogl_program_ref and cogl_shader_ref are also
added.
* clutter/clutter-shader.c: Converted to use CoglHandles for the
programs and shaders instead of COGLhandles.
* cogl/cogl-sections.txt: Added cogl_shader_ref,
cogl_shader_unref, cogl_is_shader, cogl_program_ref,
cogl_program_unref, cogl_is_program and cogl_is_offscreen.