Emmanuele Bassi [Mon, 16 Mar 2009 15:00:55 +0000 (15:00 +0000)]
[docs] Bring down the undocumented symbols to 2%
The usual pre-release documentation blitzing. Most of the remaining
symbols are either COGL or X11 specific, or dummy interface typedefs.
Emmanuele Bassi [Mon, 16 Mar 2009 14:16:18 +0000 (14:16 +0000)]
[animation] Enhance consistency of the Animation API
The Animation API should follow this pattern:
- functions with an Interval as part of the arguments should have
"interval" inside their name, e.g.:
clutter_animation_bind_interval
clutter_animation_update_interval
- functions dealing with property names should have "property"
inside their name, e.g.:
clutter_animation_has_property
clutter_animation_unbind_property
- unless -
- functions dealing with a property and its value should not
have any modifier, e.g.:
clutter_animation_bind
The change from update_property() to update_interval() frees up
clutter_animation_update(), to be added at a later date.
Emmanuele Bassi [Mon, 16 Mar 2009 14:02:09 +0000 (14:02 +0000)]
[docs] Update after Animation API changes
Rename the bind/unbind_property functions, and add the bind_interval,
completed method.
Also, add clutter_actor_get_animation().
Emmanuele Bassi [Mon, 16 Mar 2009 14:01:43 +0000 (14:01 +0000)]
[docs] Add description of queue_redraw
Emmanuele Bassi [Mon, 16 Mar 2009 12:17:03 +0000 (12:17 +0000)]
[tests] Remove unused variables
The size of the pixmap is passed by the ::size-changed signal, so
we can remove the unused w, h variables and avoid a compiler warning.
Havoc Pennington [Tue, 17 Feb 2009 17:22:02 +0000 (12:22 -0500)]
[actor] Add ::queue-redraw signal
Bug 1454 - move queue_redraw virtualization to ClutterActor
The ClutterActor::queue-redraw signal allows parent containers to
track whether their children need a redraw.
Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
Havoc Pennington [Mon, 16 Mar 2009 11:58:58 +0000 (11:58 +0000)]
[actor] Add :clip-to-allocation property
A common use of setting clip is to keep an actor inside its allocation;
right now to do this you have to set up a callback on notify::allocation.
There's no overhead added by sticking another bit in ClutterActor
clip-to-allocation that will clip painting to the allocation if set.
Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
Colin Walters [Fri, 6 Mar 2009 04:10:00 +0000 (23:10 -0500)]
[animation] Enhance the bind API
Bug 1419 - Add clutter_animation_bind, rename clutter_animation_bind_interval
This is a different approach from the clutter_actor_animatev
vector variant. The single call should be even easier on
automatic bindings, since calls can be chained like:
new Clutter.Animation({object: myactor}).bind("x", 42).bind("y", 43);
Note clutter_animation_bind_property which took a ClutterInterval
is renamed to clutter_animation_bind_interval for clarity, and to
discourage use since there are friendlier APIs about.
Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
Emmanuele Bassi [Mon, 16 Mar 2009 11:31:27 +0000 (11:31 +0000)]
[animation] Add Animation getter
If we are animating an actor using the clutter_actor_animate*() family
of functions we might want to expose a getter for the Animation instance
we are using, to avoid excessing bookkeeping.
Emmanuele Bassi [Mon, 16 Mar 2009 11:30:10 +0000 (11:30 +0000)]
[animation] Add an emitter for ::completed
The ::completed signal requires an emitter in case we want to stop
the animation and safely dispose it inside application code without
breaking invariants.
Emmanuele Bassi [Mon, 16 Mar 2009 11:28:29 +0000 (11:28 +0000)]
[docs] Clarify Animation memory management
The memory management of the ClutterAnimation instances should be
heavily documented, given its "automagical" nature, so that other
people might understand it and avoid breaking it in the future.
Øyvind Kolås [Mon, 16 Mar 2009 00:40:27 +0000 (00:40 +0000)]
Merge branch 'async-texture-thread-pool'
Øyvind Kolås [Thu, 12 Mar 2009 11:48:44 +0000 (11:48 +0000)]
[clutter-texture] fixed gtk-doc formatting, and init threads in test.
Fixed markup to actually work with gtk-doc, also do a g_thread_init
in the test.
Neil Roberts [Fri, 13 Mar 2009 15:43:19 +0000 (15:43 +0000)]
[cogl-path] Minor fix to gtk-doc
Fix the parameters in cogl_path_curve_to and cogl_path_rel_curve_to to
match the actual names otherwise they won't appear correctly in the
docs.
Emmanuele Bassi [Fri, 13 Mar 2009 15:28:20 +0000 (15:28 +0000)]
[cogl] Avoid shadowing math.h symbols
As usual, y1 and y2 end up shadowing symbols exported by math.h.
Owen W. Taylor [Thu, 12 Mar 2009 19:33:36 +0000 (15:33 -0400)]
Avoid drawing twice if relayout queues a draw
It's reasonably normal for a relayout of the stage to cause the stage
to be queued for drawing; for this reason we should do the relayout before
we clear stage->update_idle. (But want to clear update_idle() before actually
doing the redraw to handle the corner case where the draw queues another
redraw.)
Emmanuele Bassi [Fri, 13 Mar 2009 14:14:00 +0000 (14:14 +0000)]
Do not cause more size requisitions than necessary
Bug 1499 - clutter_actor_notify_if_geometry_changed causes sync
layout cycles
Whenever clutter_actor_set_{width,height,x,y,size...} is used, extra
synchronous size requests are triggered in
clutter_actor_notify_if_geometry_changed.
If the get_preferred_width() and get_preferred_height() implementations
are particularly costly (e.g. ClutterText) this will result in a performance
impact.
To avoid excessive allocation or requisition cycles we use the
cached values and flags. If we don't have an allocation, we assume
that we need to notify all the properties; if we don't have a size
requisition we notify only width and height; finally, if we do have
a valid allocation we notify only on the changed values.
Emmanuele Bassi [Thu, 12 Mar 2009 21:11:50 +0000 (21:11 +0000)]
[deprecated] Add Effect deprecation
The ClutterEffect API has been deprecated during 0.9, so it should be
added to the deprecation macros.
Emmanuele Bassi [Thu, 12 Mar 2009 16:20:42 +0000 (16:20 +0000)]
Add more deprecation notices
Most of the deprecated API does not have an entry inside
clutter-deprecated.h, thus making porting a tad more difficult.
Neil Roberts [Fri, 13 Mar 2009 12:20:26 +0000 (12:20 +0000)]
Change cogl_path_rectangle and cogl_path_round_rectangle to take x1,y1,x2,y2
This matches the changes to cogl_rectangle to improve consistency.
Neil Roberts [Fri, 13 Mar 2009 12:02:33 +0000 (12:02 +0000)]
[README] Small typo fix
Robert Bragg [Thu, 12 Mar 2009 18:59:20 +0000 (18:59 +0000)]
Merge branch 'cogl-client-matrix-stacks'
* cogl-client-matrix-stacks:
Maintain the Cogl assumption that the modelview matrix is normally current
Finish GLES{1,2} support for client side matrix stacks
Explicitly make the modelview-matrix current in cogl_{rotate,transform,etc}
Avoid casting CoglMatrix to a GLfloat * when calling glGetFloatv
Removes need for casting const float * in _cogl_set_clip_planes
Virtualize GL matrix operations and use a client-side matrix when GL is indirect
Robert Bragg [Thu, 12 Mar 2009 14:16:48 +0000 (14:16 +0000)]
Maintain the Cogl assumption that the modelview matrix is normally current
_cogl_add_path_to_stencil_buffer and _cogl_add_stencil_clip were leaving
the projection matrix current when calling cogl_rectangle which was
upsetting _cogl_current_matrix_state_flush.
Robert Bragg [Thu, 12 Mar 2009 13:34:36 +0000 (13:34 +0000)]
Finish GLES{1,2} support for client side matrix stacks
Adds glFrustum wrappers (GLES only accepts floats not doubles, and GLES2
needs to use our internal cogl_wrap_glFrustumf)
Adds GL_TEXTURE_MATRIX getter code in cogl_wrap_glGetFloatv
Adds a GL_TEXTURE_MATRIX define for GLES2
Robert Bragg [Thu, 12 Mar 2009 13:32:10 +0000 (13:32 +0000)]
Use Cogl enum when making modelview-matrix current in cogl_{rotate,transform,etc}
My previous patch incorrectly used the GL enum with the _cogl_set_current_matrix
API.
Robert Bragg [Fri, 6 Mar 2009 03:43:24 +0000 (03:43 +0000)]
Explicitly make the modelview-matrix current in cogl_{rotate,transform,etc}
Its not intended that users should use these with any other matrix mode, and
internally we now have the _cogl_current_matrix API if we need to play with
other modes.
Robert Bragg [Fri, 6 Mar 2009 03:29:51 +0000 (03:29 +0000)]
Avoid casting CoglMatrix to a GLfloat * when calling glGetFloatv
If we later add internal flags to CoglMatrix then this code wouldn't
initialize those flags. The ways it's now done adds a redundant copy, but
if that turns out to be something worth optimizing we can look again at
using a cast but adding another way for initializing internal flags.
Robert Bragg [Fri, 6 Mar 2009 03:29:35 +0000 (03:29 +0000)]
80 char fix
Robert Bragg [Fri, 6 Mar 2009 02:39:24 +0000 (02:39 +0000)]
Removes need for casting (const float *) to (GLfloat *) in _cogl_set_clip_planes
This removes cogl.c:apply_matrix(), and makes cogl.c:project_vertex() use
cogl_matrix_transform_point instead.
Havoc Pennington [Tue, 24 Feb 2009 18:51:25 +0000 (13:51 -0500)]
Virtualize GL matrix operations and use a client-side matrix when GL is indirect
This is useful because sometimes we need to get the current matrix, which
is too expensive when indirect rendering.
In addition, this virtualization makes it easier to clean up the API in
the future.
Øyvind Kolås [Thu, 12 Mar 2009 11:48:44 +0000 (11:48 +0000)]
[clutter-texture] updated documentation.
Rewrote documentation, with the smallest amount of documentation for
load-data-async which is considered a special case of load-async.
Øyvind Kolås [Thu, 12 Mar 2009 11:18:11 +0000 (11:18 +0000)]
Merge commit 'origin/async-texture-thread-pool' into async-size
Øyvind Kolås [Thu, 12 Mar 2009 10:38:39 +0000 (10:38 +0000)]
[clutter-texture] remove load-size-async property
Only have load-data-async and load-async properties, both are construct
only and the latter adds the former load-size-async behavior on top of
load-data-async.
Øyvind Kolås [Thu, 12 Mar 2009 10:14:40 +0000 (10:14 +0000)]
[clutter-texture] add option to not block on size for loaded images
Added a construct time property to indicate that we do not want
to block on loading images.
Øyvind Kolås [Wed, 11 Mar 2009 18:26:30 +0000 (18:26 +0000)]
[tests] Added test-texture-async
Emmanuele Bassi [Thu, 12 Mar 2009 09:29:39 +0000 (09:29 +0000)]
[docs] Add a bindings coding practices
When writing language bindings for Clutter some rules should be
observed to guarantee the same levels of quality across different
bindings.
Emmanuele Bassi [Thu, 12 Mar 2009 09:27:39 +0000 (09:27 +0000)]
[docs] Reword some of the coding practices
Update with the new fixed point and units rules. Also, fix the
grammar and clarify what to do with non-static private functions.
Emmanuele Bassi [Wed, 11 Mar 2009 22:12:36 +0000 (22:12 +0000)]
[tests] Animate the color during easing
The easing modes test should also tweak the color to show the
progress of the animation.
Geoff Gustafson [Tue, 10 Mar 2009 21:25:37 +0000 (14:25 -0700)]
[animation] Broken fixed:: properties
This commit yesterday:
89e3e3a4cc06c10c2573f3d115c5b03ee4890524
[animation] Add vector variants for ::animate()
broke the "fixed::" attribute on properties in clutter_actor_animate(),
because the fixed:: part is still on the string when it checks to see if
it's a valid property the class knows about.
Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
Damien Lespiau [Wed, 11 Mar 2009 18:39:10 +0000 (18:39 +0000)]
Update shave
This update fixes a few issues:
- the use of shave with mingw32 bash on windows,
- fix the unmangling of libtool names
- fix build on solaris
- add an --enable/disable-shave configure option (while still
defaulting to enabled)
Owen W. Taylor [Fri, 27 Feb 2009 16:56:39 +0000 (11:56 -0500)]
Allow NULL for clutter_text_set_text()
As a convenience, if NULL is passed for the text argument of
clutter_text_set_text() (and for consistency,
clutter_text_set_markup()), treat that the same as "".
Gordon Williams [Wed, 11 Mar 2009 18:16:21 +0000 (18:16 +0000)]
[group] Output the group name when debugging paint
Bug 1480 - Clutter groups don't output their name when
CLUTTER_DEBUG=paint
This is a really useful thing to do debugging-wise - as you can see
istantly when (and if) clutter objects are being drawn - as often
there's quite a hierarchy of objects in groups.
Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
Owen W. Taylor [Thu, 26 Feb 2009 19:42:19 +0000 (14:42 -0500)]
Add (out) annotations for ClutterActor
Add missing (out) annotations to the doc comments for ClutterActor methods
with multiple return values.
Fix the definition of clutter_actor_get_allocation_vertices() to be
consistent with the declaration and have verts[4] rather than verts[].x
http://bugzilla.openedhand.com/show_bug.cgi?id=1481
Raymond Liu [Mon, 9 Mar 2009 06:10:45 +0000 (14:10 +0800)]
[text] Insertion of multi-byte characters broken
Bug 1501 - clutter_text_insert_text not working right with non-onebyte
character
In clutter_text_insert_text(), the position is expressed in characters, not
in bytes.
Actually, it turns out to be working on bytes, so when there are already
multi-byte character in the text buffer, insert text at the position after
the multi-byte character will not work right.
Also, the position is not updated after the insert work is done.
Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
Raymond Liu [Wed, 11 Mar 2009 06:35:26 +0000 (14:35 +0800)]
[text] Crash when multi-byte utf8 text exceeds max_length
Bug 1500 - [Patch] clutter_text crash with non one-byte utf8 text exceed
max_length
In clutter_text_set_text_internal(), when text length in character is greater
than max_length, and there are multi-byte character in it, then the new text
string buffer is not malloc()'ed with right length. This will cause the app to
crash with segmention fault.
Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
Emmanuele Bassi [Wed, 11 Mar 2009 14:01:55 +0000 (14:01 +0000)]
[docs] Document the commit message format
Clutter uses the standard git format for commit messages:
short description
<newline>
long description...
And everyone asking for their patches or trees to be merged upstream
should conform to the same commit messages format, just like they
should conform to the coding style.
Emmanuele Bassi [Wed, 11 Mar 2009 13:55:01 +0000 (13:55 +0000)]
[docs] Calling g_object_ref() will not dispose an object
The right way to dispose a PangoContext is to call g_object_unref(),
not g_object_ref().
Emmanuele Bassi [Wed, 11 Mar 2009 13:53:27 +0000 (13:53 +0000)]
[color] Fixed HLS to RGB conversion
The fixed-point values are converted to integers, which obviously
messes up the conversion. Instead, they should be converted to
floating point values before normalizing to bytes for the assignment
to ClutterColor components.
Neil Roberts [Tue, 10 Mar 2009 18:28:56 +0000 (18:28 +0000)]
Remove use of $(builddir)
$(builddir) isn't always defined in earlier versions of Automake
(although I can't track down exactly which version it appeared
in). According to the autoconf docs it is "rigorously equal to `.'" so
we might as well not use it.
Emmanuele Bassi [Tue, 10 Mar 2009 18:05:08 +0000 (18:05 +0000)]
[cogl] Initialize all members of CoglContext
Some members of CoglContext still escape initialization.
Emmanuele Bassi [Tue, 10 Mar 2009 17:53:51 +0000 (17:53 +0000)]
[cogl] Initialize boolean flag in CoglContext
The private CoglContext is created using g_malloc() and not
zeroed; this means we have to initialize the values we are
going to check, to avoid hitting garbage.
Thanks to Tommi Komulainen.
Neil Roberts [Tue, 10 Mar 2009 14:40:33 +0000 (14:40 +0000)]
Fix out of tree builds
Commit a383929 added the $(srcdir) prefix to all of the source files
but some files are generated by the configure script and other make
rules so they actually live in $(builddir). Out-of-tree builds
therefore broke.
Øyvind Kolås [Tue, 10 Mar 2009 13:00:57 +0000 (13:00 +0000)]
Change the default size of thread pool from 3 to 1
Concurrently decoding three image files can stall animations even on a
dual core system, reducing to 1 concurrent image decoding thread.
Emmanuele Bassi [Mon, 9 Mar 2009 21:11:40 +0000 (21:11 +0000)]
[animation] Add vector variants for ::animate()
Bug 1438 - Implicit Animation API could use animatev variants
The clutter_actor_animate* family of functions use va_lists to
handle the property/value pairs for the final state of the
animation.
Language bindings have problems with variadic arguments functions,
and usually prefer vector-based API which allow a greater level
of control and conversion from native data types.
For each variadic arguments function in the clutter_actor_animate*
family there should be a vector-based version that takes:
- the number of property/value pairs
- a constant array of constant strings
- an array of GValues
Most of the internal implementation can be refactored from the
current one, thus both the var_args and the vector entry points
share a common implementation of the code; then, both versions
of the API are just loops over a list of arguments.
Based on a patch by: Robert Carr <carrr@rpi.edu>
Emmanuele Bassi [Mon, 9 Mar 2009 18:28:15 +0000 (18:28 +0000)]
[docs] Update API reference
The API reference was still listing some symbols that have been
removed.
Emmanuele Bassi [Mon, 9 Mar 2009 17:56:48 +0000 (17:56 +0000)]
[docs] Remove ClutterFixed from the documentation
Now that ClutterFixed has finally gone the way of the Dodo, we
can safely remove it from the API reference as well.
Emmanuele Bassi [Mon, 9 Mar 2009 17:47:21 +0000 (17:47 +0000)]
[cogl] Fix hardcoded paths in the pc file
The commit
24ce193836 fixed the Clutter pkg-config file. Since
COGL now ships its own, we need to fix that as well.
Emmanuele Bassi [Mon, 9 Mar 2009 17:36:22 +0000 (17:36 +0000)]
[fixed] Remove ClutterFixed API
Since the switch from fixed point to floating point, and the introduction
of CoglFixed, ClutterFixed has been typedef'd into a float. This makes
ClutterFixed the worst fixed point API ever.
Now that Clutter has been migrated to CoglFixed and gfloat whenever needed,
ClutterFixed can be safely removed.
The only thing that Clutter should still provide is ClutterParamSpecFixed,
for installing fixed point properties into GObject classes.
The ClutterFixed symbols have been entirely removed from the API.
Emmanuele Bassi [Mon, 9 Mar 2009 17:35:08 +0000 (17:35 +0000)]
[units] Add more conversion functions
A GValue containing a ClutterUnit should be transformable into a
GValue holding an integer, a floating point value or a fixed point
value.
This means adding more transformation functions when registering
the ClutterUnit GType.
Emmanuele Bassi [Mon, 9 Mar 2009 17:34:23 +0000 (17:34 +0000)]
[tests] Use floats, not ClutterFixed
The COGL API expects floats, not ClutterFixed, so we need
to use the right type when calling it.
Emmanuele Bassi [Mon, 9 Mar 2009 17:32:15 +0000 (17:32 +0000)]
[text] Convert units to the right type
The COGL API expects a floating point value, so Units should be
converted to floats, not to ClutterFixed.
Emmanuele Bassi [Mon, 9 Mar 2009 17:31:44 +0000 (17:31 +0000)]
[texture] Fix ClutterFixed usage
Do not use ClutterFixed and its macros inside the Texture.
Emmanuele Bassi [Mon, 9 Mar 2009 17:24:44 +0000 (17:24 +0000)]
[stage] Coalesce fog and perspective API
The fog and perspective API is currently split in two parts:
- the floating point version, using values
- the fixed point version, using structures
The relative properties are using the structure types, since they
are meant to set multiple values at the same time. Instead of
using bare values, the whole API should be coalesced into two
simple calls using structures to match the GObject properties.
Thus:
clutter_stage_set_fog (ClutterStage*, const ClutterFog*)
clutter_stage_get_fog (ClutterStage*, ClutterFog*)
clutter_stage_set_perspective (ClutterStage*, const ClutterPerspective*)
clutter_stage_get_perspective (ClutterStage*, ClutterPerspective*)
Which supercedes the fixed point and floating point variants.
More importantly, both ClutterFog and ClutterPerspective should
using floating point values, since that's what get passed to
COGL anyway.
ClutterFog should also drop the "density" member, since ClutterStage
only allows linear fog; non-linear fog distribution can be achieved
using a signal handler and calling cogl_set_fog() directly; this keeps
the API compact yet extensible.
Finally, there is no ClutterStage:fog so it should be added.
Emmanuele Bassi [Mon, 9 Mar 2009 17:08:41 +0000 (17:08 +0000)]
[interval] Update fixed-point handling
Do not use ClutterFixed when dealing with fixed point values. Use
CoglFixed instead.
Emmanuele Bassi [Mon, 9 Mar 2009 17:07:47 +0000 (17:07 +0000)]
[tests] Test CoglFixed, not ClutterFixed
We really want to test the CoglFixed implementation, not the
to-be-deprecated ClutterFixed one.
Emmanuele Bassi [Mon, 9 Mar 2009 17:06:22 +0000 (17:06 +0000)]
[cogl-fixed] Implement the CoglFixed fundamental GType
The type machinery for CoglFixed should be implemented by COGL
itself, now that COGL exports the GType of its types.
This allows moving most of what ClutterFixed did directly to
CoglFixed where it belongs.
Emmanuele Bassi [Mon, 9 Mar 2009 17:05:13 +0000 (17:05 +0000)]
Move ClutterTimeline to CoglFixed
The ClutterTimeline::get_progressx() method should return a
CoglFixed, now that ClutterFixed is being deprecated.
Emmanuele Bassi [Mon, 9 Mar 2009 17:03:37 +0000 (17:03 +0000)]
Move ClutterBehaviourRotate to CoglFixed
Remove the wrong usage of ClutterFixed and use CoglFixed instead
in the API and the implementation.
Emmanuele Bassi [Mon, 9 Mar 2009 17:03:00 +0000 (17:03 +0000)]
Move ClutterBehaviourEllipse to CoglFixed
Remove the wrong usage of ClutterFixed, and use CoglFixed instead
in the API and the implementation.
Emmanuele Bassi [Thu, 5 Mar 2009 20:17:11 +0000 (20:17 +0000)]
Move BehaviourScale to CoglFixed
ClutterFixed as a type is going away, superceded by CoglFixed. The
fixed point entry points in the API should be ported to the
CoglFixed type so that they are useful again.
Emmanuele Bassi [Thu, 5 Mar 2009 20:15:00 +0000 (20:15 +0000)]
[cogl-fixed] Add a double-to-fixed conversion macro
Since the conversion of a floating point value to a fixed point
value is already done in double precision we can safely expose
a macro that converts a double precision floating point value to
a CoglFixed one.
Emmanuele Bassi [Tue, 3 Mar 2009 22:51:17 +0000 (22:51 +0000)]
[docs] Note that grabs are evil
Grabs are an entirely evil way to override the whole event delivery
machinery that Clutter has in place.
A pointer grab can be effectively replaced by a much more reliable
::captured-event signal handler, for instance.
Sometimes, grabs are a necessary evil -- and that is why Clutter
exposes them in the API; that should not fool anyone into thinking
that they should be used unless strictly necessary.
Emmanuele Bassi [Thu, 26 Feb 2009 15:35:20 +0000 (15:35 +0000)]
[docs] Clarify clutter_actor_animate() behaviour
When calling clutter_actor_animate() on an actor that is being
currently animated the default behaviour is to update the duration
of the animation; the easing mode; update all the common properties;
and finally add the new properties.
This:
clutter_actor_animate (actor, 500, CLUTTER_LINEAR,
"width", 100,
"height", 100,
NULL);
clutter_actor_animate (actor, 250, CLUTTER_EASE_IN_CUBIC,
"x", 100,
"y", 100,
"height", 200,
NULL);
Is logically equivalent to:
clutter_actor_animate (actor, 250, CLUTTER_EASE_IN_CUBIC,
"x", 100,
"y", 100,
"width", 100,
"height", 200,
NULL);
The documentation of the function should be slightly more verbose
in describing the default behaviour.
Emmanuele Bassi [Sat, 28 Feb 2009 19:13:18 +0000 (19:13 +0000)]
[build] Various fixes for distcheck
The generation of the GObject introspection data has broken
the distcheck phase.
The location of the header and source files should always be
depending on the $(top_srcdir) and $(srcdir) variables,
respectively; the special handling of the COGL API inside the
GIR generation should also take those two variables into
account.
Emmanuele Bassi [Sat, 28 Feb 2009 17:54:27 +0000 (17:54 +0000)]
Add pkg-config file for COGL
COGL should ship its own pkg-config file, obviously still pointing
to Clutter's compiler flags and linking options, for COGL-specific
variables that might be queried at configure time.
For instance, it's easier (and less verbose) to do:
PKG_CHECK_EXISTS([cogl-gl-1.0],
[has_gl_backend=yes],
[has_gl_backend=no])
Than doing:
AC_MSG_CHECKING([for GL support in COGL])
cogl_backend=`$PKG_CONFIG --variable=cogl clutter-0.9`
if test x$cogl_backend = xgl; then
has_gl_backend=yes
AC_MSG_RESULT([found])
else
has_gl_backend=no
AC_MSG_RESULT([not found])
fi
Emmanuele Bassi [Sat, 28 Feb 2009 17:19:05 +0000 (17:19 +0000)]
[shader] Unify code paths
ClutterShader contains a lot of duplication, as the vertex and fragment
shader code paths are mostly the same.
The code should be simplified by adding new internal functions that can
be called with a value from the already present ClutterShaderType
enumeration.
In the future it'll also be possible to deprecate the current split API
and expose the generic accessors instead.
Emmanuele Bassi [Sat, 28 Feb 2009 16:16:09 +0000 (16:16 +0000)]
Clean up of the ClutterColor API
The ClutterColor API has some inconsistencies:
- the string deserialization function does not match the rest of
the conversion function naming policy; the naming should be:
clutter_color_parse() -> clutter_color_from_string()
and the first parameter should be the ClutterColor that will
be set from the string, not the string itself (a GDK-ism).
- the fixed point API should not be exposed, especially in the
form of ClutterFixed values
- the non-fixed point HLS conversion functions do not make any
sense. The values returned should be:
hue := range [ 0, 360 ]
luminance := range [ 0, 1 ]
saturation := range [ 0, 1 ]
like the current fixed point API does. Returning a value in
the [ 0, 255 ] range is completely useless
- the clutter_color_equal() should be converted for its use inside
a GHashTable; a clutter_color_hash() should be added as well
- the second parameter of the clutter_color_shade() function should
be the shading factor, not the result (another GDK-ism). this way
the function call can be translated from this:
color.shade(out result, factor)
to the more natural:
color.shade(factor, out result)
This somewhat large commit fixes all these issues and updates the
internal users of the API.
Emmanuele Bassi [Sat, 28 Feb 2009 16:03:11 +0000 (16:03 +0000)]
[cogl] Add a PANGO debug flag for CoglPango use
The CoglPango code falls under the COGL "jurisdiction"; this means
that it cannot include Clutter headers unless strictly necessary.
The CoglPangoRenderer code was using the CLUTTER_NOTE() macro. Now
that COGL has it's own COGL_NOTE() similar macro, CoglPango should
use that and avoid including clutter-debug.h (which pulls in
clutter-private.h which in turn pulls in clutter-actor.h).
A new flag, COGL_DEBUG_PANGO, has been added to the COGL debug
flags.
Colin Walters [Mon, 9 Mar 2009 18:17:18 +0000 (14:17 -0400)]
Typo in clutter-win32.pc.in introduced by commit
24ce19383
Neil Roberts [Mon, 9 Mar 2009 18:40:58 +0000 (18:40 +0000)]
Set the mapped flag on the stage in the SDL and eglnative backends
Bug 1493 - GL ES does not work since Jan 9 in PowerVR SGX 535, Intel
The mapped flag needs to be set on the stage otherwise
clutter_actor_queue_redraw will never queue a redraw and never draw
anything.
In these two backends there is not really a way to hide the stage so
they both set the mapped flag immediatly when clutter_actor_show is
called.
Owen W. Taylor [Fri, 27 Feb 2009 18:39:53 +0000 (13:39 -0500)]
Use COGL to establish GL state for ClutterGLXTexturePixmap
Using glEnable() directly confuses COGL and can result in problems
like subsequent pick operations not working correctly. Get the
material for the ClutterTexture and call cogl_material_flush_gl_state()
instead.
http://bugzilla.openedhand.com/show_bug.cgi?id=1483
Neil Roberts [Mon, 9 Mar 2009 12:28:22 +0000 (12:28 +0000)]
[eglnative] Add -I flags for the clutter dir in the src and build dirs
These are required to include the Cogl header files.
Neil Roberts [Mon, 9 Mar 2009 10:59:52 +0000 (10:59 +0000)]
Fix warning in clutter-backend-sdl
Removed direct use of SDL_GetError as a format string for g_set_error
to fix a compiler warning.
Colin Walters [Fri, 6 Mar 2009 05:19:12 +0000 (00:19 -0500)]
Bug 1491 - Fix hardcoded lib path in .pc files
We should instead use @libdir@ from configure to be correct
on multilib systems.
Øyvind Kolås [Fri, 27 Feb 2009 17:59:16 +0000 (17:59 +0000)]
Add a warning for recursive emit_event
When event delivery is invoked by synthetic events through
clutter_do_event from inside an event handler clutter was silently
ignoring it, this warning will hopefully help resolving some issues.
Robert Bragg [Wed, 25 Feb 2009 16:23:09 +0000 (16:23 +0000)]
[cogl-matrix] Documents that CoglMatrix members should be considered read only
In the future if we want to annotate matrices with internal flags, and add
caching of the inverse matrix then we need to ensure that all matrix
modifications are done by cogl_matrix API so we'd know when to dirty the
cache or update the flags.
This just adds documentation to that effect, and assuming the most likley
case where someone would try and directly write to matrix members would
probably be to load a constant matrix other than the identity matrix; I
renamed cogl_matrix_init_from_gl_matrix to cogl_matrix_init_from_array to
make it seem more general purpose.
Robert Bragg [Tue, 24 Feb 2009 11:33:58 +0000 (11:33 +0000)]
[cogl-matrix] Adds padding to CoglMatrix
This adds enough padding to allow us to potentially add a cache of the inverse
matrix in the future and private flags to annotate matrices.
Emmanuele Bassi [Thu, 26 Feb 2009 15:32:48 +0000 (15:32 +0000)]
[backend] Constify font options
The font options accessors in ClutterBackend only deal with const
cairo_font_options_t values, since:
- set_font_options() will copy the font options
- get_font_options() will return a pointer to the internal
font options
Not using const in these cases makes the API confusing and might lead
to erroneous calls to cairo_font_options_destroy().
Emmanuele Bassi [Fri, 9 Jan 2009 15:02:50 +0000 (15:02 +0000)]
Intern the ClutterScriptable type name
Like we do for other types, use the I_() macro to intern the
type name during the GType registration for ClutterScriptable.
Bastian Winkler [Tue, 24 Feb 2009 19:07:31 +0000 (20:07 +0100)]
Remove redundant declaration in clutter-text.h
clutter-text.h declares clutter_text_get_layout twice.
Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
Emmanuele Bassi [Thu, 26 Feb 2009 12:46:36 +0000 (12:46 +0000)]
[build] Do not shave typelib generation
Bug 1478 - typelib creation shaved out of existence
Add a 'GEN' output rule for the typelib files created when
introspection is enabled.
Emmanuele Bassi [Thu, 26 Feb 2009 11:55:53 +0000 (11:55 +0000)]
[build] Put the X11 pc dependencies in another variable
If X11 comes with pkg-config files (like it should) we should not add
those dependencies to the generic BACKEND_PC_FILES variable: that
variable is meant only for backend-specific dependencies handled by
pkg-config -- and Clutter supports non-X11 backends as well.
The X11_PC_FILES variable will only contain X11-related dependencies,
and will be set as part of BACKEND_PC_FILES only inside the GLX and
EGLX backends sections.
Owen W. Taylor [Wed, 25 Feb 2009 20:46:09 +0000 (15:46 -0500)]
Fix x/y confusion for GL_TEXTURE_RECTANGLE_ARB
When "denormalizing" for texture rectangles, multiple X coordinates
by the X size and Y coordinates by the Y size.
http://bugzilla.openedhand.com/show_bug.cgi?id=1479
Neil Roberts [Thu, 26 Feb 2009 10:56:42 +0000 (10:56 +0000)]
[cogl-pango-glyph-cache] Fix compiler warning on 64-bit
gcc warns about casting a pointer to a guint because it is a different
size on 64-bit machines. However the pointer is only used as a hash so
it doesn't matter if we lose the most significant bits. The patch
makes it use GPOINTER_TO_UINT instead which first casts it to a gulong
and avoids the warning.
Neil Roberts [Wed, 25 Feb 2009 17:10:54 +0000 (17:10 +0000)]
[clutter-texture] Use a GThreadPool for loading async textures
Instead of creating a separate thread for each texture load, the loads
are now queued in a thread pool which will use at most 3 textures at a
time. This avoids the potentially large overhead of creating and
destroying a thread for every image while still avoiding throttling
the CPU if a large number of textures are loaded at the same time.
If the load is cancelled the old code needed to join the thread which
effectively meant it had to wait for the load to finish. With this
model the threads are owned by the thread pool so there is no need to
wait for them to finish. Instead, each thread is given its own thread
data which we can use to mark the thread as aborted. Once the load is
finished the thread will check whether it is aborted before setting
the texture data. That way the ClutterTexture can just disown threads
that it needs to cancel.
Neil Roberts [Tue, 24 Feb 2009 16:44:30 +0000 (16:44 +0000)]
[tests/tools] Don't install libdisable-npots.so
The libdisable-npots library is just used as a helper as part of
make test so it should not be installed.
If noinst_* is used then automake will generate a static library but
this won't work with LD_PRELOAD so we then need an extra custom rule
to link that into a shared library. The custom rule uses the $(LINK)
Makefile var which gets put in the Makefile because of the static
library. We pass libtool a stub -rpath option which causes it to
generate a shared library.
Emmanuele Bassi [Tue, 24 Feb 2009 16:16:25 +0000 (16:16 +0000)]
[media] Add sub-second resolution for the duration
The duration in ClutterMedia is currently expressed in integer multiples
of a second. This does not offer enough granularity for media playback
that has fractionary durations -- 2.3 seconds; 1 minute, 23.4 seconds;
1 hour, 23 minutes, 4.5 seconds; etc.
The duration value should be expressed in seconds with a sub-second
granularity; for this reason, a double should be used insted of an
unsigned integer.
The semantics haven't changed: the :duration property still exposes
seconds.
Bastian Winkler [Tue, 24 Feb 2009 15:58:40 +0000 (15:58 +0000)]
[media] Fix the interface cast macro
Bug 1474 - ClutterMedia interface
The GET_INTERFACE() macro is still using the old type name of
the ClutterMedia interface structure in the cast.
Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
Jonathan Matthew [Tue, 24 Feb 2009 09:25:53 +0000 (09:25 +0000)]
Declare the EnumValues for PixelFormat static
Bug 1473 - CoglPixelFormat enum data must be declared static
When registering an enumeration GType, the GEnumValue or GFlagsValue
arrays must be declared static; otherwise, you get a segmentation
fault when calling the function again.
Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
Emmanuele Bassi [Mon, 23 Feb 2009 15:22:08 +0000 (15:22 +0000)]
Use a dynamic array for the actors when delivering events
Instead of using a fixed size array for storing the scenegraph sub-node
during event delivery we should use a GPtrArray. The benefits are:
- a smaller allocation
- no undocumented yet binding constraint on the scenegraph size