profile/ivi/clutter.git
14 years agoMerge branch 'eglnative-update'
Emmanuele Bassi [Tue, 2 Mar 2010 12:25:45 +0000 (12:25 +0000)]
Merge branch 'eglnative-update'

* eglnative-update:
  eglnative: Add CLUTTER_FB_DEVICE
  eglnative: Update implementation

14 years agoeglnative: Add CLUTTER_FB_DEVICE
Emmanuele Bassi [Mon, 1 Mar 2010 11:38:41 +0000 (11:38 +0000)]
eglnative: Add CLUTTER_FB_DEVICE

Some EGL drivers for embedded devices require a specific framebuffer
device to be opened and passed to eglCreateWindowSurface(). Since it's
optional, we can provide an environment variabled called
CLUTTER_FB_DEVICE that can be used to specify the path of the device
to be opened.

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

14 years agoeglnative: Update implementation
Emmanuele Bassi [Sat, 27 Feb 2010 09:42:42 +0000 (09:42 +0000)]
eglnative: Update implementation

Update the EGL native framebuffer backend to be 1.2-ready:

  » create the EGL context and the surface inside the create_context()
    implementation so that a context is always available

  » simplify the StageWindow implementation

  » clean up old code

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

14 years agoFall back in _cogl_texture_2d_new_from_bitmap()
Owen W. Taylor [Mon, 1 Mar 2010 18:54:03 +0000 (13:54 -0500)]
Fall back in _cogl_texture_2d_new_from_bitmap()

Just like _cogl_texture_2d_new_with_size(),
_cogl_texture_2d_new_from_bitmap() needs to check if an unsliced
texture can be created at the given size, or if hardware
limitations prevent this.

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

Signed-off-by: Neil Roberts <neil@linux.intel.com>
14 years agodocs: Documentation fixes
Emmanuele Bassi [Tue, 2 Mar 2010 09:53:55 +0000 (09:53 +0000)]
docs: Documentation fixes

Let's see if we can get a 100% coverage for Clutter too.

14 years agocogl: Support any format in cogl_read_pixels
Neil Roberts [Mon, 1 Mar 2010 18:08:41 +0000 (18:08 +0000)]
cogl: Support any format in cogl_read_pixels

cogl_read_pixels() no longer asserts that the format passed in is
RGBA_8888 but instead accepts any format. The appropriate GL enums for
the format are passed to glReadPixels so OpenGL should be perform a
conversion if neccessary.

It currently assumes glReadPixels will always give us premultiplied
data. This will usually be correct because the result of the default
blending operations for Cogl ends up with premultiplied data in the
framebuffer. However it is possible for the framebuffer to be in
whatever format depending on what CoglMaterial is used to render to
it. Eventually we may want to add a way for an application to inform
Cogl that the framebuffer is not premultiplied in case it is being
used for some special purpose.

If the requested format is not premultiplied then Cogl will convert
it. The tests have been changed to read the data as premultiplied so
that they won't be affected by the conversion. Picking in Clutter has
been changed to use COGL_PIXEL_FORMAT_RGB_888 because it doesn't need
the alpha component. clutter_stage_read_pixels is left unchanged
because the application can't specify a format for that so it seems to
make most sense to store unpremultiplied values.

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

14 years agoDo not overwrite the initial key, making ease-in work as expected.
Øyvind Kolås [Mon, 1 Mar 2010 18:35:01 +0000 (18:35 +0000)]
Do not overwrite the initial key, making ease-in work as expected.

Fixes bug #2008, where a property with ease-in would jump instead of
start at the properties initial value.

14 years agoanimator: Remove redundant declaration in header file
Bastian Winkler [Mon, 1 Mar 2010 16:00:41 +0000 (17:00 +0100)]
animator: Remove redundant declaration in header file

clutter_animator_property_set_interpolation was declared twice in
clutter-animator.h

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

14 years agodocs: Add Animator.compute_value()
Emmanuele Bassi [Mon, 1 Mar 2010 17:47:52 +0000 (17:47 +0000)]
docs: Add Animator.compute_value()

The clutter_animator_compute_value() has been added to the API, but it
is missing from the API reference.

14 years agodocs: Fix syntax error in Model's documentation
Emmanuele Bassi [Mon, 1 Mar 2010 17:45:00 +0000 (17:45 +0000)]
docs: Fix syntax error in Model's documentation

A missing opening quote sign is breaking gtk-doc for ClutterModel.

14 years agoMerge branch 'stage-min-size-rework'
Emmanuele Bassi [Mon, 1 Mar 2010 15:37:12 +0000 (15:37 +0000)]
Merge branch 'stage-min-size-rework'

* stage-min-size-rework:
  docs: Update minimum size accessors
  actor: Use the TOPLEVEL flag instead of a type check
  [stage] Use min-width/height props for min size

14 years agoprofile: avoid segfault generating reports with no stats
Robert Bragg [Fri, 26 Feb 2010 09:44:29 +0000 (09:44 +0000)]
profile: avoid segfault generating reports with no stats

The clutter-profile.c print_report() code would crash if no stats had
been gathered because uprof would return NULL for the "Redrawing" timer
which we then dereferenced.

This changes the code to start by checking for the "Mainloop",
"Redrawing" and "Do Pick" timers and if none are present it returns
immediately without generating any report.

14 years agobuild: Fixes out of tree builds
Robert Bragg [Fri, 26 Feb 2010 09:48:43 +0000 (09:48 +0000)]
build: Fixes out of tree builds

