profile/ivi/clutter.git
14 years agoMerge branch 'wip/state-machine'
Emmanuele Bassi [Mon, 24 May 2010 09:42:03 +0000 (10:42 +0100)]
Merge branch 'wip/state-machine'

* wip/state-machine:
  Do not use wildcards in test-state
  script: Implement State deserialization
  state: added a "target-state" property
  state: documented data structures
  Add State interactive tests to the ignore file
  state: Documentation and introspection annotation fixes
  state: Minor coding style fixes
  state: Clean up the header's documentation
  state: Constify StateKey accessors
  Do not include clutter.h from a Clutter header file
  state-machine: made clutter_state_change take a boolean animate argument
  state-machine: use clutter_timeline_get_progress
  state-machine: add completed signal
  state machine: added state machine

Conflicts:
.gitignore

14 years agoMerge branch 'wip/framebuffer-bits'
Emmanuele Bassi [Fri, 21 May 2010 13:38:37 +0000 (14:38 +0100)]
Merge branch 'wip/framebuffer-bits'

* wip/framebuffer-bits:
  Implement accessors for the color bits in a framebuffer

14 years agoDo not use wildcards in test-state
Emmanuele Bassi [Fri, 21 May 2010 13:22:56 +0000 (14:22 +0100)]
Do not use wildcards in test-state

Use named states, like in a real case.

14 years agoscript: Implement State deserialization
Emmanuele Bassi [Fri, 21 May 2010 13:13:14 +0000 (14:13 +0100)]
script: Implement State deserialization

It should be possible to describe ClutterState transitions using
ClutterScript in a similar way as ClutterAnimator.

14 years agoMerge branch 'wip/constraints'
Emmanuele Bassi [Fri, 21 May 2010 09:55:09 +0000 (10:55 +0100)]
Merge branch 'wip/constraints'

* wip/constraints: (24 commits)
  Add the Cogl API reference to the fixxref extra directories
  Document the internal MetaGroup class
  Remove the construct-only flag from ActorMeta:name
  doc: Remove gtk-doc annotations from the json-glib copy
  doc: Fix parameter documentation
  Add named modifiers for Action and Constraint
  Remove a redundant animation
  Set the stage resizable in test-constraints
  Use a 9 grid for the constraints test
  Miscellaneous documentation fixes
  docs: Document animating action and constraint properties
  docs: Document BindConstraint and AlignConstraint
  constraint: Rename BindConstraint:bind-axis
  constraints: Add AlignConstraint
  tests: Add a constraints interactive test
  constraint: Add BindConstraint
  actor: Implement Animatable
  animation: Use the new Animatable API for custom properties
  animatable: Add custom properties to Animatable
  constraint: Add ClutterConstraint base class
  ...

Conflicts:
configure.ac

14 years agostate: added a "target-state" property
Øyvind Kolås [Fri, 21 May 2010 09:37:42 +0000 (10:37 +0100)]
state: added a "target-state" property

When set the ClutterState transitions to the new state.

14 years agostate: documented data structures
Øyvind Kolås [Thu, 20 May 2010 22:05:16 +0000 (23:05 +0100)]
state: documented data structures

14 years agoAdd State interactive tests to the ignore file
Emmanuele Bassi [Thu, 20 May 2010 17:58:30 +0000 (18:58 +0100)]
Add State interactive tests to the ignore file

14 years agostate: Documentation and introspection annotation fixes
Emmanuele Bassi [Thu, 20 May 2010 17:57:27 +0000 (18:57 +0100)]
state: Documentation and introspection annotation fixes

14 years agostate: Minor coding style fixes
Emmanuele Bassi [Thu, 20 May 2010 17:34:34 +0000 (18:34 +0100)]
state: Minor coding style fixes

14 years agostate: Clean up the header's documentation
Emmanuele Bassi [Thu, 20 May 2010 16:46:52 +0000 (17:46 +0100)]
state: Clean up the header's documentation

14 years agostate: Constify StateKey accessors
Emmanuele Bassi [Thu, 20 May 2010 16:34:36 +0000 (17:34 +0100)]
state: Constify StateKey accessors

Since the accessors do not modify the StateKey we should constify the
argument.

14 years agoDo not include clutter.h from a Clutter header file
Emmanuele Bassi [Thu, 20 May 2010 16:34:02 +0000 (17:34 +0100)]
Do not include clutter.h from a Clutter header file

Clutter header files should just include the needed headers.

14 years agomath: Adds an experimental cogl_vector3_* API
Robert Bragg [Thu, 20 May 2010 13:54:44 +0000 (14:54 +0100)]
math: Adds an experimental cogl_vector3_* API

This adds a math utility API for handling 3 component, single precision
float vectors with the following; mostly self explanatory functions:

cogl_vector3_init
cogl_vector3_init_zero
cogl_vector3_equal
cogl_vector3_equal_with_epsilon
cogl_vector3_copy
cogl_vector3_free
cogl_vector3_invert
cogl_vector3_add
cogl_vector3_subtract
cogl_vector3_multiply_scalar
cogl_vector3_divide_scalar
cogl_vector3_normalize
cogl_vector3_magnitude
cogl_vector3_cross_product
cogl_vector3_dot_product
cogl_vector3_distance

Since the API is experimental you will need to define
COGL_ENABLE_EXPERIMENTAL_API before including cogl.h if you want to use
the API.

