commit a2889ed0772503dce504ab260fbbf662a0ad25d8 Author: Emmanuele Bassi Date: Mon Feb 8 17:57:48 2010 +0000 Release Clutter 1.1.8 configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit a139bf9c40f88b46055e4cd9754ba51acca97c87 Author: Emmanuele Bassi Date: Mon Feb 8 17:56:35 2010 +0000 test-animator: Do not use mid-function blocks The test_animator_properties unit is so small that declaring a mid-function block for two variables is not that clever. tests/conform/test-animator.c | 57 ++++++++++++++++++++--------------------- 1 files changed, 28 insertions(+), 29 deletions(-) commit 4d9327bbe14c2771896999844df3eac28da75347 Author: Emmanuele Bassi Date: Mon Feb 8 17:55:29 2010 +0000 animator: Zero the AnimatorKey:value member The test suite is showing random segfaults because the GValue member of AnimatorKey is not zero-ed on creation. clutter/clutter-animator.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit d62ddc374f88448fbde6db11ed4b10a594ecc5c4 Author: Emmanuele Bassi Date: Mon Feb 8 17:37:00 2010 +0000 docs: Fixes for ClutterAnimator clutter/clutter-animator.c | 2 +- clutter/clutter-animator.h | 16 ++++++++-------- doc/reference/clutter/clutter-sections.txt | 1 + 3 files changed, 10 insertions(+), 9 deletions(-) commit 9806f78905eea6e7c3b5b1f35b35650a823cb295 Author: Emmanuele Bassi Date: Mon Feb 8 17:34:11 2010 +0000 Merge me NEWS | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 814d3acd0730f2e418ccc44d550e1fa369c142fe Author: Emmanuele Bassi Date: Mon Feb 8 17:27:20 2010 +0000 docs: Update NEWS NEWS | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 53 insertions(+), 0 deletions(-) commit 419afc01e8f2c96f7cf5c0962e5c421f8f3a476f Author: Emmanuele Bassi Date: Mon Feb 8 17:27:13 2010 +0000 docs: Update the release notes README | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit c02dded0f6793ad377b566360371c23dbe61b4bc Author: Damien Lespiau Date: Mon Feb 8 17:11:43 2010 +0000 cogl-buffer: Use TEXTURE as the only value for CoglBufferUsageHint We should try to use more explicit defines than GL for our hints. For now we only support using a CoglBuffer to generate textures. clutter/cogl/cogl/cogl-buffer.c | 38 +++++++------------------------ clutter/cogl/cogl/cogl-buffer.h | 12 ++------- clutter/cogl/cogl/cogl-pixel-buffer.c | 2 +- tests/conform/test-cogl-pixel-buffer.c | 12 +++++----- 4 files changed, 19 insertions(+), 45 deletions(-) commit 54a6df22b038b047931dc108df35bc9e097d4e5e Author: Damien Lespiau Date: Tue Feb 2 16:44:16 2010 +0000 cogl-buffer: make sure the code compiles on GL ES OpenGL ES has no PBO extension, so we fallback to using a malloc'ed buffer. Make sure the OpenGL-only defines don't leak into the OpenGL ES compilation. clutter/cogl/cogl/cogl-buffer.c | 28 ++++++++++++++++++++++++++++ clutter/cogl/cogl/cogl-pixel-buffer.c | 7 +++++++ clutter/cogl/cogl/cogl-texture.c | 5 ++++- 3 files changed, 39 insertions(+), 1 deletions(-) commit d0fe4795368ddc55411fb081832bfcdfdfeb4314 Author: Damien Lespiau Date: Tue Feb 2 12:59:51 2010 +0000 cogl-pixel-buffer: Add a fallback path First, let's add a new public feature called, surprisingly, COGL_FEATURE_PBOS to check the availability of PBOs and provide a fallback path when running on older GL implementations or on OpenGL ES In case the underlying OpenGL implementation does not provide PBOs, we need a fallback path (a malloc'ed buffer). The CoglPixelBufer constructors will instanciate a subclass of CoglBuffer that handles map/unmap and set_data() with a malloc'ed buffer. The public feature is useful to check before using set_data() on a buffer as it will mean doing a memcpy() when not supporting PBOs (in that case, it's better to create the texture directly instead of using a CoglBuffer). clutter/cogl/cogl/cogl-pixel-buffer.c | 56 ++++++++++++++++++- clutter/cogl/cogl/cogl-texture.c | 38 +++++++++---- clutter/cogl/cogl/cogl-types.h | 4 +- .../cogl/cogl/driver/gl/cogl-feature-functions.h | 5 ++ 4 files changed, 88 insertions(+), 15 deletions(-) commit b5d5821304e8ca15ee4411bf7ff8f26a6a23c855 Author: Damien Lespiau Date: Fri Jan 22 15:38:31 2010 +0000 tests: Add a test for CoglPixelBuffers Exercise the whole public CoglBuffer / CoglPixelBuffer and cogl_texture_new_from_buffer API. .gitignore | 1 + tests/conform/Makefile.am | 1 + tests/conform/test-cogl-pixel-buffer.c | 337 ++++++++++++++++++++++++++++++++ tests/conform/test-conform-main.c | 3 + 4 files changed, 342 insertions(+), 0 deletions(-) commit b7f049495b527547d093ca337588ceb289c9cb2b Author: Damien Lespiau Date: Fri Jan 22 15:07:27 2010 +0000 cogl-texture: Add a new constructor to turn CoglBuffers into textures The only goal of using COGL buffers is to use them to create textures. cogl_texture_new_from_buffer() is the new symbol to create textures out of buffers. clutter/cogl/cogl/cogl-texture.c | 55 +++++++++++++++++++++++++++++++ clutter/cogl/cogl/cogl-texture.h | 60 ++++++++++++++++++++++++++++++++++ doc/reference/cogl/cogl-sections.txt | 3 ++ 3 files changed, 118 insertions(+), 0 deletions(-) commit abbb668163537598790cb3eca564ea19b1e010ad Author: Damien Lespiau Date: Sun Jan 10 18:04:29 2010 +0000 cogl-pixel-buffer: add a pixel buffer object class This subclass of CoglBuffer aims at wrapping PBOs or other system surfaces like DRM buffer objects. Two constructors are available: cogl_pixel_buffer_new() with a size when you only care about the size of the buffer (such a buffer can be used to store several texture data such as the three planes of a I420 frame). cogl_pixel_buffer_new_full() is more a 1:1 mapping between the data and an underlying surface, with the possibility of having access to a low level memory buffer that may have a stride. clutter/cogl/cogl/Makefile.am | 3 + clutter/cogl/cogl/cogl-pixel-buffer-private.h | 72 ++++++ clutter/cogl/cogl/cogl-pixel-buffer.c | 317 +++++++++++++++++++++++++ clutter/cogl/cogl/cogl-pixel-buffer.h | 165 +++++++++++++ clutter/cogl/cogl/cogl.h | 1 + doc/reference/cogl/cogl-sections.txt | 6 + 6 files changed, 564 insertions(+), 0 deletions(-) commit b5e9710cdf5795f532fe46b9dfcc704a07d99ac9 Author: Damien Lespiau Date: Sun Jan 10 17:28:24 2010 +0000 cogl-buffer: add an abstract class around openGL's buffer objects Buffer objects are cool! This abstracts the buffer API first introduced by GL_ARB_vertex_buffer_object and then extended to other objects. The coglBuffer abstract class is intended to be the base class of all the buffer objects, letting the user map() buffers. If the underlying implementation does not support buffer objects (or only support VBO but not FBO for instance), fallback paths should be provided. clutter/cogl/cogl/Makefile.am | 3 + clutter/cogl/cogl/cogl-buffer-private.h | 102 +++++++++++ clutter/cogl/cogl/cogl-buffer.c | 282 ++++++++++++++++++++++++++++++ clutter/cogl/cogl/cogl-buffer.h | 287 +++++++++++++++++++++++++++++++ clutter/cogl/cogl/cogl-context.c | 2 + clutter/cogl/cogl/cogl-context.h | 5 + clutter/cogl/cogl/cogl.h | 4 + doc/reference/cogl/cogl-docs.xml.in | 21 +++ doc/reference/cogl/cogl-sections.txt | 17 ++ 9 files changed, 723 insertions(+), 0 deletions(-) commit de8a6314f12854e748de515afb487af56eaac845 Author: Damien Lespiau Date: Mon Jan 25 11:21:05 2010 +0000 cogl: new textures sould have GL_TEXTURE_MIN_FILTER set to GL_LINEAR The only way the user has to set the mipmap filters is through the material/layer API. This API defaults to GL_LINEAR/GL_LINEAR for the max and min filters. With the main use case of cogl being 2D interfaces, it makes sense do default to GL_LINEAR for the min filter. When creating new textures, we did not set any filter on them, using OpenGL defaults': GL_NEAREST_MIPMAP_LINEAR for the min filter and GL_LINEAR for the max filter. This will make the driver allocate memory for the mipmap tree, memory that will not be used in the nominal case (as the material API defaults to GL_LINEAR). This patch tries to ensure that the min filter is set to GL_LINEAR before any glTexImage*() call is done on the texture by setting the filter when generating new OpenGL handles. clutter/cogl/cogl/cogl-texture-2d-sliced.c | 9 +++--- clutter/cogl/cogl/cogl-texture-2d.c | 9 +++--- clutter/cogl/cogl/cogl-texture-driver.h | 9 ++++++ clutter/cogl/cogl/driver/gl/cogl-texture-driver.c | 27 ++++++++++++++++++++ .../cogl/cogl/driver/gles/cogl-texture-driver.c | 27 ++++++++++++++++++++ 5 files changed, 72 insertions(+), 9 deletions(-) commit c0f65212baee25dd4e66f4366a54bd847c782eb3 Author: Damien Lespiau Date: Mon Jan 11 00:15:25 2010 +0000 cogl: Introduce the GE_RET() debug macro Some GL functions have a return value that the GE() macro is not able to handle. Let's define a new Ge_RET() macro which will be able to handle functions such as glMapBuffer(). While at it, removed the unused variadic dots to the GE() macro. clutter/cogl/cogl/cogl-internal.h | 14 +++++++++++++- 1 files changed, 13 insertions(+), 1 deletions(-) commit 069ba6daf9d39b471eb5c1de6e621f1343d5f00c Merge: cc6aefa 6ab9089 Author: Emmanuele Bassi Date: Mon Feb 8 16:53:11 2010 +0000 Merge branch 'animator-parser' * animator-parser: docs: Describe the Animation definition syntax animator: Provide a ClutterScript parser animator: Allow retrieving type property type from a key script: Use a node when resolving an animation mode commit 6ab90899badf7820ffc4f40f23bf18c979762577 Author: Emmanuele Bassi Date: Mon Feb 8 16:50:29 2010 +0000 docs: Describe the Animation definition syntax The ClutterAnimator documentation needs a section on the syntax of its ClutterScript definition, possibly with an example. clutter/clutter-animator.c | 59 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 59 insertions(+), 0 deletions(-) commit 4dd11d6915f75ba62b8292c3138d4cc11a28fb21 Author: Emmanuele Bassi Date: Mon Feb 8 15:52:18 2010 +0000 animator: Provide a ClutterScript parser The whole point of having the Animator class is that the developer can describe a complex animation using ClutterScript. Hence, ClutterAnimator should hook into the Script machinery and parse a specific description format for its keys. .gitignore | 2 + clutter/clutter-animator.c | 303 ++++++++++++++++++++++++++++++++++--- tests/conform/Makefile.am | 1 + tests/conform/test-animator.c | 88 +++++++++++ tests/conform/test-conform-main.c | 2 + tests/data/Makefile.am | 2 + tests/data/test-animator-1.json | 5 + tests/data/test-animator-2.json | 29 ++++ 8 files changed, 409 insertions(+), 23 deletions(-) commit 790a13c0d9d2249747cfb81dcb13f83c6cc2cec1 Author: Emmanuele Bassi Date: Mon Feb 8 15:47:46 2010 +0000 animator: Allow retrieving type property type from a key When asking a key for its target value we also ask the developer to pass in an initialized GValue - but we don't make it easy to know the type of the GValue. A developer has to ask the GObject class for the GParamSpec and then initialize the GValue, instead. Since we know the type of the GValue we should provide a getter for it. We should also allow developers to throw at us GValue with compatible and transformable types. Finally, all the accessors should be constified. clutter/clutter-animator.c | 93 ++++++++++++++++++++++++++++++++------------ clutter/clutter-animator.h | 13 +++--- 2 files changed, 75 insertions(+), 31 deletions(-) commit 09f91ff6eab3d617be88e11bd17c226fa4d23aed Author: Emmanuele Bassi Date: Mon Feb 8 15:45:43 2010 +0000 script: Use a node when resolving an animation mode Instead of taking a string and duplicating the "is it a string or an integer" check in both Alpha and Animation, the function in ClutterScript that resolves the animation mode values should take a JsonNode and do all the checks it needs. clutter/clutter-alpha.c | 21 ++++------------- clutter/clutter-animation.c | 25 ++++---------------- clutter/clutter-script-parser.c | 47 ++++++++++++++++++++++++------------- clutter/clutter-script-private.h | 2 +- 4 files changed, 41 insertions(+), 54 deletions(-) commit cc6aefad345f4490f59f33eaef6f7589de1f3f9b Author: Robert Bragg Date: Thu Jan 14 18:11:57 2010 +0000 cogl path: make sure marking the clip state dirty takes affect When we trashed the contents of the stencil buffer during _cogl_path_fill_nodes we marked the clip stack state as dirty and expected the clip stack code would clean up our glStencilFunc state. The problem is that we only try and update the clip state during _cogl_journal_init (when we flush the framebuffer state) which is only called when the journal first gets something logged in it. To make sure the stencil state is cleaned up we now also flush the journal so _cogl_journal_init will be called for the next logged rectangle. clutter/cogl/cogl/cogl-primitives.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) commit 24338a7511cd09298695f0a0b51ea6a97fa6786a Author: Neil Roberts Date: Fri Feb 5 21:56:31 2010 +0000 clutter-master-clock: Don't wait for a frame if time goes backwards If we aren't syncing to vblank or if the last dispatch didn't cause a redraw then the master clock will try to wait at least a small amount of time before dispatching again. However if time goes backwards then it would not do a dispatch until time catches up again. To fix this it know just runs a dispatch immediately if time goes backwards. This is related to Moblin bug #3839. There was a similar fix for this in 9dc012c07, however that only fixed the case where timelines wouldn't update. If there are no animations running then the master clock won't even try updating timelines until time catches up. http://bugzilla.o-hand.com/show_bug.cgi?id=1974 clutter/clutter-master-clock.c | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) commit 8ac27e60707b2dfd13ba978b81421423e37ebf98 Author: Emmanuele Bassi Date: Mon Feb 8 10:40:39 2010 +0000 test-flow-layout: Remove unneeded Stage sizing The bug with resizable stages getting a 1, 1 window on X11 has been fixed by Chris. tests/interactive/test-flow-layout.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit 6106010b6f20980fc51d1431b623567eed10853d Merge: 4cc269a c82c94e Author: Emmanuele Bassi Date: Mon Feb 8 10:34:22 2010 +0000 Merge remote branch 'origin/cwiiis-stage-resize' * origin/cwiiis-stage-resize: [stage-x11] Set the default size differently [stage] Set default size correctly Revert "[x11] Don't set actor size on ConfigureNotify" [x11] Don't set actor size on ConfigureNotify [stage] Now that get_geometry works, use it [stage-x11] make get_geometry always get geometry [stage] Get the current size correctly [stage] Set minimum width/height to 1x1 [stage] Add set/get_minumum_size commit 4cc269a4687f6ca4fcd88ada134cfa00e2b13a1a Author: Øyvind Kolås Date: Fri Feb 5 12:32:00 2010 +0000 Add ClutterAnimator ClutterAnimator is a class for managing the animation of multiple properties of multiple actors over time with keyframing of values. The Animator class is meant to be used to effectively describe animations using the ClutterScript definition format, and to construct complex implicit animations from the ground up. Signed-off-by: Emmanuele Bassi .gitignore | 1 + clutter/Makefile.am | 2 + clutter/clutter-animator.c | 1435 ++++++++++++++++++++++++++++ clutter/clutter-animator.h | 166 ++++ clutter/clutter-types.h | 1 + clutter/clutter.h | 1 + doc/reference/clutter/clutter-docs.xml.in | 4 +- doc/reference/clutter/clutter-sections.txt | 48 + doc/reference/clutter/clutter.types | 1 + tests/interactive/Makefile.am | 1 + tests/interactive/test-animator.c | 134 +++ 11 files changed, 1793 insertions(+), 1 deletions(-) commit c82c94e6205eda962faf5a51e663680c313be062 Author: Chris Lord Date: Sun Feb 7 19:17:43 2010 +0100 [stage-x11] Set the default size differently We want to set the default size without triggering the layout machinary, so change the window creation process slightly so we start with a 640x480 window. clutter/clutter-stage.c | 3 --- clutter/glx/clutter-stage-glx.c | 4 +++- clutter/x11/clutter-stage-x11.c | 4 ++-- 3 files changed, 5 insertions(+), 6 deletions(-) commit b968defae92f3fbd5a4a762b4c817ab58989ee82 Author: Chris Lord Date: Sun Feb 7 14:18:14 2010 +0100 [stage] Set default size correctly Due to the way the new sizing works, clutter stage must set its size in init (to maintain old behaviour) and the properties on the X11 stage must be initialised to 1x1 so that it actually goes ahead with the resize. Fixes stages that aren't user resizable and have no size set from appearing at 1x1. clutter/clutter-stage.c | 3 +++ clutter/x11/clutter-stage-x11.c | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) commit 8083dc418b3c2b069a9b0db9323650050a3f63b1 Author: Chris Lord Date: Sat Feb 6 16:57:37 2010 +0100 Revert "[x11] Don't set actor size on ConfigureNotify" This reverts commit 29cc027f069c9ad900b9044cd40075c2d17be736. I misunderstood the problem, this commit breaks resizes coming from outside of Clutter. clutter/x11/clutter-event-x11.c | 4 ++++ clutter/x11/clutter-stage-x11.c | 5 +---- clutter/x11/clutter-stage-x11.h | 1 - 3 files changed, 5 insertions(+), 5 deletions(-) commit 29cc027f069c9ad900b9044cd40075c2d17be736 Author: Chris Lord Date: Sat Feb 6 16:47:22 2010 +0100 [x11] Don't set actor size on ConfigureNotify Calling clutter_actor_set_size in response to ConfigureNotify makes setting the size of the stage racy - the most common result of which seems to be that you can't set the stage dimensions to anything less than 640x480. Instead, add a first_allocation bit to the private structure of the X11 stage and force the first resize (necessary or the default stage will be a 1x1 window). clutter/x11/clutter-event-x11.c | 4 ---- clutter/x11/clutter-stage-x11.c | 5 ++++- clutter/x11/clutter-stage-x11.h | 1 + 3 files changed, 5 insertions(+), 5 deletions(-) commit cea9de7f047cb8c2b1d54f41ca1d77c3aff882e0 Author: Chris Lord Date: Sat Feb 6 15:41:01 2010 +0100 [stage] Now that get_geometry works, use it We want the actual window geometry in clutter_stage_set_minimum_size, not the set size. Now that the geometry function has been changed to do what it says, use it. clutter/clutter-stage.c | 14 ++++++-------- 1 files changed, 6 insertions(+), 8 deletions(-) commit 4887707bb34faca0d7ad92f6628d18345163f5e0 Author: Chris Lord Date: Sat Feb 6 15:34:55 2010 +0100 [stage-x11] make get_geometry always get geometry Now that we have a minimum size getter on the stage object, change get_geometry to actually always return the geometry. This fixes stages that are set as user-resizable appearing at 1x1 size. This will need changing in other back-ends too. clutter/x11/clutter-stage-x11.c | 57 +++++++++++++++----------------------- 1 files changed, 23 insertions(+), 34 deletions(-) commit 27e33aa14ff5d14f6066da74922c960a037b5089 Author: Chris Lord Date: Sat Feb 6 14:59:51 2010 +0100 [stage] Get the current size correctly Get the current size of the stage correctly in clutter_stage_set_minimum_size. The get_geometry StageWindow function is not equivalent of the current size, use clutter_actor_get_size(). clutter/clutter-stage.c | 14 ++++++++------ 1 files changed, 8 insertions(+), 6 deletions(-) commit be11564b556a1b1c08b7b9e7a0a94bc00c4e6550 Author: Chris Lord Date: Sat Feb 6 14:04:47 2010 +0100 [stage] Set minimum width/height to 1x1 Whoops, to maintain the old behaviour, make sure the default minimum width/height are 1x1. clutter/clutter-stage.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit fd11d3098f0182f24666ed77973269111cb0a8f5 Author: Chris Lord Date: Sat Feb 6 11:23:37 2010 +0000 [stage] Add set/get_minumum_size Add two functions to set/get the minimum stage size. This takes effect when a stage is set to user resizable. clutter/clutter-stage.c | 75 ++++++++++++++++++++++++++++ clutter/clutter-stage.h | 7 +++ clutter/x11/clutter-stage-x11.c | 6 +- doc/reference/clutter/clutter-sections.txt | 2 + 4 files changed, 87 insertions(+), 3 deletions(-) commit f973b73208bad266a2362e22e5aed1a0780d096d Author: Emmanuele Bassi Date: Sat Feb 6 11:00:50 2010 +0000 Add cogl-subtexture test to the Git ignore file .gitignore | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit e55966d675e57d516ea5aff36b03fde63d4839d3 Author: Emmanuele Bassi Date: Fri Feb 5 16:22:09 2010 +0000 Deprecate clutter_util_next_p2() The next_p2() function should have never been publicly exposed by Clutter. clutter/clutter-util.c | 15 ++++++++------- clutter/clutter-util.h | 9 ++++++--- tests/interactive/test-shader.c | 19 +++++++++++++++++-- 3 files changed, 31 insertions(+), 12 deletions(-) commit bbaf6b233d0120e3199d779eeb2829e56ecc279b Author: Emmanuele Bassi Date: Fri Feb 5 15:31:18 2010 +0000 docs: Fix whitespace in the App manual stub doc/manual/clutter-manual.xml.in | 185 +++++++++++++++++--------------------- 1 files changed, 81 insertions(+), 104 deletions(-) commit dcdb97006b563407d43f19779ac47f0330052541 Author: Emmanuele Bassi Date: Fri Feb 5 14:47:39 2010 +0000 build: Add suppressions file to EXTRA_DIST tests/data/Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 830f2402d4f49b7173eb7fa0bda5762a4c430c9a Merge: 1bdc3db 6b1b27d Author: Neil Roberts Date: Sat Feb 6 00:20:07 2010 +0000 Merge branch 'more-texture-backends' This adds three new texture backends. - CoglTexture2D: This is a trimmed down version of CoglTexture2DSliced which only supports a single texture and only works with the GL_TEXTURE_2D target. The code is a lot simpler so it has a less overheads than dealing with slices. Cogl will use this wherever possible. - CoglSubTexture: This is used to get a CoglHandle to represent a subregion of another texture. The texture can be used as if it was a standalone texture but it does not need to copy the resources. - CoglAtlasTexture: This collects RGB and RGBA textures into a single GL texture with the aim of reducing texture state changes and increasing batching. The backend will try to manage the atlas and may move the textures around to close gaps in the texture. By default all textures will be placed in the atlas. commit 6b1b27d4f894cbefc90601eaf6214b55a71834b7 Author: Neil Roberts Date: Sat Feb 6 00:12:10 2010 +0000 cogl-bitmap: Update the format after (un)premultiplying The pixel format of the bitmap needs to have its premult flag cleared or set after the premult conversion otherwise it may get converted again. clutter/cogl/cogl/cogl-bitmap-fallback.c | 4 ++++ clutter/cogl/cogl/cogl-texture.c | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) commit 191d20eb56f31786660cd04aacc710344eb8df7a Author: Neil Roberts Date: Fri Feb 5 17:03:04 2010 +0000 cogl-atlas-texture: Fix a cut and paste error when getting the height There was a typo in getting the height of the full texture to check whether the sub region fits so that it was using the width instead. This was causing crashes when debugging is enabled for some apps. clutter/cogl/cogl/cogl-sub-texture.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 1bdc3db9ab54316f5f313dc3e991f3a621e83586 Author: Damien Lespiau Date: Thu Feb 4 21:10:02 2010 +0000 docs: Use % for defines not # Some links to defines in the gtk-doc annotations were using '#' instead of '%'. clutter/clutter-actor.c | 4 ++-- clutter/clutter-path.c | 10 +++++----- clutter/cogl/cogl/cogl-fixed.c | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) commit 1b94cc9268e57cc49e3bac914c4b979aec955f77 Author: Damien Lespiau Date: Wed Jan 27 16:03:28 2010 +0000 docs: fix new line in the cogl xml top level document A comma in the FSF address is wrong. Supreme Offence. doc/reference/cogl/cogl-docs.xml.in | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) commit 0ea25d661b887c27beaf0bd848dfda994d88782f Author: Emmanuele Bassi Date: Thu Feb 4 18:29:47 2010 +0000 event: Do not generate click count for SCROLL events The ClutterScrollEvent structure does not have a click count field, so Clutter should not generate the click count for events of type CLUTTER_SCROLL. clutter/clutter-main.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) commit 15c6fef7e3e426764bafc316794a195a086e0d03 Author: Emmanuele Bassi Date: Thu Feb 4 16:49:06 2010 +0000 tests: Add a Valgrind suppression file When running tests under Valgrind it would be useful to pass a suppression file for the known one-off allocations done by Clutter and by its dependencies. This trims the output of Valgrind and improves the ability to actually spot leaks. tests/README | 35 ++++++- tests/data/clutter-1.0.suppressions | 173 +++++++++++++++++++++++++++++++++++ 2 files changed, 203 insertions(+), 5 deletions(-) commit 1f70da62a73e3a10fe1ceb33d11f79fc29586fcf Author: Neil Roberts Date: Thu Feb 4 16:28:29 2010 +0000 glx: Create a colormap for the dummy window Otherwise X will fail to create the window and throw a BadMatch error at least on NVidia. clutter/glx/clutter-backend-glx.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) commit 466b00a8064ad09f0574f8f46c6df0390d7c7d00 Author: Emmanuele Bassi Date: Thu Feb 4 13:59:39 2010 +0000 glx: Clarify *why* we need the dummy window The reason why we have a dummy, offscreen Window when we create the GLX context is that GLX does not like it when you ask the context for features if it's not made current to a Drawable. Maybe in the future it will allow us to do so, but right now we have to make do with what GLX offers us. clutter/glx/clutter-backend-glx.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit ea5e33cf3a38edddef88ec30131c35bb8ab4bfaf Author: Emmanuele Bassi Date: Thu Feb 4 13:56:33 2010 +0000 glx: Do not leak a XVisualInfo The XVisualInfo we retrieve for the dummy window should be freed after we used it. clutter/glx/clutter-backend-glx.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit e6a3b6ebe75a2c0c3709fbe12cf04c4357b54fdd Author: Neil Roberts Date: Wed Feb 3 23:08:30 2010 +0000 cogl-texture: Avoid copying the bitmap when premultiplying from a file In cogl_texture_new_from_file we create and own a temporary bitmap. There's no need to copy this data if we need to do a premult conversion so instead it just does conversion before passing it on to cogl_texture_new_from_bitmap. clutter/cogl/cogl/cogl-texture.c | 23 ++++++++++++++++++----- 1 files changed, 18 insertions(+), 5 deletions(-) commit 59198b8ab8a6a7c1c3dbfa5c72abf36f8d66c543 Author: Neil Roberts Date: Wed Feb 3 22:54:44 2010 +0000 cogl-texture: Split out _cogl_texture_prepare_for_upload The Cogl atlas code was using _cogl_texture_prepare_for_upload with a NULL pointer for the dst_bmp to determine the internal format of the texture without converting the bitmap. It needs to do this to decide whether the texture will go in the atlas before wasting time on the conversion. This use of the function is a little confusing so that part of it has been split out into a new function called _cogl_texture_determine_internal_format. The code to decide whether a premult conversion is needed has also been split out. clutter/cogl/cogl/cogl-atlas-texture.c | 11 +--- clutter/cogl/cogl/cogl-texture-private.h | 7 +++ clutter/cogl/cogl/cogl-texture.c | 81 ++++++++++++++++++------------ 3 files changed, 57 insertions(+), 42 deletions(-) commit 5063f4669c2c94d7288405005f4df14e73a4f578 Author: Neil Roberts Date: Wed Feb 3 19:54:12 2010 +0000 cogl-atlas: Make the cogl_atlas_* API internal This just adds an underscore to every entry point for the CoglAtlas API so that it's not exported. clutter/cogl/cogl/cogl-atlas-texture.c | 89 ++++++++++---------- clutter/cogl/cogl/cogl-atlas.c | 140 ++++++++++++++++---------------- clutter/cogl/cogl/cogl-atlas.h | 32 ++++---- clutter/cogl/cogl/cogl-context.c | 2 +- 4 files changed, 132 insertions(+), 131 deletions(-) commit cd3c5155d879782a6e6e1d7fa56043e03712b727 Author: Jussi Kukkonen Date: Wed Feb 3 17:04:38 2010 +0000 text: implement del_word_next/del_word_prev() Bind ctrl-backspace and ctrl-del to functions that delete a word before or after the cursor, respectively. Selection does not affect the deletion, but current selection is preserved. This mimicks GTK+ functionality in GtkTextView and GtkEntry. http://bugzilla.openedhand.com/show_bug.cgi?id=1767 Signed-off-by: Emmanuele Bassi clutter/clutter-text.c | 95 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 95 insertions(+), 0 deletions(-) commit d8d728a8d7ac4bc56f058379d76f4539d01189de Author: Emmanuele Bassi Date: Wed Dec 9 00:50:33 2009 +0000 Remove the SDL backend The SDL API is far too limited for the windowing system needs of Clutter; the status of the SDL backend was always experimental, and since the Windows platform is supported by a native backend there is no point in having the SDL backend around any more. README | 8 +- clutter/Makefile.am | 2 +- clutter/sdl/Makefile.am | 26 --- clutter/sdl/clutter-backend-sdl.c | 207 -------------------- clutter/sdl/clutter-backend-sdl.h | 70 ------- clutter/sdl/clutter-event-sdl.c | 377 ------------------------------------- clutter/sdl/clutter-sdl.h | 39 ---- clutter/sdl/clutter-stage-sdl.c | 197 ------------------- clutter/sdl/clutter-stage-sdl.h | 34 ---- configure.ac | 41 +---- 10 files changed, 5 insertions(+), 996 deletions(-) commit ae188d203c63d680dc58ba1e19f333719a6916d4 Author: Neil Roberts Date: Wed Jan 20 16:41:25 2010 +0000 win32: Use a dummy window to support delayed stage creation The Win32 backend now implements the create_context method which creates a context and binds it to a 1x1 invisible window. That way there will always be a context bound and the features can be retrieved without creating the default stage. This reflects the changes in 1c6ffc8..b245d55 to the GLX backend. clutter/win32/clutter-backend-win32.c | 194 +++++++++++++++++++++++++++++++-- clutter/win32/clutter-backend-win32.h | 2 + clutter/win32/clutter-stage-win32.c | 84 ++------------ 3 files changed, 198 insertions(+), 82 deletions(-) commit 479fdffc7d4f37f9ff104403dd7de685df97e0d5 Author: Emmanuele Bassi Date: Sun Dec 6 18:56:14 2009 +0000 glx: Fix error messages and debug notes Instead of using g_critical() inside the create_context() implementation of the ClutterBackendGLX we should use the passed GError, so that the error message can bubble up to the caller. clutter/glx/clutter-backend-glx.c | 31 +++++++++++++++++++------------ 1 files changed, 19 insertions(+), 12 deletions(-) commit ede2cbfab05035247b2a6a2ca837cb8f71871c5d Author: Emmanuele Bassi Date: Thu Dec 3 21:07:45 2009 +0000 stage: Create the default stage on demand Instead of creating the default stage during initialization we can now safely create it whenever clutter_stage_get_default() is called. To maintain the invariant, the default stage is immediately realized by Clutter itself. clutter/clutter-main.c | 28 ---------------------------- clutter/clutter-stage.c | 15 ++++++++++----- 2 files changed, 10 insertions(+), 33 deletions(-) commit d2c091e62d4b9e897e8f8ef5de99f20417cc6682 Author: Emmanuele Bassi Date: Thu Dec 3 20:49:54 2009 +0000 glx: Create the dummy Window with the GLX context Since we must guarantee that Cogl has a GL context to query, it is too late to use the "dummy Window" trick from within the get_features() virtual function implementation. Instead, we can create a dummy Window from create_context() itself and leave it around - basically trading a default stage with a dummy X window. We need to have the dummy X window around all the time so that the GLX context can be selected and made current. clutter/clutter-main.c | 16 ++-- clutter/glx/clutter-backend-glx.c | 169 ++++++++++++++++++------------------- clutter/glx/clutter-backend-glx.h | 1 + 3 files changed, 95 insertions(+), 91 deletions(-) commit 5eb6fb74b660d22e7f31867b16997ee9f63bef4b Author: Emmanuele Bassi Date: Thu Dec 3 20:48:55 2009 +0000 feature: Make sure we have a GL context Before asking Cogl and ClutterBackend for the list of features we must have a GL backend ready. clutter/clutter-feature.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit a8daaa8222c9b4aaf7e46b1bb13a2ce8097153f1 Author: Emmanuele Bassi Date: Thu Dec 3 20:47:48 2009 +0000 stage: Move default title in Stage.init The default title should be set from within clutter_stage_init(); at that point clutter_init() must have been called. clutter/clutter-main.c | 2 -- clutter/clutter-stage.c | 1 + 2 files changed, 1 insertions(+), 2 deletions(-) commit 38f26634eec3c81d61bb3b88b24563d7e4719f67 Author: Emmanuele Bassi Date: Thu Dec 3 17:36:03 2009 +0000 Lazily create the Pango fontmap The Pango fontmap needed by Clutter should be initialized the first time we need a PangoContext, not on initialization. clutter/clutter-main.c | 35 ++++++++++++++++------------------- 1 files changed, 16 insertions(+), 19 deletions(-) commit 6fbed66add4b8c03a0ba0f4edc1c2f0044608998 Author: Emmanuele Bassi Date: Thu Dec 3 17:13:44 2009 +0000 Delay default stage creation The default stage creation should be delayed as much as possible, ideally at the end of the init() process. clutter/clutter-backend.c | 8 +++ clutter/clutter-main.c | 67 ++++++++++++------------- clutter/clutter-stage.c | 6 +- clutter/cogl/cogl/cogl-journal.c | 3 + clutter/glx/clutter-backend-glx.c | 98 ++++++++++++++++++++++++++++--------- clutter/glx/clutter-stage-glx.c | 5 ++ 6 files changed, 126 insertions(+), 61 deletions(-) commit 3191ea1195d5e1d55facc147760b273efca76867 Author: Emmanuele Bassi Date: Thu Dec 3 17:35:19 2009 +0000 cogl-debug: Remove redundant newlines The debugging notes wrapping g_debug() already have an implicit newline at the end of the passed message. clutter/cogl/cogl/cogl-handle.h | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 16a5911cff90a2bba1b283ccd9a9ce6d0f435924 Author: Emmanuele Bassi Date: Wed Feb 3 15:05:37 2010 +0000 tests: Clean up the cairo-flowers interactive test tests/interactive/test-clutter-cairo-flowers.c | 14 ++++++-------- 1 files changed, 6 insertions(+), 8 deletions(-) commit cb52581a24c157e2bedb74c32d522dc56d9a91a2 Author: Emmanuele Bassi Date: Wed Feb 3 14:35:45 2010 +0000 text: Add :font-description High level toolkits might wish to construct a PangoFontDescription and then set it directly on a ClutterText actor proxy or sub-class. ClutterText should have a :font-description property to set (and get) the PangoFontDescription. http://bugzilla.openedhand.com/show_bug.cgi?id=1960 clutter/clutter-text.c | 131 +++++++++++++++-- clutter/clutter-text.h | 225 ++++++++++++++-------------- doc/reference/clutter/clutter-sections.txt | 2 + 3 files changed, 234 insertions(+), 124 deletions(-) commit 74c0170ccc80504018f2aab849a6a311c64052a6 Author: Neil Roberts Date: Wed Feb 3 14:31:12 2010 +0000 cogl-vertex-buffer: Refix disabling texture coord arrays Commit 92a375ab4 changed the initial value of max_texcoord_attrib_unit to -1 so that it could disable the texture coord array for the first texture unit when there are no texture coords used in the vbo. However max_texcoord_attrib_unit was an unsigned value so this actually became G_MAXUINT. The disabling loop at the bottom still worked because G_MAXUINT+1==0 but the check for whether any texture unit is greater than max_texcoord_attrib_unit was failing so it would always end up disabling all texture units. This is now fixed by changing max_texcoord_attrib_unit to be signed. clutter/cogl/cogl/cogl-vertex-buffer.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 301863d43bc79e792f8fe3ea5e9185d87cb74069 Author: Emmanuele Bassi Date: Tue Feb 2 17:07:22 2010 +0000 text: Fixes for selection bound The commit ecbb7ce41a1a759e246fce07f146b8bed5e3d730 exposed some issues when positioning the cursor with the mouse pointer: the selection is not moved along with the cursor when inserting a single character or a string. Also, some freeze_notify() are called too early, leading to decoupling from their respective thaw_notify(). http://bugzilla.openedhand.com/show_bug.cgi?id=1955 clutter/clutter-text.c | 44 +++++++++++++++++++------------------------- 1 files changed, 19 insertions(+), 25 deletions(-) commit 5bec49aea931e6835b97e549e23458a6214548ce Author: Kristian Høgsberg Date: Wed Jan 27 12:55:18 2010 -0500 Use ClutterTimeline in test-clutter-cairo-flowers.c http://bugzilla.openedhand.com/show_bug.cgi?id=1969 Signed-off-by: Emmanuele Bassi tests/interactive/test-clutter-cairo-flowers.c | 24 +++++++++++++++++------- 1 files changed, 17 insertions(+), 7 deletions(-) commit c9a6e63fa4d1d710d9efeb850f3fc336933ee2a8 Author: Emmanuele Bassi Date: Tue Feb 2 14:50:03 2010 +0000 docs: Clarify Group's sizing semantics The documentation for ClutterGroup behaviour when setting an explicit size is not accurate - or, actually, it was accurate by the time ClutterGroup was first written but has been neglected in the following release cycles. To avoid confusion for new users of Clutter the documentation should be slightly expanded, mentioning the exact semantics of ClutterGroup with regards to: preferred size, explicitly set size and how to constrain the visible area of a ClutterGroup to an explicitly set size. Based on a patch by: Neil Roberts clutter/clutter-group.c | 16 ++++++++++++---- 1 files changed, 12 insertions(+), 4 deletions(-) commit 12b004b0e7e13ca64d7d35cd3fe083f582b7aa09 Author: Emmanuele Bassi Date: Tue Feb 2 12:56:04 2010 +0000 tests: Add an initial Behaviour conformance suite The coverage of the Behaviour sub-classes is currently abysmal. An initial test suite for Behaviours should at least verify that the accessors and the constructors are doing the right thing. This initial test suite just verifies the BehaviourOpacity sub-class, but it already bumps up the overall coverage by 2%. .gitignore | 1 + tests/conform/Makefile.am | 1 + tests/conform/test-behaviours.c | 87 +++++++++++++++++++++++++++++++++++++ tests/conform/test-conform-main.c | 2 + 4 files changed, 91 insertions(+), 0 deletions(-) commit f94e6911510b5376dd490c1f8724e616aaf2e5dc Author: Emmanuele Bassi Date: Tue Feb 2 12:54:51 2010 +0000 behaviour: Clean up BehaviourOpacity • Use a consistent coding style • Call set_bounds() from set_property(), because we need proper notification on the modified property clutter/clutter-behaviour-opacity.c | 56 ++++++++++++++++++++--------------- 1 files changed, 32 insertions(+), 24 deletions(-) commit 521d71d4bc4ca4b06343365c71c9520b1ebfdc7f Author: Emmanuele Bassi Date: Mon Feb 1 15:47:50 2010 +0000 event: Unify the off-stage motion events delivery behaviour When we disable the per-actor events delivery Clutter replicates the X11 implicit soft grab for motion events with off-stage. The implicit grab is done whenever the pointer of a device leaves a window with a button still pressed; with the implicit grab in place the window still receives motion events even after the LeaveNotify - until the button is released. The implicit grab is not honoured in the per-actor event deliver case, though, so we have a mismatch between two in theory equivalent cases. Luckily, the fix is pretty trivial: when we check for a motion event with a stage set but without an actor set, and that has off-stage coordinates, we arbitrarily set the source to be the stage of the event and emit the pointer event. clutter/clutter-main.c | 40 ++++++++++++++++++++++++++++++++++------ 1 files changed, 34 insertions(+), 6 deletions(-) commit 46d6697b9170ba110439cbf61d152890b35a3837 Author: Emmanuele Bassi Date: Mon Feb 1 14:53:13 2010 +0000 build: -Wformat is required for -Wformat-security GCC will ignore -Wformat-security without -Wformat on the same compiler flags. configure.ac | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 157a0cf9364a9e60b29e5e88ca1783d9e174a635 Author: Emmanuele Bassi Date: Mon Feb 1 14:48:50 2010 +0000 build: Retrieve X11 cflags and libraries When using pkg-config to check for the x11 package compiler flags and libraries we actually need to retrieve those values from the pc file. This should also fix the issue with non-canonical installations of the X11 headers and shared objects. http://bugzilla.openedhand.com/show_bug.cgi?id=1966 configure.ac | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) commit 145cc9d3dfd1dc51f254eefde35042fc20a6375e Merge: aa6731e 5f1c8a1 Author: Neil Roberts Date: Mon Feb 1 13:37:19 2010 +0000 Merge remote branch 'master' into texture-debugging Conflicts: clutter/cogl/cogl/cogl-context.h commit aa6731e338a88d03e718980604ac8f2393391a9f Author: Neil Roberts Date: Mon Feb 1 13:25:19 2010 +0000 cogl-material: Compare GL texture numbers for material layer textures When deciding if a material layer is equal it now compares the GL target and texture number if the textures are not sliced. This is needed to get batching across atlased textures. clutter/cogl/cogl/cogl-material.c | 25 ++++++++++++++++++++++++- 1 files changed, 24 insertions(+), 1 deletions(-) commit abe91784c4ba98417eabe0649bf73381afbd6fc7 Author: Neil Roberts Date: Mon Feb 1 12:11:58 2010 +0000 cogl: Let GL do the format conversion when uploading texture data Cogl accepts a pixel format for both the data in memory and the internal format to be used for the texture. If they do not match then it would convert them using the CoglBitmap functions before uploading the data. However, GL also lets you specify both formats so it makes more sense to let GL do the conversion. The driver may need the texture in a specific format so it may end up being converted anyway. The cogl_texture_upload_data functions have been removed and replaced with a single function to prepare the bitmap. This will only do the premultiplication conversion because that is the only part that GL can't do directly. clutter/cogl/cogl/cogl-atlas-texture.c | 111 +++++++------- clutter/cogl/cogl/cogl-texture-2d-sliced.c | 220 +++++++++++++++------------- clutter/cogl/cogl/cogl-texture-2d.c | 92 +++++------- clutter/cogl/cogl/cogl-texture-private.h | 44 ++---- clutter/cogl/cogl/cogl-texture.c | 134 ++++++++--------- 5 files changed, 289 insertions(+), 312 deletions(-) commit e83ffb1fa3436bf1506c32856b2a3ba23254e068 Author: Neil Roberts Date: Fri Jan 29 15:15:08 2010 +0000 cogl: Do the premult conversion in-place rather than copying to a new buffer The premult part of _cogl_convert_premult has now been split out as _cogl_convert_premult_status. _cogl_convert_premult has been renamed to _cogl_convert_format to make it less confusing. The premult conversion is now done in-place instead of copying the buffer. Previously it was copying the buffer once for the format conversion and then copying it again for the premult conversion. The premult conversion never changes the size of the buffer so it's quite easy to do in place. We can also use the separated out function independently. clutter/cogl/cogl/cogl-atlas-texture.c | 6 +- clutter/cogl/cogl/cogl-bitmap-fallback.c | 142 +++++++++++----------------- clutter/cogl/cogl/cogl-bitmap-pixbuf.c | 6 +- clutter/cogl/cogl/cogl-bitmap-private.h | 22 ++-- clutter/cogl/cogl/cogl-bitmap.c | 102 ++++++++------------- clutter/cogl/cogl/cogl-texture-2d-sliced.c | 12 +- clutter/cogl/cogl/cogl-texture-2d.c | 12 +- clutter/cogl/cogl/cogl-texture.c | 6 +- 8 files changed, 123 insertions(+), 185 deletions(-) commit 72fba19eac68ffa30c3f60aeecfdbfa6a2da7bd4 Author: Neil Roberts Date: Fri Jan 29 12:19:42 2010 +0000 cogl-atlas-texture: Use a single atlas for both RGB and RGBA textures The internal format of the atlas texture is still set to the appropriate format so Cogl will disable blending for textures that are intended to be RGB. This should end up ignoring the alpha channel from the texture in the atlas. This makes the code slightly easier to maintain and should also improve the chances of batching. clutter/cogl/cogl/cogl-atlas-texture.c | 134 ++++++++++++-------------------- clutter/cogl/cogl/cogl-context.c | 18 ++--- clutter/cogl/cogl/cogl-context.h | 8 +-- 3 files changed, 57 insertions(+), 103 deletions(-) commit ad6bd2ee88770c2ce86f81f7a64b6b121c3418d6 Author: Emmanuele Bassi Date: Mon Feb 1 12:18:10 2010 +0000 actor: Reword the allocation cycle warning Since we're allowing allocation cycles saying that calling queue_relayout() inside an allocation cycle "is not allowed" is kind of confusing. We should say that "it is not recommended". clutter/clutter-actor.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 5f1c8a17e4f81ead1747b47939d593c80246bf06 Merge: ecbb7ce 8a4b647 Author: Emmanuele Bassi Date: Mon Feb 1 11:26:56 2010 +0000 Merge branch 'device-manager' * device-manager: (37 commits) x11: Re-enable XI1 extension keyboards x11: Always handle core device events before XI events docs: Documentation fixes for DeviceManager device-manager: Fix the signals definition docs: Add sections for InputDevice and DeviceManager docs: Add clutter_input_device_get_device_name() tests: Print out the device details on motion Always register core devices device: Remove unused is_default member win32: Experimental implementation of device support tests: Print the device name, as well as its Id x11: Fill out the :name property of the InputDevices device: Add the :name property to InputDevice x11: Store core devices on the X11 Backend singleton device: Unset the cursor actor when leaving the stage device: Add pointer actor getter x11: Discard the LeaveNotify for off-stage ButtonRelease device: Do not overwrite the stage for an InputDevice event: Off-stage button releases have a click count of 1 event: Scroll events do not have click count ... commit ecbb7ce41a1a759e246fce07f146b8bed5e3d730 Author: Alejandro Piñeiro Date: Mon Jan 25 16:13:58 2010 +0100 Fix problems with "position" and "selection-bound" change notification Added a "selection-bound" notify on clutter_text_clear_selection as it changes the value. Added utility function clutter_text_set_positions, in order to change both cursor position and selection bound inside a g_object_[freeze/thaw]_notify block Added g_object_[freeze/thaw]_notify in other functions that changes both cursor position and selection bound Solves http://bugzilla.openedhand.com/show_bug.cgi?id=1955 clutter/clutter-text.c | 77 +++++++++++++++++++++++++++++++++--------------- 1 files changed, 53 insertions(+), 24 deletions(-) commit 579a9a2665b402405820585dacba137984700110 Author: Emmanuele Bassi Date: Mon Feb 1 11:04:59 2010 +0000 stage: Add :key-focus property ClutterStage has both set_key_focus() and get_key_focus() methods, but there is no :key-focus property. This means that it is not possible to get notifications when the key-focus has changes except by connecting to both the ::key-focus-in and ::key-focus-out signals and do additional bookkeeping. http://bugzilla.openedhand.com/show_bug.cgi?id=1956 Signed-off-by: Emmanuele Bassi clutter/clutter-stage.c | 30 +++++++++++++++++++++++++++++- 1 files changed, 29 insertions(+), 1 deletions(-) commit 95712f9897db7f06a6ca34661f20b388dd5a5f77 Author: Emmanuele Bassi Date: Fri Jan 29 10:13:57 2010 +0000 docs: Update the README Clean up the grammar and some wrinkles in the text. README | 91 ++++++++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 58 insertions(+), 33 deletions(-) commit 5b9259ba807f4151d08bf2ea868c2cdeed97e975 Author: Emmanuele Bassi Date: Fri Jan 29 09:31:13 2010 +0000 docs: Update the configure switches in the README README | 13 ++++++++++++- 1 files changed, 12 insertions(+), 1 deletions(-) commit 763fcabd8b287445d32eadb6086b0438e3962294 Author: Emmanuele Bassi Date: Fri Jan 29 09:29:53 2010 +0000 build: Warn with --disable-conformance and --enable-gcov When building Clutter without conformance test suite we ought to warn the user that the coverage report is not going to be accurate. configure.ac | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) commit 21d21adbc45a6e0023e4a21b357fbf392b469fb2 Author: Emmanuele Bassi Date: Fri Jan 29 09:29:37 2010 +0000 Remove tabs from configure.ac configure.ac | 51 ++++++++++++++++++++++++++++----------------------- 1 files changed, 28 insertions(+), 23 deletions(-) commit 5f5f6d825f6460f532f0c0448fc403cdb95e4697 Author: Emmanuele Bassi Date: Fri Jan 29 09:26:47 2010 +0000 build: Allow disabling the conformance test suite When building Clutter for packaging on headless boxes it's pointless to allow building the conformance test to be built (and run on 'make check'). configure.ac | 14 +++++++++++++- tests/Makefile.am | 25 ++++++++++++++++++++----- 2 files changed, 33 insertions(+), 6 deletions(-) commit 7a1ebcbced45c21937c4407e28274fdb4a92af52 Author: Emmanuele Bassi Date: Wed Jan 27 21:26:26 2010 +0000 Whitespace fixes in cogl-util clutter/cogl/cogl/cogl-util.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 578e83e463d4d681de27f1b4e5d64dea8161f0f7 Author: Emmanuele Bassi Date: Wed Jan 27 21:16:28 2010 +0000 Whitespace fixes clutter/clutter-frame-source.c | 3 +- clutter/clutter-timeout-interval.c | 38 +++++++++++++++++++++-------------- clutter/clutter-timeout-pool.c | 5 ++- 3 files changed, 28 insertions(+), 18 deletions(-) commit 2d5eeba5d89c129f991f367f0e80c3a152f19e52 Author: Emmanuele Bassi Date: Wed Jan 27 21:14:43 2010 +0000 docs: Fixes for TimeoutPool and Frame sources The TimeoutPool is not used by ClutterTimeline any more, so we need to remove a sentence from its description. We also need to fix the gtk-doc syntax errors. clutter/clutter-frame-source.c | 25 +++++++++++++------------ clutter/clutter-timeout-pool.c | 8 +------- 2 files changed, 14 insertions(+), 19 deletions(-) commit 046a4b80476794bebdfd9005c826a64b7c8c9f81 Author: Neil Roberts Date: Fri Jan 22 18:14:57 2010 +0000 cogl: Use the colours of COGL_DEBUG=rectangles to debug batching Instead of assigning a new colour to each quad of a batch, the rectangle debugging code now assigns a new colour to each batch so that it can be used to visually see what is being batched. The colour is stored in a global variable that is reset during cogl_clear. This improves the chances that the same colour will be used for a batch in the next frames to avoid flickering. clutter/cogl/cogl/cogl-context.h | 6 ++++ clutter/cogl/cogl/cogl-journal.c | 54 ++++++++++++++++++++++++++------------ clutter/cogl/cogl/cogl.c | 11 +++++++ 3 files changed, 54 insertions(+), 17 deletions(-) commit 92a375ab47296a81d739ca29b0972c7abe6eda16 Author: Neil Roberts Date: Tue Jan 26 13:46:27 2010 +0000 cogl-vertex-buffer: Fix disabling the texture arrays from previous prim When setting up the state for the vertex buffer, enable_state_for_drawing_buffer tries to keep track of the highest numbered texture unit in use. It then disables any texture arrays for units that were previously enabled if they are greater than that number. However if there is no texturing in the VBO then the max used unit would be left at 0 which it would later think meant unit 0 is still in use so it wouldn't disable it. To fix this it now initialises the max used unit to -1 which it should interpret as ‘no units are in use’ so it will later disable the arrays for all units. Thanks to Jon Mayo for reporting the bug. http://bugzilla.openedhand.com/show_bug.cgi?id=1957 clutter/cogl/cogl/cogl-vertex-buffer.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit f288eae0fc454876c2beb87b1205681a338d7f65 Author: Neil Roberts Date: Wed Jan 27 12:06:22 2010 +0000 docs: Add some notes about the CoglPixelFormat enums The pixel format enums didn't explain what order in memory the components should be so it was difficult to use them. clutter/cogl/cogl/cogl-types.h | 22 +++++++++++++++++++--- 1 files changed, 19 insertions(+), 3 deletions(-) commit da392e24a55ad34bdc8fe9ac0841eca574f76194 Author: Neil Roberts Date: Wed Jan 27 11:02:34 2010 +0000 docs: Fix some of the examples for the animation docs In the example for clutter_actor_animate the "x" and "y" properties are floats so they need to be passed float values in the var args otherwise it will crash. There was also a missing comma. There were some other minor problems with the behaviours example which would cause it not to compile. .../clutter/clutter-animation-tutorial.xml | 11 +++++------ 1 files changed, 5 insertions(+), 6 deletions(-) commit 52cb54f5fa665fdf06270fc58121617b44877639 Author: Damien Lespiau Date: Tue Jan 26 18:47:25 2010 +0000 cogl: Fix checks of the number of available texture units We were checking the number of texture units against the GL enum that is used in glGetInteger() to query that number. Let's abstract this in a little function. Took the opportunity to dig a bit on the usage of GL limits for the number of texture (image) units and document our use of them. We'll need something finer grained if we want to fully exploit texture image units with a programmable pipeline. clutter/cogl/cogl/cogl-internal.h | 2 ++ clutter/cogl/cogl/cogl-material.c | 10 ++-------- clutter/cogl/cogl/cogl.c | 30 ++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 8 deletions(-) commit 87d19b8d182c2524a5d3c30921fe2c3d4d120606 Author: Damien Lespiau Date: Sun Nov 15 20:17:47 2009 +0000 cogl: Fix gl equivalent of blend string An example of what could be the equivalent of "RBG = REPLACE(TEXTURE) A = MODULATE(PREVIOUS,TEXTURE)" using the ARB_texture_env_combine extension was given, but it seems that a few typo were left: * remove a spurius GL_COMBINE_ALPHA * use the _ALPHA variant of SRCN and OPERANDN when setting up the alpha combiner doc/reference/cogl/blend-strings.xml | 9 ++++----- 1 files changed, 4 insertions(+), 5 deletions(-) commit afb30f4013fdcb58ee35af919fdb739ab587683c Author: Damien Lespiau Date: Wed Nov 18 01:13:11 2009 +0000 tests: blend-string: use g_assert_cmpint It's very useful to see the actual number the reference value is compared too when the test fails. GTest has g_assert_cmp$type() functions for that, so make good use of them. tests/conform/test-cogl-blend-strings.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit de31cbf4f7932f8d48583a476c5af9f6eed6adbd Author: Damien Lespiau Date: Tue Jan 26 16:59:50 2010 +0000 test-cogl-multitexture: use several materials with texture matrices A small doubt has risen about the use of CoglTextureUnit in materials: will texture matrices still work if we have several materials, each of them having at texture on the same texture unit? The answer is yes! test-cogl-multitexture has been extended to use 2 materials with about the same setup except a little difference: the texture matrices for the lightmaps rotate in opposite directions. While at it, changed the rotation behaviour by an implicit animation with a small additional bonus bling. tests/interactive/test-cogl-multitexture.c | 143 ++++++++++++++++++++-------- 1 files changed, 102 insertions(+), 41 deletions(-) commit 06d8ebb0ba2d468d492eeb94dede095a14eec909 Author: Damien Lespiau Date: Sun Nov 15 19:54:17 2009 +0000 cogl: Create CoglTextureUnit with its associated unit number The index field of CoglTextureUnit was never set, leading to the creation of units with index set to 0. When trying to retrieve a texture unit by its index (!= 0) with _cogl_get_texture_unit(), a new one was created as it could not find it back in the list of textures units: ctx->texture_units. http://bugzilla.openedhand.com/show_bug.cgi?id=1958 clutter/cogl/cogl/cogl.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) commit 8fc07c51a9c71aec77e4b76416ffedc72da309e2 Author: Emmanuele Bassi Date: Thu Jan 21 17:41:10 2010 +0000 actor: Use GParamSpecUint for :opacity The :opacity property is defined using a GParamSpecUchar. This usually leads to issues with language bindings that don't have an 'unsigned char' type and that need to explicitly handle the conversion between G_TYPE_UCHAR and G_TYPE_INT or G_TYPE_UINT. The property definition already specifies an interval size of [0, 255] on the values; more importantly, GObject already implicitly transforms between G_TYPE_UCHAR and G_TYPE_UINT (the GValue transformation functions are registered at type system initialization time) so switching between a GParamSpecUchar and a GParamSpecUint should not be an ABI break. I have tested a simple program using the opacity property before and after the change and I cannot see any run-time warnings related to this issue. clutter/clutter-actor.c | 18 +++++++++--------- 1 files changed, 9 insertions(+), 9 deletions(-) commit d0f7debfba4879c3df20c0067789b063e18d93ce Author: Emmanuele Bassi Date: Fri Jan 22 21:44:28 2010 +0000 test-easing: Do not reconnect signals multiple times The test should keep track of the last animation and avoid reconnecting signals to the same instance in case the -r argument has been passed. tests/interactive/test-easing.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) commit 7073e69b4e504ddbaffad4a6139e93ddbd40b9f8 Author: Emmanuele Bassi Date: Fri Jan 22 21:42:55 2010 +0000 animation: Verify internal state Be more drastic if the internal state is broken, and assert() if the expected Alpha and Timeline instances we need are not valid. This usually implies a library bug or a massive heap corruption. clutter/clutter-animation.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 8daa3035e563870fc614813fd6329c63542b129e Author: Emmanuele Bassi Date: Fri Jan 22 21:42:10 2010 +0000 docs: Fix the Animation:object property There is a typo in the Animation:object property gtk-doc declaration. clutter/clutter-animation.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 0788aa43b29454efed3f60160b87881a1c84f603 Author: Emmanuele Bassi Date: Fri Jan 22 21:41:33 2010 +0000 animation: Add more debug annotations We need some better tracking of the Animation's lifetime. clutter/clutter-animation.c | 16 ++++++++++++++-- 1 files changed, 14 insertions(+), 2 deletions(-) commit 7fa7c4a1b621eff0533ff70b1b6c9be001f62e2a Author: Emmanuele Bassi Date: Fri Jan 22 21:36:41 2010 +0000 animation: Transform if necessary The Animation code does transformation of values between type A and A' after checking for compatibility using g_value_type_compatible(). This is incorrect: compatibility means that the two types can be copied. The correct conversion should follow: if (compatible (type (A), type (A'))) copy (A, A'); else if (transformable (type (A), type (A'))) transform (A, A'); else error("Unable to trasform type A in A'"); The transformation might still fail, so we need to check for errors there as well as a fall-through case. clutter/clutter-animation.c | 42 ++++++++++++++++++++++-------------------- 1 files changed, 22 insertions(+), 20 deletions(-) commit 94249efff7ec46bbeaac04800d5a9a30c05dcde3 Author: Emmanuele Bassi Date: Fri Jan 22 21:33:28 2010 +0000 animation: Check for value transformability We should not just check for compatibility, but also for the ability to transform a GValue of type A into another of type A'. Usually compatibility is enough, especially if types can be introspected beforehand; some times, though, we also need to check for transformability as a type can provide the transformation functions necessary for the operation. clutter/clutter-animation.c | 29 ++++++++++++++++++++--------- 1 files changed, 20 insertions(+), 9 deletions(-) commit 996614cfaf582bbfbf86874a95b4a7eef3c50630 Author: Neil Roberts Date: Thu Jan 21 15:34:19 2010 +0000 cogl-atlas-texture: Add a debug option to disable the atlas If the user specifies the 'disable-atlas' debug option then no texture will be put in the atlas. clutter/cogl/cogl/cogl-atlas-texture.c | 5 +++++ clutter/cogl/cogl/cogl-debug.c | 3 ++- clutter/cogl/cogl/cogl-debug.h | 3 ++- 3 files changed, 9 insertions(+), 2 deletions(-) commit 4695383281d4b74baa10d78253a27b2eb541eef3 Author: Emmanuele Bassi Date: Fri Jan 22 00:06:17 2010 +0000 build: Use no-define We don't need the PACKAGE and VERSION defines in the config.h. configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit f7e7985344420caf4897777ced6f04cddb7052ee Author: Emmanuele Bassi Date: Thu Jan 21 23:57:38 2010 +0000 build: Add no-portability option to automake We require the GNU version of make for some of our rules, and it's been so for a while now. configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit a545f66a5c34b66d1a31387105d114ca3edd3a46 Author: Emmanuele Bassi Date: Thu Jan 21 23:41:18 2010 +0000 master clock: Improve the timeline advancement protection The commit 1c69c61745ed510f0b6ab16cb963ca01994cb9fc which improved the protection against timeline removals during the master clock advancement was only doing half the job - and actually broke the chaining of animations inside the ::completed signal. We cannot simply take a reference on the timelines and still use the list held by the master clock because the do_tick() might result in the creation of a new timeline, which gets added at the end of the list with no reference increase and thus gets disposed at the end of the iteration. We also cannot steal the master clock timelines list because a timeline might be removed as the direct result of do_tick() and remove_timeline() would not find the timeline, failing and leaving a dangling pointer behind. For this reason we copy the list of timelines out of the one that the Master Clock holds, take a reference on each timeline, advance them all, release the reference and free the list. clutter/clutter-master-clock.c | 39 +++++++++++++++++++++++++++------------ 1 files changed, 27 insertions(+), 12 deletions(-) commit 8a4b64715486699dd8d0ea2146d0adea37d2a6c7 Author: Emmanuele Bassi Date: Wed Jan 20 19:40:58 2010 +0000 x11: Re-enable XI1 extension keyboards The extension keyboard support in XInput 1.x is hopelessly broken. Nevertheless, it's possible to use some bits of it, as we prefer the core keyboard events to the XInput events, thus at least having proper handling for X11 key events on the Stage window. clutter/x11/clutter-backend-x11.c | 2 -- clutter/x11/clutter-event-x11.c | 28 ++++++++++++++++++++++++++-- clutter/x11/clutter-input-device-x11.c | 21 ++++++++++++++------- tests/interactive/test-devices.c | 12 +++++++----- 4 files changed, 47 insertions(+), 16 deletions(-) commit 94f9f3bd9345d8eb1551c429615473134e3f4e8f Author: Emmanuele Bassi Date: Fri Jan 15 16:28:00 2010 +0000 x11: Always handle core device events before XI events The XI 1.0 layer is complementary to the X11 core devices handling; this means that core events will still be emitted for the core pointer and keyboard devices, and that secondary (floating) devices should be handled on top of that. Thus, the XI event handling code should be executed (if explicitly compiled in and enabled) if the core device events have not been parsed. Note: this is going away with XI2, which completely replaces both core and XI1 events. clutter/x11/clutter-event-x11.c | 499 ++++++++++++++++++--------------------- 1 files changed, 224 insertions(+), 275 deletions(-) commit dc39e9eff9de0797086ea1a505855724296981f7 Author: Emmanuele Bassi Date: Fri Jan 15 15:29:52 2010 +0000 docs: Documentation fixes for DeviceManager clutter/clutter-device-manager.c | 7 ++++++- doc/reference/clutter/clutter-sections.txt | 2 -- doc/reference/clutter/clutter.types | 2 ++ 3 files changed, 8 insertions(+), 3 deletions(-) commit 65c7ff7d05389a10eed1d881ca572082f03932fe Author: Emmanuele Bassi Date: Fri Jan 15 15:29:14 2010 +0000 device-manager: Fix the signals definition Add documentation for the signals, as well as using the correct type for the marshallers. clutter/clutter-device-manager.c | 24 ++++++++++++++++++++++-- 1 files changed, 22 insertions(+), 2 deletions(-) commit 0b47acf60b46b64ae838471765d86e1c65c01cc0 Author: Emmanuele Bassi Date: Fri Jan 15 14:56:43 2010 +0000 docs: Add sections for InputDevice and DeviceManager doc/reference/clutter/clutter-docs.xml.in | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 8ead5abba0ebe9c5b5c1b749bb28f7879d63aa49 Author: Emmanuele Bassi Date: Fri Jan 15 14:42:19 2010 +0000 docs: Add clutter_input_device_get_device_name() doc/reference/clutter/clutter-sections.txt | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 1f5a7b61b761bf8426b1229c481574c273a5964f Author: Emmanuele Bassi Date: Fri Jan 15 12:24:21 2010 +0000 tests: Print out the device details on motion The test-device interactive test should print out the device name and id when it detects a motion event. tests/interactive/test-devices.c | 31 ++++++++++++++++++++++++++++++- 1 files changed, 30 insertions(+), 1 deletions(-) commit d8e167f1519499a27ee04a9a0d167b5ffed3ce8e Author: Emmanuele Bassi Date: Fri Jan 15 12:22:29 2010 +0000 Always register core devices Even with XInput support we should always register core devices. This allows us to handle enter and leave events correctly on the Stage and to have a working XInput 1.x support in Clutter. clutter/x11/clutter-backend-x11.c | 87 ++++++++++--------------------- clutter/x11/clutter-backend-x11.h | 1 + clutter/x11/clutter-event-x11.c | 47 +++++++++++++++++- clutter/x11/clutter-input-device-x11.c | 14 +++--- 4 files changed, 82 insertions(+), 67 deletions(-) commit e0b8d631593c0539c47de0158d5425391d7cdbc0 Author: Emmanuele Bassi Date: Fri Jan 15 11:52:27 2010 +0000 device: Remove unused is_default member The is_default member of the InputDevice structure was not used anywhere. clutter/clutter-private.h | 2 -- clutter/x11/clutter-backend-x11.c | 11 ++--------- 2 files changed, 2 insertions(+), 11 deletions(-) commit 74dbcede25c9dee5b40cb057a26263d580800e7e Author: Emmanuele Bassi Date: Fri Jan 15 11:47:05 2010 +0000 win32: Experimental implementation of device support Mostly lifted from the core pointer and keyboard X11 backend support. The win32 backend registers two devices (a core pointer and a core keyboard) and assigns them to the event structure when doing the translation from native events to Clutter events. Thanks to: Samuel Degrande for testing this patch. clutter/win32/clutter-backend-win32.c | 23 ++++++++++++++ clutter/win32/clutter-backend-win32.h | 3 ++ clutter/win32/clutter-event-win32.c | 55 +++++++++++++++++++++------------ 3 files changed, 61 insertions(+), 20 deletions(-) commit 850dd5a38fe17e82b16e19144db4ac516e349dbb Author: Emmanuele Bassi Date: Fri Jan 15 11:40:01 2010 +0000 tests: Print the device name, as well as its Id The test-devices interactive test should display the device name along with the id. tests/interactive/test-devices.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 66740e8000ea92b04da663a0d2ce890271d2af2f Author: Emmanuele Bassi Date: Fri Jan 15 11:38:58 2010 +0000 x11: Fill out the :name property of the InputDevices For the core pointer and keyboard we assign the names ourselves; for devices coming from XI we can use the XDeviceInfo.name member. clutter/x11/clutter-backend-x11.c | 5 ++++- clutter/x11/clutter-event-x11.c | 9 ++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) commit cf4e05930a1243f9b58617a4a50833d5bab705b1 Author: Emmanuele Bassi Date: Fri Jan 15 11:37:43 2010 +0000 device: Add the :name property to InputDevice The InputDevice should have a name, possibly user readable, coming from the backend. clutter/clutter-input-device.c | 46 +++++++++++++++++++++++++++++++++++++++- clutter/clutter-input-device.h | 6 ++-- clutter/clutter-private.h | 9 +++++++ 3 files changed, 57 insertions(+), 4 deletions(-) commit 79ad2b6a72bd91273e139e72af36d9b6db264001 Author: Emmanuele Bassi Date: Fri Jan 15 11:21:52 2010 +0000 x11: Store core devices on the X11 Backend singleton Instead of overloading the device id of 0 and 1 we should treat the core devices as special, and have a pointer inside the X11 backend singleton structure, for fast access. clutter/x11/clutter-backend-x11.c | 8 +++- clutter/x11/clutter-backend-x11.h | 3 ++ clutter/x11/clutter-event-x11.c | 13 +++---- clutter/x11/clutter-input-device-x11.c | 63 ++++++++++++++++++++++++++++++++ 4 files changed, 77 insertions(+), 10 deletions(-) commit 8a579838d54d2b6f552fd32d9772f6e04f178179 Author: Emmanuele Bassi Date: Thu Jan 14 17:14:33 2010 +0000 device: Unset the cursor actor when leaving the stage When an InputDevice leaves a stage we set the stage member of InputDevice to NULL. We should also unset the cursor_actor (as the device is obviously not on an actor any more). When the device re-enters the Stage the ENTER/LEAVE event generation machinery will then be able to emit the ENTER event on the Stage. clutter/clutter-input-device.c | 43 ++++++++++++++++++++++++++-------------- 1 files changed, 28 insertions(+), 15 deletions(-) commit 55e4315aa5889185a055f3ab2d5b5d4c9cae4dc4 Author: Emmanuele Bassi Date: Tue Jan 12 11:53:12 2010 +0000 device: Add pointer actor getter ClutterInputDevice should have a getter method for retrieving the reactive actor underneath the pointer. clutter/clutter-input-device.c | 37 ++++++++++++++++++++++++++++ clutter/clutter-input-device.h | 3 +- doc/reference/clutter/clutter-sections.txt | 1 + 3 files changed, 40 insertions(+), 1 deletions(-) commit 25c6ebbb2c70af7f268036b10dcd8d4a965c34c3 Author: Emmanuele Bassi Date: Wed Dec 9 00:03:13 2009 +0000 x11: Discard the LeaveNotify for off-stage ButtonRelease If the user presses a button on a pointer device and then moves out the Stage X11 will emit the following events: LeaveNotify ➔ MotionNotify ... ➔ ButtonRelease ➔ LeaveNotify The second LeaveNotify differs from the first by the state field. Unfortunately, ClutterCrossingEvent doesn't have a modifier_state field like other events, so we cannot provide a way for programmatically distinguishing them from a Clutter perspective. This is also an X11-ism we might not even want to replicate on every backend with sane enter/leave semantics. For this reason we should check inside the X11 event processing if the pointer device has already left the Stage and ignore the second LeaveNotify. clutter/x11/clutter-event-x11.c | 58 +++++++++++++++++++++++---------------- 1 files changed, 34 insertions(+), 24 deletions(-) commit 8736b53d7cc6fd2b53649c076ef09cb69f9b37d6 Author: Emmanuele Bassi Date: Wed Dec 9 00:01:50 2009 +0000 device: Do not overwrite the stage for an InputDevice The Stage field of an InputDevice is set by the backend, whenever the pointer enters or leaves the Stage. The Stage should not overwrite the stage field for every event it processes. clutter/clutter-stage.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit cf287db2048eae5eaa58a9cbffd42c703f345ff5 Author: Emmanuele Bassi Date: Wed Dec 9 00:00:49 2009 +0000 event: Off-stage button releases have a click count of 1 The ButtonRelease off-stage should not have a click count of 0 but a click count initialized to 1. clutter/clutter-main.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit bddabf6d2ca100f4d91461129d4bb097c59ac666 Author: Emmanuele Bassi Date: Tue Dec 8 23:59:56 2009 +0000 event: Scroll events do not have click count Remove the unneeded CLUTTER_SCROLL case from the click count checks. clutter/clutter-main.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit e30856a54d5d1e012cd2de30e519a487fd0b4f46 Author: Emmanuele Bassi Date: Tue Dec 8 18:33:01 2009 +0000 Whitespace and indentation fixes clutter/x11/clutter-event-x11.c | 24 ++++++++++++------------ 1 files changed, 12 insertions(+), 12 deletions(-) commit 0f9cfd9911c21933b34c07a9616f79022bcc01e3 Author: Emmanuele Bassi Date: Mon Dec 7 23:13:52 2009 +0000 event: Clean up click-count detection Avoid a few indirections and direct access to the Event and InputDevice structures. clutter/clutter-main.c | 65 +++++++++++++++++++++++++++++++++-------------- 1 files changed, 45 insertions(+), 20 deletions(-) commit cf8a06f0186e44b3437b06c56c088e8dc465402b Author: Emmanuele Bassi Date: Mon Dec 7 23:05:20 2009 +0000 device: Store the current state, not the previous The previous state for the device is used by the click count machinery and we should not be overwriting it at every event; instead, we should use a parallel storage for the current state coming from the windowing system. clutter/clutter-input-device.c | 34 +++++++++++++++++----------------- clutter/clutter-private.h | 7 +++++++ 2 files changed, 24 insertions(+), 17 deletions(-) commit 68b47e3ed479242a94f7a8d302a2900f7e28c840 Author: Emmanuele Bassi Date: Mon Dec 7 23:02:48 2009 +0000 tests: Fix test-events output • The enter/leave event line should take into account the case where the related field is set to NULL (meaning entering from off-stage and leaving the stage). • The ButtonRelease line shows the click count but uses the button; the button *and* the click count should be displayed for both ButtonPress and ButtonRelease, to verify they match. tests/interactive/test-events.c | 16 +++++++++++----- 1 files changed, 11 insertions(+), 5 deletions(-) commit b3a42c3b09e256732395f7c63c4a39956d32d3da Author: Emmanuele Bassi Date: Mon Dec 7 18:38:18 2009 +0000 docs: Update the API reference Add the new symbols for InputDevice and DeviceManager clutter/clutter-device-manager.c | 2 +- clutter/clutter-device-manager.h | 2 +- clutter/clutter-main.c | 4 +- doc/reference/clutter/clutter-sections.txt | 49 +++++++++++++++++++++++++-- 4 files changed, 49 insertions(+), 8 deletions(-) commit 130286979d04128b51fa8662aa13b6bbd1867ca2 Author: Emmanuele Bassi Date: Tue Nov 24 17:54:02 2009 +0000 Do not pick when motion event delivery is disabled The device manager does not need to update the state of the devices when the user has disabled the delivery of motion events to actors: the events will always be delivered as they are to the stage. clutter/clutter-device-manager.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) commit 687c70dffa70a3256e9f734b090cb4a088e97bb1 Author: Emmanuele Bassi Date: Tue Nov 24 16:33:03 2009 +0000 Rework the emission of LEAVE/ENTER event pairs The LEAVE/ENTER event pairs should be queued during the InputDevice update process, when we change the actor under the device pointer. This commit cleans up the event emission code inside clutter-main.c and the logic of the event processing. clutter/clutter-device-manager.c | 4 +- clutter/clutter-input-device.c | 81 +++++++++++++++- clutter/clutter-main.c | 190 ++++++-------------------------------- clutter/clutter-private.h | 2 - 4 files changed, 104 insertions(+), 173 deletions(-) commit 75f05646fa117b8096e033f9fad0ba9de1ee01ac Author: Emmanuele Bassi Date: Tue Nov 24 16:31:14 2009 +0000 tests: Clean up test-events The output of test-events is a bit of a mess; this patch should clean it up a little bit - at least enough for it to be useful again during visual inspection. tests/interactive/test-events.c | 101 +++++++++++++++++++++++---------------- 1 files changed, 60 insertions(+), 41 deletions(-) commit a056ae716442e07e50ebd07cbca030776a5b3c28 Author: Emmanuele Bassi Date: Tue Nov 24 16:22:44 2009 +0000 Add docs and licensing notices clutter/clutter-device-manager.c | 125 +++++++++++++++++++++++++++++++++++++- clutter/clutter-device-manager.h | 29 +++++++++ clutter/clutter-input-device.c | 109 ++++++++++++++++++++++++++++++++- clutter/clutter-input-device.h | 31 +++++++++ 4 files changed, 288 insertions(+), 6 deletions(-) commit 9506510d1cf794ef530f6c4db45103efb60cca63 Author: Emmanuele Bassi Date: Fri Jan 8 17:51:00 2010 +0000 Move all picking-related operations inside InputDevice The InputDevice objects stores pointer coordinates, state, stage and the actor under the cursor, so if the current backend provides us with one attached to the Event structure then we want the InputDevice itself to update its state and give us the ClutterActor underneath the pointer's cursor. clutter/clutter-device-manager.c | 24 ++++++++++ clutter/clutter-event.c | 36 --------------- clutter/clutter-input-device.c | 91 ++++++++++++++++++++++++++++++++++++-- clutter/clutter-input-device.h | 7 ++- clutter/clutter-main.c | 60 ++++++++++++++---------- clutter/clutter-master-clock.c | 7 +-- clutter/clutter-private.h | 36 ++++++++++----- clutter/clutter-stage.c | 28 ++++++++++-- clutter/x11/clutter-event-x11.c | 36 ++++++++++----- 9 files changed, 225 insertions(+), 100 deletions(-) commit 1f87cac0695dc95be4ed0219752d454d9a285e50 Author: Emmanuele Bassi Date: Tue Nov 24 12:53:57 2009 +0000 actor: Add :has-pointer property ClutterActor should be able to tell whether a pointer is within its area or not. clutter/clutter-actor.c | 60 ++++++++++++++++++++++++++++++++++++++++++++- clutter/clutter-actor.h | 1 + clutter/clutter-private.h | 3 ++ 3 files changed, 63 insertions(+), 1 deletions(-) commit d23dd9af6bf48c3c02f685505a5a34b477d4d2b3 Author: Emmanuele Bassi Date: Mon Nov 23 16:07:16 2009 +0000 device: Make InputDevice an object and subclass it for X11 ClutterInputDevice should be a type that we can subclass per-backend to add functionality. clutter/Makefile.am | 2 + clutter/clutter-event.h | 35 +------ clutter/clutter-input-device.c | 175 ++++++++++++++++++++++++++++++++ clutter/clutter-input-device.h | 64 ++++++++++++ clutter/clutter-main.c | 34 +++--- clutter/clutter-private.h | 19 +++- clutter/clutter.h | 1 + clutter/x11/Makefile.am | 2 + clutter/x11/clutter-backend-x11.c | 141 ++++++-------------------- clutter/x11/clutter-input-device-x11.c | 151 +++++++++++++++++++++++++++ clutter/x11/clutter-input-device-x11.h | 25 +++++ 11 files changed, 484 insertions(+), 165 deletions(-) commit d5331bfb5786b496cfcab925319711853db2f1d3 Author: Emmanuele Bassi Date: Fri Nov 20 16:37:58 2009 +0000 tests: Update the devices test Use the DeviceManager API instead of the X11 specific API. tests/interactive/test-devices.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) commit 157da20e86f88bf906f0b59bafbea171a2e5e678 Author: Emmanuele Bassi Date: Fri Nov 20 16:24:16 2009 +0000 x11: Always assign a device to pointer and key events Even when we are not using XInput we now have fallback devices; the X11 backend should always assign the default devices when translating the X events to Clutter events. clutter/x11/clutter-event-x11.c | 37 ++++++++++++++++++++++++++++--------- 1 files changed, 28 insertions(+), 9 deletions(-) commit ca16446319b6281cf63edf3b1b6d7d4f8d41e499 Author: Emmanuele Bassi Date: Fri Nov 20 15:43:50 2009 +0000 Add :is-default flag to InputDevice clutter/clutter-private.h | 2 ++ clutter/x11/clutter-backend-x11.c | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletions(-) commit 3027d4327ae0c5d9bb7cc831f24d5ee5e8fb107f Author: Emmanuele Bassi Date: Fri Nov 20 15:36:43 2009 +0000 Port the X11 backend to the Device Manager Use the device manager to store the input devices. Also, provide two fallback devices when initializing the X11 backend: device 0 for the pointer and device 1 for the keyboard. clutter/clutter-private.h | 3 - clutter/x11/clutter-backend-x11.c | 514 ++++++++++++++++++------------------- clutter/x11/clutter-backend-x11.h | 6 - clutter/x11/clutter-event-x11.c | 5 +- clutter/x11/clutter-x11.h | 2 + 5 files changed, 256 insertions(+), 274 deletions(-) commit d34f1aa775e8a66bd0e599b32c761869b319c639 Author: Emmanuele Bassi Date: Fri Nov 20 15:35:40 2009 +0000 Add ClutterDeviceManager The ClutterDeviceManager is a singleton object that behaves like the StageManager: it holds all input devices and notifies on addition and removal. clutter/Makefile.am | 6 +- clutter/clutter-device-manager.c | 146 ++++++++++++++++++++++++++++++++++++++ clutter/clutter-device-manager.h | 30 ++++++++ clutter/clutter-main.c | 30 ++++---- clutter/clutter-marshal.list | 1 + clutter/clutter-private.h | 43 +++++++---- clutter/clutter.h | 1 + 7 files changed, 224 insertions(+), 33 deletions(-) commit 1ef40b882349820d5edb2f1ed8885c3386d2cdf7 Author: Neil Roberts Date: Tue Jan 19 17:14:58 2010 +0000 test-cogl-npot-texture: Use the COGL_TEXTURE_NO_ATLAS flag If the texture is put in the atlas it won't be sliced whatever size it is so it negates the test. We can avoid this with the NO_ATLAS flag. tests/conform/test-cogl-npot-texture.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 08b8b2791f91770d1a6e7aff163167d003b0fad3 Author: Neil Roberts Date: Tue Jan 19 17:06:28 2010 +0000 cogl-atlas-texture: Don't create atlas textures with the premult bit Previously the atlas textures were being created with whatever format the first sub texture is in. Only three formats are supported so this only matters if the first texture is a premultiplied alpha texture. Instead it now masks out the premultiplied bit so that the textures are always either RGB_888 or RGBA_8888. clutter/cogl/cogl/cogl-atlas-texture.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 14a28620ae13ef041696e2e3747ec00738cfd2bd Author: Neil Roberts Date: Fri Jan 15 22:56:37 2010 +0000 win32: Use an invisible cursor when cursor-visible is FALSE The win32 backend now handles the WM_SETCURSOR message and sets a fully transparent cursor if the cursor-visible property has been cleared on the stage. The icon is stored in the library via a resource file. The instance handle for the DLL is needed to load the resource so there is now a DllMain function to grab the handle. clutter/Makefile.am | 21 +++++++++++++++- clutter/win32/Makefile.am | 2 +- clutter/win32/clutter-backend-win32.c | 25 ++++++++++++++++++ clutter/win32/clutter-backend-win32.h | 4 +++ clutter/win32/clutter-event-win32.c | 14 ++++++++++ clutter/win32/clutter-stage-win32.c | 44 +++++++++++++++++++++++++++++--- clutter/win32/clutter-stage-win32.h | 2 + clutter/win32/invisible-cursor.cur | Bin 0 -> 86 bytes clutter/win32/resources.rc | 1 + configure.ac | 7 +++++ 10 files changed, 113 insertions(+), 7 deletions(-) commit 4db89759a0aa91b353ac0bb41562addfff6d76c9 Author: Neil Roberts Date: Mon Jan 18 17:33:08 2010 +0000 Post-release version bump to 1.1.7 configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit c4adefffd34d91fdf72365a6d11641f3c9f751cc Author: Neil Roberts Date: Mon Jan 18 10:53:00 2010 +0000 cogl-atlas-texture: Fix premultiplied texture formats When uploading texture data it was just calling cogl_texture_set_data on the large texture. This would attempt to convert the data to the format of the large texture. All of the textures with alpha channels are stored together regardless of whether they are premultiplied so this was causing premultiplied textures to be unpremultiplied again. It now just uploads the data ignoring the premult bit of the format so that it only gets converted once. clutter/cogl/cogl/cogl-atlas-texture.c | 232 ++++++++++++++++++++++---------- 1 files changed, 158 insertions(+), 74 deletions(-) commit b78024bd2dbf39cb86a1c1458e477af9c9353d9e Author: Neil Roberts Date: Thu Jan 14 17:57:43 2010 +0000 cogl-primitives: Ensure the mipmaps for a layer before logging quads With the atlas texture backend ensuring the mipmaps can make it become a completely different texture which will have different texture coordinates or may even be sliced. Therefore we need to ensure the mipmaps before deciding which quads to log in the journal. This adds a new private function to cogl-material which ensures the mipmaps if needed. clutter/cogl/cogl/cogl-material-private.h | 6 ++++++ clutter/cogl/cogl/cogl-material.c | 19 +++++++++++++++---- clutter/cogl/cogl/cogl-primitives.c | 6 ++++++ 3 files changed, 27 insertions(+), 4 deletions(-) commit 36f18e5ac57e068c3987d5b705f68fcc6f18d472 Author: Neil Roberts Date: Mon Jan 18 09:22:04 2010 +0000 cogl: Make CoglSubTexture only work for quad rendering The sub texture backend doesn't work well as a completely general texture backend because for example when rendering with cogl_polygon it needs to be able to tranform arbitrary texture coordinates without reference to the other coordintes. This can't be done when the texture coordinates are a multiple of one because sometimes the coordinate should represent the left or top edge and sometimes it should represent the bottom or top edge. For example if the s coordinates are 0 and 1 then 1 represents the right edge but if they are 1 and 2 then 1 represents the left edge. Instead the sub-textures are now documented not to support coordinates outside the range [0,1]. The coordinates for the sub-region are now represented as integers as this helps avoid rounding issues. The region can no longer be a super-region of the texture as this simplifies the code quite a lot. There are two new texture virtual functions: transform_quad_coords_to_gl - This transforms two pairs of coordinates representing a quad. It will return FALSE if the coordinates can not be transformed. The sub texture backend uses this to detect coordinates that require repeating which causes cogl-primitives to use manual repeating. ensure_non_quad_rendering - This is used in cogl_polygon and cogl_vertex_buffer to inform the texture backend that transform_quad_to_gl is going to be used. The atlas backend migrates the texture out of the atlas when it hits this. clutter/cogl/cogl/cogl-atlas-texture.c | 57 +++- clutter/cogl/cogl/cogl-primitives.c | 21 +- clutter/cogl/cogl/cogl-sub-texture-private.h | 15 +- clutter/cogl/cogl/cogl-sub-texture.c | 498 +++++++++----------------- clutter/cogl/cogl/cogl-texture-2d-sliced.c | 21 ++ clutter/cogl/cogl/cogl-texture-2d.c | 17 + clutter/cogl/cogl/cogl-texture-private.h | 10 + clutter/cogl/cogl/cogl-texture.c | 33 ++- clutter/cogl/cogl/cogl-texture.h | 22 +- clutter/cogl/cogl/cogl-vertex-buffer.c | 5 + tests/conform/test-cogl-sub-texture.c | 81 ++--- tests/conform/test-conform-main.c | 2 +- 12 files changed, 348 insertions(+), 434 deletions(-) commit b844653c649277eed63b6a85d29b84aab8abe641 Author: Neil Roberts Date: Mon Jan 11 16:23:38 2010 +0000 cogl-texture: Fix manual repeating for negative coordinates When calculating the next integer position for negative coordinates it would not increment if the position is already a multiple of one so we need to manually add one. clutter/cogl/cogl/cogl-texture.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) commit a01b4eefceb1d490d918eba1729c87354695d1ca Author: Neil Roberts Date: Mon Jan 11 16:21:56 2010 +0000 cogl-texture-2d: Fix the coordinate wrapping for negative coordinates The formula to wrap the coordinates to the [0,1] range was broken when the coordinates were negative. clutter/cogl/cogl/cogl-texture-2d.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit ead43995364bb8865ca5bab15d1bfd295578fff4 Merge: 34b5093 a70ebe4 Author: Neil Roberts Date: Fri Jan 15 12:15:46 2010 +0000 Merge branch 'master' into more-texture-backends commit 34b50934be581cde0ef2eba75f45aa36b1add14d Author: Neil Roberts Date: Sat Dec 5 14:20:00 2009 +0000 cogl-material: Ensure mipmaps before doing anything else on a texture When the texture is in the atlas, ensuring the mipmaps can effectively make it become a completely different texture so we should do this before getting the GL handle. clutter/cogl/cogl/cogl-material.c | 19 +++++++++++-------- 1 files changed, 11 insertions(+), 8 deletions(-) commit 231cfffa1871806713928f7b4c599d904a813fb9 Author: Neil Roberts Date: Sat Dec 5 13:48:03 2009 +0000 cogl-atlas-texture: Remove textures from the atlas when mipmapping is required Mipmaps don't work very well in the current atlas because there is not enough padding between the textures. If ensure_mipmaps is called it will now create a new texture and migrate the atlased texture to it. It will use the same blit mechanism as when migrating so it will try to use an FBO for a fast blit. However if this is not possible it will end up downloading the data for the entire atlas which is not ideal. clutter/cogl/cogl/cogl-atlas-texture.c | 66 +++++++++++++++++++++++++++---- 1 files changed, 57 insertions(+), 9 deletions(-) commit 6cf5ee2cbdad4bb71a065bb7e49a534ca7ba78ac Author: Neil Roberts Date: Sat Dec 5 13:24:01 2009 +0000 cogl-atlas-texture: Try to do texture blits using an FBO When reorganizing the textures, we can avoid downloading the entire texture data if we bind the source texture in a framebuffer object and copy the destination using glCopyTexSubImage2D. This is also implemented using a much faster path in Mesa. Currently it is calling the GL framebuffer API directly but ideally it would use the Cogl offscreen API. However there is no way to tell Cogl not to create a stencil renderbuffer which seems like a waste in this situation. If FBOs are not available it will fallback to reading back the entire texture data as before. clutter/cogl/cogl/cogl-atlas-texture.c | 198 +++++++++++++++++++++++++++----- 1 files changed, 168 insertions(+), 30 deletions(-) commit c51a31a2fc3f0f087a44cbccf1726c40fa581746 Author: Neil Roberts Date: Fri Dec 4 19:43:39 2009 +0000 cogl-atlas: Add a debug option to visualize the atlas This adds a 'dump-atlas-image' debug category. When enabled, CoglAtlas will use Cairo to create a png which visualizes the leaf rectangles of the atlas. clutter/cogl/cogl/cogl-atlas.c | 76 ++++++++++++++++++++++++++++++++++++++++ clutter/cogl/cogl/cogl-debug.c | 3 +- clutter/cogl/cogl/cogl-debug.h | 3 +- 3 files changed, 80 insertions(+), 2 deletions(-) commit 032d6e8aa00cd04a8084303a4942760ef5651a0c Author: Neil Roberts Date: Fri Dec 4 18:55:53 2009 +0000 cogl-texture-atlas: Add some debugging notes This adds an 'atlas' category to the COGL_DEBUG environment variable. When enabled Cogl will display messages when textures are added to the atlas and when the atlas is reorganized. clutter/cogl/cogl/cogl-atlas-texture.c | 62 ++++++++++++++++++++++++++++--- clutter/cogl/cogl/cogl-debug.c | 3 +- clutter/cogl/cogl/cogl-debug.h | 3 +- 3 files changed, 60 insertions(+), 8 deletions(-) commit bc845e26d9cab75ecba69d12a937cf7d42bcaf71 Author: Neil Roberts Date: Fri Dec 4 18:24:15 2009 +0000 cogl-atlas-texture: Support reorganizing the atlas when it is full When space can't be found in the atlas for a new texture it will now try to reorganize the atlas to make space. A new CoglAtlas is created and all of the textures are readded in decreasing size order. If the textures still don't fit then the size of the atlas is doubled until either we find a space or we reach the texture size limits. If we successfully find an organization that fits then all of the textures will be migrated to a new texture. This involves copying the texture data into CPU memory and then uploading it again. Potentially it could eventually use a PBO or an FBO to transfer the image without going through the CPU. The algorithm for laying out the textures works a lot better if the rectangles are added in order so we might eventually want some API for creating multiple textures in one go to avoid reorganizing the atlas as far as possible. clutter/cogl/cogl/cogl-atlas-texture.c | 315 ++++++++++++++++++++++++++++---- 1 files changed, 280 insertions(+), 35 deletions(-) commit 1fb32167ec37f7b3bc8193258faa5963fe49569e Author: Neil Roberts Date: Fri Dec 4 13:06:32 2009 +0000 cogl: Add an atlased texture backend This adds a CoglAtlas type which is a data structure that keeps track of unused sub rectangles of a larger rectangle. There is a new atlased texture backend which uses this to put multiple textures into a single larger texture. Currently the atlas is always sized 256x256 and the textures are never moved once they are put in. Eventually it needs to be able to reorganise the atlas and grow it if necessary. It also needs to migrate the textures out of the atlas if mipmaps are required. clutter/cogl/cogl/Makefile.am | 4 + clutter/cogl/cogl/cogl-atlas-texture-private.h | 64 +++ clutter/cogl/cogl/cogl-atlas-texture.c | 488 ++++++++++++++++++++++ clutter/cogl/cogl/cogl-atlas.c | 520 ++++++++++++++++++++++++ clutter/cogl/cogl/cogl-atlas.h | 76 ++++ clutter/cogl/cogl/cogl-context.c | 14 + clutter/cogl/cogl/cogl-context.h | 8 + clutter/cogl/cogl/cogl-texture.c | 30 +- clutter/cogl/cogl/cogl-types.h | 3 +- 9 files changed, 1194 insertions(+), 13 deletions(-) commit 6c3e1989e47b17f826d25704b2433ffecc6e83b9 Author: Neil Roberts Date: Thu Dec 3 14:46:20 2009 +0000 cogl-sub-texture: Fix the height of sub textures The code which is used to get the texture height was accidentally using the width due to a cut-and-paste fail. clutter/cogl/cogl/cogl-sub-texture.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 97f8eed11917fa0d545dcb08d20841f6b501c878 Author: Neil Roberts Date: Fri Nov 27 18:45:36 2009 +0000 cogl: Add a CoglTexture2D backend This is an optimised version of CoglTexture2DSliced that always deals with a single texture and always uses the GL_TEXTURE_2D target. cogl_texture_new_from_bitmap now tries to use this backend first. If it can't create a texture with that size then it falls back the sliced backend. cogl_texture_upload_data_prepare has been split into two functions because the sliced backend needs to know the real internal format before the conversion is performed. Otherwise the converted bitmap will be wasted if the backend can't support the size. clutter/cogl/cogl/Makefile.am | 2 + clutter/cogl/cogl/cogl-texture-2d-private.h | 69 +++ clutter/cogl/cogl/cogl-texture-2d.c | 623 +++++++++++++++++++++++++++ clutter/cogl/cogl/cogl-texture-private.h | 9 + clutter/cogl/cogl/cogl-texture.c | 75 +++- 5 files changed, 755 insertions(+), 23 deletions(-) commit f3df76d5129ba0ed7014c6aa52be7bee67c3f7aa Author: Neil Roberts Date: Mon Nov 30 12:15:05 2009 +0000 cogl: Add _cogl_texture_driver_upload_to_gl This provides a way to upload the entire data for a texture without having to first call glTexImage and then glTexSubImage. This should be faster especially with indirect rendering where it would needlessy send the data for the texture twice. clutter/cogl/cogl/cogl-texture-driver.h | 14 ++++++ clutter/cogl/cogl/driver/gl/cogl-texture-driver.c | 26 +++++++++++ .../cogl/cogl/driver/gles/cogl-texture-driver.c | 47 ++++++++++++++++++++ 3 files changed, 87 insertions(+), 0 deletions(-) commit 19a19579ba72ea9ca4f6d406c035c3ad074fd442 Author: Neil Roberts Date: Fri Nov 27 16:59:51 2009 +0000 cogl: Move some of the texture_2d_sliced_new_* functions into cogl-texture new_from_data and new_from_file can be implemented in terms of new_from_bitmap so it makes sense to move these to cogl-texture rather than having to implement them in every texture backend. clutter/cogl/cogl/cogl-texture-2d-sliced-private.h | 16 ---- clutter/cogl/cogl/cogl-texture-2d-sliced.c | 84 -------------------- clutter/cogl/cogl/cogl-texture.c | 44 ++++++++--- 3 files changed, 33 insertions(+), 111 deletions(-) commit 27c4eb483d0ce219d80000613357c20fc25724e3 Author: Neil Roberts Date: Fri Nov 27 16:40:31 2009 +0000 cogl: Add a conformance test for sub textures This tests creating a sub texture from a larger texture using various different texture coordinates. It also tries to read back the texture data using cogl_texture_get_data. tests/conform/Makefile.am | 1 + tests/conform/test-cogl-sub-texture.c | 388 +++++++++++++++++++++++++++++++++ tests/conform/test-conform-main.c | 1 + 3 files changed, 390 insertions(+), 0 deletions(-) commit 9752493272b39e6a8aeb1b8d667667d53de439fb Author: Neil Roberts Date: Fri Nov 27 16:39:16 2009 +0000 cogl: Add a sub texture backend This adds a new texture backend which represents a sub texture of a larger texture. The texture is created with a reference to the full texture and a set of coordinates describing the region. The backend simply defers to the full texture for all operations and maps the coordinates to the other range. You can also use coordinates outside the range [0,1] to create a repeated version of the full texture. A new public API function called cogl_texture_new_from_sub_texture is available to create the sub texture. clutter/cogl/cogl/Makefile.am | 2 + clutter/cogl/cogl/cogl-sub-texture-private.h | 56 ++ clutter/cogl/cogl/cogl-sub-texture.c | 699 ++++++++++++++++++++++++++ clutter/cogl/cogl/cogl-texture.c | 15 +- clutter/cogl/cogl/cogl-texture.h | 27 + doc/reference/cogl/cogl-sections.txt | 1 + 6 files changed, 798 insertions(+), 2 deletions(-) commit 070a91f31176eb304031fc6dc2c374ef25f92a92 Author: Neil Roberts Date: Wed Dec 2 17:17:24 2009 +0000 cogl: Make the callback for foreach_sub_texture_in_region use const The CoglTextureSliceCallback function pointer now takes const pointers for the texture coordinates. This makes it clearer that the callback should not modify the array and therefore the backend can use the same array for both sets of coords. clutter/cogl/cogl/cogl-journal-private.h | 2 +- clutter/cogl/cogl/cogl-journal.c | 2 +- clutter/cogl/cogl/cogl-primitives.c | 14 +++++++------- clutter/cogl/cogl/cogl-texture-private.h | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) commit 1a1de0e278de7c06b528ae74a31580dfd576d041 Author: Neil Roberts Date: Wed Dec 2 13:41:49 2009 +0000 cogl: Add a texture utility function for manually repeating Given a region of texture coordinates this utility invokes a callback enough times to cover the region with a subregion that spans the texture at most once. Eg, if called with tx1 and tx2 as 0.5 and 3.0 it it would invoke the callback with: 0.5,1.0 1.0,2.0 2.0,3.0 Manual repeating is needed by all texture backends regardless of whether they can support hardware repeating because when Cogl calls the foreach_sub_texture_in_region method then it sets the wrap mode to GL_CLAMP_TO_EDGE and no hardware repeating is possible. clutter/cogl/cogl/cogl-texture-private.h | 14 ++++ clutter/cogl/cogl/cogl-texture.c | 102 ++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+), 0 deletions(-) commit 5fcb29c91695bdbb2aec418ba1d2956ff23612a0 Author: Neil Roberts Date: Fri Nov 27 15:47:22 2009 +0000 cogl-primitives: Check for repeating after the coordinate transform In _cogl_multitexture_quad_single_primitive we use a wrap mode of GL_CLAMP_TO_EDGE if the texture coordinates are all in the range [0,1] or GL_REPEAT otherwise. This is to avoid pulling in pixels from either side when using GL_LINEAR filter mode and rendering the entire texture. Previously it was checking using the unconverted texture coordinates. This is ok unless the texture backend is radically transforming the texture coordinates, such as in the sub texture backend where the coordinates may map to something completely different. We now check whether the coordinates are in range after converting them. clutter/cogl/cogl/cogl-primitives.c | 87 +++++++++++++++-------------------- 1 files changed, 37 insertions(+), 50 deletions(-) commit 812d4d25bb28d8512c101701cf7cd06dc2dd95eb Author: Neil Roberts Date: Thu Nov 26 18:58:17 2009 +0000 cogl: Move all of the fields from CoglTexture to CoglTexture2DSliced Most of the fields that were previously in CoglTexture are specific to the implementation of CoglTexture2DSliced so they should be placed there instead. For example, the 'mipmaps_dirty' flag is an implementation detail of the ensure_mipmaps function so it doesn't make sense to force all texture backends to have this function. Other fields such as width, height, gl_format and format may make sense for all textures but I've added them as virtual functions instead. This may make more sense for a sub-texture backend for example where it can calculate these based on the full texture. clutter/cogl/cogl/cogl-texture-2d-sliced-private.h | 25 ++- clutter/cogl/cogl/cogl-texture-2d-sliced.c | 204 +++++++++++--------- clutter/cogl/cogl/cogl-texture-private.h | 21 +-- clutter/cogl/cogl/cogl-texture.c | 19 +-- 4 files changed, 149 insertions(+), 120 deletions(-) commit 071dea2fbc307eca949f5f44c4ccb6c4dd73f789 Author: Neil Roberts Date: Thu Nov 26 17:32:52 2009 +0000 cogl: Move data only used for upload out of CoglTexture The CoglTexture struct previously contained some fields which are only used to upload data such as the CoglBitmap and the source GL format. These are now moved to a separate CoglTextureUploadData struct which only exists for the duration of one of the cogl_texture_*_new functions. In cogl-texture there are utility functions which operate on this new struct rather than on CoglTexture directly. Some of the fields that were previously stored in the CoglBitmap struct are now copied to the CoglTexture such as the width, height, format and internal GL format. The rowstride was previously stored in CoglTexture and this was publicly accessible with the cogl_texture_get_rowstride function. However this doesn't seem to be a useful function because there is no need to use the same rowstride again when uploading or downloading new data. Instead cogl_texture_get_rowstride now just calculates a suitable rowstride from the format and width of the texture. clutter/cogl/cogl/cogl-texture-2d-sliced.c | 344 ++++++++++---------- clutter/cogl/cogl/cogl-texture-driver.h | 6 +- clutter/cogl/cogl/cogl-texture-private.h | 51 ++- clutter/cogl/cogl/cogl-texture.c | 93 +++--- clutter/cogl/cogl/driver/gl/cogl-texture-driver.c | 14 +- .../cogl/cogl/driver/gles/cogl-texture-driver.c | 16 +- 6 files changed, 262 insertions(+), 262 deletions(-) commit 07ff8d26f8097a00757e6e3cfcd587bce188ae0d Author: Neil Roberts Date: Mon Jan 18 15:44:58 2010 +0000 Release Clutter 1.1.6 NEWS | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 2 +- 2 files changed, 50 insertions(+), 1 deletions(-) commit 8daff42b3bcc9d59d7c87801b3926d8ed7c105a4 Author: Neil Roberts Date: Mon Jan 18 15:43:25 2010 +0000 README: Clarify the required OpenGL version Cogl will not allow OpenGL 1.2 if it doesn't have the multitexturing extension so we should make this clear in the README. README | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) commit fa51ff25d3555ce938922d7bbd64acb12140a774 Author: Neil Roberts Date: Mon Jan 18 13:56:56 2010 +0000 Add build/mingw/{README,mingw-cross-compile.sh} to the dist tarball It's quite difficult to get git working on Windows so it makes sense to put the build instructions somewhere accessible. build/Makefile.am | 2 +- build/mingw/Makefile.am | 1 + configure.ac | 1 + 3 files changed, 3 insertions(+), 1 deletions(-) commit ff1d9cf090aef74efa1ec04b8cd490a45b148ae4 Author: Neil Roberts Date: Mon Jan 18 12:42:20 2010 +0000 test-texture-fbo: Disconnect the paint handler for the stage Otherwise the paint handler will still be run for the subsequent tests. This ends up writing to the ‘state’ variable which used to be on the stack so it will end up corrupting some stack variable. This was causing test-cogl-premult to fail. tests/conform/test-texture-fbo.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) commit ce030a3fce362cf4238d361743aaf9027ceed95a Author: Neil Roberts Date: Mon Jan 18 12:35:05 2010 +0000 clutter-group: Use g_list_foreach in clutter_group_real_foreach g_list_foreach has better protection against the current node being removed. This will happen for example if someone calls clutter_container_foreach(container, clutter_actor_destroy). This was causing valgrind errors for the conformance tests which do just that. clutter/clutter-group.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) commit 3d373c7278c47b18576edc8c8a0074654ce4a60e Author: Samuel Degrande Date: Fri Nov 27 16:53:50 2009 +0100 win32: Fix computation of the fullscreen size during stage realization http://bugzilla.openedhand.com/show_bug.cgi?id=1905 Signed-off-by: Neil Roberts clutter/win32/clutter-stage-win32.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 12a9150f5b455e5700c745de4ad1ac5f2e43631f Author: Emmanuele Bassi Date: Fri Jan 15 17:32:46 2010 +0000 docs: Clarify usage of UTF-8 or ASCII art in commit messages doc/HACKING | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit ea662b9ecaf1dd956f0cdc79ce04880270bf99de Author: Emmanuele Bassi Date: Fri Jan 15 17:06:56 2010 +0000 docs: Display the features section The features section of the API reference is built but not used, and it has some copy-and-paste errors. clutter/clutter-feature.c | 11 +++++++++-- clutter/clutter-feature.h | 8 -------- doc/reference/clutter/clutter-docs.xml.in | 1 + doc/reference/clutter/clutter-sections.txt | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) commit cdfd9eb212829df0408431673bedfbe6b566fefe Author: Emmanuele Bassi Date: Fri Jan 15 14:50:06 2010 +0000 Add test-cogl-texture-mipmaps to the Git ignore file .gitignore | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit e019547e8c7d110332a9ba071737736a059f5b4b Author: Emmanuele Bassi Date: Fri Jan 15 14:48:42 2010 +0000 x11: Fix typo in clutter_x11_set_use_argb_visual() declaration The function should have a lowercase x11, not an uppercase X11 in its name. clutter/x11/clutter-x11.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 148145ea1ad24fb1ceca3229c4cae9c7c5755f75 Author: Emmanuele Bassi Date: Fri Jan 15 14:47:20 2010 +0000 docs: Ignore clutter-profile.h doc/reference/clutter/Makefile.am | 57 +++++++++++++++++++------------------ 1 files changed, 29 insertions(+), 28 deletions(-) commit a70ebe4f52e192c11f8db6a4fa1f419a5b175ab3 Author: Neil Roberts Date: Fri Jan 15 12:02:09 2010 +0000 tests: Add a simple conformance test for texture mipmaps This adds a test which renders a texture into a 1x1 pixel quad with and without filters that use mipmaps. The pixel without mipmaps will be one of the colors from the texture and the one with will be the average of all the pixels in the texture. tests/conform/Makefile.am | 1 + tests/conform/test-cogl-texture-mipmaps.c | 147 +++++++++++++++++++++++++++++ tests/conform/test-conform-main.c | 1 + 3 files changed, 149 insertions(+), 0 deletions(-) commit ba4622ff8bd1abde577fa26637fd1afec1b3abd6 Author: Emmanuele Bassi Date: Thu Jan 14 15:23:41 2010 +0000 Add a notice of deprecation in the pre-Git ChangeLog ChangeLog.pre-git-import | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit 8247bdf4f9b940fe69165ae6556511fcc9ca3a5d Author: Neil Roberts Date: Tue Jan 12 21:44:40 2010 +0000 cogl-framebuffer: Return gboolean from try_creating_fbo When try_creating_fbo fails it returns 0 to report the error and if it succeeds it returns ‘flags’. However cogl_offscreen_new_to_texture also passes in 0 for the flags as the last fallback to create the fbo with nothing but the color buffer. In that case it will return 0 regardless of whether it succeeded so the last fallback will always be considered a failure. To fix this it now just returns a gboolean to indicate whether it succeeded and the flags used for each attempt is assigned when passing the argument rather than from the return value of the function. Also if the only configuration that succeeded was with flags==0 then it would always try all combinations because last_working_flags would also be zero. To avoid this it now uses a separate gboolean to mark whether we found a successful set of flags. http://bugzilla.openedhand.com/show_bug.cgi?id=1873 clutter/cogl/cogl/cogl-framebuffer.c | 56 +++++++++++++++++----------------- 1 files changed, 28 insertions(+), 28 deletions(-) commit c6ce9c338966188248c3c1ae7b10480205fe20bf Author: Emmanuele Bassi Date: Thu Jan 14 14:07:04 2010 +0000 conform: Add operators tests for ClutterColor The clutter_color_add() and clutter_color_subtract() functions are lacking unit testing to catch eventual regressions. .gitignore | 1 + tests/conform/test-color.c | 57 +++++++++++++++++++++++++++++++++++++ tests/conform/test-conform-main.c | 1 + 3 files changed, 59 insertions(+), 0 deletions(-) commit 4388509a1589dbac7aae0ebe5995ca0e06f7c70c Author: Emmanuele Bassi Date: Thu Jan 14 12:28:07 2010 +0000 master-clock: Add profiling timers Use the newly-added profiling timers inside the master clock dispatch function to see how much time we spend: • in the whole function • in the event processing for each stage • in the timeline advancement clutter/clutter-master-clock.c | 31 +++++++++++++++++++++++++++++++ 1 files changed, 31 insertions(+), 0 deletions(-) commit 6e82d11daf8b1d7259c26e6a0816392a71c726f3 Author: Emmanuele Bassi Date: Wed Jan 13 17:31:13 2010 +0000 units: Improve coverage of clutter_units_from_string() Add a unit for an empty string as well as units for the missing unit types like cm, mm and px. tests/conform/test-clutter-units.c | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) commit ed735ae730ea2140ef4d1be9d1947dbdce8b1f28 Author: Emmanuele Bassi Date: Wed Jan 13 16:57:55 2010 +0000 Add test-cogl-multitexture to the Git ignore file .gitignore | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit a076e0e11d222ca17dbdbadb3aa2c762d32a5730 Author: Emmanuele Bassi Date: Wed Jan 13 16:35:53 2010 +0000 build: Add a script to format gcov report lines Instead of using echo let's try Perl and the format() built-in. build/Makefile.am | 2 + build/autotools/Makefile.am.gcov | 2 +- build/gen-gcov.pl | 44 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletions(-) commit 948db40c875f8eb7032582a32515737be6587067 Author: Emmanuele Bassi Date: Mon Jan 4 14:53:03 2010 +0000 Add gcov support to the build Using gcov it's possible to get a coverage report, that is a break down of how much the exposed API is exercised by the conformance test suite. .gitignore | 2 ++ Makefile.am | 3 +++ build/autotools/Makefile.am | 1 + build/autotools/Makefile.am.gcov | 33 +++++++++++++++++++++++++++++++++ clutter/Makefile.am | 20 +++++++++++--------- configure.ac | 26 ++++++++++++++++++++++++++ 6 files changed, 76 insertions(+), 9 deletions(-) commit 5322546a4e2100bcec8aba651f8de7d849d67711 Author: Emmanuele Bassi Date: Wed Jan 13 15:40:36 2010 +0000 build: Clean up COGL build flags clutter/cogl/cogl/Makefile.am | 53 ++++++++++++++++++++--------------------- 1 files changed, 26 insertions(+), 27 deletions(-) commit 18d96005ec4d1395d70d71f2bef6cc378f4afb43 Author: Damien Lespiau Date: Mon Nov 2 17:08:55 2009 +0000 texture: Remove reading the texture data back in ::unrealize() Reading back the texture data in unrealize does not seem like a desirable feature any more, clutter has evolved a lot since it was implemented. What's wrong with it now: * It takes *a lot* of time to read the data back with glReadPixel(), * When several textures share the same CoglTexture, the same data can be read back multiple times, * If the underlying material uses multiple texture units, only the first one was copied back, * In ClutterCairoTexture, we end up having two separate copies of the data, * GL actually manages texture memory accross system/video memory for us! For all the reasons above, let's get rid of the glReadPixel() in Texture::unrealize() Fixes: OHB#1842 clutter/clutter-texture.c | 163 ++------------------------------------------ 1 files changed, 8 insertions(+), 155 deletions(-) commit 778e08e4e24822b0875e6aeaf168cb5cecfc8a7f Author: Neil Roberts Date: Tue Jan 12 14:49:55 2010 +0000 cogl-framebuffer: Add some missing GL defines Since 755cce33a7 the framebuffer code is using the GL enums GL_DEPTH_ATTACHMENT and GL_DEPTH_COMPONENT16. These aren't available directly under GLES except with the OES suffix so we need to define them manually as we do with the other framebuffer constants. clutter/cogl/cogl/cogl-framebuffer.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit bb8352ca95f18ca5582abb97e20e78f69300adde Author: Neil Roberts Date: Tue Jan 12 14:43:36 2010 +0000 cogl: Remove the CGL_* defines These macros used to define Cogl wrappers for the GLenum values. There are now Cogl enums everywhere in the API where these were required so we shouldn't need them anymore. They were in the public headers but as they are not neccessary and were not in the API docs for Clutter 1.0 it should be safe to remove them. clutter/cogl/cogl/cogl-material.c | 10 +- clutter/cogl/cogl/cogl-primitives.c | 2 +- clutter/cogl/cogl/cogl-shader.h | 2 +- clutter/cogl/cogl/cogl-texture.h | 7 +- clutter/cogl/cogl/driver/gl/cogl-defines.h.in | 655 -------------------- clutter/cogl/cogl/driver/gl/cogl-texture-driver.c | 2 +- clutter/cogl/cogl/driver/gles/cogl-defines.h.in | 597 ------------------ clutter/cogl/cogl/driver/gles/cogl-gles2-wrapper.c | 4 +- clutter/cogl/cogl/driver/gles/cogl-gles2-wrapper.h | 65 +- clutter/glx/clutter-glx-texture-pixmap.c | 8 +- 10 files changed, 55 insertions(+), 1297 deletions(-) commit 1c6ffc8a238e5e7de429f35f7653695d91d9d26d Author: Emmanuele Bassi Date: Tue Jan 12 15:44:28 2010 +0000 stage: Add the delete-event signal Using the ::event signal to match the CLUTTER_DELETE event type (and block the stage destruction) can be costly, since it means checking every single event. The ::delete-event signal is similar in spirit to any other specialized signal handler dealing with events, and retains the same semantics. clutter/clutter-main.c | 9 +------- clutter/clutter-stage.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++- clutter/clutter-stage.h | 6 ++++- 3 files changed, 54 insertions(+), 10 deletions(-) commit 8b950bdc87fae2626af8a96916b7f51fdea40a17 Author: Robert Bragg Date: Tue Jan 12 11:02:09 2010 +0000 journal: Fixes logging of multiple sets of texture coordinates If a user supplied multiple groups of texture coordinates with cogl_rectangle_with_multitexture_coords() then we would repeatedly log only the first group in the journal. This fixes that bug and adds a conformance test to verify the fix. Thanks to Gord Allott for reporting this bug. clutter/cogl/cogl/cogl-journal.c | 8 +- tests/conform/Makefile.am | 1 + tests/conform/test-cogl-multitexture.c | 209 ++++++++++++++++++++++++++++++++ tests/conform/test-conform-main.c | 1 + 4 files changed, 215 insertions(+), 4 deletions(-) commit bc8a80fee53c9eed17fab6d821846c1a0fa3460f Author: Emmanuele Bassi Date: Mon Jan 11 17:08:42 2010 +0000 text: Zero out the cursor_pos member Do not trust the zero-ing done by GObject on the private data structure, and use memset() instead to zero the ClutterGeometry structure. clutter/clutter-text.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 5c14538c1406b1358a2747428c73fe0cf1198e94 Author: Emmanuele Bassi Date: Mon Jan 11 17:06:52 2010 +0000 Remove obsolete code from test-text The test-text "fake scrolling" code stopped working somewhere between 0.8 and 0.9, with the new layout code. Instead of the ::cursor-event signal it should use an approach similar to the Scrollable interface in the Moblin User Experience toolkit. Right now, it makes sense to ignore this code entirely. tests/interactive/test-text.c | 26 ++------------------------ 1 files changed, 2 insertions(+), 24 deletions(-) commit 755cce33a729817aebe4cf5c08d97c31a327c863 Author: Robert Bragg Date: Mon Nov 30 20:04:41 2009 +0000 cogl: Support multiple fallbacks in cogl_offscreen_new_to_texture() The Intel drivers in Mesa 7.6 (and possibly earlier versions) don't support creating FBOs with a stencil buffer but without a depth buffer. This reworks framebuffer allocation so that we try a number of fallback options before failing. The options we try in order are: - the same options that were sucessful last time if available - combined depth and stencil - separate depth and stencil - just stencil, no depth - just depth, no stencil - neither depth or stencil clutter/cogl/cogl/cogl-framebuffer-private.h | 2 +- clutter/cogl/cogl/cogl-framebuffer.c | 238 +++++++++++++++++--------- 2 files changed, 156 insertions(+), 84 deletions(-) commit 4c1231c7fe545a7764d06754d7d6be0906686e0a Author: Damien Lespiau Date: Wed Jan 6 11:48:46 2010 +0000 media: Add an API to specify which font should be used for subtitles Allow the user of the ClutterMedia interface to specify a Pango font description to display subtitles. Even if the underlying implementation of the interface does not natively use Pange, it must be capable of parsing the grammar that pango_font_description_from_string() accepts. clutter/clutter-media.c | 64 ++++++++++++++++++++++++++++ clutter/clutter-media.h | 45 ++++++++++--------- doc/reference/clutter/clutter-sections.txt | 2 + 3 files changed, 90 insertions(+), 21 deletions(-) commit 8e9f56c41160452166be68202227b206a690472d Author: Emmanuele Bassi Date: Sun Jan 10 11:35:26 2010 +0000 build: Clean up private header/source files Some source files should not be passed through the introspection parser, as they are fully private and do not expose any valuable API. Also the clutter-profile.h header is private and should not be installed. clutter/Makefile.am | 12 ++++++++---- 1 files changed, 8 insertions(+), 4 deletions(-) commit d9b91d61f5730e9ce29627f467c89070b78fb6b6 Author: Robert Bragg Date: Wed Nov 25 14:26:32 2009 +0000 framebuffers: cogl_offscreen_new_to_texture should take a ref on the texture We weren't taking a reference on the texture to be used as the color buffer for offscreen rendering, so it was possible to free the texture leaving the framebuffer in an inconsistent state. clutter/cogl/cogl/cogl-framebuffer-private.h | 1 + clutter/cogl/cogl/cogl-framebuffer.c | 3 +++ 2 files changed, 4 insertions(+), 0 deletions(-) commit 30b557c4653d15eeb1311b516ab1f4c0035a5e83 Author: Robert Bragg Date: Fri Jul 3 16:22:35 2009 +0100 profiling: Adds initial UProf accounting to Cogl This adds gives Cogl a dedicated UProf context which will be linked together with Clutter's context during clutter_init_real(). Initial timers cover _cogl_journal_flush and _cogl_journal_log_quad You can explicitly ask for a report of Cogl statistics by exporting COGL_PROFILE_OUTPUT_REPORT=1 but since the context is linked with Clutter's the statisitcs will also be shown in the automatic Clutter reports. clutter/clutter-main.c | 7 +++++ clutter/cogl/cogl/Makefile.am | 2 + clutter/cogl/cogl/cogl-journal.c | 19 +++++++++++++ clutter/cogl/cogl/cogl-profile.c | 30 +++++++++++++++++++++ clutter/cogl/cogl/cogl-profile.h | 54 ++++++++++++++++++++++++++++++++++++++ configure.ac | 2 +- 6 files changed, 113 insertions(+), 1 deletions(-) commit 0b6515a1d53571fea13417d47e7bf0f4749321f8 Author: Robert Bragg Date: Fri Apr 17 12:15:56 2009 +0100 profiling: Allow limiting statisics just to picking This suspends and resumes all uprof timers and counters except while dealing with picking, so as to give more focused statistics. Be aware that there are still some issues with this profile option since there are a few special case counters and timers that shouldn't be suspended; noteably the frame counters are incorrect so the per frame stats can't be trusted. clutter/clutter-main.c | 22 ++++++++++++++++++++-- clutter/clutter-profile.c | 29 +++++++++++++++++++++++++++++ clutter/clutter-profile.h | 9 +++++++++ 3 files changed, 58 insertions(+), 2 deletions(-) commit 9cb530d42e7860d1a44f441b97910fd3903480f1 Author: Robert Bragg Date: Wed Jan 6 18:15:13 2010 +0000 profiling: Parse --clutter-profile and CLUTTER_PROFILE= options As we have for debugging, this adds the ability to control profiling flags either via the command line or an environment variable. The first option added is CLUTTER_PROFILE=disable-report This also changes the reporting to be opt-out so you don't need to export CLUTTER_PROFILE_OUTPUT_REPORT=1 to see a report but you can use CLUTTER_PROFILE=disable-report to disable it if desired. clutter/clutter-main.c | 51 +++++++++++++++++++++++++++++++++++++++++++++ clutter/clutter-profile.c | 2 +- clutter/clutter-profile.h | 8 +++++++ 3 files changed, 60 insertions(+), 1 deletions(-) commit 00577558540db2c9f7bf24e870ff6231abb2b99d Author: Robert Bragg Date: Mon Mar 30 16:41:02 2009 +0100 profiling: Adds initial UProf support across clutter UProf is a small library that aims to help applications/libraries provide domain specific reports about performance. It currently provides high precision timer primitives (rdtsc on x86) and simple counters, the ability to link statistics between optional components at runtime and makes report generation easy. This adds initial accounting for: - Total mainloop time - Painting - Picking - Layouting - Idle time The timing done by uprof is of wall clock time. It's not based on stochastic samples we simply sample a counter at the start and end. When dealing with the complexities of GPU drivers and with various kinds of IO this form of profiling can be quite enlightening as it will be able to represent where your application is blocking unlike tools such as sysprof. To enable uprof accounting you must configure Clutter with --enable-profile and have uprof-0.2 installed from git://git.moblin.org/uprof If you want to see a report of statistics when Clutter applications exit you should export CLUTTER_PROFILE_OUTPUT_REPORT=1 before running them. Just a final word of caution; this stuff is new and the manual nature of adding uprof instrumentation means it is prone to some errors when modifying code. This just means that when you question strange results don't rule out a mistake in the instrumentation. Obviously though we hope the benfits out weigh e.g. by focusing on very key stats and by having automatic reporting. clutter/Makefile.am | 2 + clutter/clutter-actor.c | 14 +++ clutter/clutter-backend.c | 15 +++ clutter/clutter-main.c | 94 ++++++++++++++++++++- clutter/clutter-profile.c | 170 +++++++++++++++++++++++++++++++++++++ clutter/clutter-profile.h | 57 ++++++++++++ clutter/clutter-stage.c | 9 ++ clutter/glx/clutter-backend-glx.c | 17 ++++ 8 files changed, 376 insertions(+), 2 deletions(-) commit bd41db7c00fc54aa8077f53177ff33bd33a19c83 Author: Robert Bragg Date: Tue Mar 17 13:07:46 2009 +0000 Adds a --enable-profile option to configure.ac There is nothing else hooked up to this option so far README | 4 ++++ configure.ac | 58 +++++++++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 49 insertions(+), 13 deletions(-) commit 5157da9fc8340cebdd29989a4ea02ccf607d3c52 Author: Emmanuele Bassi Date: Fri Jan 8 15:04:56 2010 +0000 x11: Switch back to RGB visuals by default Since asking for ARGB by default is still somewhat experimental on X11 and not every toolkit or complex widgets (like WebKit) still do not like dealing with ARGB visuals, we should switch back to RGB by default - now that at least we know it works. For applications (and toolkit integration libraries) that want to enable the ClutterStage:use-alpha property there is a new function: void clutter_x11_set_use_argb_visual (gboolean use_argb); which needs to be called before clutter_init(). The CLUTTER_DISABLE_ARGB_VISUAL environment variable can still be used to force this value off at run-time. clutter/glx/clutter-backend-glx.c | 2 +- clutter/x11/clutter-backend-x11.c | 70 +++++++++++++++++++++++++++- clutter/x11/clutter-stage-x11.c | 6 ++- clutter/x11/clutter-x11.h | 9 +++- doc/reference/clutter/clutter-sections.txt | 3 + 5 files changed, 83 insertions(+), 7 deletions(-) commit 9599adbd820db7526d77790d8b611a6b61cb2dc7 Author: Damien Lespiau Date: Wed Jan 6 00:44:24 2010 +0000 doc: Fix media::{get,set}_subtitle_uri() symbol names At first, those symbols were called {get,set}_subtitles_uri() but were renamed to {get,set}_subtitle_uri() without updating the clutter-section.txt file. This fix makes gtk-doc document those symbols again. doc/reference/clutter/clutter-sections.txt | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit bf4818bd759f612a9cec62c2e072544d54cc104c Author: Emmanuele Bassi Date: Thu Jan 7 11:08:52 2010 +0000 actor: Just emit a relayout cycle warning Currently, ClutterActor detects a relayout cycle (an actor causing a relayout to be queued from within an allocate() function) and aborts after printing out a warning. This might be a little bit too anal retentive, and it currently breaks GTK+ embedding inside clutter-gtk so we should probably relax the behaviour a bit. Now we just emit the warning but we still go ahead with the relayout. clutter/clutter-actor.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit 821e622de671ad4e18a55e9dbd33aee004e822df Author: Neil Roberts Date: Thu Jan 7 15:58:53 2010 +0000 Don't set the GLX_TRANSPARENT_TYPE attribute to choose an FBConfig When Clutter tries to pick an ARGB visual it tried to set the GLX_TRANSPARENT_TYPE attribute of the FBConfig to GLX_TRANSPARENT_RGB. However the code to do this was broken so that it was actually trying to set the non-existant attribute number 0x8008 instead. Mesa silently ignored this so it appeared as if it was working but the Nvidia drivers do not like it. It appears that the TRANSPARENT_TYPE attribute is not neccessary for getting an ARGB visual anyway and instead it is intended to support color-key transparency. Therefore we can just remove it and get all of the FBConfigs. Then if we need an ARGB visual we can just walk the list to look for one with depth == 32. The fbconfig is now stored in a single variable instead of having a separate variable for the rgb and rgba configs because the old code only ever retrieved one of them anyway. clutter/glx/clutter-backend-glx.c | 145 ++++++++++++++----------------------- clutter/glx/clutter-backend-glx.h | 5 +- 2 files changed, 57 insertions(+), 93 deletions(-) commit 8b59573190907da97c2af5a5be2e563fc66f8d51 Author: Emmanuele Bassi Date: Tue Jan 5 18:02:29 2010 +0000 Covert stb_image.c to Unix format The file is still in DOS format (CRLF instead of LF) and this confuses the hell out of some versions of Git. clutter/cogl/cogl/stb_image.c | 7544 ++++++++++++++++++++-------------------- 1 files changed, 3772 insertions(+), 3772 deletions(-) commit 58b5a46e0e6b263bd32808e4a9a46bbdd81eedfe Author: Emmanuele Bassi Date: Tue Jan 5 17:54:45 2010 +0000 Include cogl-defines.h before using GL types If we are using GL* types we should also be including cogl-defines.h, as that will include the right GL header. clutter/cogl/cogl/cogl-shader.h | 1 + clutter/cogl/cogl/cogl-texture.h | 1 + 2 files changed, 2 insertions(+), 0 deletions(-) commit 793fec8138b478ba1f1ea419f9ef8bed4f453e77 Author: Emmanuele Bassi Date: Tue Jan 5 16:11:45 2010 +0000 cogl: Fix array annotations The arrays in the cogl_program_set_uniform_* API should be marked as such, and have their length arguments specified. clutter/cogl/cogl/cogl-shader.h | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) commit 59105341bce12b2ec009ff953facbb7f7b10e85f Author: Neil Roberts Date: Tue Jan 5 11:58:12 2010 +0000 text: Store the markup attributes separately Previously when the markup property is set it would generate an attribute list from the markup and then merge it with the attributes from the attribute property and store it as the effective attributes. The markup attributes and the marked up text would then be forgotten. This breaks if the application then later changes the attributes property because it would try to regenerate the effective attributes from the markup text but the stored text no longer contains any markup. If the original markup text happened to contain entities like '<' they would end up causing parse errors because they would be converted to the actual symbols. To fix this the attributes from the markup are now stored independently from the effective attributes. The effective attributes are now regenerated if either set of attributes changes right before a layout is created. http://bugzilla.openedhand.com/show_bug.cgi?id=1940 clutter/clutter-text.c | 134 +++++++++++++++++++++++++++++------------------- 1 files changed, 82 insertions(+), 52 deletions(-) commit 32b456fc8c4e8743c1b2c32164f7e9f67188a60e Author: Neil Roberts Date: Tue Jan 5 11:44:17 2010 +0000 text: Free the Pango attribute list resources The ClutterText owns three PangoAttrList resources which were not being unref'd. This adds the unref calls to the finalize method. clutter/clutter-text.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) commit 64c1294cc26e034fbf8a9a05b4413f63b9cd882d Author: Emmanuele Bassi Date: Tue Jan 5 14:10:19 2010 +0000 x11 tfp: Plug a leak Destroy the dummy XImage we create even on success. http://bugzilla.openedhand.com/show_bug.cgi?id=1918 Based on a patch by: Carlos Martín Nieto Signed-off-by: Emmanuele Bassi clutter/x11/clutter-x11-texture-pixmap.c | 22 +++++++++++++--------- 1 files changed, 13 insertions(+), 9 deletions(-) commit fa298b45b530c6b6821e73b011c3c7d226950ce0 Merge: 4207524 4adc2c2 Author: Emmanuele Bassi Date: Tue Jan 5 11:04:50 2010 +0000 Merge branch 'matrix-mode' * matrix-mode: build: Move CoglMatrixMode to cogl-matrix-stack.h commit 4207524e950efd3f1fa5334f6d0b9b374a0b3f93 Author: Emmanuele Bassi Date: Tue Jan 5 11:02:39 2010 +0000 Remove trailing comma from test UI definition The animation definition test has a trailing comma at the end of an array item. tests/data/test-script-animation.json | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 2aa9d7bdc78703fc9a6354d2e54f880fde96db39 Author: Emmanuele Bassi Date: Tue Jan 5 10:55:28 2010 +0000 script: Copy the JSON node in PropertyInfo PropertyInfo should store a copy of the JsonNodes it references, so that property_info_free() can safely dispose them, and we can reference values across different UI definition data. The implicit timeline parsing code is not copying the JsonNode; this leads to a double free in some cases, which is masked by the GSlice allocator and produces a heap corruption later on. clutter/clutter-script-parser.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 10963d1ae03920e202ccbd0107854f489117f89b Author: Damien Lespiau Date: Mon Dec 28 17:52:43 2009 +0100 [media] Add an API to play a subtitle file along with the media Allow the user of the ClutterMedia interface to specify an external (as in not multiplexed with the audio/video streams) location of a subtitle stream. clutter/clutter-media.c | 55 ++++++++++++++++++++++++++++ clutter/clutter-media.h | 3 ++ doc/reference/clutter/clutter-sections.txt | 2 + 3 files changed, 60 insertions(+), 0 deletions(-) commit 5d5c7142f7fa2447e13bcb80a272b0d9dfc28f06 Author: Emmanuele Bassi Date: Mon Jan 4 12:03:47 2010 +0000 text: Use G_SIGNAL_ACTION for ::insert-text and ::delete-text Both the ::insert-text and ::delete-text are "action" signals, that is signals that are safe to (and should) be emitted using g_signal_emit() directly. clutter/clutter-text.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit bf43cb6cdc84e646add7adc592487274331d4930 Author: Alejandro Piñeiro Date: Fri Nov 20 15:17:41 2009 +0100 Added ClutterText::insert-text and ClutterText::delete-text signals * clutter/clutter-marshal.list: added new marshaller * clutter/clutter-text.c (clutter_text_class_init): added insert-text and delete-text signals (clutter_text_insert_unichar): emits insert-text signal (clutter_text_insert_text): emits insert-text signal (clutter_text_delete_text): emits delete-text signal (clutter_text_delete_chars): emits delete-text signal (clutter_text_set_markup_internal): emits delete-text and insert-text signals (clutter_text_set_text): emits delete-text and insert-text signals http://bugzilla.openedhand.com/show_bug.cgi?id=1894 clutter/clutter-marshal.list | 1 + clutter/clutter-text.c | 87 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 84 insertions(+), 4 deletions(-) commit 4adc2c2d839c42eccc7187735ddcce061d25f14b Author: Emmanuele Bassi Date: Mon Jan 4 11:58:32 2010 +0000 build: Move CoglMatrixMode to cogl-matrix-stack.h This avoids a redeclaration of _cogl_matrix_stack_flush_to_gl() from using GLenum to CoglMatrixMode. http://bugzilla.openedhand.com/show_bug.cgi?id=1928 clutter/cogl/cogl/cogl-internal.h | 7 ------- clutter/cogl/cogl/cogl-matrix-stack.h | 9 +++++++-- 2 files changed, 7 insertions(+), 9 deletions(-) commit eb9029504124daf4c032f027c2f068ec25548f3f Author: Halton Huo Date: Mon Jan 4 11:49:50 2010 +0000 cogl-texture: Remove return in void functions http://bugzilla.o-hand.com/show_bug.cgi?id=1929 Signed-off-by: Emmanuele Bassi clutter/cogl/cogl/cogl-texture.c | 8 +++----- 1 files changed, 3 insertions(+), 5 deletions(-) commit b98d486fc99fd46626877be728961190dbf831dc Author: Emmanuele Bassi Date: Mon Jan 4 11:49:13 2010 +0000 build: Maintainer cflags go in the _CFLAGS target The maintainer compiler flags are not pre-processor flags. clutter/cogl/cogl/Makefile.am | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) commit 0fb51658fdba886fd5d9cb53cfca6df13aa1f7a0 Author: Emmanuele Bassi Date: Mon Jan 4 11:43:00 2010 +0000 cogl: Const-ify vertices in cogl_polygon() The CoglTextureVertex array passed to cogl_polygon() is a pure in-argument and should be const-ified. http://bugzilla.openedhand.com/show_bug.cgi?id=1917 clutter/cogl/cogl/cogl-primitives.c | 27 ++++++++++++++------------- clutter/cogl/cogl/cogl-texture.h | 6 +++--- 2 files changed, 17 insertions(+), 16 deletions(-) commit 1c69c61745ed510f0b6ab16cb963ca01994cb9fc Author: Emmanuele Bassi Date: Wed Nov 11 11:00:29 2009 +0000 master-clock: Take a reference before advancing timelines A timeline advancement might cause another timeline to be destroyed, which will likely lead to a segmentation fault. Before advancing the timelines we should take a reference on them - just like we do for the stages before doing event processing. This will prevent dispose() from running until the end of the advancement. http://bugzilla.openedhand.com/show_bug.cgi?id=1854 clutter/clutter-master-clock.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) commit 5ae88f5777c5ed0663937f990350f145b254692c Author: Emmanuele Bassi Date: Sun Jan 3 20:41:17 2010 +0000 Post-release version bump to 1.1.5 configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)