When building the gobject introspection data the build wasn't able to
find clutter/clutter-json.h so this adds $(top_builddir) to INCLUDES.

14 years agoRemove mentions of the FSF address
Emmanuele Bassi [Mon, 1 Mar 2010 12:56:10 +0000 (12:56 +0000)]
Remove mentions of the FSF address

Since using addresses that might change is something that finally
the FSF acknowledge as a plausible scenario (after changing address
twice), the license blurb in the source files should use the URI
for getting the license in case the library did not come with it.

Not that URIs cannot possibly change, but at least it's easier to
set up a redirection at the same place.

As a side note: this commit closes the oldes bug in Clutter's bug
report tool.

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

14 years agobuild: Remove unused checks on platform functions
Emmanuele Bassi [Mon, 1 Mar 2010 11:12:16 +0000 (11:12 +0000)]
build: Remove unused checks on platform functions

There is no need for us to check for low-level functions and header
files, especially since we haven't been checking the results until
now. This makes cross-compiling slightly more bearable.

14 years agoactor: Call unparent() in destroy
Emmanuele Bassi [Sun, 28 Feb 2010 10:59:29 +0000 (10:59 +0000)]
actor: Call unparent() in destroy

If the actor is an internal child of another actor then we should call
unparent() when destroying it, like clutter_actor_reparent() does;
otherwise we'll leak the actor, since the parent holds a reference to
it.

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

14 years agodocs: Update minimum size accessors
Emmanuele Bassi [Sat, 27 Feb 2010 18:56:34 +0000 (18:56 +0000)]
docs: Update minimum size accessors

Expand the documentation for set_minimum_size() and get_minimum_size(),
and add introspection annotations for get_minimum_size().

14 years agoactor: Use the TOPLEVEL flag instead of a type check
Emmanuele Bassi [Sat, 27 Feb 2010 18:24:17 +0000 (18:24 +0000)]
actor: Use the TOPLEVEL flag instead of a type check

We can use the internal private CLUTTER_ACTOR_IS_TOPLEVEL flag, which is
set only on Stages.

14 years ago[stage] Use min-width/height props for min size
Chris Lord [Fri, 26 Feb 2010 18:36:38 +0000 (18:36 +0000)]
[stage] Use min-width/height props for min size

Instead of shadowing these properties with different properties with the
same names on stage, actually use them. Behaviour should be identical,
except the minimum stage size can now be enforced by setting the
min-width/height properties as well as using the set_minimum_size
function.

14 years agodocs: Update --enable-cogl-debug description
Emmanuele Bassi [Fri, 26 Feb 2010 16:43:02 +0000 (16:43 +0000)]
docs: Update --enable-cogl-debug description

The 'no' value is not the default any more. The 'minimum' value is
always the default, regardless of the release status.

14 years agodocs: Unicode-ify NEWS
Emmanuele Bassi [Fri, 26 Feb 2010 15:12:27 +0000 (15:12 +0000)]
docs: Unicode-ify NEWS

14 years agobuild: More options for Automake
Emmanuele Bassi [Fri, 26 Feb 2010 15:00:47 +0000 (15:00 +0000)]
build: More options for Automake

Require automake >= 1.10, and add the following options:

  » dist-bzip2: create a bz2 tarball in the dist process
  » check-news: check that we changed the NEWS file prior to dist,
    to avoid another release without NEWS updates, like 1.1.10

14 years agodevice: When changing the stage, unset the pointer actor
Emmanuele Bassi [Fri, 26 Feb 2010 10:36:17 +0000 (10:36 +0000)]
device: When changing the stage, unset the pointer actor

If we do not unset the Stage we will have stale data, and the Crossing
event when re-entering a Stage will not be emitted, as the actor under
the pointer might be the same as before.

14 years agocogl-vertex-buffer: Add support for unsigned int indices
Neil Roberts [Tue, 23 Feb 2010 14:45:44 +0000 (14:45 +0000)]
cogl-vertex-buffer: Add support for unsigned int indices

This adds a COGL_INDICES_TYPE_UNSIGNED_INT enum value so that unsigned
ints can be used with cogl_vertex_buffer_indices_new.  Unsigned ints
are not supported in core on GLES so a feature flag has also been
added to advertise this. GLES only sets the feature if the
GL_OES_element_index_uint extension is available. It is an error to
call indices_new() with unsigned ints unless the feature is
advertised.

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

14 years agodocs: Document the "columns" syntax for ClutterModel
Emmanuele Bassi [Thu, 25 Feb 2010 23:23:53 +0000 (23:23 +0000)]
docs: Document the "columns" syntax for ClutterModel

Like we do for other classes implementing custom properties, we should
document the syntax of the "columns" scriptable property of ClutterModel.

14 years agoconformance: Use g_test_verbose() for logging
Emmanuele Bassi [Thu, 25 Feb 2010 23:15:59 +0000 (23:15 +0000)]
conformance: Use g_test_verbose() for logging

Protect g_print() calls behind the g_test_verbose() check, to avoid
unwanted output during the conformance test run.

14 years agomodel: Implement ClutterScriptable interface
Bastian Winkler [Thu, 25 Feb 2010 22:47:49 +0000 (23:47 +0100)]
model: Implement ClutterScriptable interface

Allow a ClutterModel to be constructed through the ClutterScript API.
Currently this allows a model to be generated like like this:

{
  "id" : "test-model",
  "type" : "ClutterListModel",
  "columns" : [
    [ "text-column", "gchararray" ],
    [ "int-column", "gint" ],
    [ "actor-column", "ClutterRectangle" ]
  ]
}

where 'columns' is an array containing arrays of column-name,
column-type pairs.

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

14 years agodocs: gtk-doc fixes for Animator
Emmanuele Bassi [Thu, 25 Feb 2010 22:50:38 +0000 (22:50 +0000)]
docs: gtk-doc fixes for Animator

Fix the syntax for:

  → enumeration values
  → return values
  → @since tags

Also, fix the introspection annotations.

14 years agoglx: Clean up sync-to-vblank mechanism discovery
Emmanuele Bassi [Thu, 25 Feb 2010 18:28:37 +0000 (18:28 +0000)]
glx: Clean up sync-to-vblank mechanism discovery

The code has gotten really complicated to follow.

As soon as we have a sync-to-vblank mechanism we should just bail out.

Also, __GL_SYNC_TO_VBLANK (which is used by nVidia) should be assumed
equivalent to a CLUTTER_VBLANK_GLX_SWAP.

14 years agodocs: Add visual cue for Animator's key frames
Emmanuele Bassi [Thu, 25 Feb 2010 17:09:55 +0000 (17:09 +0000)]
docs: Add visual cue for Animator's key frames

We should explain what a "key frame" is for ClutterAnimator, possibly
with some sort of visual cue.

This allows me to demonstrate my poor skills at using Inkscape, as well
as my overall bad taste for graphics design.

14 years agoscript-parser: Remove top-level types list
Emmanuele Bassi [Thu, 25 Feb 2010 14:22:08 +0000 (14:22 +0000)]
script-parser: Remove top-level types list

The top-level types list was comically out of date, and it was only
determining whether the type we were constructing was initially unowned
or a full object. We can safely replace it with a simple type check.

14 years agoscript-parser: Be more strict with "children" members
Emmanuele Bassi [Thu, 25 Feb 2010 14:20:05 +0000 (14:20 +0000)]
script-parser: Be more strict with "children" members

The "children" member for Container definitions should only reference
actors, and warn about any other type.

14 years agoanimator: Add a :timeline property
Emmanuele Bassi [Thu, 25 Feb 2010 14:08:57 +0000 (14:08 +0000)]
animator: Add a :timeline property

It would be useful to be able to share the Timeline across different
animator instances, or with different animation constructs. Also this
allows sharing definitions of Timelines in ClutterScript.

14 years agoanimator: Remove NULL check in remove_key()
Emmanuele Bassi [Thu, 25 Feb 2010 14:02:29 +0000 (14:02 +0000)]
animator: Remove NULL check in remove_key()

The arguments for remove_key() can be NULL, but there is an extraneous
assertion that fails if they are. The pre-conditions should match the
documentation, in this case.

14 years agobox: Let pack_at() create the ChildMeta, if any
Emmanuele Bassi [Thu, 25 Feb 2010 12:45:02 +0000 (12:45 +0000)]
box: Let pack_at() create the ChildMeta, if any

A sub-class of ClutterBox might add ChildMeta support, and since
pack_at() does not go through clutter_container_add_actor(), we
need to manually call the create_child_meta() ourselves.

14 years agocontainer: Expose create and destroy ChildMeta methods
Emmanuele Bassi [Thu, 25 Feb 2010 12:39:24 +0000 (12:39 +0000)]
container: Expose create and destroy ChildMeta methods

It is conceivable that Container implementations might add children
outside of the Container::add() implementation - e.g. for packing at
a specific index. Since the addition (and removal) might happen outside
the common path we need to expose all the API that is implicitly called
by ClutterContainer when adding and removing a child - namely the
ChildMeta creation and destruction.

14 years agotest-cogl-blend-strings: Add some more tests
Neil Roberts [Wed, 24 Feb 2010 23:04:39 +0000 (23:04 +0000)]
test-cogl-blend-strings: Add some more tests

The adds tests for the remaining layer combine functions, the 1 minus
value operator and the TEXTURE_N source. Note however that Cogl
currently fails when parsing a TEXTURE_N source so the test is
commented out.

14 years agogles2: Remove the special wrapper for glBindTexture
Neil Roberts [Wed, 24 Feb 2010 11:13:55 +0000 (11:13 +0000)]
gles2: Remove the special wrapper for glBindTexture

Previously the GLES2 backend needed a special wrapper for
glBindTexture because it needed to know the internal GL format of the
texture in order to correctly implement the GL_MODULATE texture env
mode. When GL_MODULATE is used then the RGB values are taken from the
previous texture layer rather than being fetched from the
texture. However since the material API was added Cogl no longer uses
the GL_MODULATE texture env mode but instead always uses GL_COMBINE.

Compiling the GLES2 backend broke since the more-texture-backends
branch merge because the cogl_get_internal_gl_format function was
removed and there was one place in GLES2 specific code that was using
this to bind the texture.

14 years agocogl-gles2-wrapper: Add support for the layer combine operations
Neil Roberts [Wed, 24 Feb 2010 16:50:32 +0000 (16:50 +0000)]
cogl-gles2-wrapper: Add support for the layer combine operations

The texture layer combine functions are now hard coded to GL_COMBINE
instead of GL_MODULATE. The combine function can be customized with
all the parameters of GL_COMBINE. A shader is generated to implement
the given parameters.