14 years agostate-machine: made clutter_state_change take a boolean animate argument
Øyvind Kolås [Thu, 20 May 2010 15:13:46 +0000 (16:13 +0100)]
state-machine: made clutter_state_change take a boolean animate argument

Most of the time this will be TRUE, pass FALSE to change to the target
state immediately.

14 years agostate-machine: use clutter_timeline_get_progress
Øyvind Kolås [Thu, 20 May 2010 14:41:29 +0000 (15:41 +0100)]
state-machine: use clutter_timeline_get_progress

14 years agostate-machine: add completed signal
Øyvind Kolås [Wed, 12 May 2010 16:03:25 +0000 (17:03 +0100)]
state-machine: add completed signal

Added a completed signal to the animator

14 years agostate machine: added state machine
Øyvind Kolås [Tue, 11 May 2010 14:04:34 +0000 (15:04 +0100)]
state machine: added state machine

14 years agocookbook: Add a recipe for CairoTexture
Emmanuele Bassi [Thu, 20 May 2010 15:19:25 +0000 (16:19 +0100)]
cookbook: Add a recipe for CairoTexture

The Clutter cookbook has a chapter for textures. It would be useful to
provide a recipe on simple uses of ClutterCairoTexture as part of that.

Some suggested content is attached.

14 years agocogl-texture-2d: Optimise _cogl_texture_2d_is_pot
Neil Roberts [Thu, 20 May 2010 11:37:56 +0000 (12:37 +0100)]
cogl-texture-2d: Optimise _cogl_texture_2d_is_pot

This takes the simple algorithm from here:

http://graphics.stanford.edu/~seander/bithacks.html#DetermineIfPowerOf2

This avoids a loop and is much faster.

14 years agoAdd the Cogl API reference to the fixxref extra directories
Emmanuele Bassi [Thu, 20 May 2010 11:03:47 +0000 (12:03 +0100)]
Add the Cogl API reference to the fixxref extra directories

14 years agoDocument the internal MetaGroup class
Emmanuele Bassi [Thu, 20 May 2010 11:03:10 +0000 (12:03 +0100)]
Document the internal MetaGroup class

Just because it's an internal class, ClutterMetaGroup should not be left
undocumented.

14 years agoRemove the construct-only flag from ActorMeta:name
Emmanuele Bassi [Thu, 20 May 2010 11:02:13 +0000 (12:02 +0100)]
Remove the construct-only flag from ActorMeta:name

The ClutterActorMeta:name property should be read-write, and be
writeable at any time.

14 years agodoc: Remove gtk-doc annotations from the json-glib copy
Emmanuele Bassi [Thu, 20 May 2010 10:45:54 +0000 (11:45 +0100)]
doc: Remove gtk-doc annotations from the json-glib copy

There's no need to use gtk-doc annotations: the API is internal to
Clutter.

14 years agodoc: Fix parameter documentation
Emmanuele Bassi [Thu, 20 May 2010 10:45:25 +0000 (11:45 +0100)]
doc: Fix parameter documentation

14 years agoAdd named modifiers for Action and Constraint
Emmanuele Bassi [Thu, 20 May 2010 10:19:51 +0000 (11:19 +0100)]
Add named modifiers for Action and Constraint

The ClutterActor API should have modifier methods for adding, removing
and retrieving Actions and Constraints using the ClutterActorMeta:name
property - mostly, for convenience.

14 years agoRemove a redundant animation
Emmanuele Bassi [Wed, 19 May 2010 17:23:29 +0000 (18:23 +0100)]
Remove a redundant animation

14 years agoSet the stage resizable in test-constraints
Emmanuele Bassi [Wed, 19 May 2010 17:20:27 +0000 (18:20 +0100)]
Set the stage resizable in test-constraints

To demonstrate that constraints can be used to reposition actors in a
resizable stage, set the :user-resizable property to TRUE, and spend the
next 15 minutes playing with the stage size.

14 years agoUse a 9 grid for the constraints test
Emmanuele Bassi [Wed, 19 May 2010 17:17:49 +0000 (18:17 +0100)]
Use a 9 grid for the constraints test

Let's complicate the interactive constraints test a little bit by adding
more actors and animating two constraints at a time.

14 years agoMiscellaneous documentation fixes
Emmanuele Bassi [Wed, 19 May 2010 15:10:05 +0000 (16:10 +0100)]
Miscellaneous documentation fixes

14 years agoStubs out _cogl_xlib_handle_event
Robert Bragg [Tue, 13 Oct 2009 14:27:06 +0000 (15:27 +0100)]
Stubs out _cogl_xlib_handle_event

This stubs out an xlib event handling mechanism for Cogl. The intention
is for Clutter to use this to forward all x11 events to Cogl. As we move
winsys functionality down into Cogl, Cogl will become responsible for
handling a number of X events: ConfigureNotify events for onscreen
framebuffers, swap events and Damage events for cogl_x11_texture_pixmap.

14 years agodocs: Document animating action and constraint properties
Emmanuele Bassi [Wed, 19 May 2010 14:09:47 +0000 (15:09 +0100)]
docs: Document animating action and constraint properties

Add a refsect for the syntax to be used when animating action and
constraint properties with ClutterAnimation.

14 years agobuild: expose automake conditionals for cogl winsys
Robert Bragg [Thu, 8 Oct 2009 11:08:21 +0000 (12:08 +0100)]
build: expose automake conditionals for cogl winsys

