Commit Graph

2401 Commits

Author SHA1 Message Date
Emmanuele Bassi
89060a9bb3 [cogl] Avoid shadowing math.h symbols
As usual, y1 and y2 end up shadowing symbols exported by math.h.
2009-03-13 15:28:20 +00:00
Owen W. Taylor
e1742af368 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.)
2009-03-13 15:20:50 +00:00
Emmanuele Bassi
72f9646804 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.
2009-03-13 15:20:49 +00:00
Emmanuele Bassi
786161c75f [deprecated] Add Effect deprecation
The ClutterEffect API has been deprecated during 0.9, so it should be
added to the deprecation macros.
2009-03-13 14:29:27 +00:00
Emmanuele Bassi
ed2fe41b32 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.
2009-03-13 14:29:27 +00:00
Neil Roberts
cde05288b7 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.
2009-03-13 12:20:26 +00:00
Neil Roberts
5d4c09369e [README] Small typo fix 2009-03-13 12:02:33 +00:00
Robert Bragg
2edccc760d 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
2009-03-12 18:59:36 +00:00
Robert Bragg
ca2844013e 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.
2009-03-12 18:55:41 +00:00
Robert Bragg
0580dbe015 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
2009-03-12 18:55:41 +00:00
Robert Bragg
3a9b18ef51 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.
2009-03-12 18:55:40 +00:00
Robert Bragg
2f34d14cb4 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.
2009-03-12 18:55:40 +00:00
Robert Bragg
0d88ecb459 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.
2009-03-12 18:55:40 +00:00
Robert Bragg
61b867442b 80 char fix 2009-03-12 18:55:40 +00:00
Robert Bragg
20a2f76e1f 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.
2009-03-12 18:53:22 +00:00
Havoc Pennington
08932584b5 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.
2009-03-12 18:32:45 +00:00
Øyvind Kolås
5895048f65 [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.
2009-03-12 11:48:44 +00:00
Øyvind Kolås
25d54a650d Merge commit 'origin/async-texture-thread-pool' into async-size 2009-03-12 11:18:11 +00:00
Øyvind Kolås
93d8f62f6b [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.
2009-03-12 10:38:39 +00:00
Øyvind Kolås
d3b68298ac [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.
2009-03-12 10:30:09 +00:00
Øyvind Kolås
5d3d971389 [tests] Added test-texture-async 2009-03-12 10:17:08 +00:00
Emmanuele Bassi
c418b23baf [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.
2009-03-12 09:29:39 +00:00
Emmanuele Bassi
d036d088aa [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.
2009-03-12 09:27:39 +00:00
Emmanuele Bassi
77579bbc5f [tests] Animate the color during easing
The easing modes test should also tweak the color to show the
progress of the animation.
2009-03-11 22:12:36 +00:00
Geoff Gustafson
2c95b378a5 [animation] Broken fixed:: properties
This commit yesterday:

89e3e3a4cc
[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>
2009-03-11 22:09:05 +00:00
Damien Lespiau
168499742a 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)
2009-03-11 18:44:33 +00:00
Owen W. Taylor
d88bc30b87 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 "".
2009-03-11 18:20:42 +00:00
Gordon Williams
0d874312d3 [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>
2009-03-11 18:16:21 +00:00
Owen W. Taylor
02b2b664d8 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
2009-03-11 18:14:49 +00:00
Raymond Liu
75e5b805ab [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>
2009-03-11 18:00:21 +00:00
Raymond Liu
039e282a40 [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>
2009-03-11 17:50:51 +00:00
Emmanuele Bassi
a83a5d5593 [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.
2009-03-11 14:01:55 +00:00
Emmanuele Bassi
7a5cea44dd [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().
2009-03-11 13:58:31 +00:00
Emmanuele Bassi
e430903acd [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.
2009-03-11 13:58:31 +00:00
Neil Roberts
5e9894fbac 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.
2009-03-10 19:24:17 +00:00
Emmanuele Bassi
a41361269f [cogl] Initialize all members of CoglContext
Some members of CoglContext still escape initialization.
2009-03-10 18:05:08 +00:00
Emmanuele Bassi
d3245c6624 [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.
2009-03-10 17:53:51 +00:00
Neil Roberts
57c3e84289 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.
2009-03-10 14:40:33 +00:00
Øyvind Kolås
e744066e7d 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.
2009-03-10 13:00:57 +00:00
Emmanuele Bassi
89e3e3a4cc [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>
2009-03-10 12:38:04 +00:00
Emmanuele Bassi
c46106f6dd [docs] Update API reference
The API reference was still listing some symbols that have been
removed.
2009-03-10 12:38:04 +00:00
Emmanuele Bassi
f1b237b2ec [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.
2009-03-10 12:38:04 +00:00
Emmanuele Bassi
bb83bf282d [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.
2009-03-10 12:38:04 +00:00
Emmanuele Bassi
9b83a6f291 [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.
2009-03-10 12:38:04 +00:00
Emmanuele Bassi
d1f3190f5b [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.
2009-03-10 12:38:04 +00:00
Emmanuele Bassi
6bee140e74 [tests] Use floats, not ClutterFixed
The COGL API expects floats, not ClutterFixed, so we need
to use the right type when calling it.
2009-03-10 12:38:04 +00:00
Emmanuele Bassi
f82c9e7dba [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.
2009-03-10 12:38:04 +00:00
Emmanuele Bassi
97d0a4845a [texture] Fix ClutterFixed usage
Do not use ClutterFixed and its macros inside the Texture.
2009-03-10 12:38:04 +00:00
Emmanuele Bassi
52811b240f [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.
2009-03-10 12:38:03 +00:00
Emmanuele Bassi
628e54fa9f [interval] Update fixed-point handling
Do not use ClutterFixed when dealing with fixed point values. Use
CoglFixed instead.
2009-03-10 12:38:03 +00:00