Currently it will try to generate code for the constant color but it
will use a uniform which does not exist.

14 years agogles2: Implement a wrapper for glGetIntegerv(GL_MAX_TEXTURE_UNITS)
Neil Roberts [Wed, 24 Feb 2010 10:42:59 +0000 (10:42 +0000)]
gles2: Implement a wrapper for glGetIntegerv(GL_MAX_TEXTURE_UNITS)

The GLES2 backend for Cogl is failing to compile because
GL_MAX_TEXTURE_UNITS is not defined. Let's define it and provide a
wrapper which uses GL_MAX_TEXTURE_IMAGE_UNITS or
COGL_GLES2_MAX_TEXTURE_UNITS, whichever is the smallest.

14 years agoanimator: handle no initial key
Øyvind Kolås [Thu, 25 Feb 2010 12:30:07 +0000 (12:30 +0000)]
animator: handle no initial key

Fixing the crasher reported in bug #1995.

14 years agoanimator: added clutter_animator_compute_value
Øyvind Kolås [Thu, 25 Feb 2010 11:48:44 +0000 (11:48 +0000)]
animator: added clutter_animator_compute_value

Allow querying the computed values of properties managed by a
ClutterAnimator.

14 years agoanimator: removed bogus arg in keys interpolation accessor
Øyvind Kolås [Thu, 25 Feb 2010 11:28:32 +0000 (11:28 +0000)]
animator: removed bogus arg in keys interpolation accessor

A bogus ClutterInterpolation argument had been carried from
clutter_animator_set_interpolation to clutter_animator_get_interpolation
in copy and paste.

14 years agoanimation: Fix a typo
Emmanuele Bassi [Thu, 25 Feb 2010 12:01:03 +0000 (12:01 +0000)]
animation: Fix a typo

This will teach me to check before compiling a version-dependent branch
that I'm actually using my jhbuild environment and not the system
libraries.

14 years agoConditionally use G_VALUE_COLLECT_INIT() macro
Emmanuele Bassi [Thu, 25 Feb 2010 10:22:36 +0000 (10:22 +0000)]
Conditionally use G_VALUE_COLLECT_INIT() macro

GLib 2.24 (but starting from the 2.23.2 unstable release) added a new
macro for collecting GValues from a va_list.

The newly added G_VALUE_COLLECT_INIT() macro should be used in place
of initializing the GValue and calling G_VALUE_COLLECT(), and improves
the collection performances by avoiding multiple checks, free and
initialization calls.

14 years agoconform: Verify parsing of multiple properties
Emmanuele Bassi [Wed, 24 Feb 2010 16:43:17 +0000 (16:43 +0000)]
conform: Verify parsing of multiple properties

The ClutterAnimator support for parsing multiple properties should be
verified in the conformance test suite.

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

14 years agoanimator: Append parsed animator keys to previously parsed ones
Bastian Winkler [Wed, 24 Feb 2010 15:32:19 +0000 (16:32 +0100)]
animator: Append parsed animator keys to previously parsed ones

Reuse the GSList of the previously parsed property when building a
ClutterAnimator from script, otherwise only the last used property will
be used

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

14 years agoPost-release version bump to 1.1.15
Emmanuele Bassi [Wed, 24 Feb 2010 14:40:22 +0000 (14:40 +0000)]
Post-release version bump to 1.1.15

14 years agoRelease 1.1.14
Emmanuele Bassi [Wed, 24 Feb 2010 14:26:46 +0000 (14:26 +0000)]
Release 1.1.14

14 years agobuild: Use the right headers when enumerating them
Emmanuele Bassi [Wed, 24 Feb 2010 14:23:58 +0000 (14:23 +0000)]
build: Use the right headers when enumerating them

The installed _HEADERS should be the public ones and the enumeration
types; repeating clutter-x11-texture-pixmap.h breaks with automake 1.11
and doesn't strictly make any sense.

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

14 years agoUpdate NEWS file
Emmanuele Bassi [Wed, 24 Feb 2010 14:20:14 +0000 (14:20 +0000)]
Update NEWS file

14 years agofixed layout: Store a back pointer to the Container
Emmanuele Bassi [Wed, 24 Feb 2010 12:23:46 +0000 (12:23 +0000)]
fixed layout: Store a back pointer to the Container

When set_container() is called with a NULL container we cannot use the
passed pointer to unset the CLUTTER_ACTOR_NO_LAYOUT flag. We should
store a back pointer to the container as object data (there's no need
to add a Private data structure in this case) and unset the flag on the
back pointer instead.

14 years agoconformance: Show the Stage to test invariants
Emmanuele Bassi [Wed, 24 Feb 2010 12:09:13 +0000 (12:09 +0000)]
conformance: Show the Stage to test invariants

We need to make the Stage set the MAPPED flag on itself if we want to
verify the MAPPED state. That was always the case - it just worked
before because the Stage was shown at least once.

14 years agobox: Do not short-circuit size negotiation for empty Boxes
Emmanuele Bassi [Wed, 24 Feb 2010 12:08:07 +0000 (12:08 +0000)]
box: Do not short-circuit size negotiation for empty Boxes

The LayoutManager used might decide to have a default allocation or a
default preferred size when empty.

14 years agolayout: allow wider use of the CLUTTER_ACTOR_NO_LAYOUT flag
Robert Bragg [Thu, 11 Feb 2010 11:45:36 +0000 (11:45 +0000)]
layout: allow wider use of the CLUTTER_ACTOR_NO_LAYOUT flag