Expose the ./configured window system/backend options to the Cogl
automake files via some new SUPPORT_XYZ conditionals.

14 years agoconfigure.ac: Adds some COGL_HAS_XYZ_SUPPORT defines
Robert Bragg [Tue, 13 Oct 2009 14:27:06 +0000 (15:27 +0100)]
configure.ac: Adds some COGL_HAS_XYZ_SUPPORT defines

This exposes the ./configured window system/backend options to Cogl via
a set of new COGL_HAS_XYZ_SUPPORT defines:

COGL_HAS_{X11,XLIB,GLX,EGL,EGL_PLATFORM_XYZ,OSX,WIN32,WGL}_SUPPORT

14 years agodocs: Document BindConstraint and AlignConstraint
Emmanuele Bassi [Wed, 19 May 2010 13:46:02 +0000 (14:46 +0100)]
docs: Document BindConstraint and AlignConstraint

Add the missing gtk-doc annotations for BindConstraint and
AlignConstraint, plus the licensing blurb.

14 years agoconstraint: Rename BindConstraint:bind-axis
Emmanuele Bassi [Wed, 19 May 2010 13:34:18 +0000 (14:34 +0100)]
constraint: Rename BindConstraint:bind-axis

We're not binding an axis: we're really binding a coordinate of an actor
to the coordinate of another one.

14 years agoconstraints: Add AlignConstraint
Emmanuele Bassi [Wed, 19 May 2010 12:02:43 +0000 (13:02 +0100)]
constraints: Add AlignConstraint

AlignConstraint is a simple constraint that keeps an actor's position
aligned to the width or height of another actor, multiplied by an
alignment factor.

14 years agotests: Add a constraints interactive test
Emmanuele Bassi [Wed, 19 May 2010 11:27:09 +0000 (12:27 +0100)]
tests: Add a constraints interactive test

Show how to use constraints and how to animate them.

14 years agoconstraint: Add BindConstraint
Emmanuele Bassi [Wed, 19 May 2010 11:25:28 +0000 (12:25 +0100)]
constraint: Add BindConstraint

The BindConstraint object is a constraint that binds the current
position of an actor on a given axis to the actor that has the
constraint applied.

14 years agoactor: Implement Animatable
Emmanuele Bassi [Wed, 19 May 2010 11:23:57 +0000 (12:23 +0100)]
actor: Implement Animatable

By implementing the newly added support for custom animatable
properties, we can allow addressing action and constraint properties
from ClutterAnimation and clutter_actor_animate().

14 years agoanimation: Use the new Animatable API for custom properties
Emmanuele Bassi [Wed, 19 May 2010 11:22:48 +0000 (12:22 +0100)]
animation: Use the new Animatable API for custom properties

The Animation class should use the Animatable API for custom properties
to override finding a property definition, getting the initial state and
setting the final state of an object.

14 years agoanimatable: Add custom properties to Animatable
Emmanuele Bassi [Wed, 19 May 2010 11:21:54 +0000 (12:21 +0100)]
animatable: Add custom properties to Animatable

Like ClutterScriptable, it would be good to have the Animatable
interface allow defining custom properties that can be animated.

14 years agoconstraint: Add ClutterConstraint base class
Emmanuele Bassi [Fri, 14 May 2010 11:13:49 +0000 (12:13 +0100)]
constraint: Add ClutterConstraint base class

The Constraint base, abstract class should be used to implement Actor
modifiers that affect the way an actor is sized or positioned inside a
fixed layout manager.

14 years agoeglx: implement cogl_get_proc_address()
Brian Tarricone [Fri, 26 Mar 2010 03:55:31 +0000 (20:55 -0700)]
eglx: implement cogl_get_proc_address()

http://bugzilla.openedhand.com/show_bug.cgi?id=2124

14 years agoeglx: Rename EGLNative{Window,Display}Type back to Native{Window,Display}Type
Neil Roberts [Tue, 18 May 2010 16:25:25 +0000 (17:25 +0100)]
eglx: Rename EGLNative{Window,Display}Type back to Native{Window,Display}Type

Commit e2a990d renamed these types to new names from EGL 1.3. However
it still works to use the old names under EGL 1.3 so let's just use
those to keep compatibility.

14 years agoclutter-backend-egl: Chain up in dispose before destroying the context
Neil Roberts [Tue, 18 May 2010 16:08:12 +0000 (17:08 +0100)]
clutter-backend-egl: Chain up in dispose before destroying the context

clutter_backend_egl_dispose now chains up before disposing its own
resources so that ClutterBackendX11 will destroy all of the stages
before we destroy the egl context. Otherwise the actors may try to
make GL calls during destruction which causes a crash.

14 years agoclutter-stage-egl.c: Don't call eglWait*()
Neil Roberts [Tue, 18 May 2010 15:51:46 +0000 (16:51 +0100)]
clutter-stage-egl.c: Don't call eglWait*()

According to the docs, eglSwapBuffers performs an implicit glFlush
before swapping so there should be no need to wait.

14 years agotest-cogl-materials: Fix compilation under GLES 2
Neil Roberts [Tue, 18 May 2010 14:52:05 +0000 (15:52 +0100)]
test-cogl-materials: Fix compilation under GLES 2