Previously only ClutterGroup was able to set the CLUTTER_ACTOR_NO_LAYOUT
flag which allows clutter-actor.c to avoid a relayout when showing or
hiding fixed layout containers. Instead of it being the responsibility
of the container to set this flag this patch makes the layout manager
itself decide in the ::set_container method. This way both ClutterBox
and ClutterGroup can take advantage of the optimization.

14 years agodocs: Detail replacement for cogl_check_extension()
Emmanuele Bassi [Wed, 24 Feb 2010 11:28:44 +0000 (11:28 +0000)]
docs: Detail replacement for cogl_check_extension()

The cogl_check_extension() function has been deprecated, but it's easily
replaceable with a simple strstr() call.

14 years agodocs: Update NEWS and README
Emmanuele Bassi [Wed, 24 Feb 2010 11:27:51 +0000 (11:27 +0000)]
docs: Update NEWS and README

The NEWS file was not updated for the 1.1.12 release, so we need to
update it now.

The Release Notes section for Clutter and Cogl also needs some more
entries that escaped previous releases.

14 years agobuild: Use template for ClutterX11 enumerationt types
Emmanuele Bassi [Wed, 24 Feb 2010 10:20:10 +0000 (10:20 +0000)]
build: Use template for ClutterX11 enumerationt types

Clutter and Cogl use the template Makefile.am.enums for building the
enumeration GTypes from public headers, but ClutterX11 is not.

14 years agoclutter-box: Layer new actors on top of all others at the same depth
Neil Roberts [Tue, 23 Feb 2010 22:06:59 +0000 (22:06 +0000)]
clutter-box: Layer new actors on top of all others at the same depth

g_list_insert_sorted inserts the new actor before all others that
compare equal so for the normal case when all actors have depth==0
this has the surprising behaviour of layering the actors in reverse
order. To fix this it now manually inserts the actor in the right
place by searching until it finds an actor at a higher depth and
inserting before that.

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

14 years agobox: Revert "Tweak the depth sorting function"
Neil Roberts [Tue, 23 Feb 2010 22:10:30 +0000 (22:10 +0000)]
box: Revert "Tweak the depth sorting function"

This reverts commit 939e56e2b12e5c96fa1173be33c2786ddfe57c25.

Changing the depth sort function to have inconsistent behaviour for
nodes that compare equal breaks the stability of g_list_sort. It ends
up so that every time clutter_container_sort_depth_order is called the
order of all actors with the same depth is reversed.

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

14 years agocogl debug: Adds glViewport call tracing
Robert Bragg [Wed, 17 Feb 2010 18:45:08 +0000 (18:45 +0000)]
cogl debug: Adds glViewport call tracing

To aid in the debugging of Clutter stage resize issues this adds a
COGL_DEBUG=opengl option that will trace "some select OpenGL calls"
(currently just glViewport calls)

14 years agocogl debug: hint that all debugging paths are G_UNLIKELY
Robert Bragg [Wed, 17 Feb 2010 17:53:28 +0000 (17:53 +0000)]
cogl debug: hint that all debugging paths are G_UNLIKELY

Most Cogl debugging code conditions are marked as G_UNLIKELY with the
intention of having the CPU branch prediction always assume the
path is disabled so having debugging support in release binaries has
negligible overhead.

This patch simply fixes a few cases where we weren't using G_UNLIKELY.

14 years agocogl debug: Support "minimum" level debugging by default
Robert Bragg [Wed, 17 Feb 2010 17:40:57 +0000 (17:40 +0000)]
cogl debug: Support "minimum" level debugging by default

We basically want all Clutter applications out in the wild to at least
have the basic set of COGL_DEBUG/--cogl-debug options available for
investigating issues.

14 years agocogl debug: Makes COGL_DEBUG=all|verbose|help more useful
Robert Bragg [Wed, 17 Feb 2010 14:38:11 +0000 (14:38 +0000)]
cogl debug: Makes COGL_DEBUG=all|verbose|help more useful

COGL_DEBUG=all wasn't previously useful as there are several options
that change the behaviour of Cogl and all together wouldn't help anyone
debug anything.

This patch makes it so COGL_DEBUG=all|verbose now only enables options
that don't change the behaviour of Cogl, i.e. they only affect the
amount of noise we'll print to a terminal.

In addition to that this patch also improves the output from
COGL_DEBUG=help so we now print a table of options including one liner
descriptions of what each option enables.

14 years agobox: Tweak the depth sorting function
Emmanuele Bassi [Tue, 23 Feb 2010 17:59:09 +0000 (17:59 +0000)]
box: Tweak the depth sorting function

By changing the depth sorting function we can achieve the same effect as
ClutterGroup but without the costly append+sort.

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

14 years agocogl: Add deprecation annotation to CoglMaterial ref/unref
Emmanuele Bassi [Tue, 23 Feb 2010 16:51:26 +0000 (16:51 +0000)]
cogl: Add deprecation annotation to CoglMaterial ref/unref

The G_GNUC_DEPRECATED annotation was missing from the material ref and
unref functions.

14 years agodebug: Split debugging notes from behavioural modifiers
Emmanuele Bassi [Tue, 16 Feb 2010 20:08:35 +0000 (20:08 +0000)]
debug: Split debugging notes from behavioural modifiers

Some of the ClutterDebugFlags are not meant as a logging facility: they
actually change Clutter's behaviour at run-time.

It would be useful to have this distinction ratified, and thus split
ClutterDebugFlags into two: one DebugFlags for logging facilities and
another set of flags for behavioural changes.

This split is warranted because:

  • it should be possible to do "CLUTTER_DEBUG=all" and only have
    log messages on the output

  • it should be possible to use behavioural modifiers even on a
    Clutter that has been compiled without debugging messages
    support

The commit adds two new debugging flags:

  ClutterPickDebugFlags - controlled by the CLUTTER_PICK environment
                          variable

  ClutterPaintDebugFlags - controlled by the CLUTTER_PAINT environment
                           variable

The PickDebugFlags are:

  nop-picking
  dump-pick-buffers

While the PaintDebugFlags is:

  disable-swap-events

The mechanism is equivalent to the CLUTTER_DEBUG environment variable,
but it does not depend on the debug level selected when configuring and
compiling Clutter. The picking and painting debugging flags are
initialized at clutter_init() time.

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

14 years agocogl-vertex-buffer: Fix the malloc fallback for indices
Neil Roberts [Wed, 17 Feb 2010 22:16:17 +0000 (22:16 +0000)]
cogl-vertex-buffer: Fix the malloc fallback for indices

The size of the malloc'd buffer for indices when VBOs are not
available was too small so memory corruption would result if it was
used.

http://bugzilla.o-hand.com/show_bug.cgi?id=1996

14 years agodevice: Motion events compression should honour the device
Emmanuele Bassi [Mon, 22 Feb 2010 11:34:04 +0000 (11:34 +0000)]
device: Motion events compression should honour the device

The motion event compression should be affected by the device field of
the event; that is: we should compress motion events coming from the
same device.

14 years agodevice: Force ENTER on Stage with overlapping Actors
Emmanuele Bassi [Mon, 22 Feb 2010 11:30:14 +0000 (11:30 +0000)]
device: Force ENTER on Stage with overlapping Actors

If an actor is on the boundary of a Stage and the pointer for a device
enters the Stage over that actor, the sequence of events currently is:

  ➔ ENTER (source: actor, related: NULL)
  ➔ MOTION

Thus the Stage never gets an ENTER event. This is a regression from
Clutter 1.0.

The correct sequence is:

  ➔ ENTER (source: stage, related: NULL)
  ➔ ENTER (source: actor, related: stage)
  ➔ MOTION

This also maps to the sequence of events sythesized by Clutter when
leaving the Stage through an actor overlapping the Stage boundary.

http://bugzilla.moblin.org/show_bug.cgi?id=9781

14 years agostage: Only clutter_stage_get_default() creates the default stage
Emmanuele Bassi [Thu, 18 Feb 2010 16:58:29 +0000 (16:58 +0000)]
stage: Only clutter_stage_get_default() creates the default stage

The introduction of the StageManager in 0.8 implied that the first Stage
instance to be created was automatically assigned the status of "default
stage". This was all well and good, since the default stage was created
behind the curtains by the initialization sequence.

Now that the initialization sequence does not create a default stage any
longer, it means that the first stage created using clutter_stage_new()
gets to be the default, and all special and warm and fuzzy - which also
means that the first stage created by clutter_stage_new() cannot be
destroyed or handled as any other stage. Whoopsie.

Let's go back to the old semantics: the stage created by the first
invocation of clutter_stage_get_default() is the default stage, and
nothing else can be set as default. One day we'll be able to break the
API and the whole default stage business will be a thing of the past.

14 years agodocs: Document the InputDevice update method
Emmanuele Bassi [Thu, 18 Feb 2010 11:34:06 +0000 (11:34 +0000)]
docs: Document the InputDevice update method

Embedding toolkits should benefit from a proper documentation of
clutter_input_device_update_from_event(): its meaning, its use and
the caveats for the "update_stage" argument.

14 years agowin32: Fixup compilation errors from b398292089b0f7
Neil Roberts [Wed, 17 Feb 2010 18:18:38 +0000 (18:18 +0000)]
win32: Fixup compilation errors from b398292089b0f7

That commit added some Win32 code which breaks compilation.

Thanks to Samuel Degrande for help with this.

14 years agocogl_texture_new_from_foreign: improve docs
Robert Bragg [Tue, 16 Feb 2010 14:53:10 +0000 (14:53 +0000)]
cogl_texture_new_from_foreign: improve docs

Improve the explanation of what the x_pot_waste and y_pot_waste
arguments can be used for.

14 years agocogl-texture: for foreign textures; always trust user geom
Robert Bragg [Tue, 16 Feb 2010 14:23:11 +0000 (14:23 +0000)]
cogl-texture: for foreign textures; always trust user geom

We now never query the width and height of the given texture object
from OpenGL. The problem is that the user may be creating a Cogl
texture from a texture_from_pixmap object where glTexImage2D was
never called and the texture_from_pixmap spec doesn't clarify that
it's reliable to query the width from OpenGL.

This should address:
http://bugzilla.openedhand.com/show_bug.cgi?id=1502

Thanks to Johan Bilien for reporting

14 years agodocs: Fixes for DeviceManager
Emmanuele Bassi [Wed, 17 Feb 2010 19:02:43 +0000 (19:02 +0000)]
docs: Fixes for DeviceManager