GLES 2 doesn't have GL_MAX_TEXTURE_UNITS. Instead the cogl backend
uses GL_MAX_TEXTURE_IMAGE_UNITS with a maximum limit of 16. The same
restriction is now used in the test.

14 years agofix case when EGL driver doesn't support EGL_NATIVE_VISUAL_ID
Brian Tarricone [Fri, 26 Mar 2010 02:44:37 +0000 (19:44 -0700)]
fix case when EGL driver doesn't support EGL_NATIVE_VISUAL_ID

Some EGL drivers, such as the PowerVR simulator (and some proprietary drivers)
return zero when the EGLConfig is queried for the EGL_NATIVE_VISUAL_ID
attribute via eglGetConfigAttrib().

This patch detects and attempts to work around that situation by picking a
visual with the same color depth.

http://bugzilla.openedhand.com/show_bug.cgi?id=2123

14 years agoclutter-backend-egl: Create a dummy X window and EGL surface
Neil Roberts [Wed, 5 May 2010 16:30:00 +0000 (17:30 +0100)]
clutter-backend-egl: Create a dummy X window and EGL surface

After the EGL context is created it now also creates an invisible 1x1
window and a corresponding surface so that the context can be
immediately made current. This is similar to changes for the GLX
backend introduced in d2c091e62.

http://bugzilla.openedhand.com/show_bug.cgi?id=2056

14 years agoupdate backend to use lazy context/stage creation
Brian Tarricone [Fri, 26 Mar 2010 02:37:26 +0000 (19:37 -0700)]
update backend to use lazy context/stage creation

http://bugzilla.openedhand.com/show_bug.cgi?id=2056

14 years agoconfigure: Check the result of AM_PATH_GLIB_2_0
Neil Roberts [Tue, 18 May 2010 12:55:18 +0000 (13:55 +0100)]
configure: Check the result of AM_PATH_GLIB_2_0

The AM_PATH_GLIB_2_0 doesn't automatically cause the configure script
to fail if the test fails. This wouldn't usually cause any problems
because we later check for the right glib version using
PKG_CHECK_MODULES directly. However AM_PATH_GLIB_2_0 is more thorough
when checking because it also tries to run a program against the
library to read the version. If the macro fails but the pkg-config
check passes then nothing will define GLIB_GENMARSHAL and the build
step will fail in a confusing way.

This adds a check for the result and gives an AC_MSG_ERROR if it
fails. The glib dependencies have been moved out of CLUTTER_DEPS to
AM_PATH_GLIB_2_0.

http://bugzilla.openedhand.com/show_bug.cgi?id=2127

14 years agoanimator: fix issue of dropped frames towards end of animations
Øyvind Kolås [Mon, 17 May 2010 17:05:19 +0000 (18:05 +0100)]
animator: fix issue of dropped frames towards end of animations

14 years agoaction: Warn if set_name() is called multiple times
Emmanuele Bassi [Mon, 17 May 2010 13:34:31 +0000 (14:34 +0100)]
action: Warn if set_name() is called multiple times

14 years agoaction: Add DragAction, an action implementing drag capabilities
Emmanuele Bassi [Wed, 12 May 2010 11:00:33 +0000 (12:00 +0100)]
action: Add DragAction, an action implementing drag capabilities

DragAction is an Action sub-class that provides dragging capabilities to
any actor. DragAction has:

  • drag-begin, drag-motion and drag-end signals, relaying the event
    information like coordinates, button and modifiers to user code;

  • drag-threshold property, for delaying the drag start by a given
    amount of pixels;

  • drag-handle property, to allow using other actors as the drag
    handle.

  • drag-axis property, to allow constraining the dragging to a specific
    axis.

An interactive test demonstrating the various features is also provided.

14 years agoaction: Add ClutterAction
Emmanuele Bassi [Tue, 11 May 2010 16:09:13 +0000 (17:09 +0100)]
action: Add ClutterAction

ClutterAction is an abstract class that should be used as the ancestor
for objects that change how an actor behaves when dealing with events
coming from user input.

14 years agoactor: Add ActorMeta, a base class for actor modifiers
Emmanuele Bassi [Fri, 14 May 2010 15:42:50 +0000 (16:42 +0100)]
actor: Add ActorMeta, a base class for actor modifiers

ClutterActorMeta is a base, abstract class that can be used to derive
classes that are attached to a ClutterActor instance in order to modify
the way an actor is painted, sized/positioned or responds to events.

A typed container for ActorMeta instances is also provided to the
sub-classes can be attached to an Actor.

14 years agocogl-material: Set the blend equation even if blend funcs are the same
Neil Roberts [Wed, 12 May 2010 17:57:52 +0000 (18:57 +0100)]
cogl-material: Set the blend equation even if blend funcs are the same

Previously it would only try to set the blend equation if the RGB and
alpha blending functions were different. However it's completely valid
to use a non-standard blending function when the functions are the
same. This patch moves the blending equation to outside the if
statement.

14 years agocogl-material: Set blend constant even if alpha and rgb factors are the same
Neil Roberts [Wed, 12 May 2010 14:19:09 +0000 (15:19 +0100)]
cogl-material: Set blend constant even if alpha and rgb factors are the same

Previously it would only set the blend constant if glBlendFuncSeparate
was used but it is perfectly acceptable to use the blend constant when
the same factor is used for each. It now sets the blend constant
whenever one of the factors would use the constant.

14 years agocogl-blend-string: Don't split combined blend statements into two
Neil Roberts [Wed, 12 May 2010 16:56:25 +0000 (17:56 +0100)]
cogl-blend-string: Don't split combined blend statements into two

When a single statement is used to specify the factors for both the
RGB and alpha parts it previously split up the statement into
two. This works but it ends up unnecessarily using glBlendFuncSeparate
when glBlendFunc would suffice.

For example, the blend statement

 RGBA = ADD(SRC_COLOR*(SRC_COLOR), DST_COLOR*(1-SRC_COLOR))

would get split into the two statements

 RGBA = ADD(SRC_COLOR*(SRC_COLOR[RGB]), DST_COLOR*(1-SRC_COLOR[RGB]))
 A    = ADD(SRC_COLOR*(SRC_COLOR[A]), DST_COLOR*(1-SRC_COLOR[A]))

That translates to:

 glBlendFuncSeparate (GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR,
                      GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

This patch makes it so that arg_to_gl_blend_factor can handle the
combined RGBA mask instead. That way the single statement gets
translated to the equivalent call:

 glBlendFunc (GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR);

14 years agotext: Fix typos that were causing false-positive cache hits
Chris Lord [Thu, 13 May 2010 14:51:42 +0000 (15:51 +0100)]
text: Fix typos that were causing false-positive cache hits

If a cached layout didn't actually match the layout we're looking for,
it would be returned anyway. Remove this return so that it can correctly
continue looking and get a cache miss if appropriate.

http://bugzilla.openedhand.com/show_bug.cgi?id=2109

14 years agocogl-path: Use true copy-on-write semantics
Neil Roberts [Thu, 22 Apr 2010 10:58:52 +0000 (11:58 +0100)]
cogl-path: Use true copy-on-write semantics

Previously a path copy was implemented such that only the array of
path nodes was shared with the source and the rest of the data is
copied. This was so that the copy could avoid a deep copy if the
source path is appended to because the copy keeps track of its own
length. This optimisation is probably not worthwhile because it makes
the copies less cheap. Instead the CoglPath struct now just contains a
single pointer to a new CoglPathData struct which is separately
ref-counted. When the path is modified it will be copied if the ref
count on the data is not 1.

14 years agoAdd a conformance test for ClutterCairoTexture
Neil Roberts [Mon, 10 May 2010 16:43:17 +0000 (17:43 +0100)]
Add a conformance test for ClutterCairoTexture

This adds a simple test for ClutterCairoTexture that draws two
rectangles to the cairo surface in an idle callback and then verifies
that they appeared at the right colours in the paint callback. If that
succeeds then the second time the idle callback is invoked it will
replace one of the rectangles with a sub region update and the
following paint callback will again verify the rectangles.

14 years agotext: correct caching logic
Owen W. Taylor [Sat, 8 May 2010 17:38:37 +0000 (13:38 -0400)]
text: correct caching logic

This patch combines a number of fixes and improvements to the
layout caching logic in ClutterText.

 * Fix: The width must always be set on the PangoLayout when painting.
   This is necessary because the layout aligns in the width, and
   even when we think we are left-aligned, the auto-dir feature
   of PangoLayout may result in right-alignment.

 * Fix: We should only ever try to reuse a cached layout based
   on its logical width if layout.width was -1 when computing
   that logical width. If the layout was already ellipsized,
   then comparing the logical width to the new width we are
   trying to wrap to doesn't make sense. (If "abc" ellipsizes
   to a 15-pixel wide "..." for a width of 1 pixel, that doesn't
   mean that we should use "..." for a width of 15 pixels. Maybe
   "abc" itself is 15 pixels wide.)

 * Improvement: rather than looking up cached layouts based on the
   input allocation_width/allocation_height, look them up based
   on the actual width/height/ellipsize that we pass to create
   a layout. This is simpler and improves the chance we'll get
   a cache hit when appropriate even if there are small floating
   point differences.

Note because of the first fix this is less aggressive than dd40732
in caching layouts; get_preferred_width() and painting can't share
a layout since get_preferred_width() needs to pass a width of -1
to Pango and painting needs to pass the real width.

The patch has been updated from the clutter-1.2 branch to current
master; using the profiling instrumentation it is possible to verify
with test-text-field that the hit/miss counters go from:

   Name                                   Total Per Frame
   ----                                   ----- ---------
   Text layout cache hit counter          13    6
   Text layout cache miss counter         11    5

before applying the patch, to:

   Name                                   Total Per Frame
   ----                                   ----- ---------
   Text layout cache miss counter         4     2
   Text layout cache hit counter          3     1

after applying the patch.

https://bugzilla.gnome.org/show_bug.cgi?id=618104

http://bugzilla.openedhand.com/show_bug.cgi?id=2109

Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
14 years agoRevert "clutter-cairo-texture: Use the new cogl_pixel_buffer API"
Neil Roberts [Mon, 10 May 2010 14:33:05 +0000 (15:33 +0100)]
Revert "clutter-cairo-texture: Use the new cogl_pixel_buffer API"

This reverts commit 716ec82db8bec57e35d51e8dee5468435fc9e59e.