14 years agodevice: Allow updating devices from embedding toolkits
Emmanuele Bassi [Wed, 17 Feb 2010 18:21:50 +0000 (18:21 +0000)]
device: Allow updating devices from embedding toolkits

Embedding toolkits most likely will disable the event handling, so all
the input device code will not be executed. Unfortunately, the newly
added synthetic event generation of ENTER and LEAVE event pairs depends
on having input devices.

In order to unbreak things without reintroducing the madness of the
previous code we should allow embedding toolkits to just update the
state of an InputDevice by using the data contained inside the
ClutterEvent. This strategy has two obvious reasons:

  • the embedding toolkit is creating a ClutterEvent by translating
    a toolkit-native event anyway

  • this is exactly what ClutterStage does when processing events

We are, essentially, deferring input device handling to the embedding
toolkits, just like we're deferring event handling to them.

14 years agodevice: Impose per-backend DeviceManager
Emmanuele Bassi [Wed, 17 Feb 2010 17:06:25 +0000 (17:06 +0000)]
device: Impose per-backend DeviceManager

The DeviceManager class should be abstract in Clutter, and implemented
by each backend, as different backends will have different ways to
detect, initialize and list devices; the X11 backend alone has *two*
ways of dealing with devices.

This commit makes DeviceManager an abstract class and delegates the
device initialization and enumeration to per-backend sub-classes.

The responsible for creating the device manager is, obviously, the
backend singleton.

The X11 and Win32 backends have been updated to the new layout; the
Win32 backend has been updated blindly, so it might require additional
testing.

14 years ago[event-x11] Don't relayout on window move
Chris Lord [Wed, 17 Feb 2010 16:56:30 +0000 (16:56 +0000)]
[event-x11] Don't relayout on window move

ConfigureNotify is delivered on window movements too, but there is no
need to queue a relayout on these as the viewport hasn't changed size.
Check for the window actually changing size on ConfigureNotify before
queueing a relayout.

This fixes laggy window movement when moving a window in response to
Clutter mouse motion events.

14 years agocogl-clip-stack: Round the coords when clipping to a window rect
Neil Roberts [Wed, 17 Feb 2010 15:58:32 +0000 (15:58 +0000)]
cogl-clip-stack: Round the coords when clipping to a window rect

The size and position of the window rectangle for clipping in
try_pushing_rect_as_window_rect is calculated by projecting the
rectangle coordinates. Due to rounding errors, this can end up with
slightly off numbers like 34.999999. These were then being cast
directly to an integer so it could end up off by one.

This uses a new macro called COGL_UTIL_NEARBYINT which is a
replacement for the C99 nearbyint function.

14 years agotest-cogl-vertex-buffer: Fix the maximum index number
Neil Roberts [Wed, 17 Feb 2010 14:38:45 +0000 (14:38 +0000)]
test-cogl-vertex-buffer: Fix the maximum index number

It was passing the number of vertices to
cogl_vertex_buffer_draw_elements but instead it should take the
maximum index which would be the number of vertices minus one. This
was causing errors to be reported with the checks filterset of Bugle.

14 years agoImprove LEAVE events for border actors
Emmanuele Bassi [Wed, 17 Feb 2010 10:46:16 +0000 (10:46 +0000)]
Improve LEAVE events for border actors

If an actor is lying on the border of the Stage it might miss the LEAVE
event when the pointer of a device leaves the Stage window. Since the
backend is unsetting the Stage back pointer on the InputDevice we can
queue the emission of a LEAVE event on the pointer actor as well.

http://bugzilla.moblin.org/show_bug.cgi?id=9677

14 years ago[stage-x11] Fix a warning due to a missing cast
Chris Lord [Tue, 16 Feb 2010 18:25:46 +0000 (18:25 +0000)]
[stage-x11] Fix a warning due to a missing cast

I stupidly forgot to cast a ClutterStage to a ClutterActor and somehow
missed or didn't get the compiler warning. Fix.

14 years ago[stage-x11] Fix resizing for foreign windows
Chris Lord [Tue, 16 Feb 2010 18:17:55 +0000 (18:17 +0000)]
[stage-x11] Fix resizing for foreign windows

As well as manually setting the geometry size, we needed to queue a
relayout. This is what the ConfigureNotify handler would normally do,
but we don't get this event when using a foreign window (obviously).

This should fix resizing in things like gtk-clutter.

14 years ago[stage-x11] Set the geometry size for foreign wins
Chris Lord [Tue, 16 Feb 2010 17:46:52 +0000 (17:46 +0000)]
[stage-x11] Set the geometry size for foreign wins

If we get into the resize function and it's a foreign window, set the
geometry size so that the allocate will set the backend size and call
glViewport.

14 years agoAdd test-stage-sizing to the ignore file
Emmanuele Bassi [Tue, 16 Feb 2010 16:31:20 +0000 (16:31 +0000)]
Add test-stage-sizing to the ignore file

14 years ago[test-interactive] Add a stage sizing test
Chris Lord [Tue, 16 Feb 2010 15:39:08 +0000 (15:39 +0000)]
[test-interactive] Add a stage sizing test

Add an interactive stage sizing test to test the interaction of
fullscreening/resizing/expanding/shrinking a visible stage.

14 years ago[stage-x11] Fix switching fullscreen mode
Chris Lord [Tue, 16 Feb 2010 14:50:14 +0000 (14:50 +0000)]
[stage-x11] Fix switching fullscreen mode

Setting/unsetting fullscreen on a mapped or unmapped window now works
correctly.

If you unfullscreen a window that was initially full-screened, it will
unset the fullscreen hint and the WM will likely push the size down to
the largest valid size.

If the window was previously un-fullscreened, Clutter will restore the
previous size.

Fullscreening also now works if the WM switches the hint without the
application's knowledge (as happens when you resize a window to the size
of the screen, for example, with stock metacity).

14 years agoPost-release version bump to 1.1.13
Emmanuele Bassi [Tue, 16 Feb 2010 12:32:37 +0000 (12:32 +0000)]
Post-release version bump to 1.1.13

14 years agoRelease 1.1.12 (developers snapshot)
Emmanuele Bassi [Tue, 16 Feb 2010 12:21:15 +0000 (12:21 +0000)]
Release 1.1.12 (developers snapshot)

14 years agoconform: Do not resize the stage
Emmanuele Bassi [Tue, 16 Feb 2010 12:16:02 +0000 (12:16 +0000)]
conform: Do not resize the stage

Since all conformance tests share the same state we should not touch
stuff like the stage size; sharing is already fairly complex and adds a
lot of caveats on the implementation of a conformance test unit, and if
we make tests influence later ones then we might slip in bugs or false
negatives - thus defeating the whole point of a conformance test suite.

14 years agoconform: Use a 640x480 stage in test-pick
Emmanuele Bassi [Tue, 16 Feb 2010 12:15:23 +0000 (12:15 +0000)]
conform: Use a 640x480 stage in test-pick

Do not resize the stage to a smaller size: the default size is perfectly
fine.

14 years agocogl-atlas-texture: Don't use the atlas if FBOs aren't supported
Neil Roberts [Tue, 16 Feb 2010 12:01:18 +0000 (12:01 +0000)]
cogl-atlas-texture: Don't use the atlas if FBOs aren't supported

If FBOs aren't supported then it will end up very slow to reorganize
the atlas. Also currently the CoglTexture2D backend will refuse to
create any textures anyway so the full atlas texture won't be created.

14 years agocogl-atlas-texture: Check for errors when creating the atlas texture
Neil Roberts [Tue, 16 Feb 2010 11:58:47 +0000 (11:58 +0000)]
cogl-atlas-texture: Check for errors when creating the atlas texture

cogl_texture_2d_new may fail in certain circumstances so
cogl_atlas_texture_reserve_space should detect this and also
fail. This will cause cogl_texture_new to fallback to a sliced
texture.

Thanks to Vladimir Ivakin for reporting this problem.

14 years agoconform: Use g_assert_cmpint() in cogl-readpixels test
Emmanuele Bassi [Tue, 16 Feb 2010 11:38:51 +0000 (11:38 +0000)]
conform: Use g_assert_cmpint() in cogl-readpixels test

The g_assert_cmpint() macro prints out not just the assertion condition
but also the assertion contents; this is useful to catch wrong values
without incrementing the verbosity of the test itself.

14 years agodocs: Document SWAP_EVENTS feature flag
Emmanuele Bassi [Mon, 15 Feb 2010 19:03:37 +0000 (19:03 +0000)]
docs: Document SWAP_EVENTS feature flag

14 years ago[stage] Fix some races to do with window resizing
Chris Lord [Mon, 15 Feb 2010 18:53:58 +0000 (18:53 +0000)]
[stage] Fix some races to do with window resizing

When we resize, we relied on the stage's allocate to re-initialise the
GL viewport. Unfortunately, if we resized within Clutter, the new size
was cached before the window is actually resized, so glViewport wasn't
being called after resizing (some of the time, it's a race condition).

Change the way resizing works slightly so that we only resize when the
geometry size doesn't match our preferred size, and queue a relayout on
ConfigureNotify so the glViewport gets called.

Also change window creation slightly so that setting the size of a
window before it's realized works correctly.

14 years agoactor: Turn push/pop_internal into Actor methods
Emmanuele Bassi [Mon, 15 Feb 2010 16:09:26 +0000 (16:09 +0000)]
actor: Turn push/pop_internal into Actor methods

Since the "internal" state is global, it will leak onto actors that you
didn't intend for it to, because it applies not just to the actors you
create, but also to any actors *they* create. Eg, if you have a dialog
box class, you might push/pop_internal around creating its buttons, so
that those buttons get marked as internal to the dialog box. But
ctx->internal_child will still be set during the *button*'s constructor
as well, and so, eg, the label and icon inside the button actor will
*also* be marked as internal children, even if that isn't what the
button class wanted.

The least intrusive change at this point is to make push_internal() and
pop_internal() two methods of the Actor class, and take a ClutterActor
pointer as the argument - thus moving the locality of the internal_child
counter to the Actor itself.

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

14 years agostage: Add sanity checks for get_pending_swaps()
Emmanuele Bassi [Mon, 15 Feb 2010 12:04:50 +0000 (12:04 +0000)]
stage: Add sanity checks for get_pending_swaps()

The master clock might have a Stage during its destruction phase,
without a StageWindow attached to it. If this happens and we try
to dereference the StageWindow to get its class and call a virtual
function we might experience some slight turbulence and... then...
explode.

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

14 years agobuild: Enable experimental COGL API in tests/conform
Emmanuele Bassi [Mon, 15 Feb 2010 11:58:55 +0000 (11:58 +0000)]
build: Enable experimental COGL API in tests/conform

Enable the experimental API when building the conformance test suite.