The Cogl pixel buffer API currently has problems if an atlas texture
is created or the format needs to be converted. The atlas problem
doesn't currently show because the atlas rejects BGR textures anyway
but we may want to change this soon. The problem with format
conversion would happen under GLES because that does not support BGR
textures at all so Cogl has to do the conversion. However it doesn't
currently show either because GLES has no support for buffer objects
anyway.

It's also questionable whether the patch would give any performance
benefit because Cairo needs read/write access which implies the buffer
can't be put in write-optimised memory.

Conflicts:

clutter/clutter-cairo-texture.c

http://bugzilla.openedhand.com/show_bug.cgi?id=1982

14 years agocogl-framebuffer: Flush journal when creating fbo
Owen W. Taylor [Sat, 8 May 2010 20:58:14 +0000 (16:58 -0400)]
cogl-framebuffer: Flush journal when creating fbo

Since framebuffer state is not flushed prior to replaying the journal,
the trick of marking the framebuffer dirty prior to calling
glBindFramebuffer() doesn't work... the outstanding journal entries
will get replayed to the newly created framebuffer.

Fix this by flushing the journal as well.

http://bugzilla.openedhand.com/show_bug.cgi?id=2110

Signed-off-by: Robert Bragg <robert@linux.intel.com>
14 years agoAdd tests/conform/wrappers to the ignore file
Emmanuele Bassi [Mon, 10 May 2010 13:28:21 +0000 (14:28 +0100)]
Add tests/conform/wrappers to the ignore file

14 years agoFix annotation typos
Emmanuele Bassi [Sat, 8 May 2010 23:13:16 +0000 (00:13 +0100)]
Fix annotation typos

14 years agoclutter-cairo-texture: Fix destroying the old texture
Neil Roberts [Fri, 7 May 2010 17:03:39 +0000 (18:03 +0100)]
clutter-cairo-texture: Fix destroying the old texture

In clutter_cairo_texture_create_region it tries to destroy the old
texture before mapping the PBO by setting the texture on the first
layer of the material to COGL_INVALID_HANDLE. However it was using the
material API incorrectly so it ended up showing a warning and doing
nothing.

14 years agoconform: Make gtester run a list of wrappers
Robert Bragg [Thu, 6 May 2010 13:53:50 +0000 (14:53 +0100)]
conform: Make gtester run a list of wrappers

Instead of asking gtester to run ./test-conformance directly we now tell
it to run a list of wrapper scripts. This results in each test being
spawned in a separate process avoiding leakage of state between tests
which has been a big problem with the conformance tests for quite a
while now.

14 years agotest-cogl-multitexture: Set linear filters on the two textures
Neil Roberts [Fri, 7 May 2010 14:58:26 +0000 (15:58 +0100)]
test-cogl-multitexture: Set linear filters on the two textures

Otherwise it seems that rounding errors will cause the fragments at
the edge of the quad to blend with neighbouring quarters of the
texture which cause the test to fail.

14 years agotest-conform-common: Disconnect all paint handlers on the stage
Neil Roberts [Thu, 6 May 2010 13:21:53 +0000 (14:21 +0100)]
test-conform-common: Disconnect all paint handlers on the stage

A few of the tests connected to the paint signal but never
disconnected it. Most of these handlers had a call to g_main_quit in
them which meant that it could sometimes cause subsequent tests to
exit after the first frame is painted. Most of the tests don't
validate any of the results until after a couple of frames have been
rendered so this ended up skipping out the test entirely.

To workaround this the test setup function now disconnects all
handlers for the paint signal on the default stage before the test is
run.

14 years agotest-cogl-readpixels: Reset the viewport and matrices
Neil Roberts [Thu, 6 May 2010 13:18:32 +0000 (14:18 +0100)]
test-cogl-readpixels: Reset the viewport and matrices

The on_paint function for test-cogl-readpixels tries to temporarily
set the projection, modelview and viewport to its own values. However
it was never restoring the saved values so it could affect the results
of subsequent tests.

14 years agotest-cogl-path: Initialise state.frame
Neil Roberts [Thu, 6 May 2010 13:16:33 +0000 (14:16 +0100)]
test-cogl-path: Initialise state.frame

state.frame was left unitialized so it would be left to happenstance
which of the first three frames would be used for validating the test.

14 years agocogl-clip-stack: Set *stencil_used_p when the stack is empty
Neil Roberts [Thu, 6 May 2010 13:15:04 +0000 (14:15 +0100)]
cogl-clip-stack: Set *stencil_used_p when the stack is empty

If the clip stack is empty then _cogl_clip_stack_flush exits
immediately. This was missing out the assignment of *stencil_used_p at
the bottom of the function. If a path is then used after the clip is
cleared then it would think it needs to merge with the clip so the
stencil would not be cleared correctly.

14 years agoclutter-color: Don't directly read the contents of GValue structs
Neil Roberts [Wed, 7 Apr 2010 23:20:18 +0000 (00:20 +0100)]
clutter-color: Don't directly read the contents of GValue structs

The code for implementing ClutterColor as GParamSpec and the
color↔string transformation functions were assuming that ClutterColor
owns the data in the GValue struct and directly reading
data[0].v_pointer to get a pointer to the color. However ClutterColor
is actually a boxed type and the format of the data array is meant to
be internal to GObject so it is not safe to poke around in it
directly. This patch changes it to use g_value_get_boxed to get the
pointer.

Also, boxed types allow a NULL value to be stored and not all of the
code was coping with this. This patch also attempts to fix that.

http://bugzilla.openedhand.com/show_bug.cgi?id=2068

14 years agoclutter-color: Remove the value table
Neil Roberts [Wed, 7 Apr 2010 23:17:48 +0000 (00:17 +0100)]
clutter-color: Remove the value table

ClutterColor has long had a GTypeValueTable struct around and the
functions defined to be implemented as a fundamental type. However the
struct was never actually used anywhere and ClutterColor is actually
defined as a boxed type. This patch removes the table because it is
very confusing to have code lying around that is not used.

http://bugzilla.openedhand.com/show_bug.cgi?id=2068

14 years agoanimator: fix looping when doing cubic interpolation
Øyvind Kolås [Wed, 5 May 2010 17:15:12 +0000 (18:15 +0100)]
animator: fix looping when doing cubic interpolation

When using interpolation and the last key is not at 1.0 a bouncing
artifact could be observed after the keys.

14 years agoanimator: only keys that are removed due to actors disappearing are inert
Øyvind Kolås [Wed, 5 May 2010 15:55:16 +0000 (16:55 +0100)]
animator: only keys that are removed due to actors disappearing are inert

14 years agoanimator: refactoring
Øyvind Kolås [Wed, 5 May 2010 12:48:34 +0000 (13:48 +0100)]
animator: refactoring

renamed KeyAnimator to PropertyIter

14 years agoanimator: retain ease-in/interpolation when changing first key
Øyvind Kolås [Wed, 5 May 2010 12:58:15 +0000 (13:58 +0100)]
animator: retain ease-in/interpolation when changing first key

Duplicate the existing ease-in/interpolation mode for the property when
removing, replacing the first key for a property or adding a new first
key for a property.

14 years agoanimator: fix crash when setting keys on running animator
Øyvind Kolås [Wed, 5 May 2010 12:34:06 +0000 (13:34 +0100)]
animator: fix crash when setting keys on running animator

When inserting or modifying keys of a running animator the internal
iterators per property could go out of sync. Reinitializing the
iterators if the timeline is running avoids this.

14 years agoImplement accessors for the color bits in a framebuffer
Emmanuele Bassi [Mon, 26 Apr 2010 17:08:45 +0000 (18:08 +0100)]
Implement accessors for the color bits in a framebuffer

Instead of using cogl_get_bitmasks() to query the GL machinery for the
size of the color bits, we should store the values inside the
CoglFramebuffer object and query them the first time we set the framebuffer
as the current one.

Currently, cogl_get_bitmasks() is re-implemented in terms of
cogl_framebuffer_get_*_bits(). As soon as we are able to expose the
CoglOnscreen framebuffer object in the public API we'll be able to
deprecate cogl_get_bitmasks() altogether.

http://bugzilla.openedhand.com/show_bug.cgi?id=2094

14 years agogles: Fix the functions names for the GL_OES_framebuffer_object ext
Neil Roberts [Wed, 5 May 2010 11:05:15 +0000 (12:05 +0100)]
gles: Fix the functions names for the GL_OES_framebuffer_object ext

In 91cde78a7 I accidentally changed the function names that get looked
up for the framebuffer extension under GLES so that they didn't have
any suffix. The spec for extension specifies that they should have the
OES suffix.

14 years agoIgnore unexpected GLX_BufferSwapComplete
Owen W. Taylor [Fri, 30 Apr 2010 18:56:07 +0000 (14:56 -0400)]
Ignore unexpected GLX_BufferSwapComplete

A server that supports GLX_BufferSwapComplete will always send
these events, so we should just silently ignore them if we've
chosen not to take advantage of the INTEL_swap_event GLX
extension.

http://bugzilla.openedhand.com/show_bug.cgi?id=2102

Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
14 years agodocs: Update the dependencies in the README
Emmanuele Bassi [Wed, 5 May 2010 10:53:51 +0000 (11:53 +0100)]
docs: Update the dependencies in the README

14 years agobuild: Clean up build dependencies
Emmanuele Bassi [Wed, 5 May 2010 10:52:20 +0000 (11:52 +0100)]
build: Clean up build dependencies

• Depend on autoconf 2.63
• Depend on automake 1.11
• Depend on gobject-introspection 0.6.7
• Depend on gtk-doc 1.13
• Remove Shave from the build

14 years agoanimation: Use 'guint' for set_duration() parameter
Emmanuele Bassi [Wed, 5 May 2010 10:32:39 +0000 (11:32 +0100)]
animation: Use 'guint' for set_duration() parameter

The :duration property and the get_duration() method use unsigned int,
but the setter using a signed integer for no apparent reason.

http://bugzilla.openedhand.com/show_bug.cgi?id=2089

14 years agocontainer: use CLUTTER_IS_ACTOR on correct parameter
Jussi Kukkonen [Sun, 18 Apr 2010 07:47:14 +0000 (10:47 +0300)]
container: use CLUTTER_IS_ACTOR on correct parameter

clutter_container_create_child_meta() uses CLUTTER_IS_ACTOR on the
container parameter instead of the actor parameter.

http://bugzilla.openedhand.com/show_bug.cgi?id=2087

Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
14 years agodebug: Use G_UNLIKELY in the tests
Damien Lespiau [Mon, 3 May 2010 18:41:17 +0000 (20:41 +0200)]
debug: Use G_UNLIKELY in the tests

Debugging code is not meant to be run in the nominal code path. Use
G_UNLIKELY to be reduce the number of bubbles in the instruction
pipeline.

Took the opportunity to re-indent the macros.

14 years agoCall backend handle_event from clutter_x11_handle_event()
Owen W. Taylor [Fri, 30 Apr 2010 18:50:11 +0000 (14:50 -0400)]
Call backend handle_event from clutter_x11_handle_event()

Whether events come from the main loop source or from
clutter_x11_handle_event(), we need to feed them to the backend
virtual handle_event function. This fixes problems with clients
using clutter_x11_handle_event() hanging because
GLXBufferSwapComplete events aren't received.

http://bugzilla.openedhand.com/show_bug.cgi?id=2101

14 years agodebug: wrap glClear calls with the GE macro
Robert Bragg [Fri, 30 Apr 2010 11:10:16 +0000 (12:10 +0100)]
debug: wrap glClear calls with the GE macro

This adds a GE macro wrapper around our calls to glClear so we can
print a warning for any errors reported by the driver.

14 years agocogl-texture-2d-sliced: Use the converted bitmap when uploading
Neil Roberts [Mon, 26 Apr 2010 11:41:26 +0000 (12:41 +0100)]
cogl-texture-2d-sliced: Use the converted bitmap when uploading

When uploading texture data the cogl-texture-2d-sliced backend was
using _cogl_texture_prepare_for_upload to create a bitmap suitable for
upload but then it was using the original bitmap instead of the new
bitmap for the data. This was causing any format conversions performed
by cogl_texture_prepare_for_upload to be ignored.

http://bugzilla.openedhand.com/show_bug.cgi?id=2059

14 years agocogl-texture: Don't attempt to use GL to convert formats under GLES
Neil Roberts [Mon, 26 Apr 2010 11:30:37 +0000 (12:30 +0100)]
cogl-texture: Don't attempt to use GL to convert formats under GLES

In commit abe91784c4b I changed cogl-texture so that it would use the
OpenGL mechanism to specify a different internal texture format from
the image format so that it can do the conversion instead of
Cogl. However under GLES the internal format and the image format must
always be the same and it only supports a limited set of formats. This
patch changes _cogl_texture_prepare_for_upload so that it does the
conversion using the cogl bitmap code when compiling for GLES.

http://bugzilla.openedhand.com/show_bug.cgi?id=2059

14 years agocogl-material: Fix the check to prevent using too many layers
Neil Roberts [Tue, 27 Apr 2010 15:38:07 +0000 (16:38 +0100)]
cogl-material: Fix the check to prevent using too many layers

There was a check at the bottom of the loop which sets up the state
for each of the layers so that it would break from the loop when the
maximum number of layers is reached. However after doing this it would
not increment 'i'. 'i' is later used to disable the remaining layers
so it would end up disabling the last layer it just set up.

This patch moves the check to be part of the loop condition so that
the check is performed after incrementing 'i'.

http://bugzilla.openedhand.com/show_bug.cgi?id=2064

14 years agocogl-material: Fix the warning for when too many layers are used
Neil Roberts [Tue, 27 Apr 2010 15:35:35 +0000 (16:35 +0100)]
cogl-material: Fix the warning for when too many layers are used

The warning displayed when too many layers are used had an off-by-one
error so that it would display even if exactly the maximum number is
used. There was also a missing space at the end of the line in the
message which looked wrong when displayed on the terminal.

http://bugzilla.openedhand.com/show_bug.cgi?id=2064

14 years agotest-cogl-materials: Add a test using the maximum number of layers
Neil Roberts [Tue, 27 Apr 2010 15:34:59 +0000 (16:34 +0100)]
test-cogl-materials: Add a test using the maximum number of layers

This adds a test which creates a material using the maximum number of
layers. All of the layers are assigned a white texture except the last
which is set to red. The default combine mode is used for all of the
layers so the final fragment should end up red.

Currently Cogl doesn't provide a way to query the maximum number of
layers so it just uses glGetIntegerv instead. This might cause
problems on GLES 2 because that adds additional restrictions on the
number of layers.

http://bugzilla.openedhand.com/show_bug.cgi?id=2064

14 years agoFix clutter_event_get_coords() for crossing events
Emmanuele Bassi [Wed, 28 Apr 2010 15:19:37 +0000 (16:19 +0100)]
Fix clutter_event_get_coords() for crossing events

The ClutterCrossingEvent data structure contains the coordinates
of the crossing; they are regularly filed out by Clutter and by
the backend event processing code. And yet clutter_event_get_coords()
returns (0, 0) because it thinks that CLUTTER_ENTER and CLUTTER_LEAVE
events do not have coordinates.

14 years agoactor: Make consistent use of the name in error reporting
Emmanuele Bassi [Tue, 27 Apr 2010 09:12:25 +0000 (10:12 +0100)]
actor: Make consistent use of the name in error reporting

Whenever we are warning inside ClutterActor we prefer the actor's name
to its type, if the name is set. The current code is made less readable
by the use of the ternary operator:

  priv->name != NULL ? priv->name : G_OBJECT_TYPE_NAME (self)

This looks like a job for a simple convenience function.

14 years agoClean up the Texture private data structure
Emmanuele Bassi [Mon, 26 Apr 2010 11:58:17 +0000 (12:58 +0100)]
Clean up the Texture private data structure