commit 01cbd47b19a57a70924c4cc4ecad52319a446b29 Author: Emmanuele Bassi Date: Mon Jan 31 14:47:37 2011 +0000 Release Clutter 1.6.0 configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit c060f086c5af655a52d7b2651abd76eb10394534 Author: Emmanuele Bassi Date: Mon Jan 31 13:59:14 2011 +0000 docs: Update the NEWS file NEWS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit bb44d51fc934e2360eb8d529be7cdcec438d32b5 Merge: 5859efa 6680ceb Author: Emmanuele Bassi Date: Mon Jan 31 13:58:12 2011 +0000 Merge remote branch 'elliot/cookbook-actors-composite' * elliot/cookbook-actors-composite: docs: Add reference to useful GObject tutorial docs: Explain why destroy() is implemented docs: Implement destroy() rather than dispose() docs: Don't use clutter_stage_get_default() docs: Change text on button docs: Add a note about other state variables docs: Complete composite actor recipe docs: Change order of functions in example to match docs docs: Add more comments on how allocate() works docs: Include code examples in the recipe docs: Explain enums for properties and signals docs: Don't set explicit size on button docs: Add example of preferred_height() and preferred_width() docs: Add recipe for creating a custom ClutterActor with composition docs: Add more comments on code example for composite actor docs: Improve example code formatting docs: Add some gtk-doc annotations to example docs: Add custom ClutterActor example which uses composition commit 5859efa34ff530a9452877a46cc120ca1d36a8e1 Author: Emmanuele Bassi Date: Mon Jan 31 13:50:37 2011 +0000 docs: Update NEWS file NEWS | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) commit 2c1f8c9ad367035f7fd0d5177c60816440d916b2 Author: Emmanuele Bassi Date: Fri Jan 28 14:53:08 2011 +0000 osx: Add devices to event translation code Use a DeviceManager sub-class similar to the Win32 backend one, which creates two InputDevices: a core pointer and a core keyboard. The event translation code then uses these two devices to fill out the .device field of the events. Throw in enter/leave tracking, given that we need to update the device's state. http://bugzilla.clutter-project.org/show_bug.cgi?id=2490 clutter/osx/clutter-backend-osx.c | 45 ++++++-- clutter/osx/clutter-device-manager-osx.c | 180 ++++++++++++++++++++++++++++++ clutter/osx/clutter-device-manager-osx.h | 58 ++++++++++ clutter/osx/clutter-event-osx.c | 83 ++++++++++---- clutter/osx/clutter-stage-osx.c | 7 +- clutter/osx/clutter-stage-osx.h | 12 +- 6 files changed, 350 insertions(+), 35 deletions(-) commit 634e4ffd1a93d62c3875e02f5ba69085fa0b4bcf Author: Viatcheslav Gachkaylo Date: Fri Jan 28 12:56:57 2011 +0000 osx: Improve the event loop Implementation of event loop which works with GLib events, native OS X events and Clutter events. The event loop source code comes from the equivalent code in the Quartz GDK backend from GTK+ 2.22.1, which is LGPL v2.1+ and thus compatible with Clutter's licensing terms. The code has been tested with libsoup, which did not work before together with Clutter. Signed-off-by: Emmanuele Bassi http://bugzilla.clutter-project.org/show_bug.cgi?id=2490 clutter/Makefile.am | 6 +- clutter/clutter-debug.h | 3 +- clutter/osx/clutter-event-loop-osx.c | 1051 ++++++++++++++++++++++++++++++++++ clutter/osx/clutter-event-loop-osx.h | 32 ++ clutter/osx/clutter-event-osx.c | 223 +++----- clutter/osx/clutter-stage-osx.h | 3 + 6 files changed, 1176 insertions(+), 142 deletions(-) commit 6680cebfe1f0ef697e16f6db26d1e7fb70d5e459 Author: Elliot Smith Date: Mon Jan 31 13:40:10 2011 +0000 docs: Add reference to useful GObject tutorial Add a reference to a GObject tutorial which is a good introduction to the various macros etc. and what they're for. doc/cookbook/actors.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 885664f725aa3704c46db62e7b1fa951819fc22c Author: Elliot Smith Date: Mon Jan 31 13:39:11 2011 +0000 docs: Explain why destroy() is implemented As destroy() is Clutter-specific and not generic GObject code, explain why we implement it (rather than dispose()). doc/cookbook/actors.xml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) commit 1558975bc38c87690f26bc54849459c4db581371 Author: Emmanuele Bassi Date: Mon Jan 31 13:37:32 2011 +0000 docs: Fix documentation for clutter_actor_pop_internal() http://bugzilla.clutter-project.org/show_bug.cgi?id=2534 clutter/clutter-actor.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e69d60e8b64bbe0811479dac96aee6009560be4e Author: Elliot Smith Date: Mon Jan 31 13:36:37 2011 +0000 docs: Implement destroy() rather than dispose() Remove the dispose() implementation and replace with destroy(). This should be promoted as the standard approach for implementing a composite actor, as it emits a signal when instances of the actor subclass are destroyed. doc/cookbook/examples/cb-button.c | 61 +++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 30 deletions(-) commit 9753cd4a59f3849090bf8cee247fafd806729826 Author: Emmanuele Bassi Date: Mon Jan 31 13:04:49 2011 +0000 docs: Update Cogl release notes for 1.6 README | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) commit f954b8e1bb309d4f9487edb558f4280c772cffb5 Author: Emmanuele Bassi Date: Mon Jan 31 13:04:35 2011 +0000 Update the NEWS file NEWS | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) commit ef36d7cbccbd9225f2a16328522c1cbf3d0befd0 Author: Emmanuele Bassi Date: Mon Jan 31 12:51:14 2011 +0000 docs: Update the documentation for clutter_actor_unparent() Make sure that we document the semantics of unparent() and who should call it. clutter/clutter-actor.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit e32253508de412c3d91c55e73e099ddcc38e1082 Author: Emmanuele Bassi Date: Mon Jan 31 12:50:25 2011 +0000 docs: Update documentation for ::destroy The ::destroy signal is meant to be used to break reference cycles on third party code. The documentation should really make it clear. clutter/clutter-actor.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) commit e0580127f8f3510c2a8b4d2906c66835ac7bc5a5 Author: Emmanuele Bassi Date: Mon Jan 31 12:28:03 2011 +0000 docs: Update release notes for 1.6 README | 90 +++++++++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 67 insertions(+), 23 deletions(-) commit f63158c2a2c27e7d4a264caf994f799a38fb6398 Author: Elliot Smith Date: Mon Jan 31 12:18:58 2011 +0000 docs: Don't use clutter_stage_get_default() clutter_stage_get_new() is the recommended way to get a stage instance, so use that instead. doc/cookbook/examples/actors-composite-main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 3f64137a7937498ea4982edf9c1fb133fe9321e4 Author: Elliot Smith Date: Mon Jan 31 11:06:01 2011 +0000 docs: Change text on button Modify the text shown on the button to "hello / world" rather than "winkle / pickers". Slightly more sensible. doc/cookbook/examples/actors-composite-main.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 5530c5e2ec9605722e7f65b60b73e8fe396e6c39 Author: Elliot Smith Date: Mon Jan 31 11:05:27 2011 +0000 docs: Add a note about other state variables Explain that the private structure would be the place to store other state variables for the instance. doc/cookbook/examples/cb-button.c | 4 ++++ 1 file changed, 4 insertions(+) commit 08f5dc08d0e11e2f03b3a9c8889222a584cbe0e7 Author: Elliot Smith Date: Mon Jan 31 10:53:52 2011 +0000 docs: Complete composite actor recipe Add some extra detail to the Discussion section of the composite actor recipe, concentrating on the pros and cons of this approach. Also explain more about the Clutter parts of the implementation. Also general tidy up of language and style. doc/cookbook/actors.xml | 220 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 170 insertions(+), 50 deletions(-) commit 238fd52c4b0660ac61b3ae125f3eef8f71b0f6b0 Author: Elliot Smith Date: Fri Jan 28 17:09:24 2011 +0000 docs: Change order of functions in example to match docs Moved the functions around in the C code file, to match the order Clutter uses them, and the order they are explained in the recipe. doc/cookbook/examples/cb-button.c | 99 +++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 55 deletions(-) commit 6934b3645164b5e2a4d4c3da5ed99fe93bb9a95d Author: Elliot Smith Date: Fri Jan 28 16:43:22 2011 +0000 docs: Add more comments on how allocate() works Add some extra description to the allocate() function, explaining how the allocation has to be adjusted to coordinates relative to the actor as a whole, before applying to the single child actor it is composed from. doc/cookbook/examples/cb-button.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) commit 00deb59a9daa45558753810fcc18c738f61b0a6e Author: Elliot Smith Date: Fri Jan 28 11:49:08 2011 +0000 docs: Include code examples in the recipe Include all the code examples inline as part of the recipe. Remove sections around each code example, as these are unnecessary; leave full discussion for the Discussion section instead of trying to cram it in around the code example. doc/cookbook/actors.xml | 103 ++++++++++++++++------------------------------- 1 file changed, 34 insertions(+), 69 deletions(-) commit 5f676ce3253f4e6f5ac07a1c1099d17e8384d5ee Author: Elliot Smith Date: Fri Jan 28 11:39:26 2011 +0000 docs: Explain enums for properties and signals Add some more explanatory comments about the PROP_ and signals enums. doc/cookbook/examples/cb-button.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) commit 18b90f100c259db2e5ef19874277b3d5d50791f0 Author: Elliot Smith Date: Fri Jan 28 11:36:20 2011 +0000 docs: Don't set explicit size on button Rather than set a size on the CbButton instance, let it size itself automatically, based on the size requisition functions. doc/cookbook/examples/actors-composite-main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 951f13bb8dc2ead8fe3fd3a6f2fede2618c57a19 Author: Elliot Smith Date: Fri Jan 28 11:35:14 2011 +0000 docs: Add example of preferred_height() and preferred_width() As most actor subclasses will probably want to implement size requisition, give a simple example of how to do this on the basis of the composed actor's size, plus some padding. doc/cookbook/examples/cb-button.c | 67 +++++++++++++++++++++++++++++++++++-- 1 file changed, 64 insertions(+), 3 deletions(-) commit 2adc224f0e701648ff0f08ed80317f4b3d4109df Author: Elliot Smith Date: Wed Jan 26 11:22:07 2011 +0000 docs: Add recipe for creating a custom ClutterActor with composition doc/cookbook/actors.xml | 190 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 189 insertions(+), 1 deletion(-) commit 7059be499ab8c31bcc9825f823587d05410f186a Author: Elliot Smith Date: Fri Jan 28 11:13:47 2011 +0000 docs: Add more comments on code example for composite actor Add more comments about the specific purpose of functions and variables in the composite actor example, particularly around GObject implementation. doc/cookbook/examples/cb-button.c | 69 ++++++++++++++++++++++++++++++++----- doc/cookbook/examples/cb-button.h | 11 ++++++ 2 files changed, 72 insertions(+), 8 deletions(-) commit b3954878c2827e78c0d800a038d6ae5cb515a136 Author: Elliot Smith Date: Wed Jan 26 11:18:23 2011 +0000 docs: Improve example code formatting Improve code formatting to adhere to Clutter uncrustify rules. doc/cookbook/examples/cb-button.c | 16 +++++++--------- doc/cookbook/examples/cb-button.h | 29 +++++++++++++++-------------- 2 files changed, 22 insertions(+), 23 deletions(-) commit 7b9eaeeadbf6ff10b4e467d13a873685a613ba37 Author: Elliot Smith Date: Tue Jan 25 11:36:13 2011 +0000 docs: Add some gtk-doc annotations to example As this is a full GObject class implementation, add some gtk-doc annotations to demonstrate how how custom actor subclasses should be documented. doc/cookbook/examples/cb-button.c | 65 +++++++++++++++++++++++++++++++------ 1 file changed, 55 insertions(+), 10 deletions(-) commit 8a5967f0cc4ca2ce2b4e8869f4a0ec3bdee07912 Author: Elliot Smith Date: Fri Jan 21 16:43:03 2011 +0000 docs: Add custom ClutterActor example which uses composition doc/cookbook/examples/Makefile.am | 2 + doc/cookbook/examples/actors-composite-main.c | 79 +++++++ doc/cookbook/examples/cb-button.c | 287 +++++++++++++++++++++++++ doc/cookbook/examples/cb-button.h | 72 +++++++ 4 files changed, 440 insertions(+) commit b820e3940681e4a08ec4985bb13c7f53faf657d4 Author: Emmanuele Bassi Date: Sun Jan 30 23:00:00 2011 +0000 text: Bind BackSpace + Shift as BackSpace Follow this old GTK+ bug: https://bugzilla.gnome.org/show_bug.cgi?id=80302 and ignore the Shift mask. clutter/clutter-text.c | 4 ++++ 1 file changed, 4 insertions(+) commit 9be4cfe8a9eef6a7a15c7100731a199f9348e73b Author: Emmanuele Bassi Date: Fri Jan 28 18:05:06 2011 +0000 x11/stage: Use a global Window ↔ Stage relationship Since we need to find the stage from the X11 Window, it's better to use a static hashmap that gets updated every time the ClutterStageX11:xwin member is changed, instead of iterating over every stage handled by the global ClutterStageManager singleton. clutter/glx/clutter-backend-glx.c | 7 ++++-- clutter/x11/clutter-stage-x11.c | 49 ++++++++++++++++++++++++------------- 2 files changed, 37 insertions(+), 19 deletions(-) commit f4508be4ab18f741bea12ea993c635fa9d632de2 Author: Emmanuele Bassi Date: Fri Jan 28 17:25:43 2011 +0000 win32: Small clean ups in the event code Use clutter_event_set_device() instead of setting the device field. Also, use G_N_ELEMENTS() to determine the size of the key symbols mapping array. clutter/win32/clutter-event-win32.c | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) commit 82d1e5a6ee081cf462999ea04fbd51cdb91f70c9 Author: Emmanuele Bassi Date: Thu Jan 27 17:26:16 2011 +0000 Clean up crossing event synthesis code Clutter should just require that the windowing system used by a backend adds a device to the stage when the device enters, and removes it from the stage when the device leaves; with this information, we can synthesize every crossing event and update the device state without other intervention from the backend-specific code. The generation of additional crossing events for actors that are covering the stage at the coordinates of the crossing event should be delegated to the event processing code. The x11 and win32 backends need to be modified to relay the enter and leave events from the windowing system. clutter/clutter-device-manager-private.h | 6 +- clutter/clutter-device-manager.c | 2 +- clutter/clutter-event.c | 1 + clutter/clutter-input-device.c | 152 +++++++++---------------- clutter/clutter-main.c | 90 +++++++++++---- clutter/clutter-stage-private.h | 8 ++ clutter/clutter-stage.c | 48 +++++++- clutter/win32/clutter-event-win32.c | 19 +++- clutter/x11/clutter-device-manager-core-x11.c | 45 ++++---- clutter/x11/clutter-device-manager-xi2.c | 32 +++--- 10 files changed, 242 insertions(+), 161 deletions(-) commit b3784bd2b4c9aeac809cca70681bc248123133f8 Author: Emmanuele Bassi Date: Thu Jan 27 17:21:08 2011 +0000 event: Add a setter for the device field When synthesizing events coming from input devices it should be possible to just call a setter function, to avoid a huge switch on the type of the event. Clutter should also store the device pointer inside the private data, for faster access of the pointer in allocated events. Finally, the get_device_id() and get_device_type() accessors should just be wrappers around clutter_event_get_device(), to reduce the amount of code duplication. clutter/clutter-event.c | 98 +++++++++++++++++----------- clutter/clutter-event.h | 3 + doc/reference/clutter/clutter-sections.txt | 1 + 3 files changed, 64 insertions(+), 38 deletions(-) commit 3502f326b21856ed7720c8541aa4eb3990517a6f Author: Emmanuele Bassi Date: Wed Jan 26 12:44:03 2011 +0000 x11/stage: Remove redundant line location The CLUTTER_NOTE() macro already adds the line location; adding another will just clutter up the log. clutter/x11/clutter-stage-x11.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit acf51259d2057b412d1d32fa8246fd14c9ddb66f Author: Emmanuele Bassi Date: Wed Jan 26 11:58:08 2011 +0000 x11: Store a back pointer to the backend in the stage Since we access it in order to get the X11 Display pointer, it makes sense to have the ClutterBackendX11 already available inside the ClutterStageX11 structure, and avoid the pattern: ClutterBackend *backend = clutter_get_default_backend (); ClutterBackendX11 *backend_x11 = CLUTTER_BACKEND_X11 (backend); which costs us a function call, a type cast and an unused variable. clutter/egl/clutter-backend-egl.c | 1 + clutter/glx/clutter-backend-glx.c | 1 + clutter/x11/clutter-stage-x11.c | 129 +++++++++++-------------------------- clutter/x11/clutter-stage-x11.h | 5 +- 4 files changed, 41 insertions(+), 95 deletions(-) commit 1d7e2233130b3041cc204fed326087c3a2bc9867 Author: Neil Roberts Date: Fri Jan 28 18:11:38 2011 +0000 test-path: Fix the test when running against latest Cairo versions Cairo has recently changed so that it no longer adds a final move-to command when the path ends with a close. This patch makes the test check the run-time version number of Cairo to avoid duplicating this behaviour when testing the conversion to and from a Cairo path. tests/conform/test-path.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) commit e7519a149beb78b92ab8e5b2d315fbab3102dbc2 Author: Neil Roberts Date: Tue Jan 25 15:53:35 2011 +0000 clutter-stage-x11: Don't ensure the viewport when the window moves When we receive a ConfigureNotify event that doesn't affect the size of the window (only the position) then we were still calling clutter_stage_ensure_viewport which ends up queueing a full stage redraw. This patch makes it so that it only ensures the viewport when the size changes as it already did for avoiding queueing a relayout. It now also avoids setting the clipped redraws cool off period when the window only moves under the assumption that it's only necessary for size changes. clutter/x11/clutter-stage-x11.c | 134 ++++++++++++++++++++------------------- 1 file changed, 69 insertions(+), 65 deletions(-) commit dc6f6d6445a1fb9090ce63947218578b969c8718 Author: Rob Bradford Date: Mon Jan 24 18:41:49 2011 +0000 animator: Only free the animator key when we've finished with it Fixes: http://bugzilla.clutter-project.org/show_bug.cgi?id=2530 clutter/clutter-animator.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 5593792a40850b6a8f96afa91745115191a45c67 Author: Emmanuele Bassi Date: Wed Jan 26 10:32:42 2011 +0000 Include stdint.h when using uint32_t Since the XI2 device manager code is going to be compiled only on POSIX compliant systems, we can safely assume the presence of stdint.h and include it unconditionally. clutter/x11/clutter-device-manager-xi2.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit 5329c986947d08fd724585d8eac61f8e0b0553b5 Author: Emmanuele Bassi Date: Tue Jan 25 11:10:29 2011 +0000 bind-constraint: Add BIND_POSITION and BIND_SIZE CLUTTER_BIND_POSITION and CLUTTER_BIND_SIZE are two convenience enumeration values for binding x and y, and width and height respectively, using a single ClutterBindConstraint. clutter/clutter-bind-constraint.c | 12 ++++++++++++ clutter/clutter-bind-constraint.h | 8 +++++++- tests/interactive/test-constraints.c | 4 +++- tests/interactive/test-flow-layout.c | 5 +---- 4 files changed, 23 insertions(+), 6 deletions(-) commit 4f53653bf9f2d4ea30ee77e686b4799d8e356c99 Author: Emmanuele Bassi Date: Tue Jan 25 11:00:20 2011 +0000 x11: Remove more private symbols Some private functions escaped my wrath in commit a277b4091a3fa09a39cf001809c3048eb27f3952. Thanks to: Emilio Pozuelo Monfort on #clutter clutter/x11/clutter-backend-x11.c | 4 ++-- clutter/x11/clutter-device-manager-core-x11.c | 2 ++ clutter/x11/clutter-device-manager-core-x11.h | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) commit 32486fe995911256a76673bf62609312893281be Author: Robert Bragg Date: Mon Jan 24 18:42:28 2011 +0000 pipeline: fix for _init_multi_property_sparse_state When copying COMBINE state in _cogl_pipeline_layer_init_multi_property_sparse_state we would read some state from the destination layer (invalid data potentially), then redundantly set the value back on the destination. This was picked up by valgrind, and the code is now more careful about how it references the src layer vs the destination layer. clutter/cogl/cogl/cogl-pipeline.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) commit bca39776d3080c180cdcf6698a54ee2c25bb5383 Author: Robert Bragg Date: Fri Jan 21 19:05:23 2011 +0000 framebuffer: flush journal when switching framebuffers There is currently a problem with per-framebuffer journals in that it's possible to create a framebuffer from a texture which then gets rendered too but the framebuffer (and corresponding journal) can be freed before the texture gets used to draw with. Conceptually we want to make sure when freeing a framebuffer that - if it is associated with a texture - we flush the journal as the last thing before really freeing the framebuffer's meta data. Technically though this is awkward to implement since the obvious mechanism for us to be notified about the framebuffer's destruction (by setting some user data internally with a callback) notifies when the framebuffer has a ref-count of 0. This means we'd have to be careful what we do with the framebuffer to consider e.g. recursive destruction; anything that would set more user data on the framebuffer while it is being destroyed and ensuring nothing else gets notified of the framebuffer's destruction before the journal has been flushed. For simplicity, for now, this patch provides another solution which is to flush framebuffer journals whenever we switch away from a given framebuffer via cogl_set_framebuffer or cogl_push/pop_framebuffer. The disadvantage of this approach is that we can't batch all the geometry of a scene that involves intermediate renders to offscreen framebufers. Clutter is doing this more and more with applications that use the ClutterEffect APIs so this is a shame. Hopefully this will only be a stop-gap solution while we consider how to reliably support journal logging across framebuffer changes. clutter/cogl/cogl/cogl-framebuffer.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) commit 4609770bb9faa4dc74ddd0f25e099ff46b91e258 Author: Neil Roberts Date: Mon Jan 24 17:32:06 2011 +0000 cogl-clip-stack: Fix flushing multiple stencil rectangles When flushing a clip stack that contains more than one rectangle which needs to use the stencil buffer the code takes a different path so that it can combine the new rectangle with the existing contents of the stencil buffer. However it was not correctly flushing the modelview and projection matrices so that rectangle would be in the wrong place. clutter/cogl/cogl/cogl-clip-stack.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) commit 6102f802449d22d543621532b543d6879fdb1925 Author: Neil Roberts Date: Mon Jan 24 17:17:16 2011 +0000 test-clip: Replace the ellipse with a rotated rectangle With test-clip it's possible to draw three different shapes depending on what mouse button is used: a rectangle, an ellipse or a path containing multiple shapes. However the ellipse is also a path so it doesn't really test anything extra from the third option. This replaces the ellipse with a rectangle that is first rotated by the modelview matrix. The rotated matrix won't be able to use the scissor so it can be used to test stencil and clip plane clipping. tests/interactive/test-clip.c | 41 ++++++++++++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 7 deletions(-) commit 5137d0a23f19ce461f178596b687479bd62d8522 Author: Neil Roberts Date: Mon Jan 24 16:36:56 2011 +0000 cogl-debug: Add a debug option for tracing clipping This adds a COGL_DEBUG=clipping option that reports how the clip is being flushed. This is needed to determine whether the scissor, stencil clip planes or software clipping is being used. clutter/cogl/cogl/cogl-clip-stack.c | 12 ++++++++++++ clutter/cogl/cogl/cogl-debug-options.h | 5 +++++ clutter/cogl/cogl/cogl-debug.c | 3 ++- clutter/cogl/cogl/cogl-debug.h | 1 + clutter/cogl/cogl/cogl-journal.c | 2 ++ 5 files changed, 22 insertions(+), 1 deletion(-) commit 35a2d79e462c2d27e462f0e614c475cce17b883b Author: Neil Roberts Date: Mon Jan 24 14:28:00 2011 +0000 cogl-debug: Split the flags to support more than 32 The CoglDebugFlags are now stored in an array of unsigned ints rather than a single variable. The flags are accessed using macros instead of directly peeking at the cogl_debug_flags variable. The index values are stored in the enum rather than the actual mask values so that the enum doesn't need to be more than 32 bits wide. The hope is that the code to determine the index into the array can be optimized out by the compiler so it should have exactly the same performance as the old code. clutter/cogl/cogl/cogl-atlas-texture.c | 2 +- clutter/cogl/cogl/cogl-attribute.c | 8 +- clutter/cogl/cogl/cogl-blend-string.c | 14 +-- clutter/cogl/cogl/cogl-context.c | 10 +-- clutter/cogl/cogl/cogl-debug.c | 85 ++++++++++++++---- clutter/cogl/cogl/cogl-debug.h | 105 +++++++++++++++-------- clutter/cogl/cogl/cogl-framebuffer.c | 4 +- clutter/cogl/cogl/cogl-journal.c | 38 ++++---- clutter/cogl/cogl/cogl-matrix-private.h | 2 +- clutter/cogl/cogl/cogl-pipeline-fragend-arbfp.c | 6 +- clutter/cogl/cogl/cogl-pipeline-fragend-fixed.c | 6 +- clutter/cogl/cogl/cogl-pipeline-vertend-fixed.c | 2 +- clutter/cogl/cogl/cogl-pipeline.c | 2 +- clutter/cogl/cogl/cogl-profile.c | 10 +-- clutter/cogl/cogl/cogl-rectangle-map.c | 4 +- clutter/cogl/cogl/cogl-shader.c | 4 +- 16 files changed, 191 insertions(+), 111 deletions(-) commit 67fdb5c9f8494117e3d763693041be3ace8168f4 Author: Neil Roberts Date: Fri Jan 14 11:11:44 2011 +0000 cogl-pipeline: Flush the lighting params in common code not vertend The lighting parameters such as the diffuse and ambient colors were previously only flushed in the fixed vertend. This meant that if a vertex shader was used then they would not be set. The lighting parameters are uniforms which are just as useful in a fragment shader so it doesn't really make sense to set them in the vertend. They are now flushed in the common cogl-pipeline-opengl code but the code is #ifdef'd for GLES2 because they need to be part of the progend in that case. clutter/cogl/cogl/cogl-pipeline-opengl.c | 25 ++++++++++++++++++++++- clutter/cogl/cogl/cogl-pipeline-vertend-fixed.c | 19 ----------------- 2 files changed, 24 insertions(+), 20 deletions(-) commit e778018d0d3247a64a7de64f0937a1335a22b56e Author: Neil Roberts Date: Thu Jan 13 18:24:22 2011 +0000 cogl-pipeline-progend-glsl: Generalize updating GLES2 uniforms The uniforms for the alpha test reference value and point size on GLES2 are updating using similar code. This generalizes the code so that there is a static array of predefined builtin uniforms which contains the uniform name, a pointer to a function to get the value from the pipeline, a pointer to a function to update the uniform and a flag representing which CoglPipelineState change affects the uniform. The uniforms are then updated in a loop. This should simplify adding more builtin uniforms. clutter/cogl/cogl/cogl-pipeline-progend-glsl.c | 134 ++++++++++++++---------- 1 file changed, 77 insertions(+), 57 deletions(-) commit 9ff04e8a998af90891996fe8c2a4439e5736e4f4 Author: Neil Roberts Date: Wed Jan 12 13:47:55 2011 +0000 cogl-shader-boilerplate: Move the uniforms to the common code The builtin uniforms are accessible from either the vertex shader or the fragment shader so we should define them in the common section. This doesn't really matter for the current list of uniforms because it's pretty unlikely that you'd want to access the matrices from the fragment shader, but for other builtins such as the lighting material properties it makes sense. clutter/cogl/cogl/cogl-shader-boilerplate.h | 31 +++++++++++++++------------ 1 file changed, 17 insertions(+), 14 deletions(-) commit e8d5be0ba79eef766fff723012c5d1994da84b4c Author: Neil Roberts Date: Mon Jan 24 11:49:04 2011 +0000 ClutterTimeline: Fix the 'msecs' parameter for the new-frame signal Between Clutter 0.8 and 1.0, the new-frame signal of ClutterTimeline changed the second parameter to be an elapsed time in milliseconds rather than the frame number. However a few places in clutter were still calling the parameter 'frame_num' which is a bit misleading. Notably the signature for the signal class closure in the header was using the wrong name. This changes them to use 'msecs'. clutter/clutter-alpha.c | 2 +- clutter/clutter-timeline.h | 2 +- tests/conform/test-timeline-rewind.c | 4 +--- 3 files changed, 3 insertions(+), 5 deletions(-) commit 5c0aaf50a7b3d1914d4580d5f853faa9a4b10f73 Author: Neil Roberts Date: Mon Jan 24 11:29:59 2011 +0000 clutter-timeline: Emit the new-frame signal even on the first frame ClutterTimeline has special handling for the first time do_tick is called which was not emitting a new-frame signal. This meant that an application which directly uses the timeline would have to manually setup the initial state of an animation after starting a timeline to avoid painting a single frame with the wrong state. It seems to make more sense to instead emit the new-frame signal so that the application always sees a new-frame when the progress changes before a paint. clutter/clutter-timeline.c | 2 ++ 1 file changed, 2 insertions(+) commit b917285e24a355d38678b4a1cdce9e572ac34c14 Author: Emmanuele Bassi Date: Mon Jan 24 10:51:06 2011 +0000 Post-release version bump to 1.5.15 configure.ac | 2 +- po/clutter-1.0.pot | 445 ++++++++++++++++++++++++++++----------------------- po/de.po | 445 ++++++++++++++++++++++++++++----------------------- po/fr.po | 449 ++++++++++++++++++++++++++++----------------------- po/id.po | 450 +++++++++++++++++++++++++++++----------------------- po/it.po | 450 +++++++++++++++++++++++++++++----------------------- po/pl.po | 450 +++++++++++++++++++++++++++++----------------------- po/zh_CN.po | 449 ++++++++++++++++++++++++++++----------------------- 8 files changed, 1731 insertions(+), 1409 deletions(-) commit 3e05d2df8de5ded545393994aff29ef9a8f7a0c5 Author: Emmanuele Bassi Date: Mon Jan 24 10:23:36 2011 +0000 Release Clutter 1.5.14 (1.6.0rc1) NEWS | 42 ++++++++++++++++++++++++++++++++++-------- configure.ac | 2 +- 2 files changed, 35 insertions(+), 9 deletions(-) commit 79b936aa4a829ffd5b5677da228425c4e0c46623 Author: Emmanuele Bassi Date: Fri Jan 21 20:46:09 2011 +0000 Update the NEWS file NEWS | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) commit 6bffd407fd4f4d4d5b5c5f5ef6d9b43c44b7fe03 Author: Bastian Winkler Date: Fri Jan 21 14:50:44 2011 +0100 model: Add support to define rows in ClutterScript This adds a custom "rows" property, that allows to define the rows of a ClutterModel. A single row can either an array of all columns or an object with column-name : column-value pairs. http://bugzilla.clutter-project.org/show_bug.cgi?id=2528 clutter/clutter-model.c | 210 ++++++++++++++++++++++++++++++------- tests/conform/test-model.c | 35 +++++++ tests/data/test-script-model.json | 8 ++ 3 files changed, 218 insertions(+), 35 deletions(-) commit 95b3a718ef5c08f058e2bf0e3e56df390408821f Author: Bastian Winkler Date: Wed Jan 12 13:09:52 2011 +0100 script-parser: Allow initialized GValue arg in clutter_script_parse_node Allow to 'abuse' the clutter_script_parse_node function by calling it with an initialized GValue instead of a valid GParamSpec argument to obtain the correct typed value from the json node. http://bugzilla.clutter-project.org/show_bug.cgi?id=2528 clutter/clutter-script-parser.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) commit 8e1c1909f80b4513154a3dfd8980160f94ec036f Author: Bastian Winkler Date: Wed Jan 12 12:54:43 2011 +0100 model: Change the column argument type to gint for clutter_model_set_sort Like in clutter_model_set_sorting_column this function should take a gint column, otherwise GObject-Introspection won't allow to pass a NULL sorting function. http://bugzilla.clutter-project.org/show_bug.cgi?id=2527 clutter/clutter-model.c | 2 +- clutter/clutter-model.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 8a6986089b79f9d6cbb7012d12087d2d2e42526c Author: Bastian Winkler Date: Sat Jan 22 12:51:31 2011 +0100 model: Fix some GObject-Introspection annotations http://bugzilla.clutter-project.org/show_bug.cgi?id=2526 clutter/clutter-model.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 86c786aaad28e439146af4a93f787163e96bab6d Merge: 8a58677 b7d26b2 Author: Emmanuele Bassi Date: Fri Jan 21 20:22:32 2011 +0000 Merge branch 'xi2' * xi2: (41 commits) test-devices: Actually print the axis data device-manager/xi2: Sync the stage of source devices event: Clean up clutter_event_copy() device: unset the axes array pointer when resetting device-manager/xi2: Fix device hotplugging glx: Clean up GLX implementation device/x11: Store min/max keycode in the XI device class x11: Hide all private symbols docs: More documentation fixes for InputDevice */event: Never manipulate the event queue directly win32: Update DeviceManager device creation device: Allow enabling/disabling non-master devices backend/eglx: Add newly created stages to the translators device: Add more doc annotations device: Use a double for translate_axis() argument test-devices: Clean up and show axes data event: Fix up clutter_event_copy() device/xi2: Translate the axis data after setting devices device: Add more accessors for properties docs: Update API reference ... commit 8a5867799c5809854dfac9c2b7e704bcc6e9455b Author: Robert Bragg Date: Fri Jan 21 18:43:35 2011 +0000 cogl: call _cogl_texture_init for x11 tfp When we added the texture->framebuffers member a _cogl_texture_init funciton was added to initialize the list of framebuffers associated with a texture to NULL. All the backends were updated except the x11 tfp backend. This was causing crashes in test-pixmap. clutter/cogl/cogl/winsys/cogl-texture-pixmap-x11.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1973168bbaa133215df73eaeeef25c6dcc0d6a07 Author: Robert Bragg Date: Fri Jan 21 17:38:14 2011 +0000 journal: start uprof flush timer after flushing fb deps This avoids us recursively starting the _cogl_journal_flush uprof timer by only starting it after flushing the journals of dependency framebuffers. clutter/cogl/cogl/cogl-journal.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit f9d4846d6acc493b9fd52d627a82a0302d507a17 Author: Robert Bragg Date: Fri Jan 21 17:28:34 2011 +0000 cogl: make sure to init ctx->framebuffers This makes sure to initialize ctx->framebuffers to NULL otherwise we can get apps crashing when they create their first framebuffer. clutter/cogl/cogl/cogl-context.c | 2 ++ 1 file changed, 2 insertions(+) commit 326c51630492ab13a2e584f9efb0dc5673966c0e Author: Robert Bragg Date: Thu Jan 20 19:31:53 2011 +0000 cogl: rename CoglVertexAttribute CoglAttribute This is part of a broader cleanup of some of the experimental Cogl API. One of the reasons for this particular rename is to reduce the verbosity of using the API. Another reason is that CoglVertexArray is going to be renamed CoglAttributeBuffer and we want to help emphasize the relationship between CoglAttributes and CoglAttributeBuffers. clutter/cogl/cogl/Makefile.am | 6 +- clutter/cogl/cogl/cogl-attribute-private.h | 103 ++ clutter/cogl/cogl/cogl-attribute.c | 1272 ++++++++++++++++++++ clutter/cogl/cogl/cogl-attribute.h | 182 +++ clutter/cogl/cogl/cogl-context.c | 2 +- clutter/cogl/cogl/cogl-index-array.c | 4 +- clutter/cogl/cogl/cogl-journal.c | 117 +- clutter/cogl/cogl/cogl-path-private.h | 4 +- .../cogl/cogl/cogl-pipeline-progend-glsl-private.h | 2 +- clutter/cogl/cogl/cogl-primitive.c | 309 +++-- clutter/cogl/cogl/cogl-primitive.h | 26 +- clutter/cogl/cogl/cogl-primitives.c | 84 +- clutter/cogl/cogl/cogl-types.h | 22 + clutter/cogl/cogl/cogl-vertex-attribute-private.h | 103 -- clutter/cogl/cogl/cogl-vertex-attribute.c | 1272 -------------------- clutter/cogl/cogl/cogl-vertex-attribute.h | 205 ---- clutter/cogl/cogl/cogl-vertex-buffer-private.h | 4 +- clutter/cogl/cogl/cogl-vertex-buffer.c | 18 +- clutter/cogl/cogl/cogl-vertex-buffer.h | 22 - clutter/cogl/cogl/cogl.c | 4 +- clutter/cogl/cogl/cogl.h | 2 +- clutter/cogl/cogl/cogl2-path.c | 28 +- doc/reference/cogl-2.0/cogl-docs.xml.in | 2 +- 23 files changed, 1873 insertions(+), 1920 deletions(-) commit c4bafb48b6e4a3b35a13252e5ade500c01c4a392 Author: Robert Bragg Date: Thu Jan 20 18:51:24 2011 +0000 docs: Adds bitmap section to cogl reference manual This adds an include for the cogl-bitmap section to cogl-docs.xml.in doc/reference/cogl/cogl-docs.xml.in | 1 + 1 file changed, 1 insertion(+) commit b3775a75640ae2be0cef489c69d7e4213f170cb9 Author: Robert Bragg Date: Thu Jan 20 12:29:49 2011 +0000 cogl: s/Cogl*Vertex/CoglVertex*/ We have a bunch of experimental convenience functions like cogl_primitive_p2/p2t2 that have corresponding vertex structures but it seemed a bit odd to have the vertex annotation e.g. "P2T2" be an infix of the type like CoglP2T2Vertex instead of be a postfix like CoglVertexP2T2. This switches them all to follow the postfix naming style. clutter/cogl/cogl/cogl-primitive.c | 96 ++++++++++++++--------------- clutter/cogl/cogl/cogl-primitive.h | 80 ++++++++++++------------ clutter/cogl/cogl/cogl-vertex-attribute.c | 20 +++--- tests/conform/test-cogl-primitive.c | 16 ++--- 4 files changed, 106 insertions(+), 106 deletions(-) commit 3f9e8591671d0c81d5d4034f0895bca3f98cb4c0 Author: Robert Bragg Date: Thu Jan 20 18:30:55 2011 +0000 test-picking: Don't manually paint the stage Instead of using an idle handler that synchonously paints the stage by manually calling clutter_actor_paint (stage) the test now uses an idle handler that repeatedly queues a redraw on the stage. do_events is now called from a "paint" signal handler for the stage, and instead of manually determining the fps the test now uses CLUTTER_SHOW_FPS=1 instead. tests/micro-bench/test-picking.c | 38 +++++++++++++++----------------------- 1 file changed, 15 insertions(+), 23 deletions(-) commit 9a663d8e4106e43f8f214b7fdded555ee408cf28 Author: Robert Bragg Date: Thu Jan 20 14:41:51 2011 +0000 debug: Adds a COGL_DEBUG=disable-fast-read-pixel option COGL_DEBUG=disable-fast-read-pixel can be used to disable the optimization for reading a single pixel colour back by looking at the geometry in the journal and not involving the GPU. With this disabled we will always flush the journal, rendering to the framebuffer and then use glReadPixels to get the result. clutter/cogl/cogl/cogl-debug-options.h | 7 +++- clutter/cogl/cogl/cogl-debug.c | 3 +- clutter/cogl/cogl/cogl-debug.h | 61 ++++++++++++++++---------------- clutter/cogl/cogl/cogl-framebuffer.c | 3 ++ clutter/cogl/cogl/cogl-journal.c | 3 ++ 5 files changed, 45 insertions(+), 32 deletions(-) commit 1bdb0e6e98db719c8652c85fc234c21437ad071a Author: Robert Bragg Date: Wed Jan 12 22:12:41 2011 +0000 cogl: Implements a software only read-pixel fast-path This adds a transparent optimization to cogl_read_pixels for when a single pixel is being read back and it happens that all the geometry of the current frame is still available in the framebuffer's associated journal. The intention is to indirectly optimize Clutter's render based picking mechanism in such a way that the 99% of cases where scenes are comprised of trivial quad primitives that can easily be intersected we can avoid the latency of kicking a GPU render and blocking for the result when we know we can calculate the result manually on the CPU probably faster than we could even kick a render. A nice property of this solution is that it maintains all the flexibility of the render based picking provided by Clutter and it can gracefully fall back to GPU rendering if actors are drawn using anything more complex than a quad for their geometry. It seems worth noting that there is a limitation to the extensibility of this approach in that it can only optimize picking a against geometry that passes through Cogl's journal which isn't something Clutter directly controls. For now though this really doesn't matter since basically all apps should end up hitting this fast-path. The current idea to address this longer term would be a pick2 vfunc for ClutterActor that can support geometry and render based input regions of actors and move this optimization up into Clutter instead. Note: currently we don't have a primitive count threshold to consider that there could be scenes with enough geometry for us to compensate for the cost of kicking a render and determine a result more efficiently by utilizing the GPU. We don't currently expect this to be common though. Note: in the future it could still be interesting to revive something like the wip/async-pbo-picking branch to provide an asynchronous read-pixels based optimization for Clutter picking in cases where more complex input regions that necessitate rendering are in use or if we do add a threshold for rendering as mentioned above. clutter/clutter-main.c | 3 - clutter/cogl/cogl/cogl-framebuffer-private.h | 27 + clutter/cogl/cogl/cogl-framebuffer.c | 196 ++++++- clutter/cogl/cogl/cogl-journal-private.h | 20 + clutter/cogl/cogl/cogl-journal.c | 710 +++++++++++++++++++------- clutter/cogl/cogl/cogl-vertex-attribute.c | 7 + clutter/cogl/cogl/cogl.c | 20 +- 7 files changed, 800 insertions(+), 183 deletions(-) commit e289e85397cb52f421e64e253e1af2628909f424 Author: Robert Bragg Date: Tue Jan 18 16:37:01 2011 +0000 matrix: fix transform/project_points() APIs Both cogl_matrix_transform_points and _project_points take points_in and points_out arguments and explicitly allow pointing to the same array (i.e. to transform in-place) The implementation of the various internal transform functions though were not handling this possability and so it was possible the reference partially transformed vertex values as if they were original input values leading to incorrect results. This patch ensures we take a temporary copy of the current input point when transforming. clutter/cogl/cogl/cogl-matrix.c | 136 +++++++++++++++++++-------------------- 1 file changed, 68 insertions(+), 68 deletions(-) commit 23ed01d4e933da803bb7bbe4d0439de0824532c1 Author: Robert Bragg Date: Thu Jan 13 14:29:46 2011 +0000 cogl: Adds _cogl_util_point_in_polygon API This adds a utility function that can determine if a given point intersects an arbitrary polygon, by counting how many edges a "semi-infinite" horizontal ray crosses from that point. The plan is to use this for a software based read-pixel fast path that avoids using the GPU to rasterize journaled primitives and can instead intersect a point being read with quads in the journal to determine the correct color. clutter/cogl/cogl/Makefile.am | 2 + clutter/cogl/cogl/cogl-point-in-poly-private.h | 40 ++++++++++++++ clutter/cogl/cogl/cogl-point-in-poly.c | 69 ++++++++++++++++++++++++ 3 files changed, 111 insertions(+) commit 142b229c5c2684f94af32358d1401b61aa3019aa Author: Robert Bragg Date: Wed Jan 12 22:06:58 2011 +0000 cogl: Adds _cogl_swap_buffers_notify for clutter backends This adds a stop-gap mechanism for Cogl to know when the window system is requested to present the current backbuffer to the frontbuffer by adding a _cogl_swap_buffers_notify function that backends are now expected to call right after issuing the equivalent request to OpenGL vie the platforms OpenGL binding layer. This (blindly) updates all the backends to call this new function. For now Cogl doesn't do anything with the notification but the intention is to use it as part of a planned read-pixel optimization which will need to reset some state at the start of each new frame. clutter/cogl/cogl/cogl-framebuffer-private.h | 3 +++ clutter/cogl/cogl/cogl-framebuffer.c | 5 +++++ clutter/cogl/cogl/cogl.c | 10 ++++++++++ clutter/cogl/cogl/cogl.h | 3 +++ clutter/egl/clutter-stage-egl.c | 1 + clutter/fruity/clutter-backend-fruity.c | 1 + clutter/glx/clutter-stage-glx.c | 1 + clutter/osx/clutter-stage-osx.c | 1 + clutter/wayland/clutter-stage-wayland.c | 2 ++ clutter/win32/clutter-backend-win32.c | 5 ++++- 10 files changed, 31 insertions(+), 1 deletion(-) commit e150f474b3e9e58565dc894b4ae9234406d90675 Author: Robert Bragg Date: Wed Jan 12 19:30:30 2011 +0000 clip: rename get_clip_stack + add framebuffer_get_stack Instead of having _cogl_get/set_clip stack which reference the global CoglContext this instead makes those into CoglClipState method functions named _cogl_clip_state_get/set_stack that take an explicit pointer to a CoglClipState. This also adds _cogl_framebuffer_get/set_clip_stack convenience functions that avoid having to first get the ClipState from a framebuffer then the stack from that - so we can maintain the convenience of _cogl_get_clip_stack. clutter/cogl/cogl/cogl-clip-state.c | 21 +++------------------ clutter/cogl/cogl/cogl-clip-state.h | 21 +++------------------ clutter/cogl/cogl/cogl-framebuffer-private.h | 26 ++++++++++++++++++++++++++ clutter/cogl/cogl/cogl-framebuffer.c | 17 +++++++++++++++++ clutter/cogl/cogl/cogl-journal.c | 5 ++++- 5 files changed, 53 insertions(+), 37 deletions(-) commit 179dc9b7d1d9d14227c7f4eef241faf2d1affda0 Author: Robert Bragg Date: Wed Jan 12 19:13:45 2011 +0000 clip-stack: Adds _cogl_clip_stack_get_bounds API This adds an internal function to be able to query the screen space bounding box of the current clip entries contained in a given CoglClipStack. This bounding box which is cheap to determine can be useful to know the largest extents that might be updated while drawing with this clip stack. For example the plan is to use this as part of an optimized read-pixel path handled on the CPU which will need to track the currently valid extents of the last call to cogl_clear() clutter/cogl/cogl/cogl-clip-stack.c | 45 +++++++++++++++++++++++++---------- clutter/cogl/cogl/cogl-clip-stack.h | 7 ++++++ 2 files changed, 39 insertions(+), 13 deletions(-) commit f834596fd42b26d471a80cfec08c0d6e8c53f39a Author: Robert Bragg Date: Thu Jan 6 13:25:45 2011 +0000 journal: Support per-framebuffer journals Instead of having a single journal per context, we now have a CoglJournal object for each CoglFramebuffer. This means we now don't have to flush the journal when switching/pushing/popping between different framebuffers so for example a Clutter scene that involves some ClutterEffect actors that transiently redirect to an FBO can still be batched. This also allows us to track state in the journal that relates to the current frame of its associated framebuffer which we'll need for our optimization for using the CPU to handle reading a single pixel back from a framebuffer when we know the whole scene is currently comprised of simple rectangles in a journal. clutter/cogl/cogl/cogl-atlas-texture.c | 22 ++-- clutter/cogl/cogl/cogl-clip-state.c | 5 +- clutter/cogl/cogl/cogl-context.c | 6 -- clutter/cogl/cogl/cogl-context.h | 12 +-- clutter/cogl/cogl/cogl-framebuffer-private.h | 23 +++++ clutter/cogl/cogl/cogl-framebuffer.c | 111 +++++++++++++++++--- clutter/cogl/cogl/cogl-journal-private.h | 19 +++- clutter/cogl/cogl/cogl-journal.c | 140 +++++++++++++++++--------- clutter/cogl/cogl/cogl-pipeline-private.h | 3 + clutter/cogl/cogl/cogl-pipeline.c | 7 +- clutter/cogl/cogl/cogl-primitives.c | 9 +- clutter/cogl/cogl/cogl-sub-texture.c | 3 +- clutter/cogl/cogl/cogl-texture-2d-sliced.c | 2 +- clutter/cogl/cogl/cogl-texture-2d.c | 2 +- clutter/cogl/cogl/cogl-texture-3d.c | 2 +- clutter/cogl/cogl/cogl-texture-private.h | 15 +++ clutter/cogl/cogl/cogl-texture-rectangle.c | 2 +- clutter/cogl/cogl/cogl-texture.c | 58 +++++++++++ clutter/cogl/cogl/cogl-vertex-attribute.c | 7 +- clutter/cogl/cogl/cogl.c | 20 +++- clutter/cogl/cogl/cogl2-path.c | 8 +- 21 files changed, 375 insertions(+), 101 deletions(-) commit 385e0f84c6179a30f9031aba974131e1cf3e6a4e Author: Robert Bragg Date: Wed Jan 12 20:37:53 2011 +0000 cogl-object: Adds an internal _cogl_object_set_user_data This adds an internal alternative to cogl_object_set_user_data that also passes an instance pointer to destroy notify callbacks. When setting private data on a CoglObject it's often desirable to know the instance being destroyed when we are being notified to free the private data due to the object being freed. The typical solution to this is to track a pointer to the instance in the private data itself so it can be identified but that usually requires an extra micro allocation for the private data that could have been avoided if only the callback were given an instance pointer. The new internal _cogl_object_set_user_data passes the instance pointer as a second argument which means it is ABI compatible for us to layer the public version on top of this internal function. clutter/cogl/cogl/cogl-object-private.h | 21 ++++++++++++++++++++- clutter/cogl/cogl/cogl-object.c | 24 +++++++++++++++++------- 2 files changed, 37 insertions(+), 8 deletions(-) commit 131578c13aeeb53d99d7c63a0b2ddaded23524fc Author: Robert Bragg Date: Wed Jan 5 15:30:04 2011 +0000 framebuffer: Move clear code to cogl-framebuffer.c This moves the implementation of cogl_clear into cogl-framebuffer.c as two new internal functions _cogl_framebuffer_clear and _cogl_framebuffer_clear4f. It's not clear if this is what the API will look like as we make more of the CoglFramebuffer API public due to the limitations of using flags to identify buffers when framebuffers may contain any number of ancillary buffers but conceptually it makes some sense to tie the operation of clearing a color buffer to a framebuffer. The short term intention is to enable tracking the current clear color as a property of the framebuffer as part of an optimization for reading back single pixels when the geometry is simple enough that we can compute the result quickly on the CPU. (If the point doesn't intersect any geometry we'll need to return the last clear color.) clutter/cogl/cogl/cogl-framebuffer-private.h | 20 +++++ clutter/cogl/cogl/cogl-framebuffer.c | 103 ++++++++++++++++++++++++++ clutter/cogl/cogl/cogl.c | 66 +---------------- clutter/cogl/cogl/cogl2-path.c | 4 +- 4 files changed, 129 insertions(+), 64 deletions(-) commit b7d26b2d02729b2d5eeb1650ca4e89a723afc1c7 Author: Emmanuele Bassi Date: Fri Jan 21 15:27:56 2011 +0000 test-devices: Actually print the axis data Returning in an if() block whose condition we assume to be true doesn't play nicely with having statements after the block. Let's fix that. tests/interactive/test-devices.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) commit e46571d63911df23cb25fb0b3fcfe5e86f50d81b Author: Emmanuele Bassi Date: Fri Jan 21 15:26:52 2011 +0000 device-manager/xi2: Sync the stage of source devices Keep the slave devices in sync with their master, so that we don't ignore their events because they lack the stage pointer. clutter/x11/clutter-device-manager-xi2.c | 51 ++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 17 deletions(-) commit 516366d7691128e9f2138781bcc144cd628b110f Author: Emmanuele Bassi Date: Fri Jan 21 15:14:11 2011 +0000 event: Clean up clutter_event_copy() Try to avoid duplication of variables and blocks. clutter/clutter-event.c | 46 +++++++++++++++++++++------------------------- 1 file changed, 21 insertions(+), 25 deletions(-) commit 7a339d1663b94e4cbc07ffa8a8c3bf0a47d84cae Author: Emmanuele Bassi Date: Fri Jan 21 14:12:19 2011 +0000 device: unset the axes array pointer when resetting Otherwise we'll get a nice realloc() error from glibc. clutter/clutter-input-device.c | 2 ++ 1 file changed, 2 insertions(+) commit 4ab8a3f0c16b82d4f223de869e1b87279dcff272 Author: Emmanuele Bassi Date: Fri Jan 21 11:43:00 2011 +0000 stage: Do not create the default stage on stage.is_default() Use the stage manager to see if a default stage was effectively set, otherwise we end up creating a default stage when destroying a non-default one. clutter/clutter-stage.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) commit 0e993469155516dde673292bafe72d1c8308e27f Author: Emmanuele Bassi Date: Fri Jan 21 11:41:36 2011 +0000 device-manager/xi2: Fix device hotplugging Hierarchy and Device changed events come through with the X window set to be the root window, not the stage window. We need to whitelist them so that we can actually support hotplugging and device changes. clutter/x11/clutter-device-manager-xi2.c | 32 ++++++++---- tests/interactive/test-devices.c | 83 ++++++++++++++++++++++++++---- 2 files changed, 95 insertions(+), 20 deletions(-) commit 7514f5fe92844a57d33a4811fd20687bbb391c8b Author: Emmanuele Bassi Date: Fri Jan 21 10:49:12 2011 +0000 glx: Clean up GLX implementation Like commit a277b4091a3fa09a39cf001809c3048eb27f3952, but targeted at the GLX backend. clutter/glx/clutter-backend-glx.c | 22 +++++++------- clutter/glx/clutter-stage-glx.c | 57 +++++++++++++++++-------------------- clutter/glx/clutter-stage-glx.h | 2 +- 3 files changed, 38 insertions(+), 43 deletions(-) commit 6da51f6ed379f531bee72b688366dc734082a573 Author: Emmanuele Bassi Date: Fri Jan 21 10:24:34 2011 +0000 device/x11: Store min/max keycode in the XI device class The generic device class shouldn't have the minimum and maximum keycode, since no other input backend provides those. clutter/clutter-device-manager-private.h | 8 ++------ clutter/clutter-input-device.c | 18 +++--------------- clutter/x11/clutter-device-manager-core-x11.c | 10 +++++++--- clutter/x11/clutter-device-manager-xi2.c | 6 ++---- clutter/x11/clutter-input-device-core-x11.c | 9 ++++++--- 5 files changed, 20 insertions(+), 31 deletions(-) commit a277b4091a3fa09a39cf001809c3048eb27f3952 Author: Emmanuele Bassi Date: Thu Jan 20 15:39:28 2011 +0000 x11: Hide all private symbols The x11 backend exposes a lot of symbols that are meant to only be used when implementing a subclassed backend, like the glx and eglx ones. The uninstalled headers are also filled with cruft declarations of functions long since removed. Let's try to clean up this mess. clutter/egl/clutter-backend-egl.c | 13 +++++++++---- clutter/glx/clutter-backend-glx.c | 19 ++++++++++++++----- clutter/x11/clutter-backend-x11.c | 28 ++++++++++------------------ clutter/x11/clutter-backend-x11.h | 31 +++---------------------------- clutter/x11/clutter-keymap-x11.c | 4 ++-- clutter/x11/clutter-keymap-x11.h | 4 ++-- clutter/x11/clutter-stage-x11.c | 12 +++++++----- clutter/x11/clutter-stage-x11.h | 13 ++----------- 8 files changed, 49 insertions(+), 75 deletions(-) commit 89467abae591fb07afed507323f086264d73e68d Author: Emmanuele Bassi Date: Wed Jan 19 17:03:27 2011 +0000 docs: More documentation fixes for InputDevice clutter/clutter-input-device.c | 107 +++++++++++++++++++++++----- doc/reference/clutter/clutter-sections.txt | 10 ++- 2 files changed, 95 insertions(+), 22 deletions(-) commit 0f56abf569d524bd42d4a3cdc6a5321a3de2b7f9 Author: Emmanuele Bassi Date: Wed Jan 19 16:34:49 2011 +0000 */event: Never manipulate the event queue directly Always use _clutter_event_push() instead. clutter/egl/clutter-event-tslib.c | 2 +- clutter/evdev/clutter-device-manager-evdev.c | 5 +---- clutter/wayland/clutter-input-device-wayland.c | 26 +++++++----------------- clutter/win32/clutter-event-win32.c | 6 +----- 4 files changed, 10 insertions(+), 29 deletions(-) commit 400ecdfc81d19ab27cbc7a4f416b6fc109556ebf Author: Emmanuele Bassi Date: Wed Jan 19 16:34:37 2011 +0000 win32: Update DeviceManager device creation clutter/win32/clutter-device-manager-win32.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) commit 73cf6bd52c282acc1cdb67724d2b55d3f822f7ef Author: Emmanuele Bassi Date: Wed Jan 19 16:23:45 2011 +0000 device: Allow enabling/disabling non-master devices Slave and floating devices should always be disabled, and not deliver events to the scene. It is up to the user to enable non-master devices and handle events coming from them. ClutterInputDevice gets a new :enabled property, defaulting to FALSE; when a device manager creates a new device it has to set it to TRUE if the :device-mode property is set to CLUTTER_INPUT_MODE_MASTER. The main event queue entry point, _clutter_event_push(), will automatically discard events coming from disabled devices. clutter/clutter-device-manager-private.h | 3 +- clutter/clutter-event.c | 9 ++++ clutter/clutter-input-device.c | 66 +++++++++++++++++++++++++ clutter/clutter-input-device.h | 3 ++ clutter/x11/clutter-device-manager-core-x11.c | 3 ++ clutter/x11/clutter-device-manager-xi2.c | 10 +++- tests/interactive/test-devices.c | 10 +++- 7 files changed, 100 insertions(+), 4 deletions(-) commit 137f7d42a8db40a85ae95b10d9ed0fa895f48b0a Author: Emmanuele Bassi Date: Wed Jan 19 15:17:34 2011 +0000 backend/eglx: Add newly created stages to the translators The events directed to the stage should be translated by the stage. clutter/egl/clutter-backend-egl.c | 4 ++++ 1 file changed, 4 insertions(+) commit d3ed3d3a7b3950160a3351d54e766628fd916ad8 Author: Emmanuele Bassi Date: Wed Jan 19 13:54:27 2011 +0000 device: Add more doc annotations Even for internal API. clutter/clutter-input-device.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) commit 50e52f550a14e86a689673ce898970337cc46e8b Author: Emmanuele Bassi Date: Wed Jan 19 13:53:20 2011 +0000 device: Use a double for translate_axis() argument While XI1 has axis data in events exposed as integers, XI2 uses double precision floating point values. clutter/clutter-device-manager-private.h | 2 +- clutter/clutter-input-device.c | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) commit f54044f7e45fe37538187ca06f7d378ae8d64800 Author: Emmanuele Bassi Date: Wed Jan 19 13:52:33 2011 +0000 test-devices: Clean up and show axes data tests/interactive/test-devices.c | 106 +++++++++++++++++++++++++++++++++----- 1 file changed, 92 insertions(+), 14 deletions(-) commit d078fe09301db384b7a465b86ad83dab860576b4 Author: Emmanuele Bassi Date: Tue Jan 18 22:31:14 2011 +0000 event: Fix up clutter_event_copy() We need to copy the scroll axis data, and we need to copy the private Event data from the source event to the target event structure. clutter/clutter-event.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) commit 405e611279321ebe293e02b4507899355f49cc64 Author: Emmanuele Bassi Date: Tue Jan 18 22:30:21 2011 +0000 device/xi2: Translate the axis data after setting devices We need the devices (source and virtual) to be set before translating the axis data from XI2 to the Clutter event. clutter/x11/clutter-device-manager-xi2.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) commit dd5f6ca7e1b5042beca6363109424565a7d8223b Author: Emmanuele Bassi Date: Tue Jan 18 17:33:22 2011 +0000 device: Add more accessors for properties Allow using real accessor methods for getting the ClutterInputDevice properties set on construction. clutter/clutter-input-device.c | 38 ++++++++++++++++++++++++++++ clutter/clutter-input-device.h | 2 ++ doc/reference/clutter/clutter-sections.txt | 2 ++ 3 files changed, 42 insertions(+) commit ad06f1b20fcac9167f456ba21674d8f7a2c0cd3b Author: Emmanuele Bassi Date: Tue Jan 18 16:57:14 2011 +0000 docs: Update API reference doc/reference/clutter/clutter-sections.txt | 2 ++ 1 file changed, 2 insertions(+) commit 333ca35ceca739388be36cf48514fcb68f3b7aef Author: Emmanuele Bassi Date: Tue Jan 18 16:55:14 2011 +0000 device: Add get_axis_value() We need a convenience function for extracting the value of a specific axis type out of the array of axis values attached to events. clutter/clutter-input-device.c | 47 ++++++++++++++++++++++++++++++++++++++++ clutter/clutter-input-device.h | 4 ++++ 2 files changed, 51 insertions(+) commit d805237c313f5e2ce85b93fd167569c25b702163 Author: Emmanuele Bassi Date: Tue Jan 18 16:54:12 2011 +0000 event: Add accessor for the axes field CLUTTER_BUTTON_* and CLUTTER_MOTION event types have axes data attached to them, so we want to expose a common ClutterEvent method for extracting that data. clutter/clutter-event.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++ clutter/clutter-event.h | 2 ++ 2 files changed, 59 insertions(+) commit 431200f40dad93bcaeff76ad34f3fdd431d5a8f2 Author: Emmanuele Bassi Date: Tue Jan 18 16:13:26 2011 +0000 device: Add keys and axes accessors Allow retrieving the number of keys and axes, since we provide the API to iterate over them both. clutter/clutter-device-manager-private.h | 2 -- clutter/clutter-input-device.c | 30 +++++++++++++++++++++------ clutter/clutter-input-device.h | 3 +++ clutter/x11/clutter-device-manager-xi2.c | 2 +- clutter/x11/clutter-input-device-core-x11.c | 3 +-- doc/reference/clutter/clutter-sections.txt | 10 +++++++-- 6 files changed, 37 insertions(+), 13 deletions(-) commit b662a070f2c5ebe2af479fd0290745ad923b3c42 Author: Emmanuele Bassi Date: Tue Jan 18 15:42:02 2011 +0000 docs: Update dependencies in README README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 0a869e0718331737a1126da861222f7b0162fcce Author: Emmanuele Bassi Date: Tue Jan 18 14:16:11 2011 +0000 egl/x11: Defer X11-specific code to the X11 backend The ClutterStageX11 implementation does most of the heavy lifting, so subclasses like ClutterStageGLX and ClutterStageEGL do not need to handle things like creating the stage Window and selecting events; just chaining up and using the internal API will suffice. clutter/egl/clutter-stage-egl.c | 108 +++------------------------------------ 1 file changed, 8 insertions(+), 100 deletions(-) commit a3102a777ead15f7ba4b671bd25fd642762fec57 Author: Emmanuele Bassi Date: Tue Jan 18 14:09:04 2011 +0000 docs: Fill out documentation for new symbols clutter/clutter-event.c | 82 ++++++++++++++++++++++++++++ clutter/clutter-event.h | 1 + clutter/clutter-input-device.c | 37 +++++++++++++ clutter/clutter-input-device.h | 29 ++++++++++ clutter/clutter-private.h | 4 ++ clutter/x11/clutter-device-manager-xi2.c | 39 +++++++++---- doc/reference/clutter/Makefile.am | 1 + doc/reference/clutter/clutter-sections.txt | 12 +++- 8 files changed, 194 insertions(+), 11 deletions(-) commit fa3c5a28a7b82d817ae7b83a058158a101e1e4b0 Author: Emmanuele Bassi Date: Tue Jan 18 13:15:20 2011 +0000 backend/x11: Allow querying xinput support Undeprecate the XInput-related X11 API: since we don't enable XI support by default we still need to ask for it, and see if we have it after the backend initialization sequence. clutter/x11/clutter-backend-x11.c | 14 ++++++++------ clutter/x11/clutter-backend-x11.h | 5 +---- 2 files changed, 9 insertions(+), 10 deletions(-) commit c8cc03f8a7b13db01a71c4a597c05a7b94ba664c Author: Emmanuele Bassi Date: Tue Jan 18 13:08:09 2011 +0000 event/x11: Epic clean up Event translation is now done where it belongs: we don't need a massive switch in a file with direct access to private structure members. So long, event_translate(); and thanks for all the fish. clutter/x11/clutter-event-x11.c | 869 --------------------------------------- 1 file changed, 869 deletions(-) commit c044e44dc798a4afede519abe430ff6a20bd745d Author: Emmanuele Bassi Date: Tue Jan 18 13:07:36 2011 +0000 device/x11: Use similar core for axis translation as XI2 clutter/x11/clutter-input-device-core-x11.c | 39 +++++++++++++-------------- 1 file changed, 19 insertions(+), 20 deletions(-) commit c9c6236d3786ed3f69f170b02523e08a91b7f644 Author: Emmanuele Bassi Date: Tue Jan 18 13:05:46 2011 +0000 stage/x11: Do not check a boolean for equality Booleans should only be used like direct conditions, never as comparisons with TRUE or FALSE. clutter/x11/clutter-stage-x11.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) commit ee15d0d2d01a02e426cbb8c340738e4f8411fc4f Author: Emmanuele Bassi Date: Tue Jan 18 13:05:17 2011 +0000 Add copyright and licensing blurbs clutter/x11/clutter-input-device-core-x11.h | 23 +++++++++++++++++++++++ clutter/x11/clutter-input-device-xi2.c | 23 +++++++++++++++++++++++ clutter/x11/clutter-input-device-xi2.h | 23 +++++++++++++++++++++++ 3 files changed, 69 insertions(+) commit 2cb0077f7d7260109f0974d260cb4ed63ade6e9e Author: Emmanuele Bassi Date: Tue Jan 18 13:03:07 2011 +0000 device/xi2: Implement get_core_device() We ask XI2 to get the client pointer for CLUTTER_POINTER_DEVICE, and we use the attached keyboard device for CLUTTER_KEYBOARD_DEVICE. For everything else, we return NULL. clutter/x11/clutter-device-manager-xi2.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) commit 9c48486d7ac73aa55b69a70cf1ef7009a0af2a09 Author: Emmanuele Bassi Date: Tue Jan 18 13:02:15 2011 +0000 device/xi2: Remove the ::remove implementation Removing a device is only internal API, and we already have a function for that: we don't need to implement the DeviceManager virtual as well. clutter/x11/clutter-device-manager-xi2.c | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) commit 0075c45ca49569988fb6b8f1b4a60cd4e77be287 Author: Emmanuele Bassi Date: Tue Jan 18 13:01:27 2011 +0000 device/xi2: Blow the cached devices list Every time we add or remove a device we should clear the cached list that we return in get_devices(), so that it gets repopulated. clutter/x11/clutter-device-manager-xi2.c | 8 ++++++++ 1 file changed, 8 insertions(+) commit de93f721c1314321bf78acec2f50d5a481210ec9 Author: Emmanuele Bassi Date: Tue Jan 18 12:59:49 2011 +0000 Clean up the copyright and licensing blurbs clutter/glx/clutter-stage-glx.c | 9 +++++---- clutter/x11/clutter-device-manager-core-x11.c | 2 +- clutter/x11/clutter-device-manager-core-x11.h | 2 +- clutter/x11/clutter-device-manager-xi2.c | 2 +- clutter/x11/clutter-device-manager-xi2.h | 2 +- clutter/x11/clutter-input-device-core-x11.c | 23 +++++++++++++++++++++++ 6 files changed, 32 insertions(+), 8 deletions(-) commit 7c25b063aafc21527413106dca6db3fcb50bd5ad Author: Emmanuele Bassi Date: Tue Jan 18 12:57:50 2011 +0000 x11: Use XI2 API only if we support it XIQueryVersion() is XI2 API. clutter/x11/clutter-backend-x11.c | 43 +++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 11 deletions(-) commit caf359d8c9a110797e9ad64a7cb3600b7b964275 Author: Emmanuele Bassi Date: Tue Jan 18 12:57:12 2011 +0000 input-device: Add documentation clutter/clutter-input-device.c | 48 +++++++++++++++++++++++++++++++++++++++- clutter/clutter-input-device.h | 2 +- 2 files changed, 48 insertions(+), 2 deletions(-) commit 342cdd25756b37745bfd1725d78f6f670f77bee0 Author: Emmanuele Bassi Date: Mon Jan 17 17:01:58 2011 +0000 input-device: Move select_stage_events() to a vfunc Don't use a signal, use a virtual function. clutter/clutter-device-manager-private.h | 4 ++++ clutter/clutter-input-device.c | 28 +++++---------------------- clutter/x11/clutter-input-device-core-x11.c | 5 ++--- clutter/x11/clutter-input-device-xi2.c | 5 ++--- 4 files changed, 13 insertions(+), 29 deletions(-) commit 2777c52f2759513c8e4b66e474ed2da587bd5de5 Author: Emmanuele Bassi Date: Mon Jan 17 16:56:07 2011 +0000 input-device: Make ClutterInputDeviceClass private We keep the symbol in the public header, but the definition is now private. You could not sub-class InputDevice anyway, without the instance structure, and the lack of padding in the class made actually implementing devices in backends really hard. clutter/clutter-device-manager-private.h | 5 +++++ clutter/clutter-input-device.h | 14 -------------- 2 files changed, 5 insertions(+), 14 deletions(-) commit 001f84875aa5a0f0871b0f86a73d4c1972c12430 Author: Emmanuele Bassi Date: Mon Jan 17 16:42:18 2011 +0000 Enable XInput support by default Since we have a decent XI1 and XI2 implementation, now, we should turn the support for XInput on by default. The actual implementation to be used at run-time is still left to be decided by the user. configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1b1e77b46989ba97bfff8abdfa61df0f514a7eae Author: Emmanuele Bassi Date: Tue Jan 4 12:32:04 2011 +0000 event/x11: Rework the way we translate X11 events This is a lump commit that is fairly difficult to break down without either breaking bisecting or breaking the test cases. The new design for handling X11 event translation works this way: - ClutterBackend::translate_event() has been added as the central point used by a ClutterBackend implementation to translate a native event into a ClutterEvent; - ClutterEventTranslator is a private interface that should be implemented by backend-specific objects, like stage implementations and ClutterDeviceManager sub-classes, and allows dealing with class-specific event translation; - ClutterStageX11 implements EventTranslator, and deals with the stage-relative X11 events coming from the X11 event source; - ClutterStageGLX overrides EventTranslator, in order to deal with the INTEL_GLX_swap_event extension, and it chains up to the X11 default implementation; - ClutterDeviceManagerX11 has been split into two separate classes, one that deals with core and (optionally) XI1 events, and the other that deals with XI2 events; the selection is done at run-time, since the core+XI1 and XI2 mechanisms are mutually exclusive. All the other backends we officially support still use their own custom event source and translation function, but the end goal is to migrate them to the translate_event() virtual function, and have the event source be a shared part of Clutter core. clutter/Makefile.am | 24 +- clutter/clutter-backend-private.h | 8 + clutter/clutter-backend.c | 12 + clutter/clutter-device-manager-private.h | 105 ++- clutter/clutter-device-manager.c | 29 + clutter/clutter-device-manager.h | 1 + clutter/clutter-event-translator.c | 38 + clutter/clutter-event-translator.h | 40 + clutter/clutter-event.c | 77 +- clutter/clutter-event.h | 51 -- clutter/clutter-input-device.c | 476 ++++++++++- clutter/clutter-input-device.h | 57 +- clutter/clutter-marshal.list | 1 + clutter/clutter-private.h | 3 + clutter/clutter-types.h | 51 ++ clutter/glx/clutter-backend-glx.c | 11 +- clutter/glx/clutter-event-glx.c | 105 --- clutter/glx/clutter-event-glx.h | 38 - clutter/glx/clutter-stage-glx.c | 186 ++--- clutter/x11/clutter-backend-x11.c | 358 +++++++-- clutter/x11/clutter-backend-x11.h | 55 +- clutter/x11/clutter-device-manager-core-x11.c | 745 +++++++++++++++++ clutter/x11/clutter-device-manager-core-x11.h | 70 ++ clutter/x11/clutter-device-manager-x11.c | 354 --------- clutter/x11/clutter-device-manager-x11.h | 68 -- clutter/x11/clutter-device-manager-xi2.c | 1058 +++++++++++++++++++++++++ clutter/x11/clutter-device-manager-xi2.h | 66 ++ clutter/x11/clutter-event-x11.c | 116 +-- clutter/x11/clutter-input-device-core-x11.c | 414 ++++++++++ clutter/x11/clutter-input-device-core-x11.h | 26 + clutter/x11/clutter-input-device-x11.c | 228 ------ clutter/x11/clutter-input-device-x11.h | 25 - clutter/x11/clutter-input-device-xi2.c | 161 ++++ clutter/x11/clutter-input-device-xi2.h | 22 + clutter/x11/clutter-stage-x11.c | 552 ++++++++++++- clutter/x11/clutter-stage-x11.h | 9 + configure.ac | 50 +- tests/interactive/test-devices.c | 13 + 38 files changed, 4436 insertions(+), 1267 deletions(-) commit ca092477c2d3fcc74384c3f46216802db32ba0d9 Author: Emmanuele Bassi Date: Thu Jan 20 16:18:16 2011 +0000 Appease the gods in introspection Reduce the amount of bogus warnings g-ir-scanner prints out. clutter/clutter-align-constraint.c | 2 -- clutter/clutter-align-constraint.h | 3 ++- clutter/clutter-backend-private.h | 1 - clutter/clutter-backend.h | 9 +++++++++ clutter/clutter-bind-constraint.c | 2 -- clutter/clutter-bind-constraint.h | 3 ++- clutter/clutter-binding-pool.c | 1 - clutter/clutter-binding-pool.h | 1 + clutter/clutter-blur-effect.c | 2 -- clutter/clutter-blur-effect.h | 1 + clutter/clutter-colorize-effect.c | 2 -- clutter/clutter-colorize-effect.h | 3 ++- clutter/clutter-desaturate-effect.c | 2 -- clutter/clutter-desaturate-effect.h | 1 + clutter/clutter-page-turn-effect.c | 2 -- clutter/clutter-page-turn-effect.h | 1 + clutter/clutter-path-constraint.c | 2 -- clutter/clutter-path-constraint.h | 3 ++- clutter/clutter-settings.c | 2 -- clutter/clutter-settings.h | 1 + clutter/clutter-snap-constraint.c | 2 -- clutter/clutter-snap-constraint.h | 3 ++- doc/reference/clutter/clutter-sections.txt | 17 ++++++++++++++--- 23 files changed, 38 insertions(+), 28 deletions(-) commit 439553a1b7e7d6a1731df7124b74545881ce4fbf Author: Emmanuele Bassi Date: Thu Jan 20 13:44:16 2011 +0000 Update the NEWS file NEWS | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) commit ef7810422764f7297f295a7c8189204de1eb4c3f Author: Emmanuele Bassi Date: Thu Jan 20 13:29:37 2011 +0000 Expose deprecated symbols whilst building Clutter Don't use ugly "#undef CLUTTER_DISABLE_DEPRECATED" inside source code using deprecated symbols; we have the handy CLUTTER_COMPILATION define that we can use as part of the "disable deprecated" conditional. clutter/clutter-actor.c | 4 +--- clutter/clutter-behaviour-depth.c | 1 - clutter/clutter-behaviour-depth.h | 2 +- clutter/clutter-behaviour-ellipse.c | 1 - clutter/clutter-behaviour-ellipse.h | 2 +- clutter/clutter-behaviour-opacity.c | 1 - clutter/clutter-behaviour-opacity.h | 2 +- clutter/clutter-behaviour-path.c | 1 - clutter/clutter-behaviour-path.h | 2 +- clutter/clutter-behaviour-rotate.c | 1 - clutter/clutter-behaviour-rotate.h | 2 +- clutter/clutter-behaviour-scale.c | 1 - clutter/clutter-behaviour-scale.h | 2 +- clutter/clutter-behaviour.c | 1 - clutter/clutter-behaviour.h | 4 ++-- clutter/clutter-frame-source.h | 2 +- clutter/clutter-timeout-pool.c | 1 - clutter/clutter-timeout-pool.h | 2 +- 18 files changed, 11 insertions(+), 21 deletions(-) commit cd96e631f15ee623116cf3d330cc046e7855ee56 Author: Emmanuele Bassi Date: Thu Jan 20 13:19:03 2011 +0000 glx: Deprecate ClutterGLXTexturePixmap Since 1.4 the ClutterGLXTexturePixmap is just a wrapper around ClutterX11TexturePixmap, so we can safely deprecate it. All the functionality it provided is now effectively available from the superclass or directly from Cogl. clutter/glx/clutter-glx-texture-pixmap.c | 23 +++++++++++++++-------- clutter/glx/clutter-glx-texture-pixmap.h | 12 ++++++++---- 2 files changed, 23 insertions(+), 12 deletions(-) commit 770bcd5b4042818008e3fbbfab8e11722681a5fa Author: Emmanuele Bassi Date: Thu Jan 20 12:59:56 2011 +0000 test-pixmap: Remove the GLX code The ClutterGLXTexturePixmap actor is just a wrapper around ClutterX11TexturePixmap, since the relevant texture-from-pixmap code has been moved down to Cogl. tests/interactive/test-pixmap.c | 41 --------------------------------------- 1 file changed, 41 deletions(-) commit a2d6edd4223fc18a9b3902e388ddd105db468f32 Author: Emmanuele Bassi Date: Wed Jan 19 18:51:01 2011 +0000 test-pixmap: Fix up compilation on EGLX We need to check for the GLX windowing system if we are to include clutter-glx.h. tests/interactive/test-pixmap.c | 2 ++ 1 file changed, 2 insertions(+) commit 62a0584f115f4a1cc6138c2915d90e24c69c4002 Author: Emmanuele Bassi Date: Wed Jan 19 17:54:28 2011 +0000 docs: Ignore clutter-config.h when scanning headers doc/reference/clutter/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit a43c5f10bb5f3273378fedecd618260b96499cff Author: Emmanuele Bassi Date: Wed Jan 19 14:36:30 2011 +0000 tests: Try to drop including config.h The config.h header should be considered a Clutter internal header, and the test cases (especially the interactive test cases) should strive to never rely on internal headers. tests/interactive/test-cogl-offscreen.c | 1 - tests/interactive/test-cogl-primitives.c | 6 ++--- tests/interactive/test-cogl-tex-convert.c | 1 - tests/interactive/test-cogl-tex-foreign.c | 1 - tests/interactive/test-cogl-tex-getset.c | 1 - tests/interactive/test-cogl-tex-polygon.c | 1 - tests/interactive/test-cogl-tex-tile.c | 1 - tests/interactive/test-cogl-vertex-buffer.c | 1 - tests/interactive/test-paint-wrapper.c | 8 ++----- tests/interactive/test-pixmap.c | 34 +++++++++++++++++---------- tests/interactive/test-textures.c | 4 ---- 11 files changed, 26 insertions(+), 33 deletions(-) commit 94b905b9e110c671698a0cd59fa827f6ddb0a84d Author: Emmanuele Bassi Date: Wed Jan 19 14:33:27 2011 +0000 build: Generate an instealled config header Clutter has some platform-specific API that is accessible only if the right backend has been compiled in. Third party applications that wish to be portable across backends might want to use defines and other pre-processor tricks to determine header inclusion and API usage. While Clutter has an internal set of symbols it can use, third party applications don't have the luxury of being able to access the config.h generated by Clutter's configure script. For this reason, Clutter should install a configuration header with a series of namespaced defines that can be picked up by applications and other third party code. .gitignore | 1 + clutter/Makefile.am | 5 +++++ clutter/clutter-config.h.in | 16 ++++++++++++++++ clutter/clutter.h | 2 ++ configure.ac | 30 ++++++++++++++++++++++++++++++ 5 files changed, 54 insertions(+) commit 90a01b479c432310f9fcfb5fcd04e23d8fc1a92a Author: Emmanuele Bassi Date: Tue Jan 18 15:14:58 2011 +0000 Update the NEWS file NEWS | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) commit bb41cb54cbdbb21f3be26ac14c07fd1c804b4d31 Author: Chris Lord Date: Tue Jan 18 15:48:29 2011 +0000 timeline: Check if the timeline is playing in do_tick Check that the timeline is still playing before executing in _clutter_timeline_do_tick. This fixes the possibility of receiving a new-frame signal when stopping a timeline in response to a different timeline's signal emission. clutter/clutter-timeline.c | 8 ++++++++ 1 file changed, 8 insertions(+) commit c61e22d06787effcd4c260a817ba4845d5eedfdb Author: Lucas Rocha Date: Mon Jan 17 18:28:49 2011 +0000 drag-action: fix case where motion events are indefinitely disabled When drag threshold is not reached, emit_drag_begin() is not called causing default value of priv->motion_events_enabled (false) to used to restore motion events enabled state in Clutter. This causes drag action to indefinitely disable motion events. The current value of motion events enabled state is now queried on button press which guarantees that the state will be restored with the correct value in emit_drag_end() http://bugzilla.clutter-project.org/show_bug.cgi?id=2522 clutter/clutter-drag-action.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit cecc7a4bfbae6dc4891f3cd1888e85fc1148dc1a Author: Emmanuele Bassi Date: Tue Jan 18 14:46:02 2011 +0000 stage: Fix gtk-doc annotation for set_accept_focus() clutter/clutter-stage.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5d8b6aa6fa2c51b72079d52766e5013ff612af19 Author: Bastian Winkler Date: Fri Jan 14 14:53:05 2011 +0100 introspection: Add missing (out) annotations for get_color() Some actors are missing the (out) annotations for the get_color() methods. http://bugzilla.clutter-project.org/show_bug.cgi?id=2518 clutter/clutter-rectangle.c | 4 ++-- clutter/clutter-stage.c | 2 +- clutter/clutter-text.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) commit 54d00ebaf0a0084c7b0580a7b234e214ce95dd16 Author: Emmanuele Bassi Date: Mon Jan 17 17:30:47 2011 +0000 docs: Add ClutterClickAction.get_state() doc/reference/clutter/clutter-sections.txt | 3 +++ 1 file changed, 3 insertions(+) commit 6af7b76cb5959616ea828678e1fb0258a7a04d2d Author: Lucas Rocha Date: Mon Jan 17 00:38:04 2011 +0000 click-action: add API to get modifier type This is to allow implementing modified click such as ctrl+click, shift+click, and so on. http://bugzilla.clutter-project.org/show_bug.cgi?id=2520 clutter/clutter-click-action.c | 37 +++++++++++++++++++++++++++++++++++++ clutter/clutter-click-action.h | 6 ++++-- 2 files changed, 41 insertions(+), 2 deletions(-) commit 6100aee5bd8d1c11fcaf6f7b3ac9a9317fbe39af Author: Damien Lespiau Date: Mon Jan 17 15:22:48 2011 +0000 color: Mark the new static color API as being new from 1.6 The patch was written a while ago but only merged in the 1.5.x cycle. clutter/clutter-color.c | 2 +- clutter/clutter-color.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit ae9781e5266464314fda19ab8495e9824edbcdfb Author: Neil Roberts Date: Mon Jan 17 12:21:33 2011 +0000 cogl-program: Don't use separate definitions on GLES 1.1 Previously most of the code for cogl-program and cogl-shader was ifdef'd out for GLES 1.1 and alternate stub definitions were defined. This patch removes those and instead puts #ifdef's directly in the functions that need it. This should make it a little bit easier to maintain. http://bugzilla.clutter-project.org/show_bug.cgi?id=2516 clutter/cogl/cogl/cogl-program.c | 105 +++++--------------------------------- clutter/cogl/cogl/cogl-shader.c | 91 +++++++++++---------------------- 2 files changed, 44 insertions(+), 152 deletions(-) commit b7677d047df6b8c96605454717873bbcb1722763 Author: Neil Roberts Date: Mon Jan 17 12:20:06 2011 +0000 cogl-pipeline-opengl: #ifdef out set_glsl_program for GLES 1.1 glUseProgram is not available under GLES 1.1 so it was breaking the build. http://bugzilla.clutter-project.org/show_bug.cgi?id=2516 clutter/cogl/cogl/cogl-pipeline-opengl.c | 9 +++++++++ 1 file changed, 9 insertions(+) commit 568d32acf3604a9c68556224844a839f0e014bcf Author: Neil Roberts Date: Mon Jan 17 12:06:13 2011 +0000 cogl-pipeline: Fix the enum names for the constant combine source When determining whether to hash the combine constant Cogl checks the arguments to the combine funcs to determine whether the combine constant is used. However is was using the GLenums GL_CONSTANT_COLOR and GL_CONSTANT_ALPHA but these are not valid values for the CoglPipelineCombineSource enum so presumably the constant would never get hashed. This patch makes it use Cogl's enum of COGL_PIPELINE_COMBINE_SOURCE_CONSTANT instead. http://bugzilla.clutter-project.org/show_bug.cgi?id=2516 clutter/cogl/cogl/cogl-pipeline.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 0c070cdf91c2956ba057364eb63cc422a79b6c88 Author: Adel Gadllah Date: Sun Jan 16 23:19:28 2011 +0100 ClutterX11TexturePixmap: Fix doc comment The wrong signal name was used probably a copy & paste mistake, fix that. clutter/x11/clutter-x11-texture-pixmap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 88fe56d1752ad64f404da2baa1bc74f2ebbae64c Author: Neil Roberts Date: Thu Jan 13 15:54:50 2011 +0000 cogl-buffer: Support mapping buffers for write on GLES GLES has an extension called GL_OES_mapbuffer to support mapping buffer objects but only for writing. Cogl now has two new feature flags to advertise whether mapping for reading and writing is supported. Under OpenGL, these features are always set if the VBO extension is advertised and under GLES only the write flag is set if the GL_OES_mapbuffer extension is advertised. clutter/cogl/cogl/cogl-buffer.c | 44 +++++++++----------- clutter/cogl/cogl/cogl-types.h | 8 +++- .../cogl/driver/gl/cogl-feature-functions-gl.h | 4 +- .../cogl/driver/gles/cogl-feature-functions-gles.h | 12 ++++++ 4 files changed, 42 insertions(+), 26 deletions(-) commit 7e73f0d4232338741e2dc811cdb2039287f384bb Author: Neil Roberts Date: Thu Jan 13 15:36:08 2011 +0000 cogl: Enable the VBOs feature for GLES2 The GLES2 wrapper code has been removed so there are no longer any problems with enabling VBOs. clutter/cogl/cogl/driver/gles/cogl-gles.c | 5 ----- 1 file changed, 5 deletions(-) commit 9bb74988d5b7c7df3678185ed4488c9957f00a9d Author: Neil Roberts Date: Thu Jan 13 15:35:30 2011 +0000 cogl: Fallback to set_data when mapping a buffer to fill it In the journal code and when generating the stroke path the vertices are generated on the fly and stored in a CoglBuffer using cogl_buffer_map. However cogl_buffer_map is allowed to fail but it wasn't checking for a NULL return value. In particular on GLES it will always fail because glMapBuffer is only provided by an extension. This adds a new pair of internal functions called _cogl_buffer_{un,}map_for_fill_or_fallback which wrap cogl_buffer_map. If the map fails then it will instead return a pointer into a GByteArray attached to the context. When the buffer is unmapped the array is copied into the buffer using cogl_buffer_set_data. clutter/cogl/cogl/cogl-buffer-private.h | 19 ++++++++++-- clutter/cogl/cogl/cogl-buffer.c | 51 +++++++++++++++++++++++++++++++ clutter/cogl/cogl/cogl-context.c | 5 +++ clutter/cogl/cogl/cogl-context.h | 6 ++++ clutter/cogl/cogl/cogl-journal.c | 5 ++- clutter/cogl/cogl/cogl2-path.c | 7 ++--- 6 files changed, 83 insertions(+), 10 deletions(-) commit 77a486caf2c130341624ab56e588ab116c7e8e26 Author: Neil Roberts Date: Thu Jan 13 14:12:10 2011 +0000 cogl-context: Don't enable point sprites on GLES2 On GLES2 there's no builtin mechanism to replace texture coordinates with point sprite coordinates so calling glEnable(GL_POINT_SPRITE) isn't valid. Instead the point sprite coords are implemented by using a special builtin varying variable in GLSL. clutter/cogl/cogl/cogl-context.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 88a085fdd86e3f1f285833f2f4df19af339c339c Author: Robert Bragg Date: Tue Jan 11 16:02:06 2011 +0000 pipeline: differentiate texture target and data state There are several places where we need to compare the texture state of a pipeline and sometimes we need to take into consideration if the underlying texture has changed but other times we may only care to know if the texture target has changed. For example the fragends typically generate programs that they want to share with all pipelines with equivalent fragment processing state, and in this case when comparing pipelines we only care about the texture targets since changes to the underlying texture won't affect the programs generated. Prior to this we had tried to handle this by passing around some special flags to various functions that evaluate pipeline state to say when we do/don't care about the texture data, but this wasn't working in all cases and was more awkward to manage than the new approach. Now we simply have two state bits: COGL_PIPELINE_LAYER_STATE_TEXTURE_TARGET and COGL_PIPELINE_LAYER_STATE_TEXTURE_DATA and CoglPipelineLayer has an additional target member. Since all the appropriate code takes masks of these state bits to determine what to evaluate we don't need any extra magic flags. clutter/cogl/cogl/cogl-pipeline-fragend-arbfp.c | 9 +- clutter/cogl/cogl/cogl-pipeline-fragend-fixed.c | 25 +-- clutter/cogl/cogl/cogl-pipeline-fragend-glsl.c | 3 +- clutter/cogl/cogl/cogl-pipeline-opengl.c | 9 +- clutter/cogl/cogl/cogl-pipeline-private.h | 28 +-- clutter/cogl/cogl/cogl-pipeline-progend-glsl.c | 3 +- clutter/cogl/cogl/cogl-pipeline-vertend-glsl.c | 3 +- clutter/cogl/cogl/cogl-pipeline.c | 273 ++++++++++++++++------- 8 files changed, 223 insertions(+), 130 deletions(-) commit 8ab68d26a5c2e026bc422da13ab290ba3d432aa4 Author: Robert Bragg Date: Wed Jan 12 17:11:48 2011 +0000 pipeline: optimize state init if changing property When notifying that a pipeline property is going to change, then at times a pipeline will take over being the authority of the corresponding state group. Some state groups can contain multiple properties and so to maintain the integrity of all of the properties we have to initialize all the property values in the new authority. For state groups with only one property we don't have to initialize anything during the pre_change_notify() because we can assume the value will be initialized as part of the change being notified. This patch optimizes how we handle this initialization of state groups in a couple of ways; firstly we no longer do anything to initialize state-groups with only one property, secondly we no longer use _cogl_pipeline_copy_differences - (we have a new _cogl_pipeline_init_multi_property_sparse_state() func) so we can avoid lots calls to handle_automatic_blend_enable() which is sometimes seen high in sysprof profiles. clutter/cogl/cogl/cogl-pipeline-private.h | 161 +++++++++++------- clutter/cogl/cogl/cogl-pipeline.c | 255 ++++++++++++++++++----------- 2 files changed, 266 insertions(+), 150 deletions(-) commit 5fc3122dadf948c5594478a3eae7deef391c62fe Author: Neil Roberts Date: Wed Jan 12 16:59:37 2011 +0000 test-cogl-shader-glsl: Disable the atlas for the hand texture Atlasing needs to be disabled for the hand texture so that it can work out the step value needed to fetch a neighbouring pixel in the blur shader. If the texture ends up in the atlas then the test can't know the actual size of the texture so it looks wrong. tests/interactive/test-cogl-shader-glsl.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 3c9f72abbfcc7967aa399506adba0bfee4952bbc Author: Neil Roberts Date: Wed Jan 12 16:56:52 2011 +0000 cogl-atlas-texture: Don't disable atlas if can't read texture data Previously atlasing would be disabled if the GL driver does not support reading back texture data. This meant that atlasing would not happen on GLES. However we also require that the driver support FBOs and the texture data is only read back as a fallback if the FBO fails. Therefore the atlas should be ok on GLES 2 which has FBO support in core. clutter/cogl/cogl/cogl-atlas-texture.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) commit 12ceae548d441f0611542645a62f6c0cbf7a0c5f Author: Emmanuele Bassi Date: Tue Jan 11 21:34:37 2011 +0000 Post-release version bump to 1.5.13 configure.ac | 2 +- po/clutter-1.0.pot | 200 +++++++++++++++++++++++++++------------------------- po/de.po | 198 ++++++++++++++++++++++++++------------------------- po/fr.po | 199 ++++++++++++++++++++++++++------------------------- po/id.po | 199 ++++++++++++++++++++++++++------------------------- po/it.po | 200 +++++++++++++++++++++++++++------------------------- po/pl.po | 200 +++++++++++++++++++++++++++------------------------- po/zh_CN.po | 199 ++++++++++++++++++++++++++------------------------- 8 files changed, 730 insertions(+), 667 deletions(-) commit 09d5c309ca95f68425919fdd1a41a14f41e4053b Author: Emmanuele Bassi Date: Tue Jan 11 20:29:30 2011 +0000 Release 1.5.12 configure.ac | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) commit 676df42c6fefd28a6da2c1cefd885d6fa4d59da1 Author: Robert Bragg Date: Tue Jan 11 14:10:11 2011 +0000 pipeline: don't skip flush if skip_gl_color flag differs We try and bail out of flushing pipeline state asap if we can see the pipeline has already been flushed and hasn't changed but we weren't checking to see if the skip_gl_color flag is the same as when it was last flush too and so we'd sometimes bail out without updating the glColor correctly. clutter/cogl/cogl/cogl-pipeline-opengl.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit b922ac605962df6b1cf86a0e710294be114f62c4 Author: Damien Lespiau Date: Tue Jan 11 14:15:46 2011 +0000 test-shader: Fix the edge-detect shader cogl_text_coord_in in a array to access the texture units. In this case we want to sample texture unit 0, where the texture is. tests/interactive/test-shader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 38e527a3cf2527a46461eb76c6598071daf95053 Author: Neil Roberts Date: Mon Jan 10 20:13:41 2011 +0000 cogl-vertex-attribute: Optionally avoid applying the legacy state When an item is added to the journal the current pipeline immediately gets the legacy state applied to it and the modified pipeline is logged instead of the original. However the actual drawing from the journal is done using the vertex attribute API which was also applying the legacy state. This meant that the legacy state used would be a combination of the state set when the journal entry was added as well as the state set when the journal is flushed. To fix this there is now an extra CoglDrawFlag to avoid applying the legacy state when setting up the GL state for the vertex attributes. The journal uses this flag when flushing. clutter/cogl/cogl/cogl-journal.c | 3 ++- clutter/cogl/cogl/cogl-vertex-attribute-private.h | 6 +++++- clutter/cogl/cogl/cogl-vertex-attribute.c | 6 ++++-- 3 files changed, 11 insertions(+), 4 deletions(-) commit cb49197d0101aa32fa3bb0f8948c1952f5ccae33 Author: Emmanuele Bassi Date: Tue Jan 11 12:38:52 2011 +0000 Update the NEWS file NEWS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit f4fc7284ebeaedfb60d9903b41177f59a4907b85 Author: Bastian Winkler Date: Mon Jan 3 16:15:17 2011 +0100 script-parser: Also honor properties of type GType The script parser should also handle GType properties. http://bugzilla.clutter-project.org/show_bug.cgi?id=2513 clutter/clutter-script-parser.c | 9 +++++++++ 1 file changed, 9 insertions(+) commit 8e3d9c21c643091bd537a2674eeaa86255167cc9 Author: Emmanuele Bassi Date: Tue Jan 11 11:49:11 2011 +0000 Update NEWS file NEWS | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) commit f2080f099e2a05b05cd0adb2f204c1917adae0f2 Author: Damien Lespiau Date: Tue Jan 11 10:23:59 2011 +0000 shader: Don't notify properties when finalizing shaders clutter_shader_finalize() was calling clutter_shader_release() which in turn notifies "compiled". GObject was complaining that we were trying to _ref() an object that was in _finalize(). #0 g_log (log_domain=0x3e15c4 "GLib-GObject", log_level=G_LOG_LEVEL_CRITICAL, format=0x76c938 "%s: assertion `%s' failed") at gmessages.h:97 #1 0x0070777d in g_return_if_fail_warning ( log_domain=0x3e15c4 "GLib-GObject", pretty_function=0x3e37a4 "g_object_ref", expression=0x3e2a00 "object->ref_count > 0") at gmessages.c:586 #2 0x003b862b in g_object_ref (_object=0x8567af0) at gobject.c:2615 #3 0x003bd238 in g_object_notify_by_pspec (object=0x8567af0, pspec=0x87ea2f0) at gobject.c:1075 #4 0x00b6500b in clutter_shader_release (shader=0x8567af0) at ./clutter-shader.c:612 #5 0x00b659b9 in clutter_shader_finalize (object=0x8567af0) at ./clutter-shader.c:107 Then, let's split release in two, with an _internal() version that does not notify "compiled" and use it from dispose (as the object is still usable after a call to release_internal(). http://bugzilla.clutter-project.org/show_bug.cgi?id=2512 clutter/clutter-shader.c | 61 ++++++++++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 24 deletions(-) commit 3625adb9d8188464b27ddf3e1203214ea2952092 Author: Tomeu Vizoso Date: Mon Jan 10 19:13:03 2011 +0100 ClutterListModel: Implement get_n_rows for improved performance The default implementation in ClutterModel iterates through all the elements. http://bugzilla.clutter-project.org/show_bug.cgi?id=2511 clutter/clutter-list-model.c | 13 ++++++++++ clutter/clutter-model.c | 56 +++++++++++++++++++++--------------------- 2 files changed, 41 insertions(+), 28 deletions(-) commit 850f956d4e2a811eb663575dcd6ae41f09b992de Author: Adel Gadllah Date: Wed Jan 5 10:24:26 2011 +0100 ClutterAlignConstraint: Keep pixel aligment We have to round the values here otherwise we might end up with misaligned actors. http://bugzilla.clutter-project.org/show_bug.cgi?id=2508 clutter/clutter-align-constraint.c | 4 ++++ 1 file changed, 4 insertions(+) commit d648de7d1492b9ae69aac6702a99fccb8f92b165 Author: Neil Roberts Date: Tue Dec 14 14:44:45 2010 +0000 cogl-journal: Avoid enabling blending if possible The vertex attribute API assumes that if there is a color array enabled then we can't determine if the colors are opaque so we have to enable blending. The journal always uses a color array to avoid switching color state between rectangles. Since the journal switched to using vertex attributes this means we effectively always enable blending from the journal. To fix this there is now a new flag for _cogl_draw_vertex_attributes to specify that the color array is known to only contain opaque colors which causes the draw function not to copy the pipeline. If the pipeline has blending disabled then the journal passes this flag. http://bugzilla.clutter-project.org/show_bug.cgi?id=2481 clutter/cogl/cogl/cogl-journal.c | 9 ++++++--- clutter/cogl/cogl/cogl-vertex-attribute-private.h | 9 ++++++++- clutter/cogl/cogl/cogl-vertex-attribute.c | 10 ++++++---- 3 files changed, 20 insertions(+), 8 deletions(-) commit 159cd6ddc02b4a9a37fe7e0a61a104d3abab91a6 Author: Neil Roberts Date: Tue Dec 14 14:24:17 2010 +0000 cogl-vertex-attribute: Add flags to _cogl_draw_vertex_attributes_array There is an internal version of cogl_draw_vertex_attributes_array which previously just bypassed the framebuffer flushing, journal flushing and pipeline validation so that it could be used to draw the journal. This patch generalises the function so that it takes a set of flags to specify which parts to flush. The public version of the function now just calls the internal version with the flags set to 0. The '_real' version of the function has now been merged into the internal version of the function because it was only called in one place. This simplifies the code somewhat. The common code which flushed the various state has been moved to a separate function. The indexed versions of the functions have had a similar treatment. http://bugzilla.clutter-project.org/show_bug.cgi?id=2481 clutter/cogl/cogl/cogl-journal.c | 17 ++- clutter/cogl/cogl/cogl-primitives.c | 6 +- clutter/cogl/cogl/cogl-vertex-attribute-private.h | 13 +- clutter/cogl/cogl/cogl-vertex-attribute.c | 167 ++++++++------------- clutter/cogl/cogl/cogl2-path.c | 14 +- 5 files changed, 100 insertions(+), 117 deletions(-) commit 0201e5fa97549ffb2d20a1180e63e5a7a73fa7e2 Author: Neil Roberts Date: Fri Dec 17 16:30:23 2010 +0000 cogl: Don't assume that CoglBitmaps are allocated to height*rowstride Cogl no longer has any code that assumes the buffer in a CoglBitmap is allocated to the full size of height*rowstride. We should comment that this is the case so that we remember to keep it that way. This is important for cogl_texture_new_from_data because the application may have created the data from a sub-region of a larger image and in that case it's not safe to read the full rowstride of the last row when the sub region contains the last row of the larger image. http://bugzilla.clutter-project.org/show_bug.cgi?id=2491 clutter/cogl/cogl/cogl-bitmap-pixbuf.c | 60 +++++-------------------------- clutter/cogl/cogl/cogl-bitmap-private.h | 8 +++++ 2 files changed, 17 insertions(+), 51 deletions(-) commit e1cbef23f5118c748eb38c16ebb00de3f51686b7 Author: Neil Roberts Date: Fri Dec 17 16:09:26 2010 +0000 cogl-texture-driver-gles: Don't copy the bitmap if alignment matches When uploading data for GLES we need to deal with cases where the rowstride is too large to be described only by GL_UNPACK_ALIGNMENT because there is no GL_UNPACK_ROW_LENGTH. Previously for the sub-region uploading code it would always copy the bitmap and for the code to upload the whole image it would copy the bitmap unless the rowstride == bpp*width. Neither paths took into account that we don't need to copy if the rowstride is just an alignment of bpp*width. This moves the bitmap copying code to a separate function that is used by both upload methods. It only copies the bitmap if the rowstride is not just an alignment of bpp*width. http://bugzilla.clutter-project.org/show_bug.cgi?id=2491 .../cogl/driver/gles/cogl-texture-driver-gles.c | 103 +++++++++++--------- 1 file changed, 55 insertions(+), 48 deletions(-) commit b3058c097dfb834018ab3598d002a7be595e78ff Author: Neil Roberts Date: Fri Dec 17 16:06:10 2010 +0000 cogl-util: Add an internal wrapper for the ffs function The ffs function is defined in C99 so if we want to use it in Cogl we need to provide a fallback for MSVC. This adds a configure check for the function and then a fallback using a while loop if it is not available. http://bugzilla.clutter-project.org/show_bug.cgi?id=2491 clutter/cogl/cogl/cogl-util.c | 21 +++++++++++++++++++++ clutter/cogl/cogl/cogl-util.h | 8 ++++++++ configure.ac | 4 ++++ 3 files changed, 33 insertions(+) commit 91c16023066b3d71ed569e0dcb97bdd0fe8b4667 Author: Neil Roberts Date: Fri Dec 17 14:52:25 2010 +0000 cogl-texture: Don't use the source rowstride if we have to copy bitmap If we have to copy the bitmap to do the premultiplication then we were previously using the rowstride of the source image as the rowstride for the new image. This is wasteful if the source image is a subregion of a larger image which would make it use a large rowstride. If we have to copy the data anyway we might as well compact it to the smallest rowstride. This also prevents the copy from reading past the end of the last row of pixels. An internal function called _cogl_bitmap_copy has been added to do the copy. It creates a new bitmap with the smallest possible rowstride rounded up the nearest multiple of 4 bytes. There may be other places in Cogl that are currently assuming we can read height*rowstride of the source buffer so they may want to take advantage of this function too. http://bugzilla.clutter-project.org/show_bug.cgi?id=2491 clutter/cogl/cogl/cogl-bitmap-private.h | 4 ++++ clutter/cogl/cogl/cogl-bitmap.c | 29 +++++++++++++++++++++++++++++ clutter/cogl/cogl/cogl-texture.c | 22 +--------------------- 3 files changed, 34 insertions(+), 21 deletions(-) commit c6fbc8c567ebe7eb538e53c0a5964db4ff6aebf2 Author: Neil Roberts Date: Wed Dec 22 01:45:09 2010 +0000 cogl-vertex-attribute: Fix the name of the cogl_normal_in attribute The builtin vertex attribute for the normals was incorrectly checked for as 'cogl_normal' however it is defined as cogl_normal_in in the shader boilerplate and for the name generated by CoglVertexBuffer. http://bugzilla.clutter-project.org/show_bug.cgi?id=2499 clutter/cogl/cogl/cogl-vertex-attribute.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 2c36b81996565f6128a55d5c12fee75a53c0a027 Author: Emmanuele Bassi Date: Mon Jan 10 14:03:35 2011 +0000 container: Do not use Actor as prerequisite The prerequisite for ClutterContainer in 1.x is GObject, and we cannot restrict the prerequisites without an ABI break. clutter/clutter-container.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6bb81a542fd2876c472c0287d368b1ba404324bf Author: nobled Date: Tue Jan 4 13:56:05 2011 +0000 egl: Fix build for --with-flavour=opengl-egl-xlib Make sure the EGL backend doesn't forget to include desktop OpenGL headers. clutter/egl/clutter-egl-headers.h | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) commit 530bc2aa70ca83c56f46342d337ce873614353a4 Author: nobled Date: Tue Jan 4 13:59:48 2011 +0000 egl: Don't use obsolete API Fixes a GCC "implicit declaration of function" warning when compiling. clutter/egl/clutter-stage-egl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 8c23766da809701bc171fcb9b3650475b1d03a73 Author: Kristian Høgsberg Date: Thu Jan 6 07:57:26 2011 -0500 x11: Create the list of all devices correctly Linked lists are tricky. clutter/x11/clutter-device-manager-x11.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit bf0dd2cbcc83d91ef46301aa18bd5f0158b88d22 Author: Emmanuele Bassi Date: Thu Dec 30 12:49:41 2010 +0000 test-text-field: Grab key focus on the first entry So that you can start typing right away. tests/interactive/test-text-field.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 2fe20ff3c505d3c1249b03ba7eaa1515f13a3c0a Author: Emmanuele Bassi Date: Tue Dec 28 22:21:09 2010 +0000 osx: Implement the set_accept_focus() vfunc Like the x11 and win32 backends, the quartz backend should allow setting the key focus when showing the stage window. clutter/osx/clutter-stage-osx.c | 29 +++++++++++++++++++++++------ clutter/osx/clutter-stage-osx.h | 2 ++ 2 files changed, 25 insertions(+), 6 deletions(-) commit 9d6a33d0c835e8a91e42303886123e34e60576f5 Author: Emmanuele Bassi Date: Tue Dec 28 18:04:00 2010 +0000 win32: Implement the set_accept_focus() vfunc Implement the ClutterStageWindow::set_accept_focus() virtual function in the win32 backend. If accept_focus is set to be TRUE then we call SetforegroundWindow() after calling ShowWindow(). This is similar to what GDK does when dealing with the same situation. http://bugzilla.clutter-project.org/show_bug.cgi?id=2500 clutter/win32/clutter-stage-win32.c | 21 +++++++++++++++++++-- clutter/win32/clutter-stage-win32.h | 8 +++++--- 2 files changed, 24 insertions(+), 5 deletions(-) commit 497f39e2f40e816c1e7ceaa3bf2fb4e609436b35 Author: Emmanuele Bassi Date: Tue Dec 28 17:38:39 2010 +0000 x11: Implement the set_accept_focus() vfunc Actually set the InputHint flag and set the input field of the WM_SPEC hints depending on the value of the accept-focus bitfield. http://bugzilla.clutter-project.org/show_bug.cgi?id=2500 clutter/x11/clutter-stage-x11.c | 20 ++++++++++++++++---- clutter/x11/clutter-stage-x11.h | 1 + 2 files changed, 17 insertions(+), 4 deletions(-) commit bbede9fef579000a48309bec017303bd8c46ccae Author: Emmanuele Bassi Date: Tue Dec 28 17:37:18 2010 +0000 stage: Add :accept-focus property and accessors Allow the developer to set whether the Stage should receive key focus when mapped. The implementation is fully backend-dependent. The default value is TRUE because that's what we've been expecting so far. http://bugzilla.clutter-project.org/show_bug.cgi?id=2500 clutter/clutter-stage.c | 67 +++++++++++++++++++++++++++- clutter/clutter-stage.h | 4 ++ doc/reference/clutter/clutter-sections.txt | 2 + 3 files changed, 72 insertions(+), 1 deletion(-) commit e1cd6f49b2afcb1738ee2e95f03aa77b8c696e7b Author: Emmanuele Bassi Date: Tue Dec 28 17:36:27 2010 +0000 stage-window: Add set_accept_focus() vfunc Allow Stage implementations to set whether or not they want to accept key focus when being shown. http://bugzilla.clutter-project.org/show_bug.cgi?id=2500 clutter/clutter-stage-window.c | 12 ++++++++++++ clutter/clutter-stage-window.h | 6 ++++++ 2 files changed, 18 insertions(+) commit 601b958ab1b162176c7dde318a96f279be995e64 Author: Johan Bilien Date: Wed Dec 29 16:49:13 2010 -0500 Fixed a crash when destroying the actor of a LEAVE event When processing a LEAVE event, one might destroy the actor, so the weak reference device->actor would be NULL. http://bugzilla.clutter-project.org/show_bug.cgi?id=2502 Signed-off-by: Emmanuele Bassi clutter/clutter-input-device.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) commit 2911d3db535db98f7c0352e3ea40f2a7e65d82ea Author: Nguyễn Thái Ngọc Duy Date: Thu Dec 30 08:16:10 2010 +0700 autogen.sh: make autoreconf use automake-1.11 when available This patch exports $ACLOCAL and $AUTOMAKE, otherwise autoreconf may use an older version instead. Signed-off-by: Nguyễn Thái Ngọc Duy http://bugzilla.clutter-project.org/show_bug.cgi?id=2504 autogen.sh | 1 + 1 file changed, 1 insertion(+) commit c95cc8d477ab26fd6231becdd062a81fa7ee6115 Author: Johan Bilien Date: Wed Dec 29 16:57:02 2010 -0500 Only reset the relayout_pending flag when actually doing a relayout If an actor is (unfortunately) queuing a relayout in relayout, you would end up with (ClutterActor*)stage->needs_allocation set to TRUE and stage->relayout_pending set to TRUE. But if then in the same cycle, an actor calls clutter_actor_get_allocation_box, that will trigger another (recursive) _clutter_stage_maybe_relayout, which will wrongly reset the relayout pending to FALSE, while not actually performing a new relayout because of the re-entrancy protection. http://bugzilla.clutter-project.org/show_bug.cgi?id=2503 clutter/clutter-stage.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit b6558c5a1848b306c26813bc5f5015eb95c541d1 Author: Emmanuele Bassi Date: Wed Dec 22 09:42:41 2010 +0000 docs: Fixes for the Cogl API reference clutter/cogl/cogl/cogl-bitmap.h | 4 +-- clutter/cogl/cogl/cogl-buffer.h | 8 +++--- clutter/cogl/cogl/cogl-index-array.h | 2 +- clutter/cogl/cogl/cogl-material-compat.h | 11 +++++---- clutter/cogl/cogl/cogl-object.h | 19 ++++++++------- clutter/cogl/cogl/cogl-path.h | 8 +++--- clutter/cogl/cogl/cogl-pipeline.h | 2 +- clutter/cogl/cogl/cogl-types.h | 4 +-- clutter/cogl/cogl/cogl-vertex-array.h | 2 +- clutter/cogl/cogl/cogl-vertex-buffer.h | 2 +- doc/reference/cogl/cogl-sections.txt | 39 +++++++++++++++++++++++++++--- 11 files changed, 67 insertions(+), 34 deletions(-) commit 533880a1a5140d507db0f1a11d211c74ee0260f6 Author: Emmanuele Bassi Date: Tue Dec 21 12:03:38 2010 +0000 build: Ignore private headers when building the Cogl reference Otherwise gtk-doc will try to look up private symbols. doc/reference/cogl/Makefile.am | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) commit 91cc8edba12c0e43ba69b055e5b46394b9d51917 Author: Emmanuele Bassi Date: Tue Dec 21 10:51:39 2010 +0000 test-text-field: Do not expand the labels tests/interactive/test-text-field.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit 605e8d6fb50624b44b45f012b24cea7c302f78ea Author: Emmanuele Bassi Date: Tue Dec 21 10:50:24 2010 +0000 text: Only paint cursor if we have key focus If a Text actor does not have key focus then there's no point in showing the cursor at all. clutter/clutter-text.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) commit ec5e910cd376050bdd184cf970fa565e10764525 Author: Emmanuele Bassi Date: Mon Dec 20 17:59:35 2010 +0000 test-text-field: Clean up Use a Table layout manager, and clean up a bit this test case. tests/interactive/test-text-field.c | 96 ++++++++++++++++++++--------------- 1 file changed, 56 insertions(+), 40 deletions(-) commit 21a12b966dbf72d2e83265399ac8d380b281df7f Author: Emmanuele Bassi Date: Mon Dec 20 12:41:07 2010 +0000 interactive: Remove test-bind The BindConstraint is already exercised in the test-constraints and in other interactive tests. tests/interactive/Makefile.am | 1 - tests/interactive/test-bind.c | 112 ----------------------------------------- 2 files changed, 113 deletions(-) commit b9f7ef11100f250767fd726b0ae9727a7e9a3f89 Author: Emmanuele Bassi Date: Sat Dec 18 21:33:37 2010 +0000 build: Remove Cogl2 reference from the build scripts Keeping the Cogl 2.0 API reference in the build is getting far more troublesome than it's worth. It's breaking distcheck far too often, and it makes it impossible to rebuild the build environment from tarballs - which is something that some distributions (namely: the Debian-based ones, but not limited to them) do in order to change build scripts using their own rules. configure.ac | 16 ---------------- doc/reference/Makefile.am | 6 ------ 2 files changed, 22 deletions(-) commit 491bbc226ee52546507406714030a9647dde4280 Author: Emmanuele Bassi Date: Sat Dec 18 13:24:54 2010 +0000 constraints: Remove signal handlers on dispose Same as commit 2fa8b3a3abc7bb8e96a85d927edc0594f44f55df but done for AlignConstraint and SnapConstraint as well. clutter/clutter-align-constraint.c | 24 +++++++++++++++++++++--- clutter/clutter-bind-constraint.c | 4 ++-- clutter/clutter-snap-constraint.c | 29 +++++++++++++++++++++++------ 3 files changed, 46 insertions(+), 11 deletions(-) commit 2fa8b3a3abc7bb8e96a85d927edc0594f44f55df Author: Emmanuele Bassi Date: Sat Dec 18 13:16:23 2010 +0000 bind-constraint: Remove handlers in dispose We should remove the signal handlers on the source actor when a BindConstraint is disposed, to avoid dangling pointers and wrong invocations. http://bugzilla.clutter-project.org/show_bug.cgi?id=2493 clutter/clutter-bind-constraint.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) commit 45c884307e5946e316c839c03d94c5f5c92147d8 Author: Emmanuele Bassi Date: Fri Dec 17 16:04:25 2010 +0000 Post-release version bump to 1.5.11 configure.ac | 2 +- po/clutter-1.0.pot | 104 ++++++++++++++++++++++++++-------------------------- po/de.po | 102 +++++++++++++++++++++++++-------------------------- po/fr.po | 102 +++++++++++++++++++++++++-------------------------- po/id.po | 102 +++++++++++++++++++++++++-------------------------- po/it.po | 102 +++++++++++++++++++++++++-------------------------- po/pl.po | 102 +++++++++++++++++++++++++-------------------------- po/zh_CN.po | 102 +++++++++++++++++++++++++-------------------------- 8 files changed, 359 insertions(+), 359 deletions(-) commit 339a6805521c04fd9e0d43689b6f380a45404078 Author: Emmanuele Bassi Date: Fri Dec 17 14:40:17 2010 +0000 Release Clutter 1.5.10 (snapshot) NEWS | 11 +++++++++-- configure.ac | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) commit 987a50be91f67a64cca32e7403b98c69b5aedb4c Author: Emmanuele Bassi Date: Fri Dec 17 15:43:24 2010 +0000 build: Fix release-check for cogl2 reference configure.ac | 10 ++++++++-- doc/reference/Makefile.am | 7 ++----- 2 files changed, 10 insertions(+), 7 deletions(-) commit cab4a5b4846d2e6e1800ac545020bce930a9132e Author: Emmanuele Bassi Date: Fri Dec 17 14:41:33 2010 +0000 build: Remove stringify.sh from Makefile.am build/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 894c0527dffc4d0c01ef87880d33b02fcfab923e Author: Elliot Smith Date: Wed Dec 15 13:31:12 2010 +0000 cookbook: Proofing for "box layout" recipe General improvements to readability, formatting, fixing typos etc. doc/cookbook/layouts.xml | 67 +++++++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 31 deletions(-) commit accdd92110baffe886ab9bcc9dc263058d159ecc Author: Elliot Smith Date: Wed Dec 15 13:13:28 2010 +0000 cookbook: Add examples and more text for "box layout" recipe Added 3 examples for the box layout recipe: 1) Simple box layout demonstrating how to set actor properties 2) Trivial menu implementation using box layout 3) Demonstration app which enables tweaking and testing of layout property interactions Also inlined example 1 in the solution section and added more explanatory text in the discussion. doc/cookbook/examples/Makefile.am | 6 + doc/cookbook/examples/layouts-box-menu.c | 151 +++++++ .../examples/layouts-box-property-effects.c | 465 ++++++++++++++++++++ doc/cookbook/examples/layouts-box.c | 95 ++++ doc/cookbook/images/layouts-box.png | Bin 0 -> 1515 bytes doc/cookbook/layouts.xml | 134 +++++- 6 files changed, 841 insertions(+), 10 deletions(-) commit 77aacd185dcdd1673e1c3fb058d93a5803febe6a Author: Elliot Smith Date: Tue Dec 14 18:08:28 2010 +0000 cookbook: Add initial skeleton for box layout recipe Created recipe and first draft content for recipe about ClutterBoxLayout. doc/cookbook/layouts.xml | 264 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 264 insertions(+) commit 6c244c05497237ee2640d3d4cf7cd3d00baf469f Author: Emmanuele Bassi Date: Fri Dec 17 13:53:28 2010 +0000 geometry: Avoid sign issues when interpolating Width and height in ClutterGeometry are unsigned, and this might lead to overflow and wrap around issues. clutter/clutter-actor.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit c3313726f0c6911eee8709a15fe51ec0421d7422 Author: Alexandre Quessy Date: Tue Dec 14 17:45:45 2010 -0500 Fixed a typo in a doc string http://bugzilla.clutter-project.org/show_bug.cgi?id=2485 clutter/clutter-deform-effect.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 140f818fb14181135891b06bde54649564f0bc07 Author: Emmanuele Bassi Date: Fri Dec 17 12:07:06 2010 +0000 Update NEWS NEWS | 5 +++++ 1 file changed, 5 insertions(+) commit c444447cd3712153127f4fdd2ac03262ec7689d2 Author: Emmanuele Bassi Date: Fri Dec 17 12:04:11 2010 +0000 timeline: Rename the reverse property to auto-reverse Other frameworks expose the same functionality as "auto-reverse", probably to match the cassette tape player. It actually makes sense for Clutter to follow suit. clutter/clutter-timeline.c | 57 ++++++++++---------- clutter/clutter-timeline.h | 4 +- doc/cookbook/animations.xml | 4 +- .../examples/animations-looping-implicit.c | 2 +- doc/reference/clutter/clutter-sections.txt | 4 +- .../clutter/migrating-ClutterBehaviour.xml | 2 +- tests/interactive/test-behave.c | 2 +- tests/interactive/test-layout.c | 2 +- tests/interactive/test-threads.c | 1 + 9 files changed, 39 insertions(+), 39 deletions(-) commit 397e0ddb166097ae9a281c70bbff49196e513c5b Author: Emmanuele Bassi Date: Thu Dec 16 15:30:53 2010 +0000 interactive: Rename test-rotate The rotation test is now really testing the shader-based effects we ship with Clutter. The name should be changed to reflect that. tests/interactive/Makefile.am | 2 +- tests/interactive/test-rotate.c | 82 ------------------------------- tests/interactive/test-shader-effects.c | 82 +++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+), 83 deletions(-) commit c2365c63cfd2d9e0c6116a39c7a50defc193c482 Author: Emmanuele Bassi Date: Thu Dec 16 15:25:29 2010 +0000 interactive: Remove test-viewport The test-viewport interactive test is exercising the clip code - a job better done by the conformance test suite and by the test-clip interactive test. tests/interactive/Makefile.am | 1 - tests/interactive/test-viewport.c | 69 ------------------------------------- 2 files changed, 70 deletions(-) commit 1515a9f98971c813d50a4c0004eb49c597fc3144 Author: Emmanuele Bassi Date: Thu Dec 16 15:10:27 2010 +0000 interactive: Remove test-project The test-project test case was an old test that was barely working after landing the size allocation API in Clutter 0.8. It has never been fixed, and it's been of relative use ever since. tests/interactive/Makefile.am | 1 - tests/interactive/test-project.c | 229 -------------------------------------- 2 files changed, 230 deletions(-) commit 8ae47eb79c0c67faaf8c594aa7e8e2560abc358e Author: Emmanuele Bassi Date: Thu Dec 16 15:08:11 2010 +0000 interactive: Remove test-offscreen The test-offscreen interactive test was a dummy test for the ClutterStage:offscreen property, which has been deprecated and not implemented since Clutter 1.0, and never really worked except briefly in Clutter 0.2 or something. tests/interactive/Makefile.am | 1 - tests/interactive/test-offscreen.c | 32 -------------------------------- 2 files changed, 33 deletions(-) commit faaff037306be31b69fa255b8d3dae91b341256b Author: Neil Roberts Date: Mon Dec 13 17:21:58 2010 +0000 clutter-stage: Don't always set the projection and viewport matrix The stage has a dirty flag to record whenever the viewport and projection matrices need to be flushed. However after flushing these the flags were never cleared so it would always redundantly update the state. http://bugzilla.clutter-project.org/show_bug.cgi?id=2480 clutter/clutter-stage.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) commit f5954339427f19e3c7332ec10d8cfd43c073d724 Author: Neil Roberts Date: Tue Dec 14 13:02:47 2010 +0000 cogl-pipeline-fragend-arbfp: Generate ARBfp if user vertex shader The ARBfp fragend was bypassing generating a shader if the pipeline contains a user program. However it shouldn't do this if the pipeline only contains a vertex shader. This was breaking test-cogl-just-vertex-shader. clutter/cogl/cogl/cogl-pipeline-fragend-arbfp.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) commit 52442414d953e90930d3928e81216e0f3ac194fe Author: Emmanuele Bassi Date: Fri Dec 10 17:46:58 2010 +0000 cally: Allow memory management for actions Adding an action should allow passing a user data pointer, and have a notification action that gets called when removing the action. This allows introspection and language bindings to attach custom data to the action - for instance, the real callable object that should be invoked. http://bugzilla.clutter-project.org/show_bug.cgi?id=2479 clutter/cally/cally-actor.c | 94 +++++++++++++++++++++++++++++-------------- clutter/cally/cally-actor.h | 47 ++++++++++++++++------ 2 files changed, 97 insertions(+), 44 deletions(-) commit def14e80cbb898c6c198a5caf3a2a3ad15d5e8e1 Author: Mike Owens Date: Thu Dec 9 09:39:23 2010 -0500 ClutterText: Only grab keyboard focus if keyboard-interactive. Previously, ClutterText took keyboard focus on mouse-down, regardless if it were editable or selectable. Now it checks these properties, and behaves like other actors if it can't do anything useful with the focus. http://bugzilla.clutter-project.org/show_bug.cgi?id=2462 clutter/clutter-text.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 7b985f034fae95862f0c080a6311ccf0ac4f3966 Author: Neil Roberts Date: Sat Nov 27 13:15:02 2010 +0000 Allow multiple CoglAtlases for textures Previously Cogl would only ever use one atlas for textures and if it reached the maximum texture size then all other new textures would get their own GL texture. This patch makes it so that we create as many atlases as needed. This should avoid breaking up some batches and it will be particularly good if we switch to always using multi-texturing with a default shader that selects between multiple atlases using a vertex attribute. Whenever a new atlas is created it is stored in a GSList on the context. A weak weference is taken on the atlas using cogl_object_set_user_data so that it can be removed from the list when the atlas is destroyed. The atlas textures themselves take a reference to the atlas and this is the only thing that keeps the atlas alive. This means that once the atlas becomes empty it will automatically be destroyed. All of the COGL_NOTEs pertaining to atlases are now prefixed with the atlas pointer to make it clearer which atlas is changing. clutter/cogl/cogl/cogl-atlas-texture-private.h | 10 +-- clutter/cogl/cogl/cogl-atlas-texture.c | 105 ++++++++++++++++-------- clutter/cogl/cogl/cogl-atlas.c | 19 +++-- clutter/cogl/cogl/cogl-atlas.h | 3 - clutter/cogl/cogl/cogl-context.c | 5 +- clutter/cogl/cogl/cogl-context.h | 2 +- clutter/cogl/pango/cogl-pango-glyph-cache.c | 1 + 7 files changed, 93 insertions(+), 52 deletions(-) commit d01a70762395d7ff353df1fb77397b4dfab284cf Author: Neil Roberts Date: Sat Nov 27 13:06:38 2010 +0000 cogl-atlas: Convert to be a CoglObject subclass To implement multiple atlases it will be useful to have ref-counting on the CoglAtlas so it makes sense to convert it to be a CoglObject. clutter/cogl/cogl/cogl-atlas.c | 10 ++++++++-- clutter/cogl/cogl/cogl-atlas.h | 8 +++++--- clutter/cogl/cogl/cogl-context.c | 2 +- clutter/cogl/pango/cogl-pango-glyph-cache.c | 4 ++-- 4 files changed, 16 insertions(+), 8 deletions(-) commit d03c3a646ae4d26358ad5a48fe320845f7f099ed Author: Neil Roberts Date: Tue Dec 7 13:58:46 2010 +0000 test-cogl-just-vertex-shader: Update to use the portable cogl_* names The vertex shader in this test now uses the cogl_* names for the GL builtin so that it will work on GLES2 as well. tests/conform/test-cogl-just-vertex-shader.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit d1ddca4eeecf26df9c5a707ef5f88175d90feb34 Author: Neil Roberts Date: Tue Dec 7 13:44:45 2010 +0000 cogl-shader-boilerplate: Add the 3D texture extension on GLES2 To use the 3D texture extension on GLES2 it has to be enabled with the following line in GLSL: #extension GL_OES_texture_3D : enable clutter/cogl/cogl/cogl-shader.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) commit e0a02b2b5bc4ef88e8829d271380148a966e8494 Author: Neil Roberts Date: Tue Dec 7 12:49:00 2010 +0000 test-cogl-multitexture: Don't test the alpha component On EGL we don't request a context with any alpha bits so testing alpha component of cogl_read_pixels isn't reliable. tests/conform/test-cogl-multitexture.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit afe39296180e3839c42c5327f55ff8a773ba7000 Author: Neil Roberts Date: Tue Dec 7 11:39:37 2010 +0000 test-cogl-materials: Use GL_MAX_VERTEX_ATTRIBS on GLES2 When determining the maximum number of layers we also need to take into account GL_MAX_VERTEX_ATTRIBS on GLES2. Cogl needs one vertex attrib for each texture unit plus two for the position and color. tests/conform/test-cogl-materials.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) commit bdeb555ae1e440de0453cd8fd4a024ba8381016f Author: Neil Roberts Date: Tue Dec 7 10:38:51 2010 +0000 cogl2-path: Don't flush the enable flags All of the drawing needed in _cogl_add_path_to_stencil_buffer is done with the vertex attribute API so there should be no need to flush the enable flags to enable the vertex array. This was causing problems on GLES2 where the vertex array isn't available. clutter/cogl/cogl/cogl2-path.c | 5 ----- 1 file changed, 5 deletions(-) commit 7dc4b3c8947de12ca111edba52a9387287f97a82 Author: Neil Roberts Date: Sun Dec 5 18:02:05 2010 +0000 Remove the GLES2 wrapper The GLES2 wrapper is no longer needed because the shader generation is done within the GLSL fragend and vertend and any functions that are different for GLES2 are now guarded by #ifdefs. build/stringify.sh | 94 -- clutter/cogl/cogl/Makefile.am | 20 - clutter/cogl/cogl/cogl-atlas.c | 6 +- clutter/cogl/cogl/cogl-buffer.c | 4 - clutter/cogl/cogl/cogl-clip-stack.c | 13 +- clutter/cogl/cogl/cogl-context.c | 6 +- clutter/cogl/cogl/cogl-framebuffer.c | 6 +- clutter/cogl/cogl/cogl-pipeline-fragend-arbfp.c | 4 - clutter/cogl/cogl/cogl-pipeline-fragend-glsl.c | 4 - clutter/cogl/cogl/cogl-pipeline-opengl.c | 16 +- clutter/cogl/cogl/cogl-pipeline-progend-glsl.c | 34 +- clutter/cogl/cogl/cogl-pipeline-vertend-glsl.c | 24 + clutter/cogl/cogl/cogl-pixel-array.c | 4 - clutter/cogl/cogl/cogl-texture-2d.c | 2 + clutter/cogl/cogl/cogl-texture-3d.c | 2 + clutter/cogl/cogl/cogl-vertex-attribute.c | 1 - clutter/cogl/cogl/cogl.c | 16 +- .../cogl/driver/gles/cogl-context-driver-gles.c | 6 - .../cogl/driver/gles/cogl-context-driver-gles.h | 4 - .../cogl/driver/gles/cogl-fixed-vertex-shader.glsl | 73 -- clutter/cogl/cogl/driver/gles/cogl-gles.c | 4 + clutter/cogl/cogl/driver/gles/cogl-gles2-wrapper.c | 993 -------------------- clutter/cogl/cogl/driver/gles/cogl-gles2-wrapper.h | 388 -------- .../cogl/driver/gles/cogl-texture-driver-gles.c | 6 +- 24 files changed, 81 insertions(+), 1649 deletions(-) commit 1999bee5d2d5d14a97eacb84edb6ce364202b082 Author: Neil Roberts Date: Mon Dec 6 21:29:56 2010 +0000 cogl-pipeline: Use enums for the layer combine values Once the GLES2 wrapper is removed then we won't have the GLenums needed for setting up the layer combine state. This adds Cogl enums instead which have the same values as the corresponding GLenums. The enums are: CoglPipelineCombineFunc CoglPipelineCombineSource and CoglPipelineCombineOp clutter/cogl/cogl/cogl-pipeline-fragend-arbfp.c | 41 ++++----- clutter/cogl/cogl/cogl-pipeline-fragend-glsl.c | 48 +++++----- clutter/cogl/cogl/cogl-pipeline-private.h | 46 ++++++++-- clutter/cogl/cogl/cogl-pipeline.c | 107 +++++++++++++---------- 4 files changed, 148 insertions(+), 94 deletions(-) commit 271acaaae5d9e698ed1eefb201b2fa49b7bb3d2d Author: Neil Roberts Date: Mon Dec 6 12:31:51 2010 +0000 cogl: upload matrices with uniforms on GLES2 Once the GLES2 wrapper is removed we won't be able to upload the matrices with the fixed function API any more. The fixed function API gives a global state for setting the matrix but if a custom shader uniform is used for the matrices then the state is per program. _cogl_matrix_stack_flush_to_gl is called in a few places and it is assumed the current pipeline doesn't need to be flushed before it is called. To allow these semantics to continue to work, on GLES2 the matrix flush now just stores a reference to the matrix stack in the CoglContext. A pre_paint virtual is added to the progend which is called whenever a pipeline is flushed, even if the same pipeline was flushed already. This gives the GLSL progend a chance to upload the matrices to the uniforms. The combined modelview/projection matrix is only calculated if it is used. The generated programs end up never using the modelview or projection matrix so it usually only has to upload the combined matrix. When a matrix stack is flushed a reference is taked to it by the pipeline progend and the age is stored so that if the same state is used with the same program again then we don't need to reupload the uniform. clutter/cogl/cogl/cogl-context.c | 12 + clutter/cogl/cogl/cogl-context.h | 10 + clutter/cogl/cogl/cogl-matrix-stack.c | 127 +++++++--- clutter/cogl/cogl/cogl-matrix-stack.h | 10 + clutter/cogl/cogl/cogl-pipeline-opengl.c | 7 + clutter/cogl/cogl/cogl-pipeline-private.h | 4 + clutter/cogl/cogl/cogl-pipeline-progend-glsl.c | 250 +++++++++++++++++++- clutter/cogl/cogl/cogl-pipeline-vertend-glsl.c | 4 + clutter/cogl/cogl/driver/gles/cogl-gles2-wrapper.c | 2 + 9 files changed, 396 insertions(+), 30 deletions(-) commit 67847260bca8ef313650497050e284a1971918aa Author: Neil Roberts Date: Fri Dec 10 17:42:39 2010 +0000 cogl-matrix-stack: Add _cogl_matrix_stack_has_identity_flag This adds an internal function to quickly determine whether the top of the matrix stack is known to be the identity matrix. clutter/cogl/cogl/cogl-matrix-stack.c | 6 ++++++ clutter/cogl/cogl/cogl-matrix-stack.h | 7 +++++++ 2 files changed, 13 insertions(+) commit 016005591dfa765255b05d96f701497ed7a59d23 Author: Neil Roberts Date: Fri Dec 10 16:06:16 2010 +0000 cogl-matrix-stack: Convert to be a CoglObject We will want to use ref-counting on the CoglMatrixStack so it might as well be a CoglObject. clutter/cogl/cogl/cogl-framebuffer.c | 4 ++-- clutter/cogl/cogl/cogl-matrix-stack.c | 13 ++++++++++--- clutter/cogl/cogl/cogl-matrix-stack.h | 3 --- clutter/cogl/cogl/cogl-pipeline-opengl.c | 2 +- 4 files changed, 13 insertions(+), 9 deletions(-) commit 58a22613877fc041549eddeafbc364d369c5e445 Author: Robert Bragg Date: Fri Dec 10 11:34:02 2010 +0000 matrix-stack: Make header style consistent Cogl doesn't follow the Clutter/GTK+ columnized function prototype style so this updates cogl-matrix-stack.h to match the other Cogl headers. clutter/cogl/cogl/cogl-matrix-stack.c | 2 +- clutter/cogl/cogl/cogl-matrix-stack.h | 126 ++++++++++++++++++++------------- 2 files changed, 76 insertions(+), 52 deletions(-) commit 4976d229405c7010a6ef1e621bcfb581b7eff99a Author: Robert Bragg Date: Fri Dec 10 11:13:09 2010 +0000 matrix-stack: Adds a stack age counter Sometimes it would be useful if we could efficiently track when a matrix stack has been modified. For example on GLES2 we have to upload the modelview as a uniform to our glsl programs but because the modelview state is part of the framebuffer state it becomes a bit more tricky to know when to re-sync the value of the uniform with the framebuffer state. This adds an "age" counter to CoglMatrixStack which is incremented for any operation that effectively modifies the top of the stack so now we can save the age of the stack inside the pipeline whenever we update modelview uniform and later compare that with the stack to determine if it has changed. clutter/cogl/cogl/cogl-matrix-stack.c | 18 ++++++++++++++++++ clutter/cogl/cogl/cogl-matrix-stack.h | 2 ++ 2 files changed, 20 insertions(+) commit 856d43a27cd4090467de08cd5738f10ec7e06ebd Author: Neil Roberts Date: Mon Dec 6 12:31:16 2010 +0000 cogl-pipeline: Add internal API to get the layer matrix This returns the layer matrix given a pipeline and a layer index. The API is kept as internal because it directly returns a pointer into the layer private data to avoid a copy into an out-param. We might also want to add a public function which does the copy. clutter/cogl/cogl/cogl-pipeline-private.h | 4 ++++ clutter/cogl/cogl/cogl-pipeline.c | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) commit 4514d49dda70b9b5a1833c7809dc4d22b1bcd3cd Author: Neil Roberts Date: Fri Dec 3 17:46:16 2010 +0000 cogl-vertex-attribute: Use glVertexAttribPointer on GLES2 When the GLES2 wrapper is removed we can't use the fixed function API such as glColorPointer to set the builtin attributes. Instead the GLSL progend now maintains a cache of attribute locations that are queried with glGetAttribLocation. The code that previously maintained a cache of the enabled texture coord arrays has been modified to also cache the enabled vertex attributes under GLES2. The vertex attribute API is now the only place that is using this cache so it has been moved into cogl-vertex-attribute.c clutter/cogl/cogl/cogl-bitmask.c | 16 +- clutter/cogl/cogl/cogl-bitmask.h | 10 +- clutter/cogl/cogl/cogl-context.c | 8 +- clutter/cogl/cogl/cogl-context.h | 8 +- clutter/cogl/cogl/cogl-internal.h | 6 - clutter/cogl/cogl/cogl-pipeline-opengl.c | 30 +- .../cogl/cogl/cogl-pipeline-progend-glsl-private.h | 18 ++ clutter/cogl/cogl/cogl-pipeline-progend-glsl.c | 139 +++++++++ clutter/cogl/cogl/cogl-vertex-attribute-private.h | 3 + clutter/cogl/cogl/cogl-vertex-attribute.c | 311 +++++++++++++++----- clutter/cogl/cogl/cogl.c | 36 +-- 11 files changed, 451 insertions(+), 134 deletions(-) commit 1515a8d73a0ea3ad6f6f8719e833bc17bb7c0001 Author: Neil Roberts Date: Fri Dec 3 11:31:09 2010 +0000 cogl-path: Stroke using the vertex attribute API Previously when stroking a path it was flushing a pipeline and then directly calling glDrawArrays to draw the line strip from the path nodes array. This patch changes it to build a CoglVertexArray and a series of attributes to paint with instead. The vertex array and attributes are attached to the CoglPath so it can be reused later. The old vertex array for filling has been renamed to fill_vbo. clutter/cogl/cogl/cogl-path-private.h | 12 +- clutter/cogl/cogl/cogl2-path.c | 201 ++++++++++++++++++++++----------- 2 files changed, 143 insertions(+), 70 deletions(-) commit 3c5fa0cf9042827d205f90ac98c2eac9494707e9 Author: Neil Roberts Date: Thu Dec 2 22:19:44 2010 +0000 cogl: Move COGL_DEBUG=show-source into cogl-shader.c The code to display the source when the show-source debug option is given has been moved to _cogl_shader_set_source_with_boilerplate so that it will show both user shaders and generated shaders. It also shows the code with the full boilerplate. To make it the same for ARBfp, cogl_shader_compile_real now also dumps user ARBfp shaders. clutter/cogl/cogl/cogl-pipeline-fragend-glsl.c | 5 ----- clutter/cogl/cogl/cogl-pipeline-vertend-glsl.c | 5 ----- clutter/cogl/cogl/cogl-shader.c | 23 +++++++++++++++++++++++ 3 files changed, 23 insertions(+), 10 deletions(-) commit 8764a0d4874949c12d6c0e6af863d81a39bc4991 Author: Neil Roberts Date: Thu Dec 2 20:48:45 2010 +0000 cogl: Add a vertend to generate GLSL The GLSL vertend is mostly only useful for GLES2. The fixed function vertend is kept at higher priority than the GLSL vertend so it is unlikely to be used in any other circumstances. clutter/cogl/cogl/Makefile.am | 2 + clutter/cogl/cogl/cogl-context.c | 3 +- clutter/cogl/cogl/cogl-context.h | 3 +- clutter/cogl/cogl/cogl-pipeline-fragend-arbfp.c | 3 +- clutter/cogl/cogl/cogl-pipeline-fragend-fixed.c | 10 +- clutter/cogl/cogl/cogl-pipeline-fragend-glsl.c | 13 +- clutter/cogl/cogl/cogl-pipeline-opengl.c | 130 +++++-- clutter/cogl/cogl/cogl-pipeline-private.h | 30 +- clutter/cogl/cogl/cogl-pipeline-progend-glsl.c | 83 ++-- clutter/cogl/cogl/cogl-pipeline-vertend-fixed.c | 28 ++ .../cogl/cogl/cogl-pipeline-vertend-glsl-private.h | 39 ++ clutter/cogl/cogl/cogl-pipeline-vertend-glsl.c | 396 ++++++++++++++++++++ clutter/cogl/cogl/cogl-pipeline.c | 7 + clutter/cogl/cogl/driver/gles/cogl-gles2-wrapper.c | 19 +- 14 files changed, 679 insertions(+), 87 deletions(-) commit 6c34fb7232f3d82a6f5720fc9e07a41d997e643b Author: Neil Roberts Date: Tue Dec 7 12:33:39 2010 +0000 cogl-shader-boilerplate: Don't put the color attrib in location 0 Due to Mesa bug 28585 calling glVertexAttrib with attrib location 0 doesn't appear to work. This patch just reorders the vertex and color attributes in the shader in the hope that Mesa will assign the color attribute to a different location. clutter/cogl/cogl/cogl-shader-boilerplate.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit cf0ded1361bd639f7143aef02f37f17f01bdcf04 Author: Neil Roberts Date: Thu Dec 2 22:08:51 2010 +0000 cogl-shader-boilerplate: Add more builtins for GLES2 Some builtin attributes such as the matrix uniforms and some varyings were missing from the boilerplate for GLES2. This also moves the texture matrix and texture coord attribute declarations to cogl-shader.c so that they can be dynamically defined depending on the number of texture coord arrays enabled. clutter/cogl/cogl/cogl-shader-boilerplate.h | 23 +++++++++++++++++--- clutter/cogl/cogl/cogl-shader.c | 30 +++++++++++++++++++++------ 2 files changed, 44 insertions(+), 9 deletions(-) commit 17d689f79480f9d08c1ef8e62b990db0cdb6a36d Author: Neil Roberts Date: Thu Dec 2 18:05:22 2010 +0000 cogl-pipeline: Rename the fragment_{source,header}_buffer to codegen We want to reuse the same buffers for vertends so calling them fragment_* doesn't make sense. clutter/cogl/cogl/cogl-context.c | 4 ++-- clutter/cogl/cogl/cogl-context.h | 4 ++-- clutter/cogl/cogl/cogl-pipeline-fragend-arbfp.c | 4 ++-- clutter/cogl/cogl/cogl-pipeline-fragend-glsl.c | 8 ++++---- clutter/cogl/cogl/cogl-pipeline-progend-glsl.c | 12 ++++++------ 5 files changed, 16 insertions(+), 16 deletions(-) commit a3e53dd029632166a51333249baa49b5e97644c9 Author: Neil Roberts Date: Mon Nov 29 18:32:21 2010 +0000 cogl: Add a fixed function vertend The vertends are intended to flush state that would be represented in a vertex program. Code to handle the layer matrix, lighting and point size has now been moved from the common cogl-pipeline-opengl backend to the fixed vertend. clutter/cogl/cogl/Makefile.am | 2 + clutter/cogl/cogl/cogl-pipeline-opengl.c | 109 ++++++++++++++----- clutter/cogl/cogl/cogl-pipeline-private.h | 34 +++++- .../cogl/cogl-pipeline-vertend-fixed-private.h | 36 +++++++ clutter/cogl/cogl/cogl-pipeline-vertend-fixed.c | 114 ++++++++++++++++++++ clutter/cogl/cogl/cogl-pipeline.c | 80 +++++++++++++- 6 files changed, 342 insertions(+), 33 deletions(-) commit 313adc7bdf9c8a0d61cedf7e34d1cd3e961a7ea2 Author: Neil Roberts Date: Thu Dec 2 14:00:46 2010 +0000 cogl: Add a GLSL 'progend' 'progend' is short for 'program backend'. The progend is intended to operate on combined state from a fragment backend and a vertex backend. The progend has an 'end' function which is run whenever the pipeline is flushed and the two pipeline change notification functions. All of the progends are run whenever the pipeline is flushed instead of selecting a single one because it is possible that multiple progends may be in use for example if the vertends and fragends are different. The GLSL progend will take the shaders generated by the fragend and vertend and link them into a single program. The fragend code has been changed to only generate the shader and not the program. The idea is that pipelines can share fragment shader objects even if their vertex state is different. The authority for the progend needs to be the combined authority on the vertend and fragend state. clutter/cogl/cogl/Makefile.am | 2 + .../cogl/cogl/cogl-pipeline-fragend-glsl-private.h | 3 + clutter/cogl/cogl/cogl-pipeline-fragend-glsl.c | 725 +++++--------------- clutter/cogl/cogl/cogl-pipeline-opengl.c | 5 + clutter/cogl/cogl/cogl-pipeline-private.h | 29 + .../cogl/cogl/cogl-pipeline-progend-glsl-private.h | 36 + clutter/cogl/cogl/cogl-pipeline-progend-glsl.c | 542 +++++++++++++++ clutter/cogl/cogl/cogl-pipeline.c | 39 +- 8 files changed, 839 insertions(+), 542 deletions(-) commit 1e3cdb60d6a6ad67c4e693687c5c9c64a25d7cec Author: Neil Roberts Date: Thu Dec 2 13:54:15 2010 +0000 cogl-program: Add private functions to check if have each shader type This adds two internal functions: gboolean _cogl_program_has_fragment_shader (CoglHandle handle); gboolean _cogl_program_has_vertex_shader (CoglHandle handle); They just check whether any of the contained shaders are of that type. clutter/cogl/cogl/cogl-program-private.h | 6 ++++++ clutter/cogl/cogl/cogl-program.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) commit 31f0eb4f715a3622260965b0b0a3be132cde8d23 Author: Neil Roberts Date: Wed Dec 1 17:06:18 2010 +0000 cogl-pipeline: Make find codegen authority more general The pipeline function _cogl_pipeline_find_codegen_authority has been renamed to _cogl_pipeline_find_equivalent_parent and it now takes a set of flags for the pipeline and layer state that affects the authority. This is needed so that we can reuse the same code in the vertend and progends. clutter/cogl/cogl/cogl-pipeline-fragend-arbfp.c | 47 +++----- clutter/cogl/cogl/cogl-pipeline-fragend-glsl.c | 9 +- clutter/cogl/cogl/cogl-pipeline-private.h | 39 ++++++- clutter/cogl/cogl/cogl-pipeline.c | 137 ++++++++++------------- 4 files changed, 116 insertions(+), 116 deletions(-) commit a1996706a293458221bce7a4126f82f64e4ca3c3 Author: Neil Roberts Date: Tue Nov 30 12:48:27 2010 +0000 cogl-pipeline: Move texture enabling/disabling to fixed fragend Previously enabling and disabling textures was done whatever the backend in cogl-pipeline-opengl. However enabling and disabling texture targets only has any meaning if no fragment shaders are being used so this patch moves the code to cogl-pipeline-fragend-fixed. The GLES2 wrapper has also been changed to ignore enabledness when deciding whether to update texture coordinate attribute pointers. clutter/cogl/cogl/cogl-pipeline-fragend-arbfp.c | 7 -- clutter/cogl/cogl/cogl-pipeline-fragend-fixed.c | 107 +++++++++++++++++++- clutter/cogl/cogl/cogl-pipeline-fragend-glsl.c | 7 -- clutter/cogl/cogl/cogl-pipeline-opengl-private.h | 16 ++- clutter/cogl/cogl/cogl-pipeline-opengl.c | 95 +++-------------- clutter/cogl/cogl/cogl-pipeline-private.h | 2 - clutter/cogl/cogl/driver/gles/cogl-gles2-wrapper.c | 67 ++++++------ 7 files changed, 157 insertions(+), 144 deletions(-) commit 952878aab1d0610b09d048495295fd84499b70e9 Author: Neil Roberts Date: Mon Nov 29 16:56:41 2010 +0000 Rename CoglPipelineBackend to CoglPipelineFragend The current Cogl pipeline backends are entirely concerned with the fragment processing state. We also want to eventually have separate backends to generate shaders for the vertex processing state so we need to rename the fragment backends. 'Fragend' is a somewhat weird name but we wanted to avoid ending up with illegible symbols like CoglPipelineFragmentBackendGlslPrivate. clutter/cogl/cogl/Makefile.am | 12 +- clutter/cogl/cogl/cogl-context.c | 6 +- clutter/cogl/cogl/cogl-pipeline-arbfp-private.h | 42 - clutter/cogl/cogl/cogl-pipeline-arbfp.c | 1133 ------------------ clutter/cogl/cogl/cogl-pipeline-fixed-private.h | 36 - clutter/cogl/cogl/cogl-pipeline-fixed.c | 260 ---- .../cogl/cogl-pipeline-fragend-arbfp-private.h | 43 + clutter/cogl/cogl/cogl-pipeline-fragend-arbfp.c | 1133 ++++++++++++++++++ .../cogl/cogl-pipeline-fragend-fixed-private.h | 36 + clutter/cogl/cogl/cogl-pipeline-fragend-fixed.c | 260 ++++ .../cogl/cogl/cogl-pipeline-fragend-glsl-private.h | 36 + clutter/cogl/cogl/cogl-pipeline-fragend-glsl.c | 1263 ++++++++++++++++++++ clutter/cogl/cogl/cogl-pipeline-glsl-private.h | 36 - clutter/cogl/cogl/cogl-pipeline-glsl.c | 1263 -------------------- clutter/cogl/cogl/cogl-pipeline-opengl.c | 66 +- clutter/cogl/cogl/cogl-pipeline-private.h | 48 +- clutter/cogl/cogl/cogl-pipeline.c | 100 +- 17 files changed, 2887 insertions(+), 2886 deletions(-) commit dc61d58c0df9dde51472bae17b1997c82cfcddb1 Author: Neil Roberts Date: Thu Dec 2 15:37:53 2010 +0000 cogl-pipeline-opengl: Remove the includes for the various backends Nothing in cogl-pipeline-opengl needs to know about the actual backend implementations, instead it just accesses then through the vtables. clutter/cogl/cogl/cogl-pipeline-opengl.c | 10 ---------- 1 file changed, 10 deletions(-) commit 54db48dfd1e1b151a3b92e160181f44305e21089 Author: Emmanuele Bassi Date: Sat Dec 11 17:40:52 2010 +0000 animation: Allow transforming values in bind() While we do check for compatibility and transformability of a GValue with the GParamSpec value type, we are actually failing really badly at it. First of all, we bail out on the wrong conditions. Then we use the type of the value passed instead of using the type of the property itself. This makes it impossible to actually use transformation functions for GValue types - even those that have been registered by GLib itself - when using the Animation API directly, instead of going through the clutter_actor_animate() wrappers. clutter/clutter-animation.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) commit ae4e06d8c4ca2bd93a12e4ace38c0c888edcddf1 Author: Emmanuele Bassi Date: Fri Dec 10 17:15:39 2010 +0000 introspection: Skip some C-only structures The ParamSpec sub-classes we define are meant to be used only from the C API, as high-level languages completely ignore them. The ClutterStageWindow interface is an internal type that escaped into the public headers; all its methods are private, but we cannot remove the type until we break for 2.0. clutter/clutter-color.h | 16 ++++++++-------- clutter/clutter-fixed.h | 2 +- clutter/clutter-stage-window.h | 4 ++-- clutter/clutter-units.h | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) commit d5a418304712e38c7055114fa5b13a904fae9883 Author: Emmanuele Bassi Date: Fri Dec 10 17:15:23 2010 +0000 introspection: Add cairo-1.0 to the dependencies clutter/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 49a43a0772d749d280a7fc6ceb561c6452dc859f Author: Emmanuele Bassi Date: Fri Dec 10 16:03:10 2010 +0000 Remove unnecessary duplicate name for private enumerations clutter/clutter-actor-private.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit b91c1ec21c80e99949a19865be2c44c53063d09e Author: Emmanuele Bassi Date: Thu Dec 9 16:05:55 2010 +0000 docs: Update NEWS NEWS | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) commit bc58de4658a206f07d51ddbb9b8c06f37c4cf841 Author: Emmanuele Bassi Date: Thu Dec 9 15:52:04 2010 +0000 docs: Add 1.6 index to the API references doc/reference/cally/cally-docs.xml.in | 5 +++++ doc/reference/clutter/clutter-docs.xml.in | 5 +++++ doc/reference/cogl/cogl-docs.xml.in | 5 +++++ 3 files changed, 15 insertions(+) commit 36c3fc82c5c3eee50878f964f09939b9b169fd82 Author: Emmanuele Bassi Date: Thu Dec 9 15:42:19 2010 +0000 Use G_STRFUNC correctly It cannot be chained up via the pre-processor. clutter/egl/clutter-backend-egl.c | 2 +- clutter/fruity/clutter-backend-fruity.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 24133ddadcd71af74f52b009b178e0ffa9e51374 Author: Emmanuele Bassi Date: Thu Dec 9 15:11:37 2010 +0000 Rename the EGLDisplay accessors The accessor for the EGL display should be namespaced for the correct backend-specific API. clutter/egl/clutter-backend-egl.c | 19 ++++++++++++----- clutter/egl/clutter-egl.h | 28 ++++++++++++++++++------ clutter/fruity/clutter-backend-fruity.c | 32 ++++++++++++++++++++++++++++ clutter/fruity/clutter-fruity.h | 9 ++++++-- clutter/fruity/clutter-stage-fruity.c | 3 ++- clutter/wayland/clutter-backend-wayland.c | 24 ++++++++++----------- clutter/wayland/clutter-stage-wayland.c | 4 ++-- clutter/wayland/clutter-wayland.h | 7 +++--- doc/reference/clutter/clutter-sections.txt | 3 ++- 9 files changed, 95 insertions(+), 34 deletions(-) commit f5b51a2428cb3575ca4cfba98926f4906e6aba8e Author: Emmanuele Bassi Date: Thu Dec 9 15:06:12 2010 +0000 docs: Documentation fixes clutter/clutter-actor-private.h | 30 ++++++++++++++++-------------- doc/reference/clutter/Makefile.am | 1 + 2 files changed, 17 insertions(+), 14 deletions(-) commit ab0eb0a12b9cc05c417b49832b50b88a7cdb0958 Author: Emmanuele Bassi Date: Thu Dec 9 13:59:08 2010 +0000 docs: Documentation fixes clutter/cally/cally-group.c | 2 +- clutter/clutter-main.c | 2 +- clutter/clutter-units.c | 4 ++-- doc/reference/clutter/clutter-animation-tutorial.xml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) commit 8c7298b0c11df3690a8eb5afdd9226af87b4d76f Author: Emmanuele Bassi Date: Thu Dec 9 13:49:01 2010 +0000 build: Check NEWS file during release, not distcheck The check-news option in configure.ac conflicts with the idea of using a buildbot to do a distcheck. Since we're doing some validation on the state of the build during the release-check phase we should add the NEWS file check there. http://bugzilla.clutter-project.org/show_bug.cgi?id=2468 build/autotools/Makefile.am.release | 11 ++++++++++- configure.ac | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) commit 88f7579a9d4dd7b290216b5943d87c8143cceb04 Author: Elliot Smith Date: Thu Dec 9 11:40:27 2010 +0000 cookbook: Remove bold on emphasis inside programlisting If an element is placed inside a in a cookbook recipe, the result is bold italic text in the HTML output. This isn't particularly readable. Fix is to style emphasis elements inside programlistings so the font weight is not bold but is still italicised. http://bugzilla.clutter-project.org/show_bug.cgi?id=2475 doc/common/style.css | 3 +++ 1 file changed, 3 insertions(+) commit ca42ec1a7a3a7b219477d6c16a0aff30d64efb1a Author: Jussi Kukkonen Date: Thu Dec 2 16:08:10 2010 +0200 tests: Add test for clutter_model_get_iter_at_row() http://bugzilla.clutter-project.org/show_bug.cgi?id=2460 tests/conform/test-model.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) commit d8515bf4290bfece33fd41d356e86e74c0728067 Author: Jussi Kukkonen Date: Thu Dec 2 16:27:36 2010 +0200 Fix clutter_list_model_get_iter_at_row() when filtered Currently clutter_list_model_get_iter_at_row() always returns an iterator to the last non-filtered row when asking for row [1-N]. Patch makes the function return an iterator to the Nth non-filtered row or NULL. http://bugzilla.clutter-project.org/show_bug.cgi?id=2460 clutter/clutter-list-model.c | 58 +++++++++++++----------------------------- 1 file changed, 17 insertions(+), 41 deletions(-) commit e7f62bc936995c5d998f7c8dc4b2b1b7254ea97d Author: nobled Date: Tue Dec 7 07:10:59 2010 +0000 wayland: Update to current api Adapt to changes from these wayland commits: 35fd2a8cc68c42d90756330535de04cbbb4d2613 2bb3ebe1e437acf836449f0a63f3264ad29566f2 f8fc08f77187f6a5723281dab66841e5f3c24320 http://bugzilla.clutter-project.org/show_bug.cgi?id=2474 clutter/wayland/clutter-backend-wayland.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit d8a544c0f17f5d6550578a426c1ef1c4060ca411 Author: nobled Date: Tue Dec 7 07:07:40 2010 +0000 wayland: fix typo Fixes the build error: clutter-input-device-wayland.c:154:69: error: too few arguments to function call http://bugzilla.clutter-project.org/show_bug.cgi?id=2473 clutter/wayland/clutter-input-device-wayland.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 3795c9b975d43305c64ed24306736f764ef165bc Author: Emmanuele Bassi Date: Thu Dec 9 12:37:41 2010 +0000 build: Do not hardcode --warn-all for g-ir-scanner It's possible to use --warn-all through the introspection scanner options from outside the build environment. clutter/Makefile.am | 3 --- 1 file changed, 3 deletions(-) commit d229036441b3f0a4f7ab5205de46b5dbc9d9d7a9 Author: Emmanuele Bassi Date: Thu Dec 9 12:36:50 2010 +0000 Reduce the amount of g-ir-scanner warnings As much as we can; the remaining warnings are mostly valid things that the introspection scanner still flags as potential issues. clutter/clutter-actor.h | 26 +++++++++++++------------- clutter/clutter-container.c | 16 ++++++++++++---- clutter/clutter-device-manager.h | 10 +++++----- clutter/clutter-layout-manager.h | 8 ++++---- clutter/clutter-offscreen-effect.h | 6 +++--- clutter/clutter-scriptable.h | 2 +- clutter/x11/clutter-backend-x11.c | 10 +++++----- clutter/x11/clutter-stage-x11.c | 7 ++++--- 8 files changed, 47 insertions(+), 38 deletions(-) commit e1f48b15ee92f60f2a84c808ba0d505f38a1bf61 Author: Emmanuele Bassi Date: Thu Dec 9 12:00:29 2010 +0000 docs: Use :reverse in the Behaviour migration guide Instead of the ::completed signal flip. doc/reference/clutter/migrating-ClutterBehaviour.xml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) commit b16ea099882accbb489d20ef1ea03dc3cb0d2846 Merge: b6318bd 50849ac Author: Emmanuele Bassi Date: Thu Dec 9 11:58:10 2010 +0000 Merge remote branch 'elliot/cookbook-animations-looping-new-api' * elliot/cookbook-animations-looping-new-api: cookbook: Use new API to reverse timeline commit b6318bd8218c021270370d6e8093d38bdabe791d Author: Tomeu Vizoso Date: Tue Dec 7 15:29:05 2010 +0100 Make clutter_shader_effect_set_uniform_value accept G_TYPE_DOUBLE For users of gobject-introspection that cannot know which non-integer type to pass. http://bugzilla.clutter-project.org/show_bug.cgi?id=2471 clutter/clutter-shader-effect.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) commit cf1fced88507e0ccc2fa704d14b3141168a48360 Author: Robert Bragg Date: Wed Dec 8 18:57:42 2010 +0000 pipeline: don't dereference NULL program state This avoid dereferencing a NULL arbfp program state in _cogl_pipeline_backend_arbfp_layer_pre_change_notify for _STATE_COMBINE_CONSTANT changes. clutter/cogl/cogl/cogl-pipeline-arbfp.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) commit 46295a0dd1c0dcbc130ed9dd3aed900e597c8d42 Author: Robert Bragg Date: Wed Dec 8 16:29:37 2010 +0000 arbfp: Copy pipelines used as cache keys We are currently using a pipeline as a key into our arbfp program cache but because we weren't making a copy of the pipelines used as keys there were times when doing a lookup in the cache would end up trying to compare a lookup key with an entry key that would point to invalid memory. Note: the current approach isn't ideal from the pov that that key pipeline may reference some arbitrarily large user textures will now be kept alive indefinitely. The plan to improve on this is that we will have a mechanism to create a special "key pipeline" which will derive from the default Cogl pipeline (to avoid affecting the lifetime of other pipelines) and only copy state from the original pipeline that affects the arbfp program and will reference small dummy textures instead of potentially large user textures. clutter/cogl/cogl/cogl-pipeline-arbfp.c | 34 ++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) commit 87b2300f98727525267a6849c36c74849ea993fd Author: Robert Bragg Date: Wed Dec 8 16:27:57 2010 +0000 arbfp: initialize arbfp_program_state->next_constant_id When allocating a new ArbfpProgramState struct when starting code generation we weren't initializing arbfp_program_state->next_constant_id to 0. clutter/cogl/cogl/cogl-pipeline-arbfp.c | 1 + 1 file changed, 1 insertion(+) commit bac600b21bcbe13d3259fb7cee9e2b378f807d74 Author: Robert Bragg Date: Wed Dec 8 16:23:10 2010 +0000 pipeline: Clarify stages for finding an arbfp program In the arbfp backend there is a seqential approach to finding a suitable arbfp program to use for a given pipeline; first we see if there's already a program associated with the pipeline, 2nd we try and find a program associated with the "arbfp-authority" 3rd we try and lookup a program in a cache and finally we resort to starting code-generation for a new program. This patch slightly reworks the code of these steps to hopefully make them a bit clearer. clutter/cogl/cogl/cogl-pipeline-arbfp.c | 102 ++++++++++++++++++------------- 1 file changed, 60 insertions(+), 42 deletions(-) commit 9606c42c559fefbf397047dad6da3f4f8958b459 Author: Neil Roberts Date: Mon Dec 6 21:14:33 2010 +0000 cogl-pipeline: Fix the layer_has_alpha_cb _cogl_pipeline_needs_blending_enabled tries to determine whether each layer is using the default combine state. However it was using argument 0 for both checks so the if-statement would never be true. clutter/cogl/cogl/cogl-pipeline.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit ab5f394e5aea5a79a0e5d6647e86402ca2ba5e4f Author: Robert Bragg Date: Wed Dec 8 11:38:56 2010 +0000 pipeline: remove unused HashState member There was an unused pipeline_differences member as part of the HashState struct which this patch remove to avoid confusion. clutter/cogl/cogl/cogl-pipeline.c | 1 - 1 file changed, 1 deletion(-) commit 5fd8e9c6083ff17202ceb2cfd2d1c56df0d1da14 Author: Robert Bragg Date: Wed Dec 8 11:35:16 2010 +0000 pipeline: initialize HashState flags member There are a set of "EvalFlags" that get passed to _cogl_pipeline_hash that can tweak the semantics of what state is evaluated for hashing but these flags weren't getting passed via the HashState state structure so it would be undefined if you would get the correct semantics. clutter/cogl/cogl/cogl-pipeline.c | 1 + 1 file changed, 1 insertion(+) commit ea66156c83dded1536009bbdd02032e5e3114c3a Author: Robert Bragg Date: Wed Dec 8 11:30:00 2010 +0000 pipeline: don't use near/far symbols According to 9cc90333473e3 the windows headers #define near as nothing, and presumable the same is true for 'far' too. Apparently this define is to improve compatibility with code written for Windows 3.1, so it's good that people will be able to incorporate such code into their Clutter applications. clutter/cogl/cogl/cogl-pipeline.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit acd3d615686f8b10589ac57b7fb16b4f968ae3fb Author: Emmanuele Bassi Date: Wed Dec 8 14:26:27 2010 +0000 docs: Fix listitem tag clutter/clutter-color.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c454526bbbd91224ab3fa580d80bf937b912d2cc Author: Emmanuele Bassi Date: Wed Dec 8 13:59:53 2010 +0000 docs: Clean up clutter_color_from_string() Add hsl() and hsla() formats, and clean up the wording. clutter/clutter-color.c | 54 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 37 insertions(+), 17 deletions(-) commit ca7dc2f951f1d5cc59c364a186aa065449c2b85f Author: Neil Roberts Date: Tue Dec 7 23:32:47 2010 +0000 cogl-backend-egl: Chain up to the X11 backend init_events Since c6493885c3f18 when building the EGL backend for eglx there was no fallback in the init_events implementation so the X11 backend init function would never get called. This was stopping it from receiving any X events so a lot of things broke. It now just chains up. clutter/egl/clutter-backend-egl.c | 5 +++++ 1 file changed, 5 insertions(+) commit b0751d234240aa5e7899dedba22c607e75f5ad81 Author: Damien Lespiau Date: Tue Dec 7 22:06:07 2010 +0000 input-device: Downgrade over-zealous warning to note This warning is really harmless, we just discard the event anyway, let's demote it to a CLUTTER_NOTE() so event backend implementers can see it. clutter/clutter-input-device.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit f8fc194b3b3529bf4f3230cef00d5d0b042673bf Author: Neil Roberts Date: Tue Dec 7 11:02:21 2010 +0000 clutter-score: Initialize ClutterScoreEntry::complete_id When clutter_score_append_at_marker is called instead of clutter_score_append the complete_id field of ClutterScoreEntry was being left uninitialised. When the entry is eventually freed it would sometimes try to disconnect an invalid signal id. This was causing conformance test failures for me on GLES2. clutter/clutter-score.c | 1 + 1 file changed, 1 insertion(+) commit 9d836d8ce5d95749e1b3562f1cab77d9ac27cb1e Author: Robert Bragg Date: Tue Dec 7 16:44:36 2010 +0000 context: only declare arbfp cache for GL We were trying to declare and initializing an arbfp program cache for GLES but since the prototypes for the _hash and _equal functions were only available for GL this broke the GLES builds. By #ifdefing the code to conditionally declare/initialize for GL only this should hopefully fix GLES builds. clutter/cogl/cogl/cogl-context.c | 4 ++++ clutter/cogl/cogl/cogl-context.h | 2 ++ 2 files changed, 6 insertions(+) commit 67c2a1b29fa679f3a86b8ee4cae682de8391397b Author: Robert Bragg Date: Tue Dec 7 16:36:44 2010 +0000 pipeline: remove spurious use of True instead of TRUE The constant 'True' is defined by Xlib which isn't used for all clutter builds so this replaces occurrences of True with TRUE which is defined by glib. This should hopefully fix the win32 builds. clutter/cogl/cogl/cogl-pipeline.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 464ed7e6b7c35248c03fd0a03a8e8087e7b5e274 Author: Robert Bragg Date: Fri Dec 3 12:01:18 2010 +0000 arbfp: Adds an ARBfp program cache This adds a cache (A GHashTable) of ARBfp programs and before ever starting to code-generate a new program we will always first try and find an existing program in the cache. This uses _cogl_pipeline_hash and _cogl_pipeline_equal to hash and compare the keys for the cache. There is a new COGL_DEBUG=disable-program-caches option that can disable the cache for debugging purposes. clutter/cogl/cogl/cogl-context.c | 6 ++ clutter/cogl/cogl/cogl-context.h | 2 + clutter/cogl/cogl/cogl-debug-options.h | 5 + clutter/cogl/cogl/cogl-debug.c | 8 +- clutter/cogl/cogl/cogl-debug.h | 3 +- clutter/cogl/cogl/cogl-pipeline-arbfp-private.h | 6 ++ clutter/cogl/cogl/cogl-pipeline-arbfp.c | 111 +++++++++++++++++++---- 7 files changed, 118 insertions(+), 23 deletions(-) commit e87c3820ee729930d4a7b84f4737b99eb26ad03d Author: Robert Bragg Date: Thu Nov 4 13:57:36 2010 +0000 pipeline: Implements _cogl_pipeline_hash function This allows us to get a hash for a set of state groups for a given pipeline. This can be used for example to get a hash of the fragment processing state of a pipeline so we can implement a cache for compiled arbfp/glsl programs. clutter/cogl/cogl/cogl-color-private.h | 5 + clutter/cogl/cogl/cogl-context.c | 2 + clutter/cogl/cogl/cogl-pipeline-private.h | 18 +- clutter/cogl/cogl/cogl-pipeline.c | 520 +++++++++++++++++++++++++++++ clutter/cogl/cogl/cogl-util.c | 9 + clutter/cogl/cogl/cogl-util.h | 27 ++ 6 files changed, 580 insertions(+), 1 deletion(-) commit cc36e49ec5f06f608380fba24682a69e9b0d0a1a Author: Robert Bragg Date: Fri Dec 3 11:36:49 2010 +0000 pipeline: generalize _cogl_pipeline_equal _cogl_pipeline_equal now accepts a mask of pipeline differences and layer differences to constrain what state will be compared. In addition a set of flags are passed that can tweak the comparison semantics for some state groups. For example when comparing layer textures we sometimes only need to compare the texture target and can ignore the data itself. In updating the code this patch also changes it so all required pipeline authorities are resolved in one step up-front instead of resolving the authority for each state group in turn and repeatedly having to traverse the pipeline's ancestry. This adds two new functions _cogl_pipeline_resolve_authorities and _cogl_pipeline_layer_resolve_authorities to handle resolving a set of authorities. clutter/cogl/cogl/cogl-journal.c | 9 +- clutter/cogl/cogl/cogl-pipeline-private.h | 155 +++++++++++----- clutter/cogl/cogl/cogl-pipeline.c | 287 ++++++++++++++++++++--------- 3 files changed, 312 insertions(+), 139 deletions(-) commit 62b051951c80c31ee6874a1d156ce889350ce8be Author: Robert Bragg Date: Tue Dec 7 12:13:10 2010 +0000 docs: don't dist cogl-2.0 manual if not built If not configured with --enable-cogl2-reference then don't try and dist the doc/references/cogl-2.0 manual. Although this means a tarball built this way will not be able to build the experimental cogl-2.0 manual this isn't considered a big problem since anyone interested in this would hopefully be tracking git for now or we can simply be careful to configure with --enable-cogl2-reference for our tarball releases. doc/reference/Makefile.am | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit ff646b7fc3e4528836f415e4087ee30c6547ad7d Author: Robert Bragg Date: Wed Dec 1 16:53:08 2010 +0000 pipeline: remove layer->backend_priv[] array This removes the unused array of per-packend priv data pointers associated with every CoglPipelineLayer. This reduces the size of all layer allocations and avoids having to zero an array for each _cogl_pipeline_layer_copy. clutter/cogl/cogl/cogl-pipeline-arbfp.c | 1 - clutter/cogl/cogl/cogl-pipeline-glsl.c | 3 +-- clutter/cogl/cogl/cogl-pipeline-private.h | 9 --------- clutter/cogl/cogl/cogl-pipeline.c | 24 ------------------------ 4 files changed, 1 insertion(+), 36 deletions(-) commit 1180fd159edea9b3907c186d45013348c041b216 Author: Robert Bragg Date: Wed Dec 1 16:37:25 2010 +0000 cogl-object: remove un-used cogl_object_get_type A non-static function named cogl_object_get_type was inadvertently added during the addition of the CoglObject base type, but there is no public prototype in the headers and it's only referenced inside cogl-object.c to implement cogl_handle_get_type() for compatibility. This removes the function since we don't want to commit to CoglObject always simply being a boxed type. In the future we may want to register hierarchical GTypeInstance based types. clutter/cogl/cogl/cogl-object.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) commit ef02cb7ff203b12932697823fbcc59a7bd04ad4d Author: Robert Bragg Date: Mon Nov 29 21:42:06 2010 +0000 matrix gtype: registers a boxed type for CoglMatrix To allow us to have gobject properties that accept a CoglMatrix value we need to register a GType. This adds a cogl_gtype_matrix_get_type function that will register a static boxed type called "CoglMatrix". This adds a new section to the reference manual for GType integration functions. clutter/cogl/cogl/Makefile.am | 1 + clutter/cogl/cogl/cogl-gtype-private.h | 48 ++++++++++++++++++++++++++++++ clutter/cogl/cogl/cogl-matrix.c | 7 +++++ clutter/cogl/cogl/cogl-matrix.h | 16 ++++++++++ clutter/cogl/cogl/cogl.h | 6 ++++ doc/reference/cogl-2.0/cogl-docs.xml.in | 6 ++++ doc/reference/cogl-2.0/cogl-sections.txt | 6 +++- doc/reference/cogl/cogl-docs.xml.in | 1 + doc/reference/cogl/cogl-sections.txt | 6 ++++ 9 files changed, 96 insertions(+), 1 deletion(-) commit c29a7526c040209a5ca0bb327f1df6a98c4d88aa Author: Robert Bragg Date: Mon Nov 29 18:47:10 2010 +0000 matrix: Adds matrix_copy and _free functions As a pre-requisite for being able to register a boxed GType for CoglMatrix (enabling us to define gobject properties that accept a CoglMatrix) this adds cogl_matrix_copy and _free functions. clutter/cogl/cogl/cogl-matrix.c | 15 +++++++++++++++ clutter/cogl/cogl/cogl-matrix.h | 27 +++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) commit 3edd02841b5748bbad0977ba9ccd91d65651f819 Author: Robert Bragg Date: Fri Dec 3 16:59:52 2010 +0000 pipeline simple optimization for _needs_blending_enabled In _cogl_pipeline_needs_blending_enabled after first checking whether the property most recently changed requires blending we would then resort to checking all other properties too in case some other state also requires blending. We now avoid checking all other properties in the case that blending was previously disabled and checking the property recently changed doesn't require blending. Note: the plan is to improve this further by explicitly keeping track of the properties that currently cause blending to be enabled so that we never have to resort to checking all other properties we can constrain the checks to those masked properties. clutter/cogl/cogl/cogl-pipeline.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) commit 9ff191bd3bfba0000547c3082e7fe6c57152bbe5 Author: Robert Bragg Date: Fri Dec 3 16:56:54 2010 +0000 pipeline: inline _get_parent and _get_authority This moves _cogl_pipeline_get_parent and _cogl_pipeline_get_authority into cogl-pipeline-private.h so they can be inlined since they have been seen to get quite high in profiles. Given that they both contain such small amounts of code the function call overhead is significant. clutter/cogl/cogl/cogl-pipeline-private.h | 17 +++++++++++++++++ clutter/cogl/cogl/cogl-pipeline.c | 17 ----------------- 2 files changed, 17 insertions(+), 17 deletions(-) commit 3fa91efea84c2c442fcc92e8ed0df711d7e67988 Author: Neil Roberts Date: Wed Nov 10 14:02:31 2010 +0000 Add a COGL_DEBUG option to disable software clipping This adds a debug option called disable-software-clipping which causes the journal to always log the clip stack state rather than trying to manually clip rectangles. clutter/cogl/cogl/cogl-debug-options.h | 5 +++++ clutter/cogl/cogl/cogl-debug.c | 3 ++- clutter/cogl/cogl/cogl-debug.h | 3 ++- clutter/cogl/cogl/cogl-journal.c | 23 +++++++++++++---------- 4 files changed, 22 insertions(+), 12 deletions(-) commit 62c893feee386223aebbab781171028db547d7f9 Author: Neil Roberts Date: Tue Nov 9 19:18:37 2010 +0000 cogl-journal: Attempt to clip manually to avoid breaking up batches Before flushing the journal there is now a separate iteration that will try to determine if the matrix of the clip stack and the matrix of the rectangle in each entry are on the same plane. If they are it can completely avoid the clip stack and instead manually modify the vertex and texture coordinates to implement the clip. The has the advantage that it won't break up batching if a single clipped rectangle is used in a scene. The software clip is only used if there is no user program and no texture matrices. There is a threshold to the size of the batch where it is assumed that it is worth the cost to break up a batch and program the GPU to do the clipping. Currently this is set to 8 although this figure is plucked out of thin air. To check whether the two matrices are on the same plane it tries to determine if one of the matrices is just a simple translation of the other. In the process of this it also works out what the translation would be. These values can be used to translate the clip rectangle into the coordinate space of the rectangle to be logged. Then we can do the clip directly in the rectangle's coordinate space. clutter/cogl/cogl/cogl-context.c | 3 + clutter/cogl/cogl/cogl-context.h | 1 + clutter/cogl/cogl/cogl-journal-private.h | 2 + clutter/cogl/cogl/cogl-journal.c | 363 +++++++++++++++++++++++++++++- 4 files changed, 363 insertions(+), 6 deletions(-) commit be63fcee7ff2ef33d25efd873f9a9b79856e1577 Author: Neil Roberts Date: Tue Nov 9 19:09:25 2010 +0000 cogl-clip-stack: Move the struct definitions to the header It will be useful to be able to directly examine the contents of the clip stack within the journal code. clutter/cogl/cogl/cogl-clip-stack.c | 112 ---------------------------------- clutter/cogl/cogl/cogl-clip-stack.h | 114 +++++++++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+), 112 deletions(-) commit dc0506a1649bcea4997a68013927529451131712 Author: Neil Roberts Date: Tue Nov 9 12:01:04 2010 +0000 cogl-clip-stack: Don't convert rect clips to window clips Previously in cogl-clip-state.c when it detected that the current modelview matrix is screen-aligned it would convert the clip entry to a window clip. Instead of doing this cogl-clip-stack.c now contains the detection and keeps the entry as a rectangle clip but marks that it is entirely described by its scissor rect. When flusing the clip stack it doesn't do anything extra for entries that have this mark (because the clip will already been setup by the scissor). This is needed so that we can still track the original rectangle coordinates and modelview matrix to help detect when it would be faster to modify the rectangle when adding it to the journal rather than having to break up the batch to set the clip state. clutter/cogl/cogl/cogl-clip-stack.c | 109 ++++++++++++++++++++++++++--------- clutter/cogl/cogl/cogl-clip-state.c | 55 ------------------ 2 files changed, 83 insertions(+), 81 deletions(-) commit 22be07c3b5ec7d8d5e5e0447599425026cbb7bd8 Author: Neil Roberts Date: Thu Nov 25 21:08:45 2010 +0000 cogl-journal: Defer expanding the vertices until uploading When logging a quad we now only store the 2 vertices representing the top left and bottom right of the quad. The color is only stored once per entry. Once we come to upload the data we expand the 2 vertices into four and copy the color to each vertex. We do this by mapping the buffer and directly expanding into it. We have to copy the data before we can render it anyway so it doesn't make much sense to expand the vertices before uploading and this way should save some space in the size of the journal. It also makes it slightly easier if we later want to do pre-processing on the journal entries before uploading such as doing software clipping. The modelview matrix is now always copied to the journal entry whereas before it would only be copied if we aren't doing software transform. The journal entry struct always has the space for the modelview matrix so hopefully it's only a small cost to copy the matrix. The transform for the four entries is now done using cogl_matrix_transform_points which may be slightly faster than transforming them each individually with a call to cogl_matrix_transfom. clutter/cogl/cogl/cogl-context.h | 1 + clutter/cogl/cogl/cogl-journal.c | 273 ++++++++++++++++++++++++-------------- 2 files changed, 173 insertions(+), 101 deletions(-) commit a7d88e15270e73025b19f745f21473b832fb1754 Author: Neil Roberts Date: Thu Dec 2 21:08:30 2010 +0000 Revert "cogl: Remove the generated array size for cogl_tex_coord_in" This reverts commit 4cfe90bde275dbb952645397aa2ba2d6f6e2f3ba. GLSL 1.00 on GLES doesn't support unsized arrays so the whole idea can't work. Conflicts: clutter/cogl/cogl/cogl-pipeline-glsl.c clutter/cogl/cogl/cogl-context.c | 2 +- clutter/cogl/cogl/cogl-pipeline-arbfp.c | 3 +- clutter/cogl/cogl/cogl-pipeline-fixed.c | 3 +- clutter/cogl/cogl/cogl-pipeline-glsl.c | 52 ++++- clutter/cogl/cogl/cogl-pipeline-opengl-private.h | 3 +- clutter/cogl/cogl/cogl-pipeline-opengl.c | 6 +- clutter/cogl/cogl/cogl-pipeline-private.h | 3 +- clutter/cogl/cogl/cogl-shader-boilerplate.h | 1 - clutter/cogl/cogl/cogl-shader-private.h | 6 + clutter/cogl/cogl/cogl-shader.c | 229 ++++++++++++++++------ clutter/cogl/cogl/cogl-vertex-attribute.c | 4 +- clutter/cogl/cogl/cogl.c | 9 +- clutter/cogl/cogl/cogl2-path.c | 4 +- 13 files changed, 250 insertions(+), 75 deletions(-) commit e0ce4cee8c6fb8d40d565cf3890942a0bc898bc0 Author: Damien Lespiau Date: Thu Dec 2 15:46:40 2010 +0000 win32: export TARGET and ROOT_DIR in env.sh So children of the shell sourcing it can use them (eg. buildbot slaves) build/mingw/mingw-cross-compile.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit c1878316e02dce0ff10c8e81ee3fa3b6ea9bb9cb Author: Damien Lespiau Date: Thu Dec 2 15:41:43 2010 +0000 win32: Detect the mingw32 cross compiler on Fedora Fedora mingw32 cross compiler is prefix with i686-pc-mingw32-. build/mingw/mingw-cross-compile.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e73d5b30bbb927eae5ae2cd270df9d79c821c109 Author: Damien Lespiau Date: Thu Dec 2 14:03:01 2010 +0000 win32: Update glib and cairo version in mingw-cross-compile.sh Clutter has moved on and now depends on glib 2.26 and cairo 1.10 (for cairo-gobject). build/mingw/mingw-cross-compile.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit dd5431ef382a59337cfda04bc31cebc28085f17f Author: Neil Roberts Date: Thu Dec 2 16:30:55 2010 +0000 cogl-pipeline-glsl: Fix reusing shaders for shared ancestors The check for whether we can reuse a program we've already generated was only being done if the pipeline already had a glsl_program_state. When there is no glsl_program_state it then looks for the nearest ancestor it can share the program with. It then wasn't checking whether that ancestor already had a GL program so it would start generating the source again. It wouldn't however compile that source again because _cogl_pipeline_backend_glsl_end does check whether there is already a program. This patch moves the check until after it has found the glsl_program_state, whether or not it was found from an ancestor or as its own state. clutter/cogl/cogl/cogl-pipeline-glsl.c | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) commit 4cfe90bde275dbb952645397aa2ba2d6f6e2f3ba Author: Neil Roberts Date: Thu Dec 2 12:27:29 2010 +0000 cogl: Remove the generated array size for cogl_tex_coord_in Under GLES2 we were defining the cogl_tex_coord_in varying as an array with a size determined by the number of texture coordinate arrays enabled whenever the program is used. This meant that we may have to regenerate the shader with a different size if the shader is used with more texture coord arrays later. However in OpenGL the equivalent builtin varying gl_TexCoord is simply defined as: varying vec4 gl_TexCoord[]; /* <-- no size */ GLSL is documented that if you declare an array with no size then you can only access it with a constant index and the size of the array will be determined by the highest index used. If you want to access it with a non-constant expression you need to redeclare the array yourself with a size. We can replicate the same behaviour in our Cogl shaders by instead declaring the cogl_tex_coord_in with no size. That way we don't have to pass around the number of tex coord attributes enabled when we flush a material. It also means that CoglShader can go back to directly uploading the source string to GL when cogl_shader_source is called so that we don't have to keep a copy of it around. If the user wants to access cogl_tex_coord_in with a non-constant index then they can simply redeclare the array themself. Hopefully developers will expect to have to do this if they are accustomed to the gl_TexCoord array. clutter/cogl/cogl/cogl-context.c | 2 +- clutter/cogl/cogl/cogl-pipeline-arbfp.c | 3 +- clutter/cogl/cogl/cogl-pipeline-fixed.c | 3 +- clutter/cogl/cogl/cogl-pipeline-glsl.c | 46 +---- clutter/cogl/cogl/cogl-pipeline-opengl-private.h | 3 +- clutter/cogl/cogl/cogl-pipeline-opengl.c | 6 +- clutter/cogl/cogl/cogl-pipeline-private.h | 3 +- clutter/cogl/cogl/cogl-shader-boilerplate.h | 1 + clutter/cogl/cogl/cogl-shader-private.h | 6 - clutter/cogl/cogl/cogl-shader.c | 229 ++++++---------------- clutter/cogl/cogl/cogl-vertex-attribute.c | 4 +- clutter/cogl/cogl/cogl.c | 9 +- clutter/cogl/cogl/cogl2-path.c | 4 +- 13 files changed, 73 insertions(+), 246 deletions(-) commit 50849ac1fdc7840cced9aa1730b5d3f7fd4d5d02 Author: Elliot Smith Date: Tue Nov 30 16:52:01 2010 +0000 cookbook: Use new API to reverse timeline clutter_timeline_set_reverse() can be used to automatically reverse a timeline's direction each time it completes, so use that in looping animation recipe and examples. doc/cookbook/animations.xml | 25 ++++++++++++++------ .../examples/animations-looping-implicit.c | 24 +------------------ 2 files changed, 19 insertions(+), 30 deletions(-) commit 4f17bf3bcc5c017ef14a876f172ba3b1c3590317 Author: Emmanuele Bassi Date: Tue Nov 30 18:55:38 2010 +0000 keysyms: Update the list Add TouchpadOn and TouchpadOff from the X11 key symbols. clutter/clutter-keysyms-compat.h | 2 ++ clutter/clutter-keysyms.h | 2 ++ 2 files changed, 4 insertions(+) commit 87a72d188e7d986686106859a4d4f229b20dfe7a Author: Neil Roberts Date: Wed Dec 1 15:48:37 2010 +0000 cogl-pipeline: Fix comparing layer states for finding codgen authority When compiling for GLES2, the codegen is affected by state other than the layers. That means when we find an authority for the codegen state we can't directly look at authority->n_layers to determine the number of layers because it isn't necessarily the layer state authority. This patch changes it to use cogl_pipeline_get_n_layers instead. Once we have two authorities that differ in codegen state we then compare all of the layers to decide if they would affect codegen. However it was ignoring the fact that the authorities might also differ by the other codegen state. This path also adds an extra check for whether _cogl_pipeline_compare_differences contains any codegen bits other than COGL_PIPELINE_STATE_LAYERS. clutter/cogl/cogl/cogl-pipeline.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) commit f620d53054e50e4ddcf656794a38d13c21d0dbf6 Author: Neil Roberts Date: Wed Dec 1 14:39:28 2010 +0000 cogl-pipeline: Fix the codgen authority for texture target changes When determining if a layer would require a different shader to be generated it needs to check a certain set of state changes and it needs to check whether the texture target is different. However it was checking whether texture texture was different only if the other state was also different which doesn't make any sense. It also only checked the texture difference if that was the only state change which meant that effectively the code was impossible to reach. Now it does the texture target check indepent of the other state changes. clutter/cogl/cogl/cogl-pipeline.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) commit a38fa7a2dfc3a169777ba172d145178b9b068d73 Author: Neil Roberts Date: Tue Nov 30 22:28:38 2010 +0000 cogl-pipeline-fixed: Use the correct state flag for combine constant The fixed pipeline backend wasn't correctly flushing the combine constant because it was using the wrong flag to determine if the combine constant has changed since the last flushed material. clutter/cogl/cogl/cogl-pipeline-fixed.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 499a370ee326ea24fd0fff55466877a6f286d9fd Author: Neil Roberts Date: Tue Nov 30 22:17:17 2010 +0000 cogl-pipeline-opengl: Fix enabling previously disabled units When enabling a unit that was disabled from a previous flush pipeline it was forgetting to rebind the right texture unit so it wouldn't work. This was causing the redhand to disappear when using the fixed function backend in test-cogl-multitexture if anything else is added to the scene. clutter/cogl/cogl/cogl-pipeline-opengl.c | 1 + 1 file changed, 1 insertion(+) commit 17a98875d33c872800c04c26338427970b88b308 Author: Neil Roberts Date: Tue Nov 30 22:15:40 2010 +0000 cogl-pipeline: Add more ignored state changes for program generation For shader generation backends we don't need to worry about changes to the texture object and changing the user matrix. The missing user matrix flag was causing test-cogl-multitexture to regenerate the shader every frame. clutter/cogl/cogl/cogl-pipeline-arbfp.c | 5 ++++- clutter/cogl/cogl/cogl-pipeline-glsl.c | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) commit 1564418b3feb9ab010c225129bc1b79b7c882318 Author: Damien Lespiau Date: Tue Nov 30 16:36:56 2010 +0000 cogl: Revert "build: Remove unused variable" Having ctx here produces a warning on GLES. However it's needed for Big GL as we have at the top of the file: #ifdef HAVE_COGL_GL #define glClientActiveTexture ctx->drv.pf_glClientActiveTexture #endif This reverts commit 27a3a2056a245aca64b8e3a7d82b7976c13e897a. clutter/cogl/cogl/cogl.c | 2 ++ 1 file changed, 2 insertions(+) commit 8ee91794477c82171e0b165fb9e10655798682a0 Author: Damien Lespiau Date: Tue Nov 30 16:22:49 2010 +0000 egl: Fix compilation with EGLX That what happens when you test things only with 2 configure options instead of 3. The 2 tested compile, the third one breaks. Another good catch for the eglx bot! clutter/egl/clutter-backend-egl.c | 4 ++++ 1 file changed, 4 insertions(+) commit bbbd91e581ca6d7408c1f6fa2f1b6d50d2c4db2b Author: Damien Lespiau Date: Tue Nov 30 16:03:26 2010 +0000 cogl: Fix unused variable warning with GLES2 This shader variable is only used with big GL. clutter/cogl/cogl/cogl-shader.c | 2 ++ 1 file changed, 2 insertions(+) commit 9ad55edf24f74353c095153e370d6f648f4e5593 Author: Damien Lespiau Date: Tue Nov 30 10:06:12 2010 -0500 egl: Don't try to use stage_x11 with non-X winsys The access to stage_x11 has to be protected by COGL_HAS_X11_SUPPORT. clutter/egl/clutter-stage-egl.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit 4ceb95d2ca5f5a52a77bfcada47d5befc6ab1fd1 Author: Damien Lespiau Date: Tue Nov 30 14:50:13 2010 +0000 evdev: Add a comment to revisit the GSource management with glib 2.28 With glib 2.28, we'll be able to have one GSource per device manager with child sources for earch device. Make a note to update the code in a few months. clutter/evdev/clutter-device-manager-evdev.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit 27a3a2056a245aca64b8e3a7d82b7976c13e897a Author: Damien Lespiau Date: Fri Nov 19 14:51:39 2010 -0500 build: Remove unused variable and be 100% warning free again. clutter/cogl/cogl/cogl.c | 2 -- 1 file changed, 2 deletions(-) commit 9ba5447c9bbbd93808a56d9968b2e60f20bbd328 Author: Damien Lespiau Date: Fri Nov 19 14:31:51 2010 -0500 evdev: Enable the compilation of the evdev backend for eglnative Not tested (but checked that it compiles). There's no reason to only enable the check for the cex100. Hopefully should work. We make sure not to enable both the evdev and the tslib backend at the same time as the DeviceManager is a singleton and we can't have both subclasses at the same time for now. configure.ac | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) commit bce4c87232bea82560725fa44e079088d75a367f Author: Damien Lespiau Date: Fri Nov 19 14:19:52 2010 -0500 evdev: Don't oveflow when translating buttons to masks An array is used to translate the button to its mask. Clutter defines the masks for button 1 to 5 but we report BTN_LEFT..BTN_TASK ie 0x110..0x117. We need to pad the array for the translation not to access random data for buttons between 0x115 and 0x117. clutter/evdev/clutter-device-manager-evdev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit ac431ac21db043d42fa5b0be604a155503846012 Author: Damien Lespiau Date: Thu Nov 11 19:11:27 2010 -0500 input-device: Warn if the device has no associated stage Discarding the event without any warning when the device has no associated stage makes it hard to find the bug for people implementing new event backends. We should really warn for that abnormal condition in _clutter_input_device_update(). clutter/clutter-input-device.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit c20beabf93a97c3e0d58d8512aa5459ca670d3bf Author: Damien Lespiau Date: Thu Nov 11 19:07:35 2010 -0500 evdev: Add mouse support We know support EV_REL events comming from evdev devices. This addition is pretty straigthforward, it adds a x,y per GSource listening to a evdev device, updates from EL_REL (relative) events and craft new ClutterMotionEvents. As for buttons, BTN_LEFT..BTN_TASK are translated to ClutterButtonEvents with 1..8 as button number. clutter/evdev/clutter-device-manager-evdev.c | 223 +++++++++++++++++++++++--- tests/interactive/test-events.c | 8 +- 2 files changed, 204 insertions(+), 27 deletions(-) commit 94c2812d720bbdd3db3d779f1f96438b65ae383d Author: Damien Lespiau Date: Tue Nov 9 13:14:37 2010 -0500 evdev: Only create a xkbcommon mapping for keyboard devices clutter/evdev/clutter-device-manager-evdev.c | 44 ++++++++++++++++---------- 1 file changed, 27 insertions(+), 17 deletions(-) commit 7cd6ba282865491d1e60e830676a363c72f21c25 Author: Damien Lespiau Date: Tue Nov 9 13:02:53 2010 -0500 evdev: Close the device gracefully in case of a read() error Even with udev, the read fails before udev has a chance to signal the change. Hence (and to handle errors gracefully anyway), let's remove the device from the device manager in case of a read() error. clutter/evdev/clutter-device-manager-evdev.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) commit afd279dd7684bfd28b07cf668a1aaf213239cfd4 Author: Damien Lespiau Date: Tue Nov 9 12:50:23 2010 -0500 evdev: Merge clutter-event-evdev.[ch] into the device manager The device manager now fully owns the GSources corresponding to the devices it manages. This will allow not only to remove the source when udev signals a device removal but also handle read() errors gracefully by removing the faulty device from the manager. clutter/Makefile.am | 2 - clutter/egl/clutter-backend-egl.c | 1 - clutter/evdev/clutter-device-manager-evdev.c | 320 +++++++++++++++++++++- clutter/evdev/clutter-device-manager-evdev.h | 3 + clutter/evdev/clutter-event-evdev.c | 367 -------------------------- clutter/evdev/clutter-event-evdev.h | 36 --- 6 files changed, 321 insertions(+), 408 deletions(-) commit afee3b009cff5149a1a97aadb3d8009c7b4a26f8 Author: Damien Lespiau Date: Tue Nov 9 11:56:26 2010 -0500 evdev: Support hotplug (addition/removal) of evdev devices Just connect to the GUdevClient "uevent" signal and deals with "add"/"remove" commands. This drives the installation/removal of GSource to listen to the device. clutter/evdev/clutter-device-manager-evdev.c | 59 ++++++++++++++++++++++++++ clutter/evdev/clutter-event-evdev.c | 49 +++++++++++++++++++++ 2 files changed, 108 insertions(+) commit b83a4813a4fbf6818bed9f15d8fcf1d7c3717c9a Author: Damien Lespiau Date: Mon Nov 8 11:38:16 2010 -0500 evdev: Make sure we only add evdev devices Let's use the sysfs path of the device to make sure we only load evdev device, not legacy mousedev ones for instance. We rely on the sysfs API/ABI guarantees and look for devices finishing by /input%d/event%d. clutter/evdev/clutter-device-manager-evdev.c | 35 ++++++++++++++++++++------ 1 file changed, 28 insertions(+), 7 deletions(-) commit c6493885c3f18042f39273a2efa4fc3616d932b2 Author: Damien Lespiau Date: Thu Nov 4 10:38:32 2010 -0400 evdev: First stab at an evdev backend This backend is a event backend that can be enabled for EGL (for now). It uses udev (gudev) to query input devices on a linux system, listens to keyboard events from input devices and xkbcommon to translate raw key codes into key keysyms. This commit only supports key events, more to follow. clutter/Makefile.am | 20 ++ clutter/clutter-device-manager-private.h | 1 + clutter/clutter-input-device.h | 8 + clutter/egl/clutter-backend-egl.c | 49 +++- clutter/egl/clutter-backend-egl.h | 6 + clutter/evdev/clutter-device-manager-evdev.c | 276 ++++++++++++++++++++++ clutter/evdev/clutter-device-manager-evdev.h | 58 +++++ clutter/evdev/clutter-event-evdev.c | 318 ++++++++++++++++++++++++++ clutter/evdev/clutter-event-evdev.h | 36 +++ clutter/evdev/clutter-input-device-evdev.c | 197 ++++++++++++++++ clutter/evdev/clutter-input-device-evdev.h | 66 ++++++ configure.ac | 12 +- 12 files changed, 1034 insertions(+), 13 deletions(-) commit 9f5f62b4b53da3354b35789a8c04b83272252b3b Author: Damien Lespiau Date: Thu Nov 4 10:09:28 2010 -0400 evdev: Fix the unicode_value for new ClutterEvents Looking at what the X11 backend does: the unicode value is being translated to the unicode codepoint of the symbol if possible. Let's do the same then. Before that, key events for say KEY_Right (0xff53) had the unicode_value set to the keysym, which meant "This key event is actually printable and is Unicode codepoint is 0xff53", which lead to interesting results. clutter/evdev/clutter-xkb-utils.c | 71 ++++++++++++++++++++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) commit ef5256ec25e6261947e107256ce36ead42fcab88 Author: Damien Lespiau Date: Thu Nov 4 06:59:22 2010 -0400 evdev: Factor out the xkbcommon code from the wayland client backend The wayland client code has support for translating raw linux input device key codes coming from the wayland compositor into key symbols thanks to libxkbcommon. A backend directly listening to linux input devices (called evdev, just like the Xorg one) could use exactly the same code for the translation, so abstract it a bit in a separate file. clutter/Makefile.am | 11 ++- clutter/evdev/clutter-xkb-utils.c | 111 ++++++++++++++++++++++++ clutter/evdev/clutter-xkb-utils.h | 41 +++++++++ clutter/wayland/clutter-input-device-wayland.c | 46 +++------- 4 files changed, 169 insertions(+), 40 deletions(-) commit b5a9de1a23a58c1d52f5a394696a8532dc42befe Author: Emmanuele Bassi Date: Tue Nov 30 10:35:17 2010 +0000 moduleset: Add gstreamer and gst-plugins-good build/clutter.modules | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) commit 1d153fa860850e4d24df16a64b499a5690fbfeab Author: Emmanuele Bassi Date: Tue Nov 30 10:34:59 2010 +0000 moduleset: Disable stand-alone Cally build/clutter.modules | 2 ++ 1 file changed, 2 insertions(+) commit 085962a361d1150f3f59a1e4925e89814a86c931 Author: Emmanuele Bassi Date: Tue Nov 30 10:34:38 2010 +0000 moduleset: Switch gtk2 to the 2.24 branch build/clutter.modules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5e085e8d7f26e5191d67657ae4eacf3dab2e9906 Author: Emmanuele Bassi Date: Mon Nov 29 14:21:21 2010 +0000 Post-release version bump to 1.5.9 configure.ac | 2 +- po/clutter-1.0.pot | 408 ++++++++++++++++++++++++++-------------------------- po/de.po | 406 +++++++++++++++++++++++++-------------------------- po/fr.po | 406 +++++++++++++++++++++++++-------------------------- po/id.po | 406 +++++++++++++++++++++++++-------------------------- po/it.po | 406 +++++++++++++++++++++++++-------------------------- po/pl.po | 406 +++++++++++++++++++++++++-------------------------- po/zh_CN.po | 406 +++++++++++++++++++++++++-------------------------- 8 files changed, 1423 insertions(+), 1423 deletions(-) commit 8cebec6bdcefe84c2c663fce380c24f5ac88cfa4 Author: Emmanuele Bassi Date: Mon Nov 29 14:09:09 2010 +0000 Release Clutter 1.5.8 (snapshot) configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d046df8e6f1c1dfdf4144b1cbe2494d71ac3adc4 Author: Neil Roberts Date: Mon Nov 29 10:55:49 2010 +0000 cogl-shader.c: Don't add the common boilerplate twice In 6246c2bd6 I moved the code to add the boilerplate to a shader to a separate function and also made it so that the common boilerplate is added as a separate string to glShaderSource. However I didn't notice that the #define for the vertex and fragment shaders already includes the common part so it was being added twice. Mesa seems to accept this but it was causing problems on the IMG driver because COGL_VERSION was defined twice. clutter/cogl/cogl/cogl-shader.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) commit ae300dc8e08d28dad821f7c843fe2b01783efb5a Author: Neil Roberts Date: Mon Nov 29 10:51:40 2010 +0000 cogl-pipeline-glsl: Use char* instead of GLchar* It appears that some GLES2 headers don't define GLchar and it works just as well to use a regular char. clutter/cogl/cogl/cogl-pipeline-glsl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 08308fd3978dff227b8e0c8e1388a590bde29f25 Author: Emmanuele Bassi Date: Mon Nov 29 12:23:14 2010 +0000 docs: Close a tag clutter/clutter-color.c | 2 ++ 1 file changed, 2 insertions(+) commit 556c938b4d6d3cb4743e00d95c0347e483d847a2 Author: Emmanuele Bassi Date: Mon Nov 29 12:01:20 2010 +0000 Update NEWS NEWS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 038fe708f86efda95237915f8bce7fd1afb3a262 Merge: 67143bd c9d0f8b Author: Emmanuele Bassi Date: Mon Nov 29 11:56:36 2010 +0000 Merge remote branch 'elliot/cookbook-animations-scaling' * elliot/cookbook-animations-scaling: cookbook: Add recipe for animated scaling of an actor cookbook: Add example of scaling a texture cookbook: Added "animated scaling" recipe skeleton cookbook: Added animated scaling example commit 67143bd846c2b39ce94779d7ab2b5bd48e58d1cd Author: Chris Lord Date: Thu Nov 25 15:11:42 2010 +0000 text: Optimise get_preferred_height for single-line-mode Don't calculate an extra layout in clutter_text_get_preferred_height for single-line strings, when it's unnecessary. There's no need to set the width of a layout when in single-line mode, as wrapping will not happen. clutter/clutter-text.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit e1b58d9407845a249bc59cd270be50d43d34126b Author: Emmanuele Bassi Date: Mon Nov 29 11:19:16 2010 +0000 Update NEWS file NEWS | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) commit 850a35f069368b645ceb8e027b6b27863dba308b Author: Emmanuele Bassi Date: Mon Nov 29 10:59:16 2010 +0000 shader-effect: Remove unused function The reset_uniforms() internal function is not used any more because the CoglProgram cannot be reset post-creation - hence the uniforms cannot change. clutter/clutter-shader-effect.c | 50 +++++++++++++-------------------------- 1 file changed, 16 insertions(+), 34 deletions(-) commit 08087c965bf312513f98a53bf3220e92c372d131 Author: Neil Roberts Date: Sat Nov 27 16:26:20 2010 +0000 ClutterShaderEffect: Don't throw away the program for a new actor Previously when the shader effect is used with a new actor it would end up throwing away the old program. I don't think this is neccessary and it means if you use an effect to temporarily bind to an actor then it will recompile the shader whenever it is applied. http://bugzilla.clutter-project.org/show_bug.cgi?id=2454 clutter/clutter-shader-effect.c | 42 ++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 23 deletions(-) commit 2dc9e0dc2941a1f805e71a656585037ced0ed721 Author: Neil Roberts Date: Sat Nov 27 16:27:59 2010 +0000 ClutterOffscreenEffect: Don't throw away the material for a new actor When a new actor is set for ClutterOffscreenEffect it would throw away the old material. I don't think there is anything specifically tied to the actor in the material so throwing away just loses Cogl's cached state about the material. This ends up relinking the shader every time a new actor is set in ClutterShaderEffect. http://bugzilla.clutter-project.org/show_bug.cgi?id=2454 clutter/clutter-offscreen-effect.c | 6 ------ 1 file changed, 6 deletions(-) commit b63e9ee8f8717dbf73e15df1e9a9d115dcb45504 Author: Tomeu Vizoso Date: Sat Nov 27 16:07:01 2010 +0100 Don't bail out from creating the FBO if we don't have it yet. This happens when reattaching an effect to another actor. http://bugzilla.clutter-project.org/show_bug.cgi?id=2453 clutter/clutter-offscreen-effect.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 47d63c1c550776de52841f3d5508f20b48f5d722 Author: Tomeu Vizoso Date: Sat Nov 27 16:04:50 2010 +0100 Set the signal handler to 0 when disconnecting it. Otherwise we'll try to disconnect it again later. http://bugzilla.clutter-project.org/show_bug.cgi?id=2452 clutter/clutter-actor-meta.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 215d87abe9ccfe98cbf0e5e73f5c8edf4106a7ce Author: Emmanuele Bassi Date: Mon Nov 29 08:55:13 2010 +0000 shader-effect: Zero out ShaderUniform Do not use the compiler to zero the first field of the GValue member, since it's apparently non-portable. As we're allocating memory anyway we can let the slice allocator do the zero-ing for us. Mentioned in: http://bugzilla.clutter-project.org/show_bug.cgi?id=2455 clutter/clutter-shader-effect.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 21e47d4280e27393d7510e232a1b1ee19b426032 Author: Neil Roberts Date: Fri Nov 26 15:23:15 2010 +0000 cogl_pipeline_equal: Fix the comparison for layer texture equality Before commit 49898d43 CoglPipeline would compare whether a pipeline layer's texture is equal by fetching the underlying GL handle. I changed that so that it would only compare the CoglHandles because that commit removes the GL handle texture overrides and sliced textures instead log the underlying primitive texture. However I forgot that the primitives don't always use _cogl_texture_foreach_sub_texture_in_region when the quad fits within the single texture so it won't use a texture override. This meant that atlas textures and sub textures get logged with the atlas handle so the comparison still needs to be done using the GL handles. It might be nice to add a CoglTexture virtual to get the underlying primitive texture instead to avoid having the pipeline poke around with GL handles. clutter/cogl/cogl/cogl-pipeline.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) commit b424bd75124c4dc34510b056376a7f04f4620e53 Author: Robert Bragg Date: Mon Nov 1 13:53:16 2010 +0000 tests: Adds test-cogl-perf micro benchmark This is mostly a stub, starting point for a one-stop Cogl micro-benchmarking tool. The first test it adds is one that tries to hammer the Cogl journal, but no doubt there are lots of other things we should be regularly testing. Currently the aim is that the tool will be able to also generate reports which we can collect to keep track of performance changes over time. tests/micro-bench/Makefile.am | 4 +- tests/micro-bench/test-cogl-perf.c | 161 ++++++++++++++++++++++++++++++++++++ 2 files changed, 164 insertions(+), 1 deletion(-) commit 58a467c9270ec325431fc963aa8a862ae69fcabf Author: Robert Bragg Date: Thu Nov 25 20:12:36 2010 +0000 primitives: avoid leaking polygon override materials If we have to make override changes to the user's source material to handle cogl_polygon then we need to make sure we unref the override material at the end. clutter/cogl/cogl/cogl-primitives.c | 3 +++ 1 file changed, 3 insertions(+) commit 01b93537ab9743dfd6aa2f0c3d4499420ee860cd Author: Alexandre Quessy Date: Thu Nov 25 13:13:51 2010 -0500 Fixed "the the" repetitions in some doc strings http://bugzilla.clutter-project.org/show_bug.cgi?id=2450 clutter/clutter-actor.c | 6 +++--- clutter/clutter-stage.c | 2 +- clutter/clutter-text.c | 2 +- clutter/cogl/cogl/cogl-fixed.c | 2 +- clutter/cogl/cogl/cogl-vertex-buffer.c | 2 +- doc/cookbook/animations.xml | 2 +- doc/cookbook/events.xml | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) commit 3729e47ef68dd0f4257563985d784b687acce5d2 Author: Robert Bragg Date: Thu Nov 25 13:19:59 2010 +0000 pipeline: Simplify layer change notifications to backend Previously we used the layers->backend_priv[] members to determine when to notify backends about layer changes, but it entirely up to the backends if they want to associate private state with layers, even though they may still be interested in layer change notifications (they may associate layer related state with the owner pipeline). We now make the observation that in _cogl_pipeline_backend_layer_change_notify we should be able to assume there can only be one backend currently associated with the layer because we wouldn't allow changes to a layer with multiple dependants. This means we can determine the backend to notify by looking at the owner pipeline instead. clutter/cogl/cogl/cogl-pipeline.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) commit 6ddb8397110f6e6998e0262e5d3dd604cd93d670 Author: Neil Roberts Date: Thu Nov 25 10:56:50 2010 +0000 clutter-offscreen-effect: Don't recreate the material when FBO changes Previously whenever the size of the FBO changes it would create a new material and attach the texture to it. This is not good for Cogl because it throws away any cached state for the material. In test-rotate the size of the FBO changes constantly so it effectively uses a new material every paint. For shader effects this also ends up relinking the shader every paint because the linked programs are part of the material state. clutter/clutter-offscreen-effect.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) commit 1b2a748d6c180454f0501859b4b02dc8c94d75e0 Author: Neil Roberts Date: Wed Nov 24 18:37:47 2010 +0000 cogl-context: Get rid of the features_cached member The features_cached member of CoglContext is intended to mark when we've calculated the features so that we know if they are ready in cogl_get_features. However we always intialize the features while creating the context so features_cached will never be FALSE so it's not useful. We also had the odd behaviour that the COGL_DEBUG feature overrides were only applied in the first call to cogl_get_features. However there are other functions that use the feature flags such as cogl_features_available that don't use this function so in some cases the feature flags will be interpreted before the overrides are applied. This patch makes it always initialize the features and apply the overrides immediately while creating the context. This fixes a problem with COGL_DEBUG=disable-arbfp where the first material flushed is done before any call to cogl_get_features so it may still use ARBfp. clutter/cogl/cogl/cogl-context.c | 24 +++++++++++++++++++++++- clutter/cogl/cogl/cogl-context.h | 1 - clutter/cogl/cogl/cogl.c | 24 ------------------------ clutter/cogl/cogl/driver/gl/cogl-gl.c | 1 - clutter/cogl/cogl/driver/gles/cogl-gles.c | 1 - 5 files changed, 23 insertions(+), 28 deletions(-) commit b9176e8672fa56cf627b3d47e06598338d32e5ea Author: Neil Roberts Date: Wed Nov 24 17:42:34 2010 +0000 Lower the priority of the GLSL pipeline backend Now that the GLSL backend can generate code it can effectively handle any pipeline unless there is an ARBfp program. However with current open source GL drivers the ARBfp compiler is more stable so it makes sense to prefer ARBfp when possible. The GLSL backend is also lower than the fixed function backend on the assumption that any driver that supports GLSL will also support ARBfp so it's quicker to try the fixed function backend next. clutter/cogl/cogl/cogl-pipeline-private.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit d19f6212ce84894a79554f183d001deb25464721 Author: Neil Roberts Date: Wed Nov 24 17:29:00 2010 +0000 Add a COGL_DEBUG option to disable the fixed function pipeline backend This adds COGL_DEBUG=disable-fixed to disable the fixed function pipeline backend. This is needed to test the GLSL shader generation because otherwise the fixed function backend would always override it. clutter/cogl/cogl/cogl-debug-options.h | 5 +++++ clutter/cogl/cogl/cogl-debug.c | 1 + clutter/cogl/cogl/cogl-debug.h | 15 ++++++++------- clutter/cogl/cogl/cogl-pipeline-fixed.c | 3 +++ 4 files changed, 17 insertions(+), 7 deletions(-) commit 577d65c2c964aba9046aa07ef76aaf1a99c32b70 Author: Neil Roberts Date: Wed Nov 24 17:33:07 2010 +0000 Don't use the fixed function backend if there is a user program The fixed function pipeline backend can't handle a user program so it should bail out if one is given. clutter/cogl/cogl/cogl-pipeline-fixed.c | 6 ++++++ 1 file changed, 6 insertions(+) commit aa498072e075cc1ef4a85a0d14fb7b78ba749e3a Author: Neil Roberts Date: Wed Nov 24 17:37:55 2010 +0000 Add a warning message when no usable Cogl pipeline backend is found If none of the pipeline backends can handle the state then it now displays a warning so the developer has a chance to work out what's going on. clutter/cogl/cogl/cogl-pipeline-opengl.c | 3 +++ 1 file changed, 3 insertions(+) commit 289e880efd4b7e2434619cbbe18ae444d4c52fd8 Author: Neil Roberts Date: Wed Nov 24 15:30:56 2010 +0000 cogl-pipeline-glsl: Don't use gl_PointCoord on OpenGL We don't want to use gl_PointCoord to implement point sprites on big GL because in that case we already use glTexEnv(GL_COORD_REPLACE) to replace the texture coords with the point sprite coords. Although GL also supports the gl_PointCoord variable, it requires GLSL 1.2 which would mean we would have to declare the GLSL version and check for it. We continue to use gl_PointCoord for GLES2 because it has no glTexEnv function. clutter/cogl/cogl/cogl-pipeline-glsl.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) commit 9c32d07453fbc06c44e8c0fca6ef6e85f23ebf0b Author: Neil Roberts Date: Sat Jul 17 14:11:02 2010 +0100 Add a conformance test that uses a vertex shader with no frag shader This creates a material which users a layer to override the color of the rectangle. A simple vertex shader is then created which just emulates the fixed function pipeline. No fragment shader is added. This demonstrates a bug where the layer state is getting ignored when a vertex shader is in use. http://bugzilla.clutter-project.org/show_bug.cgi?id=2221 tests/conform/Makefile.am | 1 + tests/conform/test-cogl-just-vertex-shader.c | 135 ++++++++++++++++++++++++++ tests/conform/test-conform-main.c | 2 + 3 files changed, 138 insertions(+) commit a50010fb408294dce2d1205fe3a70aeead39c192 Author: Neil Roberts Date: Tue Nov 23 14:47:17 2010 +0000 Remove the fragment shader generation from the GLES2 wrapper The GLES2 wrapper no longer needs to generate any fragment shader state because the GLSL pipeline backend will always give the wrapper a custom fragment shader. This simplifies a lot of the state comparison done by the wrapper. The fog generation is also removed even though it's actually part of the vertex shader because only the fixed function pipeline backend actually calls the fog functions so it would be disabled when using any of the other backends anyway. We can fix this when the two shader backends also start generating vertex shaders. clutter/cogl/cogl/Makefile.am | 5 +- clutter/cogl/cogl/cogl-pipeline-opengl.c | 8 + .../driver/gles/cogl-fixed-fragment-shader.glsl | 64 -- clutter/cogl/cogl/driver/gles/cogl-gles2-wrapper.c | 737 +------------------- clutter/cogl/cogl/driver/gles/cogl-gles2-wrapper.h | 69 +- 5 files changed, 22 insertions(+), 861 deletions(-) commit 987e3c32dc733b5f6942a10651750080730272e6 Author: Neil Roberts Date: Tue Nov 23 14:51:49 2010 +0000 Disable the fixed function backend for GLES2 GLES2 doesn't really support fixed function so if we disable it we can remove the fixed function wrappers from the GLES2 Cogl backend. clutter/cogl/cogl/cogl-pipeline-fixed.c | 11 ----------- clutter/cogl/cogl/cogl-pipeline-private.h | 4 +--- clutter/cogl/cogl/cogl-pipeline.c | 2 ++ 3 files changed, 3 insertions(+), 14 deletions(-) commit 3504491b46246ffe912939defa17d013f9a27b46 Author: Neil Roberts Date: Mon Nov 22 18:33:49 2010 +0000 cogl-pipeline-glsl: Generate the alpha test snippet under GLES2 GLES2 has no glAlphaFunc function so we need to simulate the behaviour in the fragment shader. The alpha test function is simulated with an if-statement and a discard statement. The reference value is stored as a uniform. clutter/cogl/cogl/cogl-pipeline-glsl.c | 144 +++++++++++++++++++++++++++++++- 1 file changed, 140 insertions(+), 4 deletions(-) commit c3582b77dfc553528e49a8f3a1373a787cf64648 Author: Neil Roberts Date: Mon Nov 22 18:32:43 2010 +0000 cogl-pipeline: Add getters for the alpha test state This adds two public functions: cogl_pipeline_get_alpha_test_function and cogl_pipeline_get_alpha_test_reference. clutter/cogl/cogl/cogl-pipeline.c | 25 +++++++++++++++++++++++++ clutter/cogl/cogl/cogl-pipeline.h | 22 ++++++++++++++++++++++ 2 files changed, 47 insertions(+) commit 959846326fa138d9611212f0e1c6626e187984b8 Author: Neil Roberts Date: Mon Nov 22 18:29:50 2010 +0000 cogl: Separate out state flags for the alpha test func and ref Previously the flag to mark the differences for the alpha test function and reference value were conflated into one. However this is awkward when generating shader code to simulate the alpha testing for GLES 2 because in that case changing the function would need a different program but changing the reference value just requires updating a uniform. This patch makes the function and reference have their own state flags. clutter/cogl/cogl/cogl-pipeline-opengl.c | 3 +- clutter/cogl/cogl/cogl-pipeline-private.h | 25 ++++--- clutter/cogl/cogl/cogl-pipeline.c | 110 ++++++++++++++++++++++------- 3 files changed, 102 insertions(+), 36 deletions(-) commit 124441aade679834ce7e34f38f9e10bd829aa76b Author: Neil Roberts Date: Mon Nov 22 16:44:11 2010 +0000 Remove the disabling of layer constants for GLES2 The GLSL shader generation supports layer combine constants so there's no need to disable it for GLES2. It looks like there was also code for it in the GLES2 wrapper so I'm not sure why it was disabled in the first place. clutter/cogl/cogl/cogl-blend-string.c | 10 ---------- 1 file changed, 10 deletions(-) commit 3fa73735c02e2e6471774f2a4253317e424564ee Author: Neil Roberts Date: Fri Nov 19 10:44:27 2010 +0000 Generate GLSL in the CoglPipeline GLSL backend The GLSL pipeline backend can now generate code to represent the pipeline state in a similar way to the ARBfp backend. Most of the code for this is taken from the GLES 2 wrapper. clutter/cogl/cogl/cogl-context.c | 1 + clutter/cogl/cogl/cogl-context.h | 1 + clutter/cogl/cogl/cogl-pipeline-glsl.c | 772 +++++++++++++++++++++++++++++--- 3 files changed, 702 insertions(+), 72 deletions(-) commit 6246c2bd6cc5174529f5a6c5efb7daf44c131b6b Author: Neil Roberts Date: Mon Nov 22 12:15:35 2010 +0000 Move the cogl shader boilerplate setting code to a separate function _cogl_shader_compile_real had some code to create a set of strings to combine the boilerplate code with a shader before calling glShaderSource. This has now been moved to its own internal function so that it could be used from the GLSL pipeline backend as well. clutter/cogl/cogl/cogl-shader-private.h | 8 +++ clutter/cogl/cogl/cogl-shader.c | 96 ++++++++++++++++++++++++------- 2 files changed, 82 insertions(+), 22 deletions(-) commit 339fc68bcbc15dbb212684be5cb4155cdaf4c836 Author: Neil Roberts Date: Fri Nov 19 15:42:26 2010 +0000 Move need_texture_combine_separate to cogl-pipeline need_texture_combine_separate is moved to cogl-pipeline.c and renamed to _cogl_pipeline_need_texture_combine_separate. The function is needed by both the ARBfp and GLSL codegen backends so it makes sense to share it. clutter/cogl/cogl/cogl-pipeline-arbfp.c | 75 +---------------------------- clutter/cogl/cogl/cogl-pipeline-private.h | 4 ++ clutter/cogl/cogl/cogl-pipeline.c | 74 ++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+), 74 deletions(-) commit 9bbb088a2ad3e7758b65f83c181e0603350acfc1 Author: Neil Roberts Date: Fri Nov 19 10:43:52 2010 +0000 Move find_arbfp_authority to cogl-pipeline.c The code for finding the arbfp authority for a pipeline should be the same as finding the GLSL authority. So that the code can be shared the function has been moved to cogl-pipeline.c and renamed to _cogl_pipeline_find_codegen_authority. clutter/cogl/cogl/cogl-pipeline-arbfp.c | 145 +---------------------------- clutter/cogl/cogl/cogl-pipeline-private.h | 4 + clutter/cogl/cogl/cogl-pipeline.c | 142 ++++++++++++++++++++++++++++ 3 files changed, 147 insertions(+), 144 deletions(-) commit e57a132f940d1b0f1c66720096c446e4f04bf4dc Author: Neil Roberts Date: Mon Nov 1 17:25:26 2010 +0000 cogl: Rename arbfp_source_buffer to fragment_source_buffer Only one of the material backends can be generating code at the same time so it seems to make sense to share the same source buffer between arbfp and glsl. The new name is fragment_source_buffer in case we later want to create a new buffer for the vertex shader. That probably couldn't share the same buffer because it will likely need to be generated at the same time. clutter/cogl/cogl/cogl-context.c | 2 +- clutter/cogl/cogl/cogl-context.h | 2 +- clutter/cogl/cogl/cogl-pipeline-arbfp.c | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) commit 9b5c90f441938c8044eecaf9c348c85708d45ce3 Author: Evan Nemerson Date: Fri Nov 19 23:27:46 2010 -0800 cogl: Include exported pacakges information in GIR http://bugzilla.clutter-project.org/show_bug.cgi?id=2438 clutter/cogl/cogl/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit f687ec6a226fa3914c6cf81fbad6b43786a2e1dc Author: Chris Lord Date: Wed Nov 24 16:34:21 2010 +0000 docs: Update documentation to reflect automatic map/unmap/etc. Update the ClutterActor documentation to reflect the new automatic map/unmap/realize/unrealize implementations. clutter/clutter-actor.h | 6 ++++-- doc/reference/clutter/subclassing-ClutterActor.xml | 10 +--------- 2 files changed, 5 insertions(+), 11 deletions(-) commit 186d5698ceb32e3b99d52390e29c5609fa3a8ae2 Author: Chris Lord Date: Tue Oct 26 17:09:24 2010 +0100 actor: Use the internal child list for map/unmap Use the internal child list for the default map/unmap vfuncs. This removes the requirement for non-container composite actors to implement their own map/unmap functions. clutter/clutter-actor.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) commit 4752cc38b2000ba643fc9451769ebb2da9873280 Author: Robert Bragg Date: Wed Oct 20 18:26:01 2010 +0100 actor: re-work unrealize to work with composite actors Unrealizing an actor is a recursive process that needs to traverse the children of an actor to ensure they are also unrealized. This maintains the invariant that if any given actor is marked as unrealized then you know that all its children have also been unrealized. The previous implementation would use the container interface's foreach_with_internals vfunc to explicitly traverse the children of container actors but this didn't consider composite actors that aren't containers. Since clutter-actor now maintains an explicit list of children we can also handle composite actors that aren't containers using _clutter_actor_traverse. clutter/clutter-actor.c | 57 +++++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 24 deletions(-) commit 4bda67473283b9b10a21b72df01d54447c7d557f Author: Robert Bragg Date: Wed Oct 20 15:40:30 2010 +0100 actor: make _clutter_actor_traverse more flexible This makes it possible to choose the traversal order; either depth first or breadth first and when visiting actors in a depth first order there is now a callback called before children are traversed and one called after. Some tasks such as unrealizing actors need to explicitly control the traversal order to maintain the invariable that all children of an actor are unrealized before we actually mark the parent as unrealized. The callbacks are now passed the relative depth in the graph of the actor being visited and instead of only being able to return a boolean to bail out of further traversal it can now do one of: continue, skip_children or break. To implement something like unrealize it's desirable to skip children that you find have already been unrealized. clutter/clutter-actor-private.h | 47 ++++++++++++- clutter/clutter-actor.c | 146 +++++++++++++++++++++++++++++++-------- 2 files changed, 163 insertions(+), 30 deletions(-) commit 9df6f0c52445ef9c3c5343c1f0aee63c67bffe06 Author: Owen W. Taylor Date: Tue Oct 5 13:05:45 2010 -0400 ClutterX11TexturePixmap: Optimize ConfigureEvent handling ClutterX11TexturePixmap watches for configure events to tell when it needs to name a new pixmap for the window. However, ConfigureEvents occur on moves in addition to resizes, and doing round trips and naming new pixmaps every time a window is moved is a real performance killer. Add clutter_x11_texture_pixmap_sync_window_internal() that takes the size/position of the window as arguments rather than always calling XGetWindowAttributes. This allows us to bypass all work other than notifying the window-x/window-y properties when we get a ConfigurEvent for a move. The last received width/height is saved to allow us to also omit XGetWindowAttributes on MapNotify events. The public clutter_x11_texture_pixmap_sync_window() becomes a bit less efficient since we no longer combine the roundtrips for XGetWindowAttributes() and XCompositeNameWindowPixmap(), but it appears to have no callers in current publicly available code. Several FIXME's are added for areas where there are still weird things going on in the code or improvements could be made. http://bugzilla.clutter-project.org/show_bug.cgi?id=2356 clutter/x11/clutter-x11-texture-pixmap.c | 189 +++++++++++++++++++++--------- 1 file changed, 132 insertions(+), 57 deletions(-) commit 1fdd82fcf1234a9b6c6fbcff05a62ce8f1eefcab Author: Neil Roberts Date: Wed Nov 17 17:31:23 2010 +0000 test-cogl-texture-get-set-data: Test the alpha component Previously the alpha component of the test texture data was always set to 255 and the data was read back as RGB so that the alpha component is ignored. Now the alpha component is set to a generated value and the data is read back a second time as RGBA to verify that Cogl is not doing any premult conversions when the internal texture and target data is the same. http://bugzilla.clutter-project.org/show_bug.cgi?id=2414 tests/conform/test-cogl-texture-get-set-data.c | 39 ++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) commit 8b4034cd06035e49bbe709daf2977d828cb0f263 Author: Owen W. Taylor Date: Fri Nov 12 11:02:13 2010 -0500 Use FBOs and use cogl_read_pixels() to efficiently read partial textures * cogl_texture_get_data() is converted to use _cogl_texture_foreach_sub_texture_in_region() to iterate through the underlying textures. * When we need to read only a portion of the underlying texture, we set up a FBO and use _cogl_read_pixels() to read the portion we need. This is enormously more efficient for reading a small portion of a large atlas texture. * The CoglAtlasTexture, CoglSubTexture, and CoglTexture2dSliced implementation of get_texture() are removed. http://bugzilla.clutter-project.org/show_bug.cgi?id=2414 clutter/cogl/cogl/cogl-atlas-texture.c | 17 +-- clutter/cogl/cogl/cogl-sub-texture.c | 70 +--------- clutter/cogl/cogl/cogl-texture-2d-sliced.c | 149 +--------------------- clutter/cogl/cogl/cogl-texture.c | 191 ++++++++++++++++++++++++++-- 4 files changed, 186 insertions(+), 241 deletions(-) commit 519b6fe6f259762f05a638716691f626b3b54f12 Author: Neil Roberts Date: Wed Nov 17 17:57:17 2010 +0000 cogl-framebuffer: Try to track format of the framebuffer Previously in cogl_read_pixels we assume the format of the framebuffer is always premultiplied because that is the most likely format with the default Cogl blend mode. However when the framebuffer is bound to a texture we should be able to make a better guess at the format because we know the texture keeps track of the premult status. This patch adds an internal format member to CoglFramebuffer. For onscreen framebuffers we still assume it is RGBA_8888_PRE but for offscreen to textures we copy the texture format. cogl_read_pixels uses this to determine whether the data returned by glReadPixels will be premultiplied. http://bugzilla.clutter-project.org/show_bug.cgi?id=2414 clutter/cogl/cogl/cogl-framebuffer-private.h | 3 +++ clutter/cogl/cogl/cogl-framebuffer.c | 15 +++++++++++++++ clutter/cogl/cogl/cogl.c | 22 ++++++++++------------ 3 files changed, 28 insertions(+), 12 deletions(-) commit 08e1d7f57438fc563253906de735412329366b45 Author: Neil Roberts Date: Wed Nov 17 17:45:27 2010 +0000 cogl_read_pixels: Fix the format used in GLES2 When converting the data in cogl_read_pixels it was using bmp_format instead of the format passed in to the function. bmp_format is the same as the passed in format except that it always has the premult bit set. Therefore the conversion would not handle premultiply correctly. http://bugzilla.clutter-project.org/show_bug.cgi?id=2414 clutter/cogl/cogl/cogl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 2bd054f886a1ecd18837e6be9e48b379b8628754 Author: Neil Roberts Date: Wed Nov 17 15:38:20 2010 +0000 Add an internal _cogl_read_pixels_with_rowstride This is the same as _cogl_read_pixels except that it takes a rowstride parameter for the destination buffer. Under OpenGL setting the rowstride this will end up calling GL_ROW_LENGTH so that the buffer region can be directly written to. Under GLES GL_ROW_LENGTH is not supported so it will use an intermediate buffer as it does if the format is not GL_RGBA. cogl_read_pixels now just calls the full version of the function with the rowstride set to width*bpp. http://bugzilla.clutter-project.org/show_bug.cgi?id=2414 clutter/cogl/cogl/cogl-private.h | 10 ++++++++++ clutter/cogl/cogl/cogl.c | 39 +++++++++++++++++++++++++++----------- 2 files changed, 38 insertions(+), 11 deletions(-) commit b4016f64fa9c82266e4827fb06826319a418d9d9 Author: Neil Roberts Date: Thu Nov 11 15:28:44 2010 +0000 Add an internal _cogl_offscreen_new_to_texture_full function This function is the same as cogl_offscreen_new_to_texture but it takes a level parameter and a set of flags so that FBOs can be used to render to higher mipmap levels and to disable the depth and stencil buffers. cogl_offscreen_new_to_texture now just calls the new function with the level set to zero. This function could be useful in a few places in Cogl where we want to use FBOs as an implementation detail such as when copying between textures. http://bugzilla.clutter-project.org/show_bug.cgi?id=2414 clutter/cogl/cogl/cogl-framebuffer-private.h | 24 +++++++ clutter/cogl/cogl/cogl-framebuffer.c | 100 +++++++++++++++++++------- 2 files changed, 100 insertions(+), 24 deletions(-) commit d52bd995a6a5012fc363b607a9ac79b2748087db Author: Owen W. Taylor Date: Fri Nov 12 10:58:59 2010 -0500 Test slicing when getting data in both directions http://bugzilla.clutter-project.org/show_bug.cgi?id=2414 tests/conform/test-cogl-texture-get-set-data.c | 2 ++ 1 file changed, 2 insertions(+) commit a53b9febcdd60c322933e41e4ded6247da1f8bef Author: Robert Bragg Date: Tue Nov 23 16:48:59 2010 +0000 stage: if backend _ignoring_redraw_clips queue full redraw In clutter_stage_real_queue_redraw we were checking to see if the backend will ignore any subsequent redraw_clip so we can avoid the cost of projecting the paint-volume of an actor into stage coordinates, but we weren't ensuring that a full redraw would be queued instead we just bailed out immediately. This makes sure to call _clutter_stage_window_add_redraw_clip (stage_window, NULL) in this case to make sure the backend will do an un-clipped redraw. clutter/clutter-stage.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 5f181f7265fe043025583e3a7747e9ce55bd65ba Author: Robert Bragg Date: Tue Nov 23 16:05:44 2010 +0000 stage-window: tweak has_redraw_clips semantics This tweaks the semantics of the has_redraw_clips vfunc so we can assume that at the start of a new frame there is an implied, initial, redraw_clip that clips everything (i.e. nothing would be redrawn) so in that case we would expect the has_redraw_clips vfunc to return True at the start of a new frame for backends that support clipping. Previously there was an ambiguity when this function returned False since it could either mean a full screen redraw had been queued or it could mean that the clip state wasn't yet initialized for that frame. This would result in _clutter_stage_has_full_redraw_queued() returning True at the start of a new frame even before any actors have been updated, which in turn meant we would incorrectly ignore queue_redraw requests for actors, believing them to be redundant. clutter/clutter-stage-window.c | 16 ++++++++++++++++ clutter/egl/clutter-stage-egl.c | 19 +++++++++++++------ clutter/glx/clutter-stage-glx.c | 21 ++++++++++++++------- 3 files changed, 43 insertions(+), 13 deletions(-) commit c9d0f8b26e8ca6e67b52a1cc2a54d247919d09a9 Author: Elliot Smith Date: Wed Nov 24 12:44:35 2010 +0000 cookbook: Add recipe for animated scaling of an actor Recipe explains how to animate scaling a single actor. Also covers scaling vs. resizing, scale center, and scaling within layouts and containers. The first example shows how animations around each scale gravity look, as well as tracking the transformed position and size of the actor and displaying those. The second example is a simple image viewer with zoom in/out using scaling. doc/cookbook/animations.xml | 305 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 257 insertions(+), 48 deletions(-) commit ee9a4d02bba8bb0cf6ea73c5cdcce49fb29f786e Author: Elliot Smith Date: Wed Nov 24 12:22:12 2010 +0000 cookbook: Add example of scaling a texture Added a simple application for scaling a texture while keeping the mouse pointer over the same coordinates on its surface. doc/cookbook/examples/Makefile.am | 2 + doc/cookbook/examples/animations-scaling-zoom.c | 155 +++++++++++++++++++++++ 2 files changed, 157 insertions(+) commit c8f112876e69ca2aeb9eb202c504bcf24ecab921 Author: Elliot Smith Date: Fri Nov 19 14:52:44 2010 +0000 cookbook: Added "animated scaling" recipe skeleton doc/cookbook/animations.xml | 132 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) commit b47b2f474910ead5b72eae88ebc53c2f667b93d7 Author: Elliot Smith Date: Fri Nov 19 14:29:39 2010 +0000 cookbook: Added animated scaling example Added an example showing scaling of an actor on each of the scaling gravity settings (NORTH_WEST, NORTH etc.), with a mark indicating the center being used. Displays the transformed size and position, updated on each paint of the actor. doc/cookbook/examples/Makefile.am | 2 + doc/cookbook/examples/animations-scaling.c | 183 ++++++++++++++++++++++++++++ 2 files changed, 185 insertions(+) commit 446107f19d59ab95c918e566b5d8efdb8c0841c8 Author: Emmanuele Bassi Date: Wed Nov 24 12:02:38 2010 +0000 x11: Check for initialized context when enabling ARGB visuals Instead of using the backend singleton. This allows lazy initialization of Clutter. http://bugzilla.clutter-project.org/show_bug.cgi?id=2435 clutter/x11/clutter-backend-x11.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6a552e27abfa2e0f0705ac935872e5393cdf1fdc Author: Tomeu Vizoso Date: Tue Nov 23 17:06:52 2010 +0100 Fix API docs for ClutterShaderEffects It can implement now both fragment and vertex shaders. http://bugzilla.clutter-project.org/show_bug.cgi?id=2442 clutter/clutter-shader-effect.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) commit 65d0ce607efe6cbc72e3f1f4518c8cf5d038ceee Author: Robert Bragg Date: Tue Nov 23 14:31:45 2010 +0000 stage: Report an unknown paint volume. Previously we were leaving it up to the default implementation of get_paint_volume in ClutterGroup to handle the stage by determining the bounding box of all contained children. This isn't the true bounding box of the stage though since the stage is responsible for clearing the entire framebuffer at the start of the frame. This adds a get_paint_volume implementation for ClutterStage which simply returns False which means Clutter has to assume it covers everything. clutter/clutter-stage.c | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 52bf38c38c4b1d0c787cccf5e1ea2518a67ac1bf Author: Robert Bragg Date: Tue Nov 23 14:30:08 2010 +0000 x11: only queue clipped redraw for Expose When we handle Expose events we try and queue a clipped redraw of the stage, but for some reason we were also redundantly calling clutter_actor_queue_redraw for the stage which would negate the request to queue a clipped redraw. clutter/x11/clutter-event-x11.c | 2 -- 1 file changed, 2 deletions(-) commit 1b7c895a2d041a36ad9279044e47542be8c0ba95 Author: Neil Roberts Date: Tue Nov 23 14:07:16 2010 +0000 cogl-texture-driver-gles: Fix image height for uploading 3D textures When uploading a 3D texture with an awkward rowstride, on GLES Cogl will copy the images to an intermediate buffer to pass to GL. However it was using the wrong height when copying the data so it would end up overflowing the buffer and crashing. clutter/cogl/cogl/driver/gles/cogl-texture-driver-gles.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 01c6ccfa1336216c74829386912806ca02e1ab12 Author: Emmanuele Bassi Date: Tue Nov 23 13:05:47 2010 +0000 pipeline: Use WrapModeInternal in the Layer struct Since we're using CoglPipelineWrapModeInternal in the internal API anyway, and the compiler complains loudly when comparing two enumeration types without casting, the PipelineLayer struct should store the wrap modes using the internal enumeration. clutter/cogl/cogl/cogl-pipeline-private.h | 44 ++++++++++++++--------------- 1 file changed, 22 insertions(+), 22 deletions(-) commit 8e6fac38fa73ec4c8a67835a1128e6b1a9889302 Author: Owen W. Taylor Date: Sat Nov 13 11:29:49 2010 -0500 Don't update or use last_paint_box when painting inside a clone The last_paint_box for an actor represents its "normal" position - we shouldn't update it or use it to cull drawing if we are painting a clone of the actor. Tracking whether we are painting a clone is done by adding _clutter_actor_push/pop_clone_paint() and a global "clone paint level". http://bugzilla.clutter-project.org/show_bug.cgi?id=2396 clutter/clutter-actor-private.h | 3 +++ clutter/clutter-actor.c | 42 ++++++++++++++++++++++++++++++++------- clutter/clutter-clone.c | 2 ++ 3 files changed, 40 insertions(+), 7 deletions(-) commit c68280556ee762c840bb8c73da16d505b6efe1ac Author: Robert Bragg Date: Mon Nov 22 15:51:15 2010 +0000 clip-stack: combine modelview-projection in set_clip_planes When using clip planes and we we have to project some vertices into screen coordinates we used to transform those by the modelview and then the projection matrix separately. Now we combine the modelview and projection matrix and then use that to transform the vertices in one step instead. clutter/cogl/cogl/cogl-clip-stack.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) commit 99f4832c28512e8b670b3681eeb228b4c8c08d14 Author: Robert Bragg Date: Mon Nov 22 12:44:36 2010 +0000 journal: remove possability of fallback layers When logging quads in the journal it used to be possible to specify a mask of fallback layers (layers where a default white texture should be used in-place of the corresponding texture in the current source pipeline). Since we now handle fallbacks for cogl_rectangle* primitives when validating the pipeline up-front before logging in the journal we no longer need the ability for the journal to apply fallbacks too. clutter/cogl/cogl/cogl-journal-private.h | 1 - clutter/cogl/cogl/cogl-journal.c | 6 ------ clutter/cogl/cogl/cogl-primitives.c | 2 -- 3 files changed, 9 deletions(-) commit 305bb124b71b8fd531009f050cc83d89af1dfb93 Author: Robert Bragg Date: Fri Nov 12 16:08:25 2010 +0000 use cogl_matrix_transform_points in clutter When transforming a paint-volume or transforming allocation vertices we are transforming more than one point at a time so we can batch those together with cogl_matrix_transform_points instead of cogl_matrix_transform_point. Also in both of these cases we don't need to do a projective transform so using cogl_matrix_transform_points also lets us reduce the per-vertex computation. clutter/clutter-actor.c | 23 ++++++++--------------- clutter/clutter-paint-volume.c | 18 +++++++----------- 2 files changed, 15 insertions(+), 26 deletions(-) commit 2dba3e8cbf4d130701510768b5c766bb7ef070e8 Author: Robert Bragg Date: Fri Nov 12 13:35:24 2010 +0000 matrix: Adds experimental cogl_matrix_{transform,project}_points This add two new function that allows us to transform or project an array of points instead of only transforming one point at a time. Recent benchmarking has shown cogl_matrix_transform_point to be a bottleneck sometimes, so this should allow us to reduce the overhead when transforming lots of vertices at the same time, and also reduce the cost of 3 component, non-projective transforms. For now they are marked as experimental (you have to define COGL_ENABLE_EXPERIMENTAL_API) because there is some concern that it introduces some inconsistent naming. cogl_matrix_transform_point would have to be renamed cogl_matrix_project_point to be consistent, but that would be an API break. clutter/cogl/cogl/cogl-matrix.c | 346 ++++++++++++++++++++++++++++++++++ clutter/cogl/cogl/cogl-matrix.h | 123 ++++++++++++ doc/reference/cogl/cogl-sections.txt | 2 +- 3 files changed, 470 insertions(+), 1 deletion(-) commit 4307e65f937538a6251738a8450babce5ed9e8e6 Author: Robert Bragg Date: Thu Nov 11 16:28:45 2010 +0000 primitives: validate with _cogl_pipeline_foreach_layer Switch _cogl_rectangles_with_multitexture_coords to using _cogl_pipeline_foreach_layer to iterate the layers of a pipeline when validating instead of iterating the pipelines internal list, which is risky since any modifications to pipelines (even to an override pipeline derived from the original), could potentially corrupt the list as it is being iterated. clutter/cogl/cogl/cogl-pipeline-private.h | 3 +- clutter/cogl/cogl/cogl-pipeline.c | 6 +- clutter/cogl/cogl/cogl-primitives.c | 324 ++++++++++++++++------------- 3 files changed, 180 insertions(+), 153 deletions(-) commit fb564cc2ca9579c3b444f5fd5c59ee4da040b7da Author: Robert Bragg Date: Thu Nov 11 15:08:38 2010 +0000 cogl: remove WrapModeOverrides from FlushOptions This removes the possibility to specify wrap mode overrides within a CoglPipelineFlushOptions struct since the right way to handle these overrides is by copying the user's material and making the changes to that copy before flushing. All primitives code has already switched away from using these wrap mode overrides so this patch just removes unused code and types. It also remove the wrap_mode_overrides argument for _cogl_journal_log_quad. clutter/cogl/cogl/cogl-journal-private.h | 2 -- clutter/cogl/cogl/cogl-journal.c | 7 ---- clutter/cogl/cogl/cogl-pipeline-private.h | 32 +---------------- clutter/cogl/cogl/cogl-pipeline.c | 55 ----------------------------- clutter/cogl/cogl/cogl-primitives.c | 2 -- 5 files changed, 1 insertion(+), 97 deletions(-) commit b8c9ee7e88ca6d1c2e9bc6380740dbf19096e71e Author: Emmanuele Bassi Date: Tue Nov 23 10:26:15 2010 +0000 x11: Ignore NULL settings Prevent a segfault when dealing with XSETTINGS_ACTION_DELETE. http://bugzilla.clutter-project.org/show_bug.cgi?id=2441 clutter/x11/clutter-backend-x11.c | 3 +++ 1 file changed, 3 insertions(+) commit 1db8b8a70e9c198a04d7c3e3e6365513f5d6858d Author: Emmanuele Bassi Date: Mon Nov 22 17:01:17 2010 +0000 color: Do not shadow a variable Avoid a warning. clutter/clutter-color.c | 2 -- 1 file changed, 2 deletions(-) commit 88049013702032895a9cb7ed60f661d58443130d Author: Emmanuele Bassi Date: Mon Nov 22 15:20:55 2010 +0000 Update NEWS NEWS | 13 +++++++++++++ 1 file changed, 13 insertions(+) commit f4531aef4bea347f84b6ace38f6df7b34cdbe13c Author: Emmanuele Bassi Date: Mon Nov 22 15:07:01 2010 +0000 color: And finally, add hsla() support Missed it when reading the CSS spec. clutter/clutter-color.c | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) commit e86db85cd2f0bbdbb65924a8f9ae2575e1212d14 Author: Emmanuele Bassi Date: Mon Nov 22 15:02:47 2010 +0000 color: Support the CSS hsl() notation Since we support the rgb() and rgba() notations we might as well also support the hsl() one. clutter/clutter-color.c | 70 ++++++++++++++++++++++++++++++++++++++++++++ tests/conform/test-color.c | 14 +++++++++ 2 files changed, 84 insertions(+) commit ab6da347f61c0fb2249bbab9d03545121752d633 Author: Emmanuele Bassi Date: Mon Nov 22 14:22:56 2010 +0000 color: Support CSS color definitions The CSS Color Module 3, available at: http://www.w3.org/TR/css3-color/ allows defining colors as: rgb ( r, g, b ) rgba ( r, g, b, a) along with the usual hexadecimal and named notations. The r, g, and b channels can be: • integers between 0 and 255 • percentages, between 0% and 100% The alpha channel, if included using the rgba() modifier, can be a floating point value between 0.0 and 1.0. The ClutterColor parser should support this notation. clutter/clutter-color.c | 135 ++++++++++++++++++++++++++++++++++++++++++-- tests/conform/test-color.c | 54 ++++++++++++++++-- 2 files changed, 178 insertions(+), 11 deletions(-) commit ee0b8c439e0211e1af8ad55d17d2695e17879f0a Author: Emmanuele Bassi Date: Mon Nov 22 10:16:45 2010 +0000 docs: Update the release notes in the README Also updates the introductory blurb. README | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) commit 3055cd1f4aec16a39e520da8d697d19c5beae711 Author: Emmanuele Bassi Date: Sat Nov 20 13:05:51 2010 +0000 docs: Include the Behaviour migration guide I forgot to add the xinclude directive in the main document. doc/reference/clutter/clutter-docs.xml.in | 1 + 1 file changed, 1 insertion(+) commit 2fe8f864971f3fdfd27e1f2480aa48b0b9c4172e Author: Emmanuele Bassi Date: Sat Nov 20 11:07:45 2010 +0000 po: Post-release update po/clutter-1.0.pot | 490 ++++++++++++++++++++++---------------------- po/de.po | 488 ++++++++++++++++++++++---------------------- po/fr.po | 488 ++++++++++++++++++++++---------------------- po/id.po | 488 ++++++++++++++++++++++---------------------- po/it.po | 573 ++++++++++++++++++++++++++++------------------------ po/pl.po | 488 ++++++++++++++++++++++---------------------- po/zh_CN.po | 488 ++++++++++++++++++++++---------------------- 7 files changed, 1770 insertions(+), 1733 deletions(-) commit ac6a378177c37712b13fb25d09b7c5e2ce4f626f Author: Emmanuele Bassi Date: Sat Nov 20 11:07:29 2010 +0000 Post-release version bump to 1.5.7 configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 7373cebd8d23fa88c74f680bca5d5c7445d46eb0 Author: Emmanuele Bassi Date: Sat Nov 20 10:17:51 2010 +0000 Release Clutter 1.5.6 (snapshot) configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b674fcf3bb3acef61bb10a5726e020a4bc1310c7 Author: Emmanuele Bassi Date: Sat Nov 20 10:46:57 2010 +0000 build: Add missing cogl-shader-boilerplate.h clutter/cogl/cogl/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit be3040fd2bca29d3d415d4baf062480f20471947 Author: Emmanuele Bassi Date: Fri Nov 19 18:29:43 2010 +0000 build: Add a missing file clutter/cogl/cogl/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit e30b7b2d5a2f4468a9266085ce58b133734e3f9c Author: Emmanuele Bassi Date: Fri Nov 19 18:15:29 2010 +0000 build: Don't reference non-existing files clutter/cogl/cogl/Makefile.am | 1 - 1 file changed, 1 deletion(-) commit 60c6312b2d11f25c631cade6cc59b9680debc6c2 Author: Emmanuele Bassi Date: Fri Nov 19 18:07:27 2010 +0000 Update the NEWS file NEWS | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) commit d39277d0cf96e2a4ac7b5cc3f587b5fba1f48610 Author: Emmanuele Bassi Date: Fri Nov 19 12:26:57 2010 +0000 actor: Reset the last paint box on unmap This allows hiding + moving + showing an actor without repainting the wrong area. http://bugzilla.clutter-project.org/show_bug.cgi?id=2395 clutter/clutter-actor.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) commit 346d3e40a37f2229b0a9314fd8a3c2b6c4313752 Author: Owen W. Taylor Date: Mon Nov 15 01:32:42 2010 -0500 Free state at the end of a journal flush At the end of flushing the journal, we need to free the vertex attributes and vertex array. http://bugzilla.clutter-project.org/show_bug.cgi?id=2423 clutter/cogl/cogl/cogl-journal.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) commit 1299672b5a53e004bfbc92fd89d2707c732e3586 Author: Owen W. Taylor Date: Sun Nov 14 22:59:24 2010 -0500 Actually free buffer objects With the refactoring to centralize code into CoglBuffer, _cogl_buffer_fini() was never actually implemented, so all GL vertex and index buffer objects were leaked. The duplicate call to glDeleteBuffers() in CoglPixelArray is removed (it wasn't paying attention to whether the buffer had been allocated as a PBO or not.) http://bugzilla.clutter-project.org/show_bug.cgi?id=2423 clutter/cogl/cogl/cogl-buffer.c | 7 +++++++ clutter/cogl/cogl/cogl-pixel-array.c | 2 -- 2 files changed, 7 insertions(+), 2 deletions(-) commit a5c30398df59f1aca8c0bf1e1f0a32ae51e990cd Author: Robert Bragg Date: Tue Nov 16 13:54:15 2010 +0000 egl: Adds support for clipped redraws This adds egl backend support for handling clipped redraws. This uses the EGL_NOK_swap_region extension to enable the EGL backend to present a subregion from the back buffer to the front so we don't always have to redraw the entire stage for small updates. clutter/egl/clutter-backend-egl.c | 81 ++++++++++++++ clutter/egl/clutter-backend-egl.h | 32 ++++++ clutter/egl/clutter-stage-egl.c | 215 ++++++++++++++++++++++++++++++++++++- clutter/egl/clutter-stage-egl.h | 8 ++ 4 files changed, 333 insertions(+), 3 deletions(-) commit a4d3208eb57ddb3cc7eea61534b5187663d7507c Author: Robert Bragg Date: Tue Nov 16 13:06:08 2010 +0000 debug: Adds a COGL_DEBUG=wireframe option This adds a COGL_DEBUG=wireframe option to visualize the underlying geometry of the primitives being drawn via Cogl. This works for triangle list, triangle fan, triangle strip and quad (internal only) primitives. It also works for indexed vertex arrays. clutter/cogl/cogl/cogl-debug-options.h | 5 + clutter/cogl/cogl/cogl-debug.c | 3 +- clutter/cogl/cogl/cogl-debug.h | 3 +- clutter/cogl/cogl/cogl-vertex-attribute.c | 243 +++++++++++++++++++++++++++++ 4 files changed, 252 insertions(+), 2 deletions(-) commit 78ac92f8e57acf8eccc20a1990bd7d619f5ebbdc Author: Robert Bragg Date: Tue Nov 16 08:52:49 2010 +0000 vertex-buffer: don't unref NULL object In cogl_vertex_buffer_indices_get_for_quads() we sometimes have to extend the length of an existing array, but when we came to unref the previous array we didn't first check that it wasn't simply NULL. clutter/cogl/cogl/cogl-vertex-buffer.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit f473c213fcc1b0095f32c909eb69a0c8172cba0e Author: Robert Bragg Date: Tue Nov 16 08:49:55 2010 +0000 vertex-array: Adds data arg for _vertex_array_new() This adds an optional data argument for cogl_vertex_array_new() since it seems that mostly every case where we use this API we follow up with a cogl_buffer_set_data() matching the size of the new array. This simplifies all those cases and whenever we want to delay uploading of data then NULL can simply be passed. clutter/cogl/cogl/cogl-journal.c | 2 +- clutter/cogl/cogl/cogl-primitive.c | 40 +++++++------------------------- clutter/cogl/cogl/cogl-primitives.c | 6 ++--- clutter/cogl/cogl/cogl-vertex-array.c | 11 +++++++-- clutter/cogl/cogl/cogl-vertex-array.h | 9 +++++-- clutter/cogl/cogl/cogl-vertex-buffer.c | 3 ++- clutter/cogl/cogl/cogl2-path.c | 12 ++++------ 7 files changed, 33 insertions(+), 50 deletions(-) commit 804dd5d5fc2b68b64032cac30268372303be24bf Author: Robert Bragg Date: Tue Nov 16 08:41:29 2010 +0000 indices: Makes cogl_indices_get_array public This makes the previously internal only _cogl_indices_get_array API public as cogl_indices_get_array (Though marked as experimental) clutter/cogl/cogl/cogl-indices-private.h | 3 --- clutter/cogl/cogl/cogl-indices.c | 2 +- clutter/cogl/cogl/cogl-indices.h | 3 +++ clutter/cogl/cogl/cogl-vertex-attribute.c | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) commit dfc671da5960fccf478131aa3136c25341979e61 Author: Robert Bragg Date: Tue Nov 16 08:38:59 2010 +0000 build: cogl-clip-state.h depends on cogl-clip-stack.h This adds a #include "cogl-clip-stack.h" to cogl-clip-state.h which depends on the CoglClipStack typedef. clutter/cogl/cogl/cogl-clip-state.h | 2 ++ 1 file changed, 2 insertions(+) commit 6f68bb365694bfd82737f6d1c577af38280d099b Author: Robert Bragg Date: Wed Nov 10 18:27:00 2010 +0000 debug: disable-culling was disabling clipped redraws there was a typo and the disable-culling option was actually disabling clipped redraws. clutter/clutter-main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 694632ce95bfc2c14791214acc435743dba4df2e Author: Emmanuele Bassi Date: Thu Nov 18 18:23:49 2010 +0000 build: Re-arrange headers Try to minimize the included headers, especially in clutter-actor.h. clutter/clutter-actor.c | 1 + clutter/clutter-actor.h | 6 ++---- clutter/clutter-color.h | 5 +---- clutter/clutter-deform-effect.h | 2 +- clutter/clutter-effect.h | 1 - clutter/clutter-offscreen-effect.h | 1 + clutter/clutter-shader.h | 1 - clutter/clutter-texture.c | 15 +++++++-------- clutter/clutter-texture.h | 2 +- clutter/clutter-types.h | 6 +++++- 10 files changed, 19 insertions(+), 21 deletions(-) commit 63cef64d17d3e5c22add99e8d736b6f69fac8f25 Author: Emmanuele Bassi Date: Thu Nov 18 14:14:37 2010 +0000 docs: Fix some wrong function/signal/property names clutter/clutter-behaviour-scale.c | 4 ++-- clutter/clutter-behaviour.h | 2 +- clutter/clutter-constraint.c | 4 ++-- clutter/clutter-drag-action.c | 2 +- clutter/clutter-script.c | 2 +- clutter/clutter-stage.c | 2 +- clutter/clutter-stage.h | 2 +- clutter/clutter-texture.c | 4 ++-- clutter/clutter-units.c | 2 +- doc/cookbook/animations.xml | 2 +- doc/reference/clutter/clutter-overview.xml | 2 +- doc/reference/clutter/migrating-ClutterPath.xml | 2 +- 12 files changed, 15 insertions(+), 15 deletions(-) commit b0f535037993a15e75525494c5dddecc96bbe0dd Author: Emmanuele Bassi Date: Wed Nov 17 15:51:35 2010 +0000 test-layout: Port away from Behaviour Use a simple animation with a looping+reversing timeline. tests/interactive/test-layout.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) commit eade1ab19e90b6955ead726132503f13ac346356 Author: Emmanuele Bassi Date: Wed Nov 10 11:51:42 2010 +0000 test-rotate: Remove the behaviour code Use a looping animation with a shared timeline instead. tests/interactive/test-rotate.c | 57 +++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 32 deletions(-) commit 74a770a976250d1d3cb887d9536fac1e9fc7cdf4 Author: Emmanuele Bassi Date: Wed Nov 10 13:15:06 2010 +0000 docs: Add Behaviour migration guide doc/reference/clutter/Makefile.am | 6 +- .../clutter/migrating-ClutterBehaviour.xml | 122 ++++++++++++++++++++ 2 files changed, 126 insertions(+), 2 deletions(-) commit a35708eb74dcc3ffd474e1c07725ece7b8a4fb1a Author: Emmanuele Bassi Date: Sat Nov 6 15:54:21 2010 +0000 Deprecate ClutterBehaviour and sub-classes The Behaviour class and its implementations have been replaced by the new animation framework API and by the constraints for layout-related animations. Currently, we need to make tests build, so we undef DISABLE_DEPRECATED in specific test cases while they get ported. clutter/clutter-actor.c | 4 +++- clutter/clutter-behaviour-depth.c | 15 ++++++++++++- clutter/clutter-behaviour-depth.h | 9 ++++++++ clutter/clutter-behaviour-ellipse.c | 6 ++++-- clutter/clutter-behaviour-ellipse.h | 8 +++++++ clutter/clutter-behaviour-opacity.c | 34 ++++++++++++++++-------------- clutter/clutter-behaviour-opacity.h | 10 ++++++++- clutter/clutter-behaviour-path.c | 25 +++++++++++++++++----- clutter/clutter-behaviour-path.h | 9 ++++++++ clutter/clutter-behaviour-rotate.c | 13 ++++++------ clutter/clutter-behaviour-rotate.h | 8 +++++++ clutter/clutter-behaviour-scale.c | 33 +++++++++++++++++++++-------- clutter/clutter-behaviour-scale.h | 9 ++++++++ clutter/clutter-behaviour.c | 7 ++++-- clutter/clutter-behaviour.h | 12 ++++++++++- tests/conform/test-behaviours.c | 2 ++ tests/conform/test-script-parser.c | 1 + tests/interactive/test-actor-clone.c | 1 + tests/interactive/test-actors.c | 1 + tests/interactive/test-behave.c | 1 + tests/interactive/test-depth.c | 2 ++ tests/interactive/test-layout.c | 2 ++ tests/interactive/test-multistage.c | 2 ++ tests/interactive/test-paint-wrapper.c | 2 ++ tests/interactive/test-pixmap.c | 4 +++- tests/interactive/test-rotate.c | 1 + tests/interactive/test-scale.c | 2 ++ tests/interactive/test-script.c | 1 + tests/interactive/test-texture-async.c | 2 ++ tests/interactive/test-texture-quality.c | 2 ++ tests/interactive/test-threads.c | 2 ++ tests/interactive/test-viewport.c | 1 + 32 files changed, 185 insertions(+), 46 deletions(-) commit 71a838815f4d3ea1d9e2054bbbaaf0449eae357e Author: Emmanuele Bassi Date: Wed Nov 17 15:27:42 2010 +0000 timeline: Add :reverse property The :reverse property removes the pattern of connecting to the ::completed signal of a Timeline to change the direction. http://bugzilla.clutter-project.org/show_bug.cgi?id=2408 clutter/clutter-timeline.c | 156 ++++++++++++++++++++++++---- clutter/clutter-timeline.h | 3 + doc/reference/clutter/clutter-sections.txt | 2 + tests/interactive/test-behave.c | 21 +--- 4 files changed, 144 insertions(+), 38 deletions(-) commit 1ce47bb562a227f4c3bb267e2e10b54b4ded475c Author: Emmanuele Bassi Date: Thu Nov 18 14:02:52 2010 +0000 docs: Remove unnecessary '#' The hash is confusing gtk-doc. clutter/clutter-color.h | 90 +++++++++++++++++++++++------------------------ 1 file changed, 45 insertions(+), 45 deletions(-) commit a94ea93bde8382691b8eea1f047b20c0c689c51f Author: Emmanuele Bassi Date: Thu Nov 18 10:53:01 2010 +0000 paint-volume: Do not take a reference on the actor The paint volume structure is cached in the Actor it references, and this causes a reference cycle. The paint volume is going to be used when painting, so the actor must still be valid - otherwise Clutter will bail out far before than accessing the actor pointer in ClutterPaintVolume. Otherwise, we could have used dispose() to check for a valid actor and remove a reference if the actor field is !NULL; it feels less clean, though, since we're effectively managing an extra reference on ourselves. http://bugzilla.clutter-project.org/show_bug.cgi?id=2431 clutter/clutter-actor.c | 8 +++----- clutter/clutter-paint-volume.c | 18 +++--------------- 2 files changed, 6 insertions(+), 20 deletions(-) commit 0371ba3976fafecc900123bb94822b95a1198d3a Author: Emmanuele Bassi Date: Thu Nov 18 11:00:08 2010 +0000 actor: Group bitfields together clutter/clutter-actor.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit b55346151c3122d356d1e0af5f73bba184fbaa81 Author: Emmanuele Bassi Date: Wed Nov 17 19:13:55 2010 +0000 build: Cogl-2.0 API reference should be conditionally built Building the API reference for Cogl 2.0 is fairly confusing: the API itself is experimental and for internal use only -- though we want feedback for it. Let's build the API reference only when Clutter is configured with a specific configure switch, so that people that wish to give feedback on the API and its documentation can do it. configure.ac | 8 ++++++++ doc/reference/Makefile.am | 8 +++++++- 2 files changed, 15 insertions(+), 1 deletion(-) commit 8f60d5a3a2d6650bb27ebe6488fe56bf67d3d09c Author: Emmanuele Bassi Date: Sun Nov 7 16:20:51 2010 +0000 Start using the monotonic API in GLib ≥ 2.27 Starting from the 2.27 cycle, GLib is exposing a monotonic clock with microseconds granularity throughout the time-based API. We can start using it, given that the old, non-monotonic version is going to be deprecated by the same cycle. clutter/clutter-frame-source.c | 12 +++++++++--- clutter/clutter-master-clock.c | 27 ++++++++++++++++++++------- clutter/clutter-timeout-interval.c | 15 ++++++++++----- clutter/clutter-timeout-pool.c | 13 ++++++++++--- 4 files changed, 49 insertions(+), 18 deletions(-) commit 68d7a5e84721966686fb066c8b62041f0889a07a Author: Emmanuele Bassi Date: Sun Nov 7 15:57:33 2010 +0000 Move away from GTimeVal GLib 2.28 will deprecate GTimeVal and related API in favour of standardizing on microseconds granularity for all time-based API. Clutter should switch too. All of the current users of GTimeVal convert to milliseconds when doing time operations, and use GTimeVal only as storage. This can effectively be replaced by a gint64. The Master Clock uses a microsecond resolution, except when interacting with the main loop itself, since the main loop has a millisecond resolution - at least until Ryan Lortie manages to switch that too to microseconds on Linux. The clutter_timeline_do_tick() function was erroneously not privatized, but it was still assumed to be private; we should just remove it from the public symbols. clutter/clutter-frame-source.c | 8 +++--- clutter/clutter-master-clock.c | 51 ++++++++++++++++-------------------- clutter/clutter-timeline.c | 17 ++++++------ clutter/clutter-timeline.h | 4 +-- clutter/clutter-timeout-interval.c | 33 ++++++++++++----------- clutter/clutter-timeout-interval.h | 28 +++++++++++--------- clutter/clutter-timeout-pool.c | 16 ++++++----- 7 files changed, 79 insertions(+), 78 deletions(-) commit 8b047d0bc963389109486388ce5051a6a06d0994 Author: Emmanuele Bassi Date: Wed Nov 17 12:49:10 2010 +0000 docs: Move the constraints example picture about the source code clutter/clutter-constraint.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit e5da5b0907264f822bf646ef7e1151bb69f1945a Author: Emmanuele Bassi Date: Wed Nov 17 12:47:46 2010 +0000 shaders: Fix the usage of the Cogl GLSL variables clutter/clutter-blur-effect.c | 4 ++-- clutter/clutter-colorize-effect.c | 2 +- clutter/clutter-desaturate-effect.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) commit f96113705d0154772e39a4782925d49b74d5ad09 Author: Emmanuele Bassi Date: Wed Nov 17 12:14:02 2010 +0000 docs: Fix closing tag clutter/clutter-constraint.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a731682ac394d1b54b78dec1083d158a71e10f89 Author: Emmanuele Bassi Date: Mon Nov 15 16:30:12 2010 +0000 actor: Simple show/hide optimizations Showing a visible (and hiding an invisible) actor is far less cheap than it should be. http://bugzilla.clutter-project.org/show_bug.cgi?id=2422 clutter/clutter-actor.c | 65 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 45 insertions(+), 20 deletions(-) commit 66e7a38a3d9a8b2782969cf24db59909e0f99877 Author: muflone Date: Mon Nov 15 17:54:01 2010 +0000 po: Update Italian translation Signed-off-by: Emmanuele Bassi po/it.po | 839 +++++++++++++++++++++++++++++++------------------------------- 1 file changed, 413 insertions(+), 426 deletions(-) commit a32f7811447addd100bb5919ee5e0f3d1157097f Author: Emmanuele Bassi Date: Tue Nov 16 17:18:50 2010 +0000 docs: Break down the constraints example clutter/clutter-constraint.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) commit 3777e0b38267fd21539c8ec5e7f04d6179379a3d Author: Emmanuele Bassi Date: Mon Nov 15 17:27:46 2010 +0000 docs: Update the constraints example image doc/reference/clutter/constraints-example.png | Bin 2482 -> 5985 bytes 1 file changed, 0 insertions(+), 0 deletions(-) commit 2950cb3e78626b269555bc3a4813f9bfe17ea7fc Author: Emmanuele Bassi Date: Mon Nov 15 16:02:15 2010 +0000 docs: Fix Since tags for PaintVolume-related API clutter/clutter-paint-volume.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) commit b7fa13a52f6c7f13e81cefd774b7ac301261a673 Author: Emmanuele Bassi Date: Mon Nov 15 15:02:07 2010 +0000 docs: Add introductory section on Constraints Use the snap-constraint code for the example code and screenshot. clutter/clutter-constraint.c | 59 ++++++++++++++++++++++++- doc/reference/clutter/Makefile.am | 2 + doc/reference/clutter/constraints-example.png | Bin 0 -> 2482 bytes 3 files changed, 60 insertions(+), 1 deletion(-) commit 3c15c0c9bb6befff149b8be512d7342d820b591a Author: Emmanuele Bassi Date: Wed Nov 10 16:37:34 2010 +0000 Add SnapConstraint A SnapConstraint is a constraint that "snaps" the edges of two actors together. clutter/Makefile.am | 2 + clutter/clutter-snap-constraint.c | 589 ++++++++++++++++++++++++++++ clutter/clutter-snap-constraint.h | 90 +++++ clutter/clutter.h | 1 + doc/reference/clutter/clutter-docs.xml.in | 16 +- doc/reference/clutter/clutter-sections.txt | 19 + doc/reference/clutter/clutter.types | 1 + tests/interactive/Makefile.am | 6 +- tests/interactive/test-snap-constraint.c | 90 +++++ 9 files changed, 808 insertions(+), 6 deletions(-) commit b3f5a6e2ba29852f1f4a4d9b0f9efcdae1a61af0 Author: Emmanuele Bassi Date: Fri Nov 12 18:09:25 2010 +0000 actor: Do not queue relayouts on actors being destroyed Simple optimization is simple. clutter/clutter-actor.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) commit 0523d6db0815ed55e5e76f5d0cd879e394d9a0f6 Author: Emmanuele Bassi Date: Fri Nov 12 18:07:44 2010 +0000 actor: Add a get_debug_name() private Actor method For internal usage, writing: clutter_actor_get_name (actor) != NULL ? clutter_actor_get_name (actor) : G_OBJECT_TYPE_NAME (actor) is overly verbose and does two type checks. A simple, internal method for getting the same result without type checks would be much more appreciated. clutter/clutter-actor-private.h | 2 ++ clutter/clutter-actor.c | 63 ++++++++++++++++++++------------------- 2 files changed, 34 insertions(+), 31 deletions(-) commit f3295a3f36cb64e6976f3a1359e08ad680193665 Merge: 9f2c315 63721c5 Author: Emmanuele Bassi Date: Mon Nov 15 15:41:46 2010 +0000 Merge remote branch 'elliot/cookbook-opacity-values-fix' * elliot/cookbook-opacity-values-fix: cookbook: Fix opacity examples in recipe cookbook: Fix incorrect value for opacity commit 9f2c31547c7a3a36edbd5098eb51ce6c6b9b5ea1 Merge: 5f9df7e 8bdfa4d Author: Emmanuele Bassi Date: Mon Nov 15 15:37:42 2010 +0000 Merge remote branch 'elliot/cookbook-animations-looping' * elliot/cookbook-animations-looping: cookbook: Recipe for "looping animations" cookbook: Clarify how signals are emitted during looped animation cookbook: First draft for looping animations recipe cookbook: Recipe skeleton for "looping animations" cookbook: Looping animation examples commit 5f9df7e3a0a2646fe894987443869892de69c200 Author: Emmanuele Bassi Date: Mon Nov 15 15:36:41 2010 +0000 Fix compilation warning by using the correct type clutter/clutter-main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 92e21ae936a2bf796441db629cb1576b2ef8856d Merge: e800353 f9d2310 Author: Emmanuele Bassi Date: Mon Nov 15 15:26:07 2010 +0000 Merge remote branch 'elliot/c90-fix' commit 8bdfa4ddee3aed333796ef76fc650405f3d17689 Author: Elliot Smith Date: Mon Nov 15 11:18:26 2010 +0000 cookbook: Recipe for "looping animations" Added a recipe giving examples of how to loop animations for each part of the animation API (implicit, animator, state). The discussion covers looping a fixed number of times and inverting a single implicit animation to create a loop which goes back to its start on each iteration. doc/cookbook/animations.xml | 328 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 298 insertions(+), 30 deletions(-) commit e205bd0fdc42832d97bf022cf63faa6d5302478c Author: Elliot Smith Date: Thu Nov 11 12:04:20 2010 +0000 cookbook: Clarify how signals are emitted during looped animation Added a comment to the example code about how timeline emits "completed" during looped animation, while the animation itself doesn't. doc/cookbook/examples/animations-looping-implicit.c | 4 ++++ 1 file changed, 4 insertions(+) commit 7eb248b1f0ae05e2eb165a04f37bbf8eadaf77d6 Author: Elliot Smith Date: Thu Nov 11 11:44:28 2010 +0000 cookbook: First draft for looping animations recipe Includes video showing the looped animation and basic section headings, plus outline of content and notes. doc/cookbook/Makefile.am | 1 + doc/cookbook/animations.xml | 87 ++++++++++++++++++++++++++-- doc/cookbook/videos/animations-looping.ogv | Bin 0 -> 29011 bytes 3 files changed, 82 insertions(+), 6 deletions(-) commit 071029e373366b93a9f3b7c3b4ef5b8ec9eaf6a3 Author: Elliot Smith Date: Wed Nov 10 17:43:28 2010 +0000 cookbook: Recipe skeleton for "looping animations" doc/cookbook/animations.xml | 55 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) commit 0d8c730558f2d4b4c04c3daa014cebd76b14c263 Author: Elliot Smith Date: Wed Nov 10 16:11:27 2010 +0000 cookbook: Looping animation examples Added code examples for creating a looped animation with each of the animation approaches (implicit, ClutterAnimation, ClutterState). doc/cookbook/examples/Makefile.am | 6 ++ .../examples/animations-looping-animator.c | 66 +++++++++++++++ .../examples/animations-looping-implicit.c | 87 ++++++++++++++++++++ doc/cookbook/examples/animations-looping-state.c | 83 +++++++++++++++++++ 4 files changed, 242 insertions(+) commit e80035331b8adf6eec2549bf16f1027210c4233f Author: Emmanuele Bassi Date: Sun Nov 14 23:06:53 2010 +0000 Use the right string in the font settings debug blurb clutter/clutter-settings.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit e6bc65b5c37c38dbf5a82dea724e2f389e2b481e Author: Emmanuele Bassi Date: Sun Nov 14 15:23:36 2010 +0000 text: Do not segfault with NULL :font-name Make sure that we have a fall back in place for the default font name string, and use g_strcmp0 to protect ourselves from NULL strings. http://bugzilla.clutter-project.org/show_bug.cgi?id=2417 clutter/clutter-text.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) commit 9249bd8411157c7610fd406e88ebc9ed9e089be4 Author: Owen W. Taylor Date: Fri Nov 12 18:53:51 2010 -0500 xsettings: don't use the xsettings watch function functionality The "watch" function functionality in xsettings-client.c is designed for setups like GDK where filters are per-window. If we are going to pass all events to _clutter_xsettings_client_process_event() anyways, we can just pass in NULL for watch. This avoids a nasty infinite loop where an event would get processed triggering removing a filter and adding a new filter, which would immediately run and remove a filter and add another and so on ad-infinitum. http://bugzilla.clutter-project.org/show_bug.cgi?id=2415 clutter/x11/clutter-backend-x11.c | 37 ++++--------------------------------- 1 file changed, 4 insertions(+), 33 deletions(-) commit f9d2310b724fbd6ff4e3d6b0d1bcdfc1dd8b4b7b Author: Elliot Smith Date: Fri Nov 12 09:32:04 2010 +0000 cookbook: Make example code C90 compliant Modified all cookbook example code to prevent ISO C90 compliance warnings occurring during compilation. doc/cookbook/examples/animations-moving-animator.c | 11 ++++---- doc/cookbook/examples/animations-moving-implicit.c | 4 ++- doc/cookbook/examples/events-buttons-lasso.c | 6 ++-- doc/cookbook/examples/events-mouse-scroll.c | 13 +++++---- .../examples/events-pointer-motion-scribbler.c | 4 +-- .../examples/events-pointer-motion-stacked.c | 5 ++-- doc/cookbook/examples/events-pointer-motion.c | 3 +- .../examples/layouts-stacking-diff-sized-actors.c | 6 ++-- doc/cookbook/examples/layouts-stacking.c | 10 +++---- doc/cookbook/examples/script-signals.c | 13 +++++---- doc/cookbook/examples/script-ui.c | 11 ++++---- doc/cookbook/examples/text-shadow.c | 14 +++++----- doc/cookbook/examples/textures-crossfade-cogl.c | 29 ++++++++++++++------ .../examples/textures-crossfade-slideshow.c | 29 +++++++++++--------- doc/cookbook/examples/textures-crossfade.c | 18 ++++++------ doc/cookbook/examples/textures-reflection.c | 14 +++++----- 16 files changed, 107 insertions(+), 83 deletions(-) commit 63721c5db1bc1c4a53ee2af536ffbd19b015fdb9 Author: Elliot Smith Date: Fri Nov 12 09:54:12 2010 +0000 cookbook: Fix opacity examples in recipe The recipe had examples where opacity was set using fractional numbers. Fixed all examples to use integers only. doc/cookbook/actors.xml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) commit f135f2e7d5b7c5304ae4ba91a26f4dc0d5b0c757 Author: Elliot Smith Date: Fri Nov 12 09:49:07 2010 +0000 cookbook: Fix incorrect value for opacity Opacity is a guint, so don't use floating point numbers to set its value. doc/cookbook/examples/events-pointer-motion-stacked.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 03a713e18e842d29a73f9cefb38e689ceefb35ed Author: Lucas Rocha Date: Thu Nov 11 22:23:09 2010 +0000 click-action: don't use pointer grabs The same behavior can be achieved by capturing events on stage while button is pressed. This fixes a problem when using click and drag actions on the same actor as there no grabs involved. http://bugzilla.clutter-project.org/show_bug.cgi?id=2409 clutter/clutter-click-action.c | 85 +++++++++++++++++++++++++++++++--------- 1 file changed, 67 insertions(+), 18 deletions(-) commit dfdd5914142d6c6fd36b52c186d8bfa92c704168 Merge: 47a6cd9 6ed6b2a Author: Emmanuele Bassi Date: Thu Nov 11 17:53:42 2010 +0000 Merge branch 'wip/static-colors' * wip/static-colors: Move tests to static colors where possible color: Add named, global colors commit 47a6cd95e76ef75a6c117424056c5359c5479283 Author: Emmanuele Bassi Date: Thu Nov 11 14:05:36 2010 +0000 Add cogl-2.0 reference in the ignore file .gitignore | 13 +++++++++++++ 1 file changed, 13 insertions(+) commit 1bcf15e1b82a7f2842aa210f73dba5706d404484 Author: Neil Roberts Date: Thu Nov 11 16:24:54 2010 +0000 cogl-texture: Remove the gl_handle from CoglTextureSliceCallback There's no longer any need to use the GL handle in the callback for _cogl_texture_foreach_sub_texture_in_region because it can now work in terms of primitive cogl textures so it has now been removed. This would be helpful if we ever want to make the foreach function public so that apps could implement their own primitives using sliced textures. clutter/cogl/cogl/cogl-primitives.c | 2 -- clutter/cogl/cogl/cogl-sub-texture.c | 4 +--- clutter/cogl/cogl/cogl-texture-2d-sliced.c | 4 ---- clutter/cogl/cogl/cogl-texture-2d.c | 2 -- clutter/cogl/cogl/cogl-texture-3d.c | 2 -- clutter/cogl/cogl/cogl-texture-private.h | 2 -- clutter/cogl/cogl/cogl-texture-rectangle.c | 2 -- 7 files changed, 1 insertion(+), 17 deletions(-) commit 49898d43ddc7905a612dad0954d472fb00e8a9c1 Author: Neil Roberts Date: Thu Nov 11 16:18:25 2010 +0000 cogl-pipeline: Use layer overrides as CoglHandles instead of GLuint Since d5634e37 the sliced texture backend now works in terms of CoglTexture2Ds so there's no need to have special casing for overriding the texture of a pipeline layer with a GL handle. Instead we can just use cogl_pipeline_set_layer_texture with the CoglHandle. The special _cogl_pipeline_set_layer_gl_texture_slice function has now been removed and parts of the code for comparing materials have been simplified. clutter/cogl/cogl/cogl-journal-private.h | 2 +- clutter/cogl/cogl/cogl-journal.c | 2 +- clutter/cogl/cogl/cogl-pipeline-opengl.c | 35 +++------- clutter/cogl/cogl/cogl-pipeline-private.h | 7 +- clutter/cogl/cogl/cogl-pipeline.c | 105 ++++------------------------- clutter/cogl/cogl/cogl-primitives.c | 15 ++++- 6 files changed, 38 insertions(+), 128 deletions(-) commit 1447ceb0deb081c85342fc3e74db3b278833cf76 Author: Neil Roberts Date: Thu Nov 11 15:42:12 2010 +0000 CoglTexture2DSliced: Pass slice tex to callback in foreach_sub_texture The cogl_texture_foreach_sub_texture_in_region virtual for the sliced texture backend was previously passing the CoglHandle of the sliced texture to the callback. Since d5634e37 the slice texture backend now works in terms of 2D textures so it's possible to pass the underlying slice texture as a handle too. This makes all of the foreach callbacks consistent in that they pass a CoglHandle of the primitive texture type that matches the GL handle. clutter/cogl/cogl/cogl-texture-2d-sliced.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 21c74030119e5f3a6414d3ce161178799af4cdc4 Author: Robert Bragg Date: Thu Nov 4 00:43:48 2010 +0000 docs: Adds an initial cogl-2.0 reference manual So we can keep track of the experimental progress of Cogl 2.0 features this adds a standalone Cogl 2.0 Reference Manual which doesn't cover the deprecated 1.x symbols and removes the need for a "Cogl experimental API" chapter since those sections now make up the main table of contents. configure.ac | 2 + doc/reference/Makefile.am | 2 +- doc/reference/cogl-2.0/Makefile.am | 142 ++++++ doc/reference/cogl-2.0/blend-strings.xml | 129 ++++++ doc/reference/cogl-2.0/cogl-docs.xml.in | 188 ++++++++ doc/reference/cogl-2.0/cogl-sections.txt | 480 +++++++++++++++++++++ doc/reference/cogl-2.0/cogl_ortho.png | Bin 0 -> 12650 bytes doc/reference/cogl-2.0/fill-rule-even-odd.png | Bin 0 -> 3121 bytes doc/reference/cogl-2.0/fill-rule-non-zero.png | Bin 0 -> 3143 bytes doc/reference/cogl-2.0/quad-indices-order.png | Bin 0 -> 2620 bytes doc/reference/cogl-2.0/quad-indices-triangles.png | Bin 0 -> 8018 bytes 11 files changed, 942 insertions(+), 1 deletion(-) commit fb9d3a835071f94f06ae54945bd8059f9c34df5c Author: Robert Bragg Date: Thu Nov 4 00:27:47 2010 +0000 path 2.0: update path API for experimental 2.0 API When COGL_ENABLE_EXPERIMENTAL_2_0_API is defined cogl.h will now include cogl2-path.h which changes cogl_path_new() so it can directly return a CoglPath pointer; it no longer exposes a prototype for cogl_{get,set}_path and all the remaining cogl_path_ functions now take an explicit path as their first argument. The idea is that we want to encourage developers to retain path objects for as long as possible so they can take advantage of us uploading the path geometry to the GPU. Currently although it is possible to start a new path and query the current path, it is not convenient. The other thing is that we want to get Cogl to the point where nothing depends on a global, current context variable. This will allow us to one day define a sensible threading model if/when that is ever desired. clutter/cogl/cogl/Makefile.am | 15 +- clutter/cogl/cogl/cogl-clip-state.c | 8 +- clutter/cogl/cogl/cogl-context.c | 4 +- clutter/cogl/cogl/cogl-context.h | 2 +- clutter/cogl/cogl/cogl-path-private.h | 14 +- clutter/cogl/cogl/cogl-path.c | 1363 ++---------------------- clutter/cogl/cogl/cogl-path.h | 2 + clutter/cogl/cogl/cogl.h | 6 + clutter/cogl/cogl/cogl2-path.c | 1466 ++++++++++++++++++++++++++ clutter/cogl/cogl/cogl2-path.h | 506 +++++++++ clutter/cogl/pango/cogl-pango-display-list.c | 7 +- tests/interactive/test-cogl-primitives.c | 1 + 12 files changed, 2086 insertions(+), 1308 deletions(-) commit 8efb48ecf4c322bd870f97dc88968b19807c2493 Author: Robert Bragg Date: Thu Nov 4 14:22:24 2010 +0000 config.h: define COGL_ENABLE_EXPERIMENTAL_2_0_API By defining COGL_ENABLE_EXPERIMENTAL_2_0_API in config.h we can ensure that all internal clutter and cogl code can use the Cogl 2.0 API and by not using AM_CPPFLAGS we avoid having other tools such as glib-mkenums and the gir-scanner from inadvertently using the define also. configure.ac | 8 ++++++++ 1 file changed, 8 insertions(+) commit b993195dc8f6e274a565d357de603bb1c9351596 Author: Robert Bragg Date: Wed Nov 3 20:26:20 2010 +0000 cogl: Adds COGL_ENABLE_EXPERIMENTAL_2_0_API define For now this new define is simply an alias for COGL_ENABLE_EXPERIMENTAL_API but the intention is that we will also use it to start experimenting with changes that need to break the existing Cogl API in incompatible ways. clutter/cogl/cogl/cogl.h | 4 ++++ 1 file changed, 4 insertions(+) commit 6ed6b2a54b5c8f44496399057ad5e58771bfc620 Author: Emmanuele Bassi Date: Mon Oct 11 17:45:30 2010 +0100 Move tests to static colors where possible tests/interactive/test-actors.c | 11 ++++++----- tests/interactive/test-behave.c | 18 ++++++------------ tests/interactive/test-binding-pool.c | 9 +++------ tests/interactive/test-box-layout.c | 8 ++++---- tests/interactive/test-depth.c | 26 ++++++++++++-------------- tests/interactive/test-drag.c | 11 ++++------- tests/interactive/test-layout.c | 4 ---- tests/interactive/test-multistage.c | 11 +++-------- tests/interactive/test-rotate.c | 13 +++++-------- tests/interactive/test-stage-sizing.c | 13 ++++--------- tests/interactive/test-threads.c | 14 +++++++------- 11 files changed, 54 insertions(+), 84 deletions(-) commit 985518c601c1a6e0d108d55fb0465a776ccae584 Author: Emmanuele Bassi Date: Tue Apr 6 10:54:20 2010 +0100 color: Add named, global colors Since EGA colors are apparently all the rage in other toolkits, Clutter should not be left out. On top of the usual CGA/EGA palette the static colors also include the Tango Icon palette, which at least is more pleasant to the eye. Static colors are accessed through an enumeration by using clutter_color_get_static(), or using the short-hand pre-processor macros. http://bugzilla.clutter-project.org/show_bug.cgi?id=2066 clutter/Makefile.am | 1 + clutter/clutter-color-static.h | 77 ++++++++++++++++++++ clutter/clutter-color.c | 77 ++++++++++++++++++++ clutter/clutter-color.h | 107 ++++++++++++++++++++++++++++ clutter/clutter.h | 1 + doc/reference/clutter/Makefile.am | 1 + doc/reference/clutter/clutter-sections.txt | 2 + 7 files changed, 266 insertions(+) commit 6735f80b4b43b4c63dd0e3b982a5032509596a5d Author: Emmanuele Bassi Date: Thu Nov 11 12:03:24 2010 +0000 build: Sanitize the hack for ACLOCAL_FLAGS Move the ACLOCAL_FLAGS hack we have to use with jhbuild and autoreconf inside the ACLOCAL_AMFLAGS declaration in Makefile.am, and leave autogen.sh alone. Makefile.am | 5 ++++- autogen.sh | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) commit 6c53c9c84985aa8e83de1cf00e3feb9205e9f779 Author: Emmanuele Bassi Date: Wed Nov 10 16:37:44 2010 +0000 build: Hack build/autotools into autoreconf Since we require a version of gettext that might not match the version installed we need to hack the order of includes for autoreconf. This hack should go away, and we should just use the installed copy of gettext. autogen.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5f30835eae218c8e80153101018c53862c03c353 Author: Robert Bragg Date: Fri Jul 23 17:46:41 2010 +0100 cogl-shader: Prepend boilerplate for portable shaders We now prepend a set of defines to any given GLSL shader so that we can define builtin uniforms/attributes within the "cogl" namespace that we can use to provide compatibility across a range of the earlier versions of GLSL. This updates test-cogl-shader-glsl.c and test-shader.c so they no longer needs to special case GLES vs GL when splicing together its shaders as well as the blur, colorize and desaturate effects. To get a feel for the new, portable uniform/attribute names here are the defines for OpenGL vertex shaders: #define cogl_position_in gl_Vertex #define cogl_color_in gl_Color #define cogl_tex_coord_in gl_MultiTexCoord0 #define cogl_tex_coord0_in gl_MultiTexCoord0 #define cogl_tex_coord1_in gl_MultiTexCoord1 #define cogl_tex_coord2_in gl_MultiTexCoord2 #define cogl_tex_coord3_in gl_MultiTexCoord3 #define cogl_tex_coord4_in gl_MultiTexCoord4 #define cogl_tex_coord5_in gl_MultiTexCoord5 #define cogl_tex_coord6_in gl_MultiTexCoord6 #define cogl_tex_coord7_in gl_MultiTexCoord7 #define cogl_normal_in gl_Normal #define cogl_position_out gl_Position #define cogl_point_size_out gl_PointSize #define cogl_color_out gl_FrontColor #define cogl_tex_coord_out gl_TexCoord #define cogl_modelview_matrix gl_ModelViewMatrix #define cogl_modelview_projection_matrix gl_ModelViewProjectionMatrix #define cogl_projection_matrix gl_ProjectionMatrix #define cogl_texture_matrix gl_TextureMatrix And for fragment shaders we have: #define cogl_color_in gl_Color #define cogl_tex_coord_in gl_TexCoord #define cogl_color_out gl_FragColor #define cogl_depth_out gl_FragDepth #define cogl_front_facing gl_FrontFacing clutter/clutter-blur-effect.c | 7 +- clutter/clutter-colorize-effect.c | 5 +- clutter/clutter-desaturate-effect.c | 5 +- clutter/cogl/cogl/cogl-context.c | 2 +- clutter/cogl/cogl/cogl-path.c | 4 +- clutter/cogl/cogl/cogl-pipeline-arbfp.c | 3 +- clutter/cogl/cogl/cogl-pipeline-fixed.c | 3 +- clutter/cogl/cogl/cogl-pipeline-glsl.c | 44 ++++- clutter/cogl/cogl/cogl-pipeline-opengl-private.h | 3 +- clutter/cogl/cogl/cogl-pipeline-opengl.c | 6 +- clutter/cogl/cogl/cogl-pipeline-private.h | 3 +- clutter/cogl/cogl/cogl-shader-boilerplate.h | 107 ++++++++++ clutter/cogl/cogl/cogl-shader-private.h | 5 + clutter/cogl/cogl/cogl-shader.c | 206 +++++++++++++++----- clutter/cogl/cogl/cogl-vertex-attribute.c | 4 +- clutter/cogl/cogl/cogl-vertex-buffer.c | 86 +++++++- clutter/cogl/cogl/cogl.c | 16 +- .../driver/gles/cogl-fixed-fragment-shader.glsl | 24 +-- .../cogl/driver/gles/cogl-fixed-vertex-shader.glsl | 40 ++-- clutter/cogl/cogl/driver/gles/cogl-gles2-wrapper.c | 62 +++--- tests/interactive/test-cogl-shader-glsl.c | 38 +--- tests/interactive/test-shader.c | 34 +--- 22 files changed, 517 insertions(+), 190 deletions(-) commit a4b984186ccd81879822ab7fad1af8b545b28e35 Author: Robert Bragg Date: Tue Nov 9 15:56:03 2010 +0000 tests: test-cogl-shader-arbfp wasn't compiling shader test-cogl-shader-arbfp was never calling cogl_shader_compile so it was a fluke that it used to run before. tests/interactive/test-cogl-shader-arbfp.c | 1 + 1 file changed, 1 insertion(+) commit fd43786170937ff66eddadf9736124b33684405f Author: Emmanuele Bassi Date: Wed Nov 10 13:59:09 2010 +0000 build: Honour ACLOCAL_FLAGS with autoreconf autogen.sh | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) commit 373140c830859f279c96d2605b6c4187a1fa7541 Author: Tomeu Vizoso Date: Wed Oct 27 19:02:47 2010 +0200 Discard the current pick buffer... if we are asked to pick with a different mode. http://bugzilla.clutter-project.org/show_bug.cgi?id=2385 clutter/clutter-main.c | 8 +++++--- clutter/clutter-stage-private.h | 8 +++++--- clutter/clutter-stage.c | 17 ++++++++++++----- tests/conform/test-pick.c | 9 +++++++++ 4 files changed, 31 insertions(+), 11 deletions(-) commit b4588b57dff691492d2d9fdd87c293ff95a278aa Author: Emmanuele Bassi Date: Mon Nov 8 16:15:23 2010 +0000 reference: Add a Wayland section doc/reference/clutter/Makefile.am | 1 + doc/reference/clutter/clutter-docs.xml.in | 1 + doc/reference/clutter/clutter-sections.txt | 6 ++++++ 3 files changed, 8 insertions(+) commit b783d77e6a730470656a9122755d10b50ac76e23 Author: Emmanuele Bassi Date: Mon Nov 8 16:03:44 2010 +0000 gtk-doc: Add PathConstraint to the Clutter API reference doc/reference/clutter/clutter-docs.xml.in | 9 +++++---- doc/reference/clutter/clutter.types | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) commit 4909ecc71e1c7ac2b2aab6bb5a7c874f9d5b4697 Author: Emmanuele Bassi Date: Mon Nov 8 16:01:19 2010 +0000 gtk-doc: Fixes for the API references clutter/clutter-cairo-texture.c | 2 +- clutter/clutter-cairo-texture.h | 2 ++ clutter/cogl/cogl/cogl-vertex-attribute.h | 2 +- doc/reference/clutter/Makefile.am | 7 +++++++ doc/reference/clutter/clutter-sections.txt | 1 + 5 files changed, 12 insertions(+), 2 deletions(-) commit 993d3b3fe196903d020f954f2ccce51458b3dd3a Author: Emmanuele Bassi Date: Mon Nov 8 15:52:17 2010 +0000 timeout-pool: Deprecate the structure too Don't leave it lying around, since nothing can use it anyway. clutter/clutter-timeout-pool.c | 4 +++- clutter/clutter-timeout-pool.h | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) commit 26a70707ab2286e188d9ccb63084acdd5cbeebc5 Author: Emmanuele Bassi Date: Sun Nov 7 21:35:40 2010 +0000 path-constraint: Add a ::node-reached signal Emit a signal whenever a node in the path has been reached. clutter/clutter-marshal.list | 1 + clutter/clutter-path-constraint.c | 43 ++++++++++++++++++ tests/interactive/test-path-constraint.c | 71 +++++++++++++++++++++++++++++- 3 files changed, 114 insertions(+), 1 deletion(-) commit ef7f729c6881950623cbbd8b82b68b3a15e26318 Author: Emmanuele Bassi Date: Sun Nov 7 15:27:17 2010 +0000 build: Re-instate profile builds The profiling support was broken - probably during the restructuring of the build environment, but I'm too lazy to bisect that. The fix is trivial, and everything works as it should. clutter/Makefile.am | 2 ++ configure.ac | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) commit 38912ee4d9d7c74aa78a9dffcfc9e687232d8302 Author: Emmanuele Bassi Date: Sat Nov 6 20:00:39 2010 +0000 Deprecate ClutterFrameSource The FrameSource API hasn't been used internally since 1.0; since it's not part of the paint clock, it is of limited use. clutter/clutter-frame-source.c | 89 ++++++++++++++++++++++++++++++++++ clutter/clutter-frame-source.h | 4 ++ clutter/clutter-main.c | 103 ++++------------------------------------ clutter/clutter-main.h | 3 ++ clutter/clutter-private.h | 11 +++++ 5 files changed, 115 insertions(+), 95 deletions(-) commit 9ac2f5cba567114fd61446b9fa8991a663483fd5 Author: Emmanuele Bassi Date: Sat Nov 6 19:59:58 2010 +0000 Deprecate ClutterTimeoutPool Timelines have stopped using the pool since 1.0; there is no real reason to expose it as part of the active API. clutter/clutter-timeout-pool.c | 6 ++++++ clutter/clutter-timeout-pool.h | 6 ++++++ 2 files changed, 12 insertions(+) commit a432d9973dc40658632eeb4060090b7c68aacf50 Author: Emmanuele Bassi Date: Sat Nov 6 18:12:41 2010 +0000 Remove a compiler warning clutter/cogl/cogl/cogl-vertex-attribute.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 6ec9c3247c5267c6c4a93e20d55d16415e4c1c9d Author: Maxim Ermilov Date: Fri Nov 5 20:20:14 2010 +0300 CoglContext: correct initialization order http://bugzilla.clutter-project.org/show_bug.cgi?id=2401 clutter/cogl/cogl/cogl-context.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit ee59c83e176f78fa9ff95eaebbeb66e807b9ac0c Author: Piotr Drąg Date: Tue Nov 2 12:22:55 2010 +0000 po: Update the Polish translation po/pl.po | 46 +++++++++++++--------------------------------- 1 file changed, 13 insertions(+), 33 deletions(-) commit 57633520d48eca5539381e3507847008470f27ed Author: Neil Roberts Date: Fri Nov 5 18:33:37 2010 +0000 Make test-cogl-npot-texture a bit more extensive The size of the texture used for test-cogl-npot-texture was only using 1 pixel of waste and the texture was scaled down so it would be quite likely that the test would still pass if only the top left slice was rendered. It also didn't test using non-default texture coordinates. These problems made it fail to pick up bug 2398. The texture is now using the maximum amount of waste and rendered in four parts at 1:1 scale. tests/conform/test-cogl-npot-texture.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) commit cc63c7dd8ffcb5076e072d46b264cd7668e3d48f Author: Neil Roberts Date: Fri Nov 5 14:38:19 2010 +0000 cogl-texture-2d-sliced: Fix the foreach callback for waste textures When converting the virtual coordinates of the underlying texture for a slice to virtual coordinates for the whole texture it was using the size and offset of the intersection as the size of the child texture. This would be incorrect if the texture contains waste or the texture coordinates are not the default. Instead the sliced foreach function now passes the CoglSpan to the callback instead of the intersection. http://bugzilla.clutter-project.org/show_bug.cgi?id=2398 clutter/cogl/cogl/cogl-texture-2d-sliced.c | 56 +++++++++++++--------------- 1 file changed, 26 insertions(+), 30 deletions(-) commit 8112bfc49fbdf4aa64ab06e0c2971cd3566ac08c Author: Neil Roberts Date: Fri Nov 5 14:55:46 2010 +0000 Replace the disable-npots tool with a COGL_DEBUG option Previously in the tests/tools directory we build a disable-npots library which was used as an LD_PRELOAD to trick Cogl in to thinking there is no NPOT texture extension. This is a little awkward to use so it seems much simpler to just define a COGL_DEBUG option to disable npot textures. clutter/cogl/cogl/cogl-debug-options.h | 6 ++ clutter/cogl/cogl/cogl-debug.c | 3 +- clutter/cogl/cogl/cogl-debug.h | 3 +- clutter/cogl/cogl/cogl.c | 6 ++ configure.ac | 5 - tests/Makefile.am | 4 +- tests/conform/Makefile.am | 2 +- tests/tools/Makefile.am | 43 --------- tests/tools/README | 2 - tests/tools/disable-npots.c | 156 -------------------------------- tests/tools/disable-npots.sh.in | 15 --- 11 files changed, 19 insertions(+), 226 deletions(-) commit 632412c9c8e2d62797c4333259e3c8a645479c61 Author: Robert Bragg Date: Tue Nov 2 12:20:32 2010 +0000 actor: Check "paint" handlers in _get_paint_volume Instead of waiting until clutter_actor_paint to check if there are any handlers connected to the "paint" signal, we now do the check whenever the paint-volume is requested in _actor_get_paint_volume_mutable(). Previously we checked in clutter_actor_paint(), but at that time we may already be using a stage clip that could be derived from an invalid paint-volume. We used to try and handle that by queuing a follow up, unclipped, redraw but anyway there was an additional problem with the previous approach because the checking wasn't enough to always catch invalid volumes involved in culling (considering that containers may derive their volume from children that haven't yet been painted) By moving the check to _get_paint_volume time not only do we now correctly check children in cases where a container derives its volume from its children's volumes but we no longer need to queue follow up redraws to cover up artefacts. Since we now never queue follow up redraws, this in turn means we should no longer clobber redraws queued with an explicit clip which was something affecting gnome-shell since it connects a handler to the paint signal of the stage. http://bugzilla.clutter-project.org/show_bug.cgi?id=2388 clutter/clutter-actor.c | 78 ++++++++++++++++++++++------------------------- 1 file changed, 37 insertions(+), 41 deletions(-) commit b9dbeac2c3ac8ded52118270914328fd57eeee6e Author: Damien Lespiau Date: Thu Oct 14 16:37:25 2010 +0100 gitignore: Update the path of generated GLES2 shaders The generation is not happening in the main Cogl directory, Update the .gitignore file accordingly. .gitignore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 844b5781283560bb99e827c0cbc1d212f21be628 Author: Robert Bragg Date: Mon Nov 1 22:07:11 2010 +0000 matrix-stack: use GArray instead of GSList for stack In some micro-benchmarks testing journal throughput the list manipulation jumps pretty high in the profile. This replaces the GSList usage with a GArray instead which is effectively a grow only allocation that means we avoid ongoing allocations while manipulating the stack mid-scene. clutter/cogl/cogl/cogl-matrix-stack.c | 55 ++++++++++----------------------- 1 file changed, 17 insertions(+), 38 deletions(-) commit a6000533dca20639ec94bd2b0afe8de71382dc65 Author: Robert Bragg Date: Mon Nov 1 20:33:20 2010 +0000 pipeline: Avoid costly checking of lighting properties During _cogl_pipeline_needs_blending_enabled we were always checking the current lighting properties (ambient,diffuse,specular,emission) which had a notable impact during micro-benchmarks that exercise journal throughput of simple colored rectangles. This #if 0's the offending code considering that Cogl doesn't actually support lighting currently and when it actually does then we will be able to optimize this by avoiding the checks when lighting is disabled. clutter/cogl/cogl/cogl-pipeline.c | 42 +++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 18 deletions(-) commit eaee5dd604e94fd5b63e25be47b6300c12646aa6 Author: Robert Bragg Date: Mon Nov 1 20:27:32 2010 +0000 cogl: add separate material for blended source_colors When using cogl_set_source_color4ub there is a notable difference between colors that require blending and those that dont. When trying to modify the color of pipeline referenced by the journal we don't force a flush of the journal unless the color change will also change the blending state. By using two separate pipeline objects for handing opaque or transparent colors we can avoid ever flushing the journal when repeatedly using cogl_set_source_color and jumping between opaque and transparent colors. clutter/cogl/cogl/cogl-context.c | 13 ++++++++----- clutter/cogl/cogl/cogl-context.h | 5 +++-- clutter/cogl/cogl/cogl.c | 19 ++++++++++++++----- 3 files changed, 25 insertions(+), 12 deletions(-) commit d05ce7cd26253b94fb990b63e46b822febb616ab Author: Robert Bragg Date: Mon Nov 1 18:55:48 2010 +0000 texture_quad_multiple_primitives: rework wrap mode overrides This reworks _cogl_texture_quad_multiple_primitives so instead of using the CoglPipelineWrapModeOverrides mechanism to force the clamp to edge repeat mode we now derive an override pipeline using cogl_pipeline_copy instead. This avoids a relatively large, unconditional, memset. clutter/cogl/cogl/cogl-primitives.c | 84 +++++++++++++++++++++++------------ 1 file changed, 55 insertions(+), 29 deletions(-) commit 7bbe207b65f1684278470f95681e46d34a56fc18 Author: Robert Bragg Date: Mon Nov 1 18:33:17 2010 +0000 _multitexture_quad_single_primitive: avoid wrap overrides This avoids using the wrap mode overrides mechanism to implement _cogl_multitexture_quad_single_primitive which requires memsetting a fairly large array. This updates it to use cogl_pipeline_foreach_layer() and we now derive an override_material to handle changes to the wrap modes instead of using the CoglPipelineWrapModeOverrides. clutter/cogl/cogl/cogl-primitives.c | 265 ++++++++++++++++++++--------------- 1 file changed, 151 insertions(+), 114 deletions(-) commit e73b67e59bac1ac9a8b03bd776cf309151d9a1b0 Author: Neil Roberts Date: Wed Nov 3 16:02:27 2010 +0000 cogl-path: Don't bother filling the path if less than 3 nodes Previously there was a check to avoid filling the path if there are zero nodes. However the tesselator also won't generate any triangles if there are less than 3 nodes so we might as well bail out in that case too. If we don't emit any triangles then we would end up trying to create an empty VBO. Although I don't think this should necessarily be a problem, this seems to cause Mesa to segfault in version 7.8.1 when calling glBufferSubData (although not in master). test-cogl-primitives tries to fill a path with only two points so it's convenient to be able to avoid the crash in this case. clutter/cogl/cogl/cogl-path.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 25b48585d3cabac8040aa4cccd579a1952a93f6d Author: Neil Roberts Date: Tue Nov 2 17:35:17 2010 +0000 cogl-journal: Log the clip state in the journal When adding a new entry to the journal a reference is now taken on the current clip stack. Modifying the current clip state no longer causes a journal flush. The journal flushing code now has an extra stage to compare the clip state of each entry. The comparison can simply be done by comparing the pointers. Although different clip states will still end up with multiple draw calls this at leasts allows a scene comprising of multiple different clips to be upload with one vbo. It also lays the groundwork to do certain tricks when drawing clipped rectangles such as modifying the geometry instead of setting a clip state. clutter/cogl/cogl/cogl-clip-state.c | 24 ------- clutter/cogl/cogl/cogl-journal-private.h | 2 + clutter/cogl/cogl/cogl-journal.c | 106 +++++++++++++++++++++++------- 3 files changed, 83 insertions(+), 49 deletions(-) commit 4d5dc42dadac20da08e99340de9e828a805578ab Author: Neil Roberts Date: Tue Nov 2 17:34:51 2010 +0000 cogl-framebuffer: Add a flag to skip flushing the clip state This adds a flag to avoid flushing the clip state when flushing the framebuffer state. This will be used by the journal to manage its own clip state flushing. clutter/cogl/cogl/cogl-framebuffer-private.h | 3 +++ clutter/cogl/cogl/cogl-framebuffer.c | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) commit c5d909d0631dfeea5cd7f6beff900ed21762bf9d Author: Neil Roberts Date: Tue Nov 2 17:15:06 2010 +0000 cogl: Don't flush the journal when flushing clip state Flushing the clip state no longer does anything that would cause the journal to flush. The clip state is only flushed when flushing the framebuffer state and in all cases this ends up flushing the journal in one way or another anyway. Avoiding flushing the journal will make it easier to log the clip state in the journal. Previously when trying to set up a rectangle clip that can't be scissored or when using a path clip the code would use cogl_rectangle as part of the process to fill the stencil buffer. This is now changed to use a new internal _cogl_rectangle_immediate function which directly uses the vertex array API to draw a triangle strip without affecting the journal. This should be just as efficient as the previous journalled code because these places would end up flushing the journal immediately before and after submitting the single rectangle anyway and flushing the journal always creates a new vbo so it would effectively do the same thing. Similarly there is also a new internal _cogl_clear function that does not flush the journal. clutter/cogl/cogl/Makefile.am | 2 + clutter/cogl/cogl/cogl-clip-stack.c | 47 ++++++++--------- clutter/cogl/cogl/cogl-clip-state.c | 5 ++ clutter/cogl/cogl/cogl-path.c | 76 +++++++++++++-------------- clutter/cogl/cogl/cogl-primitives-private.h | 43 +++++++++++++++ clutter/cogl/cogl/cogl-primitives.c | 40 ++++++++++++++ clutter/cogl/cogl/cogl-private.h | 34 ++++++++++++ clutter/cogl/cogl/cogl.c | 30 +++++++---- 8 files changed, 203 insertions(+), 74 deletions(-) commit a39b292d90c7511d0e7ab7ff484c9b75edc2880f Author: Neil Roberts Date: Wed Nov 3 15:48:56 2010 +0000 cogl-path: Use the vertex array API instead of CoglVertexBuffer The new vertex array is now implemented in terms of the CoglVertexBuffer anyway so it should be slightly faster to use a vertex array directly. clutter/cogl/cogl/cogl-path-private.h | 26 ++++++----- clutter/cogl/cogl/cogl-path.c | 81 +++++++++++++++++++-------------- 2 files changed, 60 insertions(+), 47 deletions(-) commit 60de7939ee8bf35d5b8b72564dcb342157716cb0 Author: Neil Roberts Date: Tue Nov 2 14:28:12 2010 +0000 cogl: Move the clip stack dirtiness to the context rather than the FB Previously we tracked whether the clip stack needs flushing as part of the CoglClipState which is part of the CoglFramebuffer state. This is a bit odd because most of the clipping state (such as the clip planes and the scissor) are part of the GL context's state rather than the framebuffer. We were marking the clip state on the framebuffer dirty every time we change the framebuffer anyway so it seems to make more sense to have the dirtiness be part of the global context. Instead of a just a single boolean to record whether the state needs flushing, the CoglContext now holds a reference to the clip stack that was flushed. That way we can flush arbitrary stack states and if it happens to be the same as the state already flushed then Cogl will do nothing. This will be useful if we log the clip stack in the journal because then we will need to flush unrelated clip stack states for each batch. clutter/cogl/cogl/cogl-clip-stack.c | 44 +++++++++++++++++++++++++++++----- clutter/cogl/cogl/cogl-clip-stack.h | 6 +++-- clutter/cogl/cogl/cogl-clip-state.c | 40 +++---------------------------- clutter/cogl/cogl/cogl-clip-state.h | 6 ----- clutter/cogl/cogl/cogl-context.c | 5 ++++ clutter/cogl/cogl/cogl-context.h | 22 +++++++++++++++++ clutter/cogl/cogl/cogl-framebuffer.c | 2 +- clutter/cogl/cogl/cogl-path.c | 10 +++----- 8 files changed, 76 insertions(+), 59 deletions(-) commit 57574f399524c2eb46b095aa78b28ea5032a15ad Author: Neil Roberts Date: Mon Nov 1 19:52:45 2010 +0000 cogl-clip-stack: Don't allocate a separate struct for CoglClipStack Instead of having a separate CoglHandle for CoglClipStack the code is now expected to directly hold a pointer to the top entry on the stack. The empty stack is then the NULL pointer. This saves an allocation when we want to copy the stack because we can just take a reference on a stack entry. The idea is that this will make it possible to store the clip stack in the journal without any extra allocations. The _cogl_get_clip_stack and set functions now take a CoglClipStack pointer instead of a handle so it would no longer make sense to make them public. However I think the only reason we would have wanted that in the first place would be to save the clip state between switching FBOs and that is no longer necessary. clutter/cogl/cogl/cogl-clip-stack.c | 193 ++++++++++++++--------------------- clutter/cogl/cogl/cogl-clip-stack.h | 38 +++---- clutter/cogl/cogl/cogl-clip-state.c | 55 ++++------ clutter/cogl/cogl/cogl-clip-state.h | 20 ++-- 4 files changed, 116 insertions(+), 190 deletions(-) commit 314e980a3b40f79f1cb96fa8a8fc53d24eecfa2a Author: Neil Roberts Date: Wed Nov 3 13:34:21 2010 +0000 cogl: Don't flush the framebuffer state for the internal draw CoglVertexAttribute has an internal draw function that is used by the CoglJournal to avoid the call to cogl_journal_flush which would otherwise end up recursively flushing the journal forever. The enable_gl_state function called by this was previously also calling _cogl_flush_framebuffer_state. However the journal code tries to handle this function specially by calling it with a flag to disable flushing the modelview matrix. This is useful because the journal handles flushing the modelview itself. Without this patch the journal state ends up getting flushed twice. This isn't a particularly big problem currently because the matrix stack has caching to recognise when it would push the same state twice and bails out. However if we later want to use the framebuffer flush flags to override a particular state of the framebuffer (such as the clip state) then we need to make sure the flush isn't called twice. clutter/cogl/cogl/cogl-vertex-attribute.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) commit 738a669fc2987474d524e2f0e5d60a3a49832784 Author: Neil Roberts Date: Thu Nov 4 16:01:23 2010 +0000 cogl-buffer: Use void* instead of guint8* for map and set_data Unless the CoglBuffer is being used for texture data then it's relatively unlikely that the data will contain an array of bytes. For example if it's used as a vertex array then it's more likely to be floats or some vertex struct. In that case it's much more convenient if set_data and map use void* pointers so that we can avoid a cast. clutter/cogl/cogl/cogl-buffer-private.h | 8 ++++---- clutter/cogl/cogl/cogl-buffer.c | 12 ++++++------ clutter/cogl/cogl/cogl-buffer.h | 4 ++-- clutter/cogl/cogl/cogl-journal.c | 2 +- clutter/cogl/cogl/cogl-primitive.c | 16 ++++++++-------- clutter/cogl/cogl/cogl-primitives.c | 2 +- 6 files changed, 22 insertions(+), 22 deletions(-) commit a53c9dafb5fcd18ecd868c350441759196d614fc Author: Neil Roberts Date: Thu Nov 4 17:31:59 2010 +0000 Add a conformance test for the CoglPrimitive convenience constructors This adds a simple conformance test which calls all of the convenience constructors for CoglPrimitive. tests/conform/Makefile.am | 1 + tests/conform/test-cogl-primitive.c | 230 +++++++++++++++++++++++++++++++++++ tests/conform/test-conform-main.c | 2 + 3 files changed, 233 insertions(+) commit 390bdd2a275f9b3a242fc11725a92cca2c187797 Author: Neil Roberts Date: Thu Nov 4 17:21:56 2010 +0000 cogl-primitive: Fix the texture attribute offsets The offsets for the texture coordinate attributes in the convenience constructors were all wrong. clutter/cogl/cogl/cogl-primitive.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 17aaaac3362768b1b882c5772b3c6f81afa7ce01 Author: Neil Roberts Date: Thu Nov 4 16:54:20 2010 +0000 cogl-primitive: Fix a typo in new_with_attributes_array A typo in the g_return_val_if_fail was causing it to segfault. clutter/cogl/cogl/cogl-primitive.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b6eaab812be51ceeab023b4556f23e3b9e8a9ec5 Author: Neil Roberts Date: Thu Nov 4 16:42:11 2010 +0000 cogl-primitive: Add the missing cogl_primitive_new_p2 function There was a struct defined for CoglP2Vertex but there was no constructor function to use it. clutter/cogl/cogl/cogl-primitive.c | 27 ++++++++++++++++++++++ clutter/cogl/cogl/cogl-primitive.h | 44 ++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) commit 1935855cdd4476c1f55dcff76706dc56653d33de Author: Neil Roberts Date: Thu Nov 4 16:13:01 2010 +0000 cogl-primitive: Fix the ref-counting for the convenience constuctors The convenience constructors for the builtin vertex structs were creating the primitive and then immediately destroying it and returning the pointer. I think the intention was to unref the attributes instead. This adds an internal wrapper around the new_with_attributes_array constructor which unrefs the attributes instead of the primitive. The convenience constructors now use that. clutter/cogl/cogl/cogl-primitive.c | 89 ++++++++++++++++++++++-------------- 1 file changed, 55 insertions(+), 34 deletions(-) commit 3c35b95a84d410fdd9a9912c7c0d76f6ac05b562 Author: Robert Bragg Date: Thu Nov 4 13:23:23 2010 +0000 primitive: fix prototypes and start adding docs This fixes the prototypes for the cogl_primitive_new_xyz functions and also adds documentation with examples for each one. clutter/cogl/cogl/cogl-primitive.h | 329 +++++++++++++++++++++++++++++++++--- 1 file changed, 307 insertions(+), 22 deletions(-) commit 00397a313c955ba567d003d88dc64fb57d8346fb Author: Neil Roberts Date: Thu Nov 4 14:56:44 2010 +0000 cogl-gles2-wrapper: Fix a reference to the old name for CoglPipeline The GLES2 wrapper was referring to COGL_MATERIAL_PROGRAM_TYPE_GLSL but this has since been renamed to COGL_PIPELINE_PROGRAM_TYPE_GLSL so the GLES2 backend wouldn't compile. clutter/cogl/cogl/driver/gles/cogl-gles2-wrapper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5abdbd5f7a2b0c4884dfb8b9415eb7e6f3f15a3b Author: Robert Bragg Date: Fri Oct 29 15:49:25 2010 +0100 gles2: disable vbos until while we rework backend The gles2 wrapper functions don't understand about the CoglBuffer API so they don't support attributes stored in a CoglVertexArray. Instead of teaching the backend about buffers we are going to wait until we have overhauled the GLES 2 backend. We are currently making progress consolidating the GLES 2 backend with a new GLSL backend for CoglMaterial. This will hugely simplify the GLES 2 support and share code with the OpenGL backend. In the end it's hoped that this problem will simply go away so it doesn't make much sense to solve it with the current design. clutter/cogl/cogl/driver/gles/cogl-gles.c | 5 +++++ 1 file changed, 5 insertions(+) commit 8034dc87d43c7e24324bacf42948fe96d1636176 Author: Robert Bragg Date: Wed Oct 27 18:54:57 2010 +0100 cogl: rename CoglMaterial -> CoglPipeline This applies an API naming change that's been deliberated over for a while now which is to rename CoglMaterial to CoglPipeline. For now the new pipeline API is marked as experimental and public headers continue to talk about materials not pipelines. The CoglMaterial API is now maintained in terms of the cogl_pipeline API internally. Currently this API is targeting Cogl 2.0 so we will have time to integrate it properly with other upcoming Cogl 2.0 work. The basic reasons for the rename are: - That the term "material" implies to many people that they are constrained to fragment processing; perhaps as some kind of high-level texture abstraction. - In Clutter they get exposed by ClutterTexture actors which may be re-inforcing this misconception. - When comparing how other frameworks use the term material, a material sometimes describes a multi-pass fragment processing technique which isn't the case in Cogl. - In code, "CoglPipeline" will hopefully be a much more self documenting summary of what these objects represent; a full GPU pipeline configuration including, for example, vertex processing, fragment processing and blending. - When considering the API documentation story, at some point we need a document introducing developers to how the "GPU pipeline" works so it should become intuitive that CoglPipeline maps back to that description of the GPU pipeline. - This is consistent in terminology and concept to OpenGL 4's new pipeline object which is a container for program objects. Note: The cogl-material.[ch] files have been renamed to cogl-material-compat.[ch] because otherwise git doesn't seem to treat the change as a moving the old cogl-material.c->cogl-pipeline.c and so we loose all our git-blame history. clutter/cogl/cogl/Makefile.am | 24 +- clutter/cogl/cogl/cogl-atlas-texture.c | 14 +- clutter/cogl/cogl/cogl-atlas.c | 2 +- clutter/cogl/cogl/cogl-buffer-private.h | 2 +- clutter/cogl/cogl/cogl-clip-stack.c | 6 +- clutter/cogl/cogl/cogl-context.c | 48 +- clutter/cogl/cogl/cogl-context.h | 28 +- clutter/cogl/cogl/cogl-framebuffer.c | 2 +- clutter/cogl/cogl/cogl-journal-private.h | 8 +- clutter/cogl/cogl/cogl-journal.c | 128 +- clutter/cogl/cogl/cogl-material-arbfp-private.h | 36 - clutter/cogl/cogl/cogl-material-arbfp.c | 1218 ----- clutter/cogl/cogl/cogl-material-compat.c | 495 ++ clutter/cogl/cogl/cogl-material-compat.h | 1396 +++++ clutter/cogl/cogl/cogl-material-fixed-private.h | 36 - clutter/cogl/cogl/cogl-material-fixed.c | 261 - clutter/cogl/cogl/cogl-material-glsl-private.h | 36 - clutter/cogl/cogl/cogl-material-glsl.c | 452 -- clutter/cogl/cogl/cogl-material-opengl-private.h | 155 - clutter/cogl/cogl/cogl-material-opengl.c | 1212 ----- clutter/cogl/cogl/cogl-material-private.h | 957 ---- clutter/cogl/cogl/cogl-material.c | 5743 -------------------- clutter/cogl/cogl/cogl-material.h | 1440 ----- clutter/cogl/cogl/cogl-path.c | 42 +- clutter/cogl/cogl/cogl-pipeline-arbfp-private.h | 36 + clutter/cogl/cogl/cogl-pipeline-arbfp.c | 1218 +++++ clutter/cogl/cogl/cogl-pipeline-fixed-private.h | 36 + clutter/cogl/cogl/cogl-pipeline-fixed.c | 261 + clutter/cogl/cogl/cogl-pipeline-glsl-private.h | 36 + clutter/cogl/cogl/cogl-pipeline-glsl.c | 452 ++ clutter/cogl/cogl/cogl-pipeline-opengl-private.h | 156 + clutter/cogl/cogl/cogl-pipeline-opengl.c | 1212 +++++ clutter/cogl/cogl/cogl-pipeline-private.h | 993 ++++ clutter/cogl/cogl/cogl-pipeline.c | 5725 +++++++++++++++++++ clutter/cogl/cogl/cogl-pipeline.h | 1234 +++++ clutter/cogl/cogl/cogl-primitives.c | 212 +- clutter/cogl/cogl/cogl-texture-2d-private.h | 2 +- clutter/cogl/cogl/cogl-texture-2d-sliced-private.h | 2 +- clutter/cogl/cogl/cogl-texture-2d-sliced.c | 2 +- clutter/cogl/cogl/cogl-texture-2d.c | 2 +- clutter/cogl/cogl/cogl-texture-3d-private.h | 4 +- clutter/cogl/cogl/cogl-texture-3d.c | 4 +- clutter/cogl/cogl/cogl-texture-private.h | 4 +- clutter/cogl/cogl/cogl-texture-rectangle-private.h | 2 +- clutter/cogl/cogl/cogl-texture-rectangle.c | 2 +- clutter/cogl/cogl/cogl-texture.c | 26 +- clutter/cogl/cogl/cogl-types.h | 52 +- clutter/cogl/cogl/cogl-util.c | 2 +- clutter/cogl/cogl/cogl-vertex-attribute.c | 76 +- clutter/cogl/cogl/cogl-vertex-buffer.c | 92 +- clutter/cogl/cogl/cogl.c | 68 +- clutter/cogl/cogl/cogl.h | 9 +- .../cogl/cogl/driver/gl/cogl-texture-driver-gl.c | 4 +- .../cogl/driver/gles/cogl-texture-driver-gles.c | 4 +- clutter/cogl/cogl/winsys/cogl-texture-pixmap-x11.c | 6 +- 55 files changed, 13713 insertions(+), 11962 deletions(-) commit 959af183b171f9ee9bdc2ecf6cec3b37e6703a5f Author: Robert Bragg Date: Wed Oct 27 12:43:36 2010 +0100 pango: Use CoglMaterial type for materials Instead of using the CoglHandle type for material variables this updates the pango code to use CoglMaterial * instead. CoglHandle is the old typename which is being phased out of the API. clutter/cogl/pango/cogl-pango-display-list.c | 6 +++--- clutter/cogl/pango/cogl-pango-display-list.h | 4 ++-- clutter/cogl/pango/cogl-pango-render.c | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) commit 7ee99aaa838e5961c3ce15305679a6ea7a271113 Author: Robert Bragg Date: Wed Oct 27 12:36:24 2010 +0100 pango: push/pop source instead of trashing users source The pango-display-list code was calling cogl_set_source in numerous places and it didn't appear to be saving the users source to restore later. This could result in the user inadvertantly drawing a primitive with one of these internally managed materials instead of one that they chose. To rectify this the code now uses cogl_{push,pop}_source to save and restore the users source. clutter/cogl/pango/cogl-pango-display-list.c | 76 +++++++++++++++----------- 1 file changed, 45 insertions(+), 31 deletions(-) commit 4e69c730857835d0b2971b3fd6b00e285b82a66a Author: Robert Bragg Date: Mon Oct 18 17:17:22 2010 +0100 primitives: implements cogl_polygon on vertex_attributes This updates the implementation of cogl_polygon so it sits on the new CoglVertexArray and CoglVertexAttribute apis. This lets us minimize the number of different drawing paths we have to maintain in Cogl. Since the sliced texture support for cogl_polygon has been broken for a long time now and no one has complained this patch also greatly simplifies the code by not doing any special material validation so cogl_polygon will be restricted in the same way as cogl_draw_vertex_attributes. (i.e. sliced textures not supported). clutter/cogl/cogl/cogl-context.c | 5 + clutter/cogl/cogl/cogl-context.h | 3 +- clutter/cogl/cogl/cogl-primitives.c | 579 ++++++++++------------------------- 3 files changed, 167 insertions(+), 420 deletions(-) commit f9d9b1b1578e05a51bbf087aa2626e11d8e2c185 Author: Robert Bragg Date: Tue Oct 26 19:22:57 2010 +0100 journal: port to the vertex_attributes API Instead of using raw OpenGL in the journal we now use the vertex attributes API instead. This is part of an ongoing effort to reduce the number of drawing paths we maintain in Cogl. clutter/cogl/cogl/cogl-context.c | 4 + clutter/cogl/cogl/cogl-context.h | 1 + clutter/cogl/cogl/cogl-journal.c | 262 ++++++++++++++++++++------------------ 3 files changed, 145 insertions(+), 122 deletions(-) commit f82b32cb3b93001705a2581ff59293e1074de4bb Author: Robert Bragg Date: Tue Oct 26 18:56:57 2010 +0100 vertex-buffer: use cogl_get_rectangle_indices The functionality of cogl_vertex_buffer_indices_get_for_quads is now provided by cogl_get_rectangle_indices so this reworks the former to now work in terms of the latter so we don't have duplicated logic. clutter/cogl/cogl/cogl-context.c | 9 --- clutter/cogl/cogl/cogl-context.h | 6 -- clutter/cogl/cogl/cogl-vertex-buffer.c | 101 ++++++++++++-------------------- 3 files changed, 36 insertions(+), 80 deletions(-) commit 670ea32dbdffea57008b5f5e315a879353cecdee Author: Robert Bragg Date: Tue Oct 12 12:55:23 2010 +0100 vertex-buffer: port to CoglVertexAttributes + CoglPrimitive As part of an ongoing effort to reduce the number of draw paths we have in Cogl this re-works CoglVertexBuffer to use the CoglVertexAttribute and CoglPrimitive APIs instead of using raw GL. clutter/cogl/cogl/cogl-vertex-buffer-private.h | 42 +- clutter/cogl/cogl/cogl-vertex-buffer.c | 1140 ++++++++---------------- 2 files changed, 371 insertions(+), 811 deletions(-) commit 69b1f756d14237c60073f77ee048975a159148cb Author: Robert Bragg Date: Tue Oct 26 18:57:33 2010 +0100 primitive: adds immutable ref/unref mechanism This adds a way to mark that a primitive is in use so that modifications will generate a warning. The plan is to use this mechanism when batching primitives in the journal to warn users that mid-scene modifications of primitives is not allowed. clutter/cogl/cogl/cogl-primitive-private.h | 8 +++ clutter/cogl/cogl/cogl-primitive.c | 77 ++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) commit 2d58d3f1b6b728e3cca6e1bbeabd19fc03de05df Author: Robert Bragg Date: Tue Oct 12 15:48:31 2010 +0100 primitive: Adds convenience constructors This adds convenience primitive constructors named like: cogl_primitive_new_p3 or cogl_primitive_new_p3c4 or cogl_primitive_new_p3t2c4 where the letters correspond to the interleved vertex attributes layouts such as CoglP3Vertex which is a struct with 3 float x,y,z members for the [p]osition, or CoglP3T2C4Vertex which is a struct with 3 float x,y,z members for the [p]osition, 2 float s,t members for the [t]exture coordinates and 4 unsigned byte r,g,b,a members for the [c]olor. The hope is that people will find these convenient enough to replace cogl_polygon. clutter/cogl/cogl/cogl-primitive.c | 246 ++++++++++++++++++++++++++++++++++++ clutter/cogl/cogl/cogl-primitive.h | 66 +++++++--- 2 files changed, 296 insertions(+), 16 deletions(-) commit 0cd077dc7efc5ed3cb982ffa6c7f4f5276867338 Author: Robert Bragg Date: Tue Oct 12 12:54:07 2010 +0100 cogl: Adds experimental CoglPrimitive API A CoglPrimitive is a retainable object for drawing a single primitive, such as a triangle strip, fan or list. CoglPrimitives build on CoglVertexAttributes and CoglIndices which themselves build on CoglVertexArrays and CoglIndexArrays respectively. A CoglPrimitive encapsulates enough information such that it can be retained in a queue (e.g. the Cogl Journal, or renderlists in the future) and drawn at some later time. clutter/cogl/cogl/Makefile.am | 3 + clutter/cogl/cogl/cogl-primitive-private.h | 46 ++++ clutter/cogl/cogl/cogl-primitive.c | 223 ++++++++++++++++++++ clutter/cogl/cogl/cogl-primitive.h | 311 ++++++++++++++++++++++++++++ clutter/cogl/cogl/cogl.h | 1 + 5 files changed, 584 insertions(+) commit dd63078bd3e4fae8fced0a2c8801bee145f9c24b Author: Robert Bragg Date: Tue Oct 12 12:53:10 2010 +0100 cogl: Adds experimental CoglVertexAttribute API A CoglVertexAttribute defines a single attribute contained in a CoglVertexArray. I.e. a CoglVertexArray is simply a buffer of N bytes intended for containing a collection of attributes (position, color, normals etc) and a CoglVertexAttribute defines one such attribute by specifying its start offset in the array, its type, the number of components and the stride etc. clutter/cogl/cogl/Makefile.am | 3 + clutter/cogl/cogl/cogl-vertex-attribute-private.h | 80 ++ clutter/cogl/cogl/cogl-vertex-attribute.c | 882 +++++++++++++++++++++ clutter/cogl/cogl/cogl-vertex-attribute.h | 205 +++++ clutter/cogl/cogl/cogl.h | 1 + 5 files changed, 1171 insertions(+) commit 3d14fbc30881e7068c6724aef4ec3efbb4467186 Author: Robert Bragg Date: Tue Oct 12 12:48:58 2010 +0100 cogl: Adds experimental CoglIndices API CoglIndices define a range of indices inside a CoglIndexArray. I.e. a CoglIndexArray is simply a buffer of N bytes and you can then instantiate multiple CoglIndices collections that define a sub-region of a CoglIndexArray by specifying a start offset and an index data type. clutter/cogl/cogl/Makefile.am | 3 + clutter/cogl/cogl/cogl-context.c | 18 +++ clutter/cogl/cogl/cogl-context.h | 10 ++ clutter/cogl/cogl/cogl-indices-private.h | 57 +++++++ clutter/cogl/cogl/cogl-indices.c | 253 ++++++++++++++++++++++++++++++ clutter/cogl/cogl/cogl-indices.h | 74 +++++++++ clutter/cogl/cogl/cogl.h | 1 + 7 files changed, 416 insertions(+) commit 8ca80e47c40422b69d1e7b70850c7033ec71b1b8 Author: Robert Bragg Date: Tue Oct 12 12:34:27 2010 +0100 cogl: Adds experimental CoglVertexArray type This adds a new CoglVertexArray object which is a subclass of CoglBuffer used to hold vertex attributes. A later commit will add a CoglVertexAttribute API which will be used to describe the attributes inside a CoglVertexArray. clutter/cogl/cogl/Makefile.am | 3 + clutter/cogl/cogl/cogl-vertex-array-private.h | 39 +++++++++++++ clutter/cogl/cogl/cogl-vertex-array.c | 70 ++++++++++++++++++++++ clutter/cogl/cogl/cogl-vertex-array.h | 77 +++++++++++++++++++++++++ clutter/cogl/cogl/cogl.h | 1 + 5 files changed, 190 insertions(+) commit 3aba41e20209d597c6fc49a6163b86eb71a2ff3a Author: Robert Bragg Date: Tue Oct 12 12:36:22 2010 +0100 cogl: Adds experimental CoglIndexArray type A CoglIndexArray is a subclass of CoglBuffer and will be used to hold vertex indices. A later commit will add a CoglIndices API which will allow describing a range of indices inside a CoglIndexArray. clutter/cogl/cogl/Makefile.am | 3 + clutter/cogl/cogl/cogl-index-array-private.h | 39 ++++++++ clutter/cogl/cogl/cogl-index-array.c | 131 ++++++++++++++++++++++++++ clutter/cogl/cogl/cogl-index-array.h | 79 ++++++++++++++++ clutter/cogl/cogl/cogl.h | 1 + 5 files changed, 253 insertions(+) commit eac167df1c6ce300d915249e696cc0dc2d6a8819 Author: Robert Bragg Date: Tue Oct 26 19:08:51 2010 +0100 buffer: adds immutable ref/unref mechanism This adds an internal mechanism to mark that a buffer is in-use so that a warning can be generated if the user attempts to modify the buffer. The plans is for the journal to use this mechanism so that we can warn users about mid-scene modifications of buffers. clutter/cogl/cogl/cogl-buffer-private.h | 8 ++++++ clutter/cogl/cogl/cogl-buffer.c | 42 +++++++++++++++++++++++++++++-- 2 files changed, 48 insertions(+), 2 deletions(-) commit efa11f8a8fd0400b3f6003d9f48292b0629d3698 Author: Robert Bragg Date: Tue Oct 12 13:14:17 2010 +0100 buffer: make _bind() return base pointer We now make _cogl_buffer_bind return a base pointer for the bound buffer which can be used with OpenGL. The pointer will be NULL for GPU based buffers or may point to an malloc'd buffer. Since OpenGL expects an offset instead of a pointer when dealing with buffer objects this means we can handle fallback malloc buffers and GPU buffers in a consistent way. clutter/cogl/cogl/cogl-bitmap.c | 28 ++++++++-------------------- clutter/cogl/cogl/cogl-buffer-private.h | 2 +- clutter/cogl/cogl/cogl-buffer.c | 17 ++++++++++------- 3 files changed, 19 insertions(+), 28 deletions(-) commit 35ddc5407efe0e2877d64e75a5d2e252f9aee8b9 Author: Robert Bragg Date: Tue Oct 26 19:02:04 2010 +0100 material: Bail out faster if re-flushing unchanged material This allows _cogl_material_flush_gl_state to bail out faster if repeatedly asked to flush the same material and we can see the material hasn't changed. Since we can rely on the material age incrementing when any material property changes or any associated layer property changes then we can track the age of the material after flushing so it can be compared with the age of the material if it is subsequently re-flushed. If the age is the same we only have to re-assert the texture object state. clutter/cogl/cogl/cogl-context.h | 1 + clutter/cogl/cogl/cogl-material-opengl.c | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) commit bbf27e6b285afca1261eaa448096667415d81219 Author: Robert Bragg Date: Tue Oct 26 17:43:16 2010 +0100 material-node: track if node owns reference on parent MaterialNodes are used for the sparse graph of material state and layer state. In the case of materials there is the idea of weak materials that don't take a reference on their parent and in that case we need to be careful not to unref our parent during _cogl_material_node_unparent_real. This adds a has_parent_reference member to the CoglMaterialNode struct so we now know when to skip the unref. clutter/cogl/cogl/cogl-material-private.h | 4 ++++ clutter/cogl/cogl/cogl-material.c | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) commit e5202d6a0da1d94f65ddbe381766d775e1047e26 Author: Robert Bragg Date: Tue Oct 26 17:38:58 2010 +0100 cogl-object: correctly free user_data_array in _unref If there is private data associated with a CoglObject then there may be a user_data_array that needs to be freed. The code was mistakenly freeing the array inside the loop that was actually iterating over the user data array notifying the objects destruction instead of waiting until all the data entries had been destroyed. clutter/cogl/cogl/cogl-object.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 0b4b1ca1caad41785dadc7d2bd71af6c7b644ada Author: Owen W. Taylor Date: Sat Oct 30 18:11:03 2010 -0400 Don't leave stale invalidated queued redraws around Once an actor had _clutter_stage_queue_redraw_entry_invalidate() called on it once, then priv->queue_redraw_entry would point to an entry with entry->actor NULL. _clutter_stage_queue_actor_redraw() doesn't handle this case and no further redraws would be queued. To fix this, NULL out priv->queue_redraw_entry() and then make sure we free the invalidated entry in _clutter_stage_maybe_finish_queue_redraws() just as we do for still valid entries. http://bugzilla.clutter-project.org/show_bug.cgi?id=2389 clutter/clutter-actor.c | 5 ++++- clutter/clutter-stage.c | 12 +++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) commit 02a3670e880333536f0fb53b1044317a9f46ee15 Author: Neil Roberts Date: Mon Nov 1 15:21:04 2010 +0000 win32: Fix a couple of build warnings * clutter-backend-win32 had an unused variable * clutter-event-win32 was using the abs function without including stdlib.h clutter/win32/clutter-backend-win32.c | 2 -- clutter/win32/clutter-event-win32.c | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) commit f13f545aa9824ed53ea5a78878c7f96d40239e48 Author: Neil Roberts Date: Mon Nov 1 15:13:12 2010 +0000 clutter-backend-win32: Use g_object_unref on the stage manager Previously when trying to destroy all of the stages in the backend dispose function it would poke directly in the ClutterStageManager struct to get the list. In 8613013ab08 the defintion of ClutterStageManager moved to a different header which isn't included by the Win32 backend so it wouldn't compile. In that commit the X11 backend was changed to unref the stage manager instead of poking in the internals so we should do the same for the win32 backend. clutter/win32/clutter-backend-win32.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) commit 907490d795f4438e631679fce47cae7fc08830d6 Author: Damien Lespiau Date: Sun Oct 31 18:34:23 2010 +0000 clone: Remove checks in set_source_internal() One of the ideas behind _internal() functions is to be able to have a version of the original one without checks (among other things). As these functions are either static or private to the library, we control the arguments given to it, and thus no need for checking them again here. clutter/clutter-clone.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) commit a318fe5ca50feca359abc15238c4ed0da3b41397 Author: Damien Lespiau Date: Sun Oct 31 16:49:40 2010 +0000 texture: Warn when the file loaded from a ClutterScript can't be found Telling the user about files not found when loading a ClutterScript with ClutterTextures in it is very useful and can save a few minutes (or hours) of frustation because it "does not work". clutter/clutter-texture.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 2ee0e40848a1c70c5b9891dea60d0f25d08e2a47 Author: Neil Roberts Date: Fri Oct 15 18:00:29 2010 +0100 Merge cogl-program-{gl,gles}.c into one cogl-program.c This merges the two implementations of CoglProgram for the GLES2 and GL backends into one. The implementation is more like the GLES2 version which would track the uniform values and delay sending them to GL. CoglProgram is now effectively just a GList of CoglShaders along with an array of stored uniform values. CoglProgram never actually creates a GL program, instead this is left up to the GLSL material backend. This is necessary on GLES2 where we may need to relink the user's program with different generated shaders depending on the other emulated fixed function state. It will also be necessary in the future GLSL backends for regular OpenGL. The GLSL and ARBfp material backends are now the ones that create and link the GL program from the list of shaders. The linked program is attached to the private material state so that it can be reused if the CoglProgram is used again with the same material. This does mean the program will get relinked if the shader is used with multiple materials. This will be particularly bad if the legacy cogl_program_use function is used because that effectively always makes one-shot materials. This problem will hopefully be alleviated if we make a hash table with a cache of generated programs. The cogl program would then need to become part of the hash lookup. Each CoglProgram now has an age counter which is incremented every time a shader is added. This is used by the material backends to detect when we need to create a new GL program for the user program. The internal _cogl_use_program function now takes a GL program handle rather than a CoglProgram. It no longer needs any special differences for GLES2. The GLES2 wrapper function now also uses this function to bind its generated shaders. The ARBfp shaders no longer store a copy of the program source but instead just directly create a program object when cogl_shader_source is called. This avoids having to reupload the source if the same shader is used in multiple materials. There are currently a few gross hacks to get the GLES2 backend to work with this. The problem is that the GLSL material backend is now generating a complete GL program but the GLES2 wrapper still needs to add its fixed function emulation shaders if the program doesn't provide either a vertex or fragment shader. There is a new function in the GLES2 wrapper called _cogl_gles2_use_program which replaces the previous cogl_program_use implementation. It extracts the GL shaders from the GL program object and creates a new GL program containing all of the shaders plus its fixed function emulation. This new program is returned to the GLSL material backend so that it can still flush the custom uniforms using it. The user_program is attached to the GLES2 settings struct as before but its stored using a GL program handle rather than a CoglProgram pointer. This hack will go away once the GLSL material backend replaces the GLES2 wrapper by generating the code itself. Under Mesa this currently generates some GL errors when glClear is called in test-cogl-shader-glsl. I think this is due to a bug in Mesa however. When the user program on the material is changed the GLSL backend gets notified and deletes the GL program that it linked from the user shaders. The program will still be bound in GL however. Leaving a deleted shader bound exposes a bug in Mesa's glClear implementation. More details are here: https://bugs.freedesktop.org/show_bug.cgi?id=31194 clutter/cogl/cogl/Makefile.am | 6 +- clutter/cogl/cogl/cogl-internal.h | 4 +- clutter/cogl/cogl/cogl-material-arbfp.c | 36 +- clutter/cogl/cogl/cogl-material-fixed.c | 17 +- clutter/cogl/cogl/cogl-material-glsl.c | 355 +++++++++- clutter/cogl/cogl/cogl-material-opengl.c | 156 ++--- clutter/cogl/cogl/cogl-material-private.h | 2 +- clutter/cogl/cogl/cogl-program-private.h | 78 +++ clutter/cogl/cogl/cogl-program.c | 683 ++++++++++++++++++++ clutter/cogl/cogl/cogl-shader-private.h | 1 - clutter/cogl/cogl/cogl-shader.c | 56 +- .../cogl/driver/gl/cogl-feature-functions-gl.h | 11 + clutter/cogl/cogl/driver/gl/cogl-program-gl.c | 488 -------------- clutter/cogl/cogl/driver/gl/cogl-program-gl.h | 46 -- clutter/cogl/cogl/driver/gles/cogl-gles2-wrapper.c | 194 ++---- clutter/cogl/cogl/driver/gles/cogl-gles2-wrapper.h | 9 +- clutter/cogl/cogl/driver/gles/cogl-program-gles.c | 437 ------------- clutter/cogl/cogl/driver/gles/cogl-program-gles.h | 52 -- 18 files changed, 1307 insertions(+), 1324 deletions(-) commit 65d7a113eeb0de08ccb402fe4ade14fe82fcaff1 Author: Neil Roberts Date: Wed Oct 27 15:07:03 2010 +0100 cogl: Use separate materials for set_source_color and texture Previously cogl_set_source_color and cogl_set_source_texture modified a single global material. If an application then mixes using cogl_set_source_color and texture then the material will constantly need a new ARBfp program because the numbers of layers alternates between 0 and 1. This patch just adds a second global material that is only used for cogl_set_source_texture. I think it would still end up flushing the journal if cogl_set_source_texture is used with multiple different textures but at least it should avoid a recompile unless the texture target also changes. It might be nice to somehow attach a material to the CoglTexture for use with cogl_set_source_texture but it would be difficult to implement this without creating a circular reference. clutter/cogl/cogl/cogl-context.c | 3 +++ clutter/cogl/cogl/cogl-context.h | 3 ++- clutter/cogl/cogl/cogl.c | 11 ++--------- 3 files changed, 7 insertions(+), 10 deletions(-) commit 89cedc78009cee86ffe025cd7c2343d69b199928 Author: Robert Bragg Date: Tue Oct 12 12:53:44 2010 +0100 Move IndicesType and VerticesMode typedefs to cogl-types.h This moves the CoglIndicesType and CoglVerticesMode typedefs from cogl-vertex-buffer.h to cogl-types.h so they can be shared with the anticipated cogl vertex attribute API. clutter/cogl/cogl/cogl-types.h | 48 ++++++++++++++++++++++++++++++++ clutter/cogl/cogl/cogl-vertex-buffer.h | 47 ------------------------------- 2 files changed, 48 insertions(+), 47 deletions(-) commit e3bf83eab527d1dfbd697da1cc13dda2bb8b7d30 Author: Robert Bragg Date: Tue Oct 26 16:05:00 2010 +0100 buffer: BufferBindTarget + BufferUsageHint enum renaming This renames the BufferBindTarget + BufferUsageHint enums to match the anticipated new APIs for "index arrays" and "vertex arrays" as opposed to using the terms "vertices" or "indices". clutter/cogl/cogl/cogl-buffer-private.h | 5 +++-- clutter/cogl/cogl/cogl-buffer.c | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) commit 9efe7ca5bc66d2889c45ac998115d3df04bfebb4 Author: Robert Bragg Date: Mon Oct 18 18:50:02 2010 +0100 buffer: warn if (offset + size) > buffer->size previously we would silently bail out if the given offset + data size would overflow the buffer size. Now we use g_return_val_if_fail so we get a warning if we hit this case. clutter/cogl/cogl/cogl-buffer.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) commit b2963b4eef2aba6b3b62983b1b23ff7abfa221e1 Author: Robert Bragg Date: Tue Oct 12 13:25:05 2010 +0100 pixel-array: Remove some benign variables There were some completely unused static global variables declared in cogl-pixel-array.c which this patch removes. clutter/cogl/cogl/cogl-pixel-array.c | 7 ------- 1 file changed, 7 deletions(-) commit 902c18ad874694b2f3f5fffa67d8f5aa576d79a2 Author: Robert Bragg Date: Tue Oct 12 13:23:44 2010 +0100 pixel-array: Remove flags member and flag macros There are no flags associated with pixel-arrays so we don't need the flags member or flag macros. clutter/cogl/cogl/cogl-pixel-array-private.h | 18 ------------------ clutter/cogl/cogl/cogl-pixel-array.c | 2 -- 2 files changed, 20 deletions(-) commit 1c8b355bbb6f1aa466a8ca0b2a4732135413661b Author: Robert Bragg Date: Tue Oct 26 16:06:46 2010 +0100 buffer: Add a store_created bit field member This adds a store_created bit field to CoglBuffer so we know if the underlying buffer has been allocated yet. Previously the code was trying to do something really wrong by accidentally using the COGL_PIXEL_ARRAY_FLAG_IS_SET macro (note "PIXEL_ARRAY") and what is more odd was the declaration of a CoglPixelArray *pixel_array in cogl-buffer.c which the buffer was being cast too before calling using the macro. Probably this was the fall-out of some previous code re-factoring. clutter/cogl/cogl/cogl-buffer-private.h | 2 ++ clutter/cogl/cogl/cogl-buffer.c | 25 +++++++++++-------------- 2 files changed, 13 insertions(+), 14 deletions(-) commit d5188c26b6dc928639d0779ba4910ad5f4fa7fcc Author: Robert Bragg Date: Tue Oct 12 11:46:29 2010 +0100 buffer: remove flag macros All the macros get used for are to |= (a new flag bit), &= ~(a flag bit) or use the & operator to test if a flag bit is set. I haven't found the code more readable with these macros, but several times now I've felt the need to double check if these macros do anything else behind the hood or I've forgotten what flags are available so I've had to go to the macro definition to see what the full enum names are for the flags (the macros use symbol concatenation) so I can search for the definition of all the flags. It turns out they are defined next to the macro so you don't have to search far, but without the macro that wouldn't have been necessary. The more common use of the _IS_SET macro is actually more concise expanded and imho since it doesn't hide anything in a separate header file the code is more readable without the macro. clutter/cogl/cogl/cogl-bitmap.c | 4 ++-- clutter/cogl/cogl/cogl-buffer-private.h | 9 --------- clutter/cogl/cogl/cogl-buffer.c | 20 ++++++++++---------- 3 files changed, 12 insertions(+), 21 deletions(-) commit bc3a26d03552273ddb61004364a6897057415732 Author: Robert Bragg Date: Tue Oct 12 12:35:47 2010 +0100 material: Adds _cogl_material_get_layer_texture This is a counter part for _cogl_material_layer_get_texture which takes a layer index instead of a direct CoglMaterialLayer pointer. The aim is to phase out code that directly iterates the internal layer pointers of a material since the layer pointers can change if any property of any layer is changed making direct layer pointers very fragile. clutter/cogl/cogl/cogl-material-private.h | 4 ++++ clutter/cogl/cogl/cogl-material.c | 9 +++++++++ 2 files changed, 13 insertions(+) commit 0288ba39110b46a51be7d1efc2de0a5a64e0d1e0 Author: Robert Bragg Date: Mon Oct 18 19:00:50 2010 +0100 material: add internal layer filter getters This adds internal _cogl_material_get_layer_filters and _cogl_material_get_layer_{min,mag}_filter functions which can be used to query the filters associated with a layer using a layer_index, as opposed to a layer pointer. Accessing layer pointers is considered deprecated so we need to provide layer_index based replacements. clutter/cogl/cogl/cogl-material-private.h | 14 +++++++++ clutter/cogl/cogl/cogl-material.c | 45 +++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) commit 6fd26630bae6a30f97e523f4c2e6f21889111930 Author: Robert Bragg Date: Sun Aug 1 23:05:28 2010 +0100 material: Adds missing get_layer_wrap_mode_xyz prototypes This adds missing getter function prototypes for cogl_material_get_layer_wrap_mode_{s,t,p} clutter/cogl/cogl/cogl-material.h | 52 +++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) commit 32ae904d81684c1affd919fd1ccb024d18636bc8 Author: Robert Bragg Date: Sun Aug 1 16:07:38 2010 +0100 vertex-buffer: remove the unstrided CBO type When we come to submitting the users given attributes we sort them into different types of buffers. Previously we had three types; strided, unstrided and multi-pack. Really though unstrided was just a limited form of multi-pack buffer and didn't imply any hind of special optimization so this patch consolidates some code by reducing to just two types; strided and multi-pack. clutter/cogl/cogl/cogl-vertex-buffer-private.h | 5 ++-- clutter/cogl/cogl/cogl-vertex-buffer.c | 33 +++++------------------- 2 files changed, 8 insertions(+), 30 deletions(-) commit 94e06197856c9959580c837985eb114150d402a3 Author: Robert Bragg Date: Wed Jul 28 13:59:34 2010 +0100 material: Adds _cogl_material_pre_paint_for_layer This is a counter part for _cogl_material_layer_pre_paint which takes a layer index instead of a direct CoglMaterialLayer pointer. The aim is to phase out code that directly iterates the internal layer pointers of a material since the layer pointers can change if any property of any layer is changed making direct layer pointers very fragile. clutter/cogl/cogl/cogl-material-private.h | 9 +++++++++ clutter/cogl/cogl/cogl-material.c | 8 ++++++++ 2 files changed, 17 insertions(+) commit 701a69366142f5c2389110daa0426abdb8691f6d Author: Robert Bragg Date: Mon Oct 25 13:25:21 2010 +0100 cogl: Adds {push,pop,get}_source functions This exposes the idea of a stack of source materials instead of just having a single current material. This allows the writing of orthogonal code that can change the current source material and restore it to its previous state. It also allows the implementation of new composite primitives that may want to validate the current source material and possibly make override changes in a derived material. clutter/cogl/cogl/cogl-clip-stack.c | 7 +- clutter/cogl/cogl/cogl-context.c | 6 +- clutter/cogl/cogl/cogl-context.h | 2 +- clutter/cogl/cogl/cogl-material-private.h | 3 + clutter/cogl/cogl/cogl-path.c | 41 +++++------ clutter/cogl/cogl/cogl-primitives.c | 99 ++++++++++++-------------- clutter/cogl/cogl/cogl-texture.c | 7 +- clutter/cogl/cogl/cogl-vertex-buffer.c | 38 ++++++---- clutter/cogl/cogl/cogl.c | 109 ++++++++++++++++++++++++++--- clutter/cogl/cogl/cogl.h | 58 ++++++++++++--- doc/reference/cogl/cogl-sections.txt | 3 + 11 files changed, 252 insertions(+), 121 deletions(-) commit bf6c635e9dfa28470fa31b6459c6636afe70c95e Merge: b16ff03 cf46c81 Author: Emmanuele Bassi Date: Mon Oct 25 23:44:53 2010 +0100 Merge branch 'private-cleanup' * private-cleanup: Add copyright notices Clean up clutter-private.h/6 Clean up clutter-private.h/5 Clean up clutter-private.h/4 Clean up clutter-private.h/3 Clean up clutter-private.h/2 Clean up clutter-private.h/1 commit b16ff0359ac53bfd6650256c874677e44b93a746 Author: Emmanuele Bassi Date: Mon Oct 25 17:44:27 2010 +0100 Post-release version bump to 1.5.5 configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit cba230400a4d92f6c97f029326d68fa5798b1214 Author: Emmanuele Bassi Date: Mon Oct 25 17:30:52 2010 +0100 Release Clutter 1.5.4 configure.ac | 2 +- po/clutter-1.0.pot | 792 +++++++++++++++++++++++------------------------ po/de.po | 822 +++++++++++++++++++++++++------------------------ po/fr.po | 860 ++++++++++++++++++++++++++-------------------------- po/id.po | 799 ++++++++++++++++++++++++------------------------ po/it.po | 790 +++++++++++++++++++++++------------------------ po/pl.po | 812 +++++++++++++++++++++++++------------------------ po/zh_CN.po | 800 ++++++++++++++++++++++++------------------------ 8 files changed, 2867 insertions(+), 2810 deletions(-) commit cb7d2943eafd65a2526f7da0f9e5d8bf1a176f32 Author: Chris Lord Date: Fri Oct 22 17:41:06 2010 +0100 state: Correct the documentation Correct the argument order and replace all occurrences of clutter_state_change() with the appropriate clutter_state_set_state() or clutter_state_warp_to_state(). clutter/clutter-state.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) commit bfc1583d76548f9882a4d77df39d32733883814d Author: Chris Lord Date: Fri Oct 22 16:32:05 2010 +0100 state: Fix warping to the current state during transitions If you warp to a state, it should be immediately set. Check if the animation is in progress when warping to a state and don't short-circuit in the already-set check if we're not animating. clutter/clutter-state.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit 35c35de55c27ff212d819e202b6081859510ee3d Author: Chris Lord Date: Fri Oct 22 16:13:16 2010 +0100 state: Handle setting keys for the current target state Add special behaviour when you set the key of the current target state: - If the state is transitioning, add/modify the interval so that the new key transitions from the current time (taking into account pre-delay) to its target final property - If the state is set but has already finished animating/was warped to, set the property immediately clutter/clutter-state.c | 73 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 69 insertions(+), 4 deletions(-) commit 73dcbedc8067fac25e43d833036f8c76f7c01282 Author: Chris Lord Date: Fri Oct 22 15:24:49 2010 +0100 state: Fix crasher when removing the last key of a transitioning state If ClutterState is in the middle of a transition and you remove all the keys from the target state, the target state will be destroyed without stopping the animation/unsetting the target state. This caused an invalid memory access. clutter/clutter-state.c | 4 ++++ 1 file changed, 4 insertions(+) commit 5700b34b9cd894e6847dc8973e358104b47fdae5 Author: Chris Lord Date: Thu Oct 21 16:51:45 2010 +0100 state: Allow setting a NULL state Allow setting a %NULL state. This has the effect of unsetting the current state and stopping all animation. This allows you to, for example, start a state transition, set the state to NULL, alter the state transition and then resume it again, by just setting it. clutter/clutter-state.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) commit 9c5f09f32d291aac58fa7e7456302272e4c2a49e Author: Emmanuele Bassi Date: Mon Oct 25 17:16:24 2010 +0100 Update NEWS NEWS | 3 +++ 1 file changed, 3 insertions(+) commit ef6b46d8262cb9910dc70afa3cff2c2443f65d69 Merge: 0cb2ef4 f6ab7ec Author: Emmanuele Bassi Date: Mon Oct 25 17:09:46 2010 +0100 Merge branch 'wip/path-constraint' * wip/path-constraint: docs: Add PathConstraint tests: Add a PathConstraint interactive test Add ClutterPathConstraint actor-box: Add setters for origin and size commit f6ab7eccd9c946c75b5b4f4eba0c4a834f31804a Author: Emmanuele Bassi Date: Mon Oct 25 16:09:40 2010 +0100 docs: Add PathConstraint clutter/clutter-path-constraint.c | 68 ++++++++++++++++++++++++++++ clutter/clutter-path-constraint.h | 2 +- doc/reference/clutter/clutter-sections.txt | 16 +++++++ 3 files changed, 85 insertions(+), 1 deletion(-) commit 6f8e46e0b356ab5f367a1042be04392fe0775cba Author: Emmanuele Bassi Date: Mon Oct 25 15:47:15 2010 +0100 tests: Add a PathConstraint interactive test tests/interactive/Makefile.am | 3 +- tests/interactive/test-path-constraint.c | 63 ++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) commit 6b2cbb990835f366060e59344db9019d271b2a89 Author: Emmanuele Bassi Date: Mon Oct 25 15:46:04 2010 +0100 Add ClutterPathConstraint ClutterPathConstraint is a simple Constraint implementation that modifies the allocation of the Actor to which is has been applied using a progress value and a ClutterPath. clutter/Makefile.am | 2 + clutter/clutter-path-constraint.c | 287 +++++++++++++++++++++++++++++++++++++ clutter/clutter-path-constraint.h | 65 +++++++++ clutter/clutter.h | 1 + 4 files changed, 355 insertions(+) commit 3f6ec0ba5a153f8185db8e481f823b49030bd8bc Author: Emmanuele Bassi Date: Mon Oct 25 15:45:35 2010 +0100 actor-box: Add setters for origin and size clutter/clutter-actor-box.c | 49 ++++++++++++++++++++++++++++ clutter/clutter-types.h | 7 ++++ doc/reference/clutter/clutter-sections.txt | 2 ++ 3 files changed, 58 insertions(+) commit 0cb2ef434b371d5d372040e03ec6705f2991ad39 Author: Damien Lespiau Date: Thu Oct 14 11:48:00 2010 -0400 eglnative: Fix the type of stage for eglnative CLUTTER_TYPE_STAGE_EGLNATIVE does not exist any more, use CUTTER_TYPE_STAGE_EGL instead. configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6da18b6e4f93bb1430698959d6280cb53f9e2ff2 Author: Neil Roberts Date: Thu Oct 21 17:20:44 2010 +0100 win32: Fix clutter_win32_disable_event_retrieval There was previously a flag that gets set when this function was called but nothing checked it so the function effectively did nothing. Also the flag was a member of the backend struct but this can't be used because the function should be called before clutter_init so the backend is not ready yet. This patch makes the event disabling work more like the X11 backend and set a global variable instead. clutter/win32/clutter-backend-win32.c | 30 ++++++++++++++++++++++++++++-- clutter/win32/clutter-backend-win32.h | 1 - clutter/win32/clutter-event-win32.c | 20 -------------------- 3 files changed, 28 insertions(+), 23 deletions(-) commit e6099cdd4bd08d81cab51ff4fc291c839d7f37e3 Author: Ole André Vadla Ravnås Date: Thu Oct 14 15:30:54 2010 +0200 win32: Use _clutter_actor_rerealize() like X11 backend does http://bugzilla.clutter-project.org/show_bug.cgi?id=1654 clutter/win32/clutter-stage-win32.c | 90 +++++++++++++++++++++++++---------- 1 file changed, 66 insertions(+), 24 deletions(-) commit e66c679e84fd604d714828dceba1a50105790181 Author: Neil Roberts Date: Fri Aug 27 15:54:21 2010 +0100 win32: Add a public clutter_win32_handle_event function This function handles a single windows message. The idea is that it could be used by clutter-gtk to forward on events from a GdkEventFilter. The function replaces the old message_translate() function. That function didn't translate the event anymore anyway and instead it could generate multiple events so clutter_win32_handle_event seems like a more appropriate name. The function returns TRUE or FALSE depending on whether the event was completely handled instead of setting call_window_proc. clutter/win32/clutter-event-win32.c | 70 +++++++++++++++++----------- clutter/win32/clutter-win32.h | 2 + doc/reference/clutter/clutter-sections.txt | 1 + 3 files changed, 47 insertions(+), 26 deletions(-) commit 52744c0d9db6d7f9738d31b6d9f774c0912fcad0 Author: Neil Roberts Date: Thu Oct 21 16:27:17 2010 +0100 clutter-stage: Set the Cogl framebuffer size after allocating When handling an allocation on the stage, Clutter uses the oppurtunity to inform Cogl of the new size of the framebuffer so that it can handle the viewport correctly. It queries the size of the window implementation using a backend virtual function. However it was doing this before letting the backend handle the allocation so on Win32 it would end up using the previous framebuffer size. This wasn't affecting the X11 backend because in that case the resizes are asynchronous so setting the stage size causes one allocation which ends up sending a window size request. Eventually a ConfigureNotify is received which causes the size of the stage to be set again and another allocation is fired meaning the framebuffer size will be set again this time with the correct size. In Win32 the resizes are synchronous so we don't have this second allocation. clutter/clutter-stage.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) commit cc7977988c92ad7fa96f0a1dd0a8581432f090ca Author: Neil Roberts Date: Mon Oct 25 13:15:01 2010 +0100 cogl-context-winsys: Avoid zero-length arrays When compiling for non-glx platforms the winsys feature data array ends up empty. Empty arrays cause problems for MSVC so this patch adds a stub entry so that the array always has at least one entry. Based on a patch by Ole André Vadla Ravnås clutter/cogl/cogl/winsys/cogl-context-winsys.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) commit f1752ff3ba1828873f7f97f3842eadcc389e87a1 Author: Neil Roberts Date: Mon Oct 25 13:08:52 2010 +0100 Avoid mixing declarations and code Mixing declarations and code causes problems for MSVC as it is a C99 feature so we should try to avoid it. clutter/cally/cally-actor.c | 66 ++++++++++++++++-------------- clutter/clutter-stage.c | 3 +- clutter/cogl/cogl/cogl-material-opengl.c | 9 +++- clutter/cogl/cogl/cogl-material.c | 4 +- clutter/x11/clutter-event-x11.c | 5 ++- tests/conform/test-cogl-blend-strings.c | 8 ++-- tests/conform/test-cogl-depth-test.c | 8 ++-- tests/conform/test-cogl-materials.c | 8 ++-- tests/conform/test-cogl-premult.c | 8 ++-- 9 files changed, 68 insertions(+), 51 deletions(-) commit 8e3674dcc12654e48e9c85e5aff2d56642512321 Author: Neil Roberts Date: Mon Oct 25 13:07:50 2010 +0100 Avoid variable length arrays in clutter-backend-x11 There was an array whose length was define by a static const int variable. GCC seems to consider this a variable-length array so it will cause warnings now that -Wvla is enabled. We might as well make this constant a #define instead to avoid the warning. clutter/x11/clutter-backend-x11.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit c3f47fa7d03ec3e7a5f963ced0457f27c3ec41ee Author: Neil Roberts Date: Mon Oct 25 13:03:39 2010 +0100 Add -Wdeclaration-after-statement and -Wvla to maintainer CFLAGS These warnings pick up C99 extensions that are commonly accidentally used and which cause problems when compiling with MSVC. configure.ac | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 164af55a6e52075afbc335a3ff15fe9b48ac9f31 Author: Giovanni Campagna Date: Sun Oct 24 14:45:16 2010 +0200 Avoid warnings on ClutterClone with a NULL source clutter_clone_apply_transform should check the source before calling methods on it, else criticals will be emitted. http://bugzilla.clutter-project.org/show_bug.cgi?id=2381 clutter/clutter-clone.c | 4 ++++ 1 file changed, 4 insertions(+) commit c7bfe27e96ccc6295d0e774dacf3597ec7df146c Author: Emmanuele Bassi Date: Mon Oct 25 12:31:50 2010 +0100 Update NEWS NEWS | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) commit 276acf5854c0e589eae9a76c78ef1faa50c46caa Author: Ole André Vadla Ravnås Date: Sat Oct 9 23:07:26 2010 +0200 binding-pool: Use the correct marshaller clutter/clutter-binding-pool.c | 8 ++++---- clutter/clutter-marshal.list | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) commit c792431538e02c05f90f12bd4c36c72cf3f3eab4 Author: Ole André Vadla Ravnås Date: Thu Oct 14 13:11:46 2010 +0200 interval: Remember to chain up to parent in finalize() clutter/clutter-interval.c | 2 ++ 1 file changed, 2 insertions(+) commit d5634e37a262012f66022071d862ad9e5a8fbe53 Author: Neil Roberts Date: Mon Oct 4 14:34:24 2010 +0100 cogl-texture-2d-sliced: Use the other backends for the slices Instead of directly manipulating GL textures itself, CoglTexture2DSliced now works in terms of CoglHandles. It creates the texture slices using cogl_texture_new_with_size which should always end up creating a CoglTexture2D because the size should fit. This allows us to avoid replicating some code such as the first pixel mipmap tracking and it better enforces the separation that each texture backend is the only place that contains code dealing with each texture target. clutter/cogl/cogl/cogl-texture-2d-sliced-private.h | 20 +- clutter/cogl/cogl/cogl-texture-2d-sliced.c | 1103 ++++++++------------ 2 files changed, 462 insertions(+), 661 deletions(-) commit 61f2f1c024a01368ff99e6639518463b175ff2c0 Author: Neil Roberts Date: Mon Oct 4 15:27:38 2010 +0100 Support foreign textures in the texture-2d and rectangle backends This adds two new internal functions to create a foreign texture for the texture 2d and rectangle backends. cogl_texture_new_from_foreign will now use one of these backends directly if there is no waste instead of always using the sliced texture backend. clutter/cogl/cogl/cogl-texture-2d-private.h | 7 + clutter/cogl/cogl/cogl-texture-2d.c | 135 +++++++++++++++++++- clutter/cogl/cogl/cogl-texture-rectangle-private.h | 7 + clutter/cogl/cogl/cogl-texture-rectangle.c | 118 ++++++++++++++++- clutter/cogl/cogl/cogl-texture.c | 42 ++++-- 5 files changed, 287 insertions(+), 22 deletions(-) commit 7b7b655e6ef45e5bdda25fe7b416ea632a0da25f Author: Damien Lespiau Date: Fri Oct 22 06:52:27 2010 +0100 build: Dist cookbook.xsl cookbook.xsl was not in EXTRA_DIST, so the cookbook was not buildable with released tarballs. doc/common/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit cf46c8197e678bd53d3592307b326fa984c93eb9 Author: Emmanuele Bassi Date: Thu Oct 21 13:13:00 2010 +0100 Add copyright notices clutter/clutter-actor-meta-private.h | 24 ++++++++++++++++++++++++ clutter/clutter-actor-meta.c | 24 ++++++++++++++++++++++++ clutter/clutter-actor-meta.h | 24 ++++++++++++++++++++++++ clutter/clutter-actor-private.h | 21 +++++++++++++++++++++ clutter/clutter-backend-private.h | 21 +++++++++++++++++++++ clutter/clutter-device-manager-private.h | 24 ++++++++++++++++++++++++ clutter/clutter-paint-volume-private.h | 21 +++++++++++++++++++++ clutter/clutter-stage-manager-private.h | 24 ++++++++++++++++++++++++ clutter/clutter-stage-private.h | 21 +++++++++++++++++++++ 9 files changed, 204 insertions(+) commit 46c597a1f674394d94ac9bdd61b3521d8bb0905a Author: Emmanuele Bassi Date: Thu Oct 21 12:16:05 2010 +0100 Clean up clutter-private.h/6 Move all Actor private API to a separate file. clutter/Makefile.am | 1 + clutter/clutter-actor-box.c | 2 + clutter/clutter-actor-private.h | 97 ++++++++++++++++++++++++++++ clutter/clutter-actor.c | 2 +- clutter/clutter-animator.c | 2 + clutter/clutter-behaviour-ellipse.c | 6 +- clutter/clutter-bind-constraint.c | 2 + clutter/clutter-cairo-texture.c | 1 + clutter/clutter-clone.c | 1 + clutter/clutter-desaturate-effect.c | 2 + clutter/clutter-input-device.c | 1 + clutter/clutter-master-clock.c | 1 + clutter/clutter-offscreen-effect.c | 1 + clutter/clutter-page-turn-effect.c | 2 + clutter/clutter-paint-volume.c | 1 + clutter/clutter-path.c | 3 +- clutter/clutter-private.h | 102 +----------------------------- clutter/clutter-rectangle.c | 1 + clutter/clutter-stage.c | 1 + clutter/clutter-text.c | 2 + clutter/clutter-texture.c | 1 + clutter/clutter-units.c | 2 + clutter/glx/clutter-stage-glx.c | 1 + clutter/wayland/clutter-stage-wayland.c | 7 +- clutter/win32/clutter-stage-win32.c | 1 + clutter/x11/clutter-event-x11.c | 3 +- clutter/x11/clutter-stage-x11.c | 1 + clutter/x11/clutter-x11-texture-pixmap.c | 1 + 28 files changed, 138 insertions(+), 110 deletions(-) commit cf3a29f224644b718458576191a6246883ba6485 Author: Emmanuele Bassi Date: Thu Oct 21 11:59:50 2010 +0100 Clean up clutter-private.h/5 Move PaintVolume private API to a separate header. clutter/Makefile.am | 1 + clutter/clutter-actor.c | 1 + clutter/clutter-clone.c | 2 +- clutter/clutter-paint-volume-private.h | 104 ++++++++++++++++++++++++++++++ clutter/clutter-paint-volume.c | 3 + clutter/clutter-private.h | 93 -------------------------- clutter/clutter-stage.c | 19 +++--- clutter/x11/clutter-event-x11.c | 1 + clutter/x11/clutter-x11-texture-pixmap.c | 4 +- 9 files changed, 124 insertions(+), 104 deletions(-) commit 43edfc940038f9582902d83e798b9985f8790f57 Author: Emmanuele Bassi Date: Thu Oct 21 11:49:37 2010 +0100 Clean up clutter-private.h/4 Move the private Backend API to a separate header. This also allows us to finally move the class vtable and instance structure to a separate file and plug the visibility hole that left the Backend class bare for everyone to poke into. clutter/Makefile.am | 1 + clutter/clutter-backend-private.h | 99 +++++++++++++++++++++++++++++ clutter/clutter-backend.c | 2 +- clutter/clutter-backend.h | 50 --------------- clutter/clutter-device-manager.c | 1 + clutter/clutter-event.c | 5 +- clutter/clutter-feature.c | 1 + clutter/clutter-main.c | 16 ++--- clutter/clutter-private.h | 37 ----------- clutter/clutter-stage.c | 2 +- clutter/clutter-units.c | 5 +- clutter/egl/clutter-backend-egl.h | 3 +- clutter/fruity/clutter-backend-fruity.h | 5 +- clutter/osx/clutter-backend-osx.h | 2 +- clutter/wayland/clutter-backend-wayland.h | 3 +- clutter/win32/clutter-backend-win32.h | 3 +- clutter/x11/clutter-backend-x11.h | 3 +- 17 files changed, 129 insertions(+), 109 deletions(-) commit 8613013ab086668360d4ce625fe7b896ca5ae0e0 Author: Emmanuele Bassi Date: Thu Oct 21 11:29:09 2010 +0100 Clean up clutter-private.h/3 Move Stage private API to a separate header. clutter/Makefile.am | 1 + clutter/clutter-actor.c | 2 +- clutter/clutter-backend.c | 2 + clutter/clutter-input-device.c | 1 + clutter/clutter-main.c | 2 +- clutter/clutter-master-clock.c | 1 + clutter/clutter-offscreen-effect.c | 1 + clutter/clutter-private.h | 69 ----------------------------- clutter/clutter-stage-manager-private.h | 7 +++ clutter/clutter-stage-private.h | 64 ++++++++++++++++++++++++++ clutter/clutter-stage.c | 2 +- clutter/clutter-texture.c | 1 + clutter/egl/clutter-backend-egl.c | 9 ++-- clutter/egl/clutter-stage-egl.c | 19 ++++---- clutter/fruity/clutter-backend-fruity.c | 8 ++-- clutter/glx/clutter-backend-glx.c | 11 ++--- clutter/glx/clutter-event-glx.c | 2 + clutter/glx/clutter-stage-glx.c | 21 +++------ clutter/osx/clutter-backend-osx.c | 7 ++- clutter/osx/clutter-stage-osx.c | 8 ++-- clutter/wayland/clutter-backend-wayland.c | 11 ++--- clutter/wayland/clutter-stage-wayland.c | 20 ++++----- clutter/win32/clutter-backend-win32.c | 13 +++--- clutter/win32/clutter-event-win32.c | 1 + clutter/win32/clutter-stage-win32.c | 19 +++----- clutter/x11/clutter-backend-x11.c | 6 +-- clutter/x11/clutter-event-x11.c | 1 + clutter/x11/clutter-stage-x11.c | 17 +++---- 28 files changed, 162 insertions(+), 164 deletions(-) commit 999c0637848bc36b2a668f52ff58125a1f298dd8 Author: Emmanuele Bassi Date: Thu Oct 21 10:59:49 2010 +0100 Clean up clutter-private.h/2 Move StageManager private API to a different header. clutter/Makefile.am | 1 + clutter/clutter-private.h | 8 -------- clutter/clutter-stage-manager-private.h | 18 ++++++++++++++++++ clutter/clutter-stage-manager.c | 13 ++----------- clutter/clutter-stage.c | 2 +- 5 files changed, 22 insertions(+), 20 deletions(-) commit c1771d152eaaa54017e80f370b2163eadc8c2fdc Author: Emmanuele Bassi Date: Thu Oct 21 10:54:14 2010 +0100 Clean up clutter-private.h/1 Move DeviceManager/InputDevice private API to a different header. clutter/Makefile.am | 23 ++++---- clutter/clutter-device-manager-private.h | 68 ++++++++++++++++++++++++ clutter/clutter-device-manager.c | 2 +- clutter/clutter-event.c | 4 +- clutter/clutter-input-device.c | 1 + clutter/clutter-main.c | 1 + clutter/clutter-private.h | 58 -------------------- clutter/clutter-stage.c | 2 +- clutter/wayland/clutter-input-device-wayland.c | 7 +-- clutter/win32/clutter-device-manager-win32.c | 2 +- clutter/win32/clutter-event-win32.c | 13 ++--- clutter/x11/clutter-device-manager-x11.c | 2 +- clutter/x11/clutter-event-x11.c | 11 ++-- clutter/x11/clutter-input-device-x11.c | 6 ++- 14 files changed, 109 insertions(+), 91 deletions(-) commit f709664f2338302f3ad09427d97847c21518cc1d Author: Emmanuele Bassi Date: Wed Oct 20 09:42:34 2010 +0100 build: Go back to autoreconf After testing and distchecking, I verified that autoreconf can still be used to rebuild the autotools setup. Thanks to Javier Jardón for the second pair of eyes. autogen.sh | 91 ++++++------------------------------------------------------ 1 file changed, 8 insertions(+), 83 deletions(-) commit 68156c24c1e951f06a12feca4f13b9cd1627df61 Author: Emmanuele Bassi Date: Tue Oct 19 17:48:15 2010 +0100 build: Remove unused Makefile.am We switched to a non-recursive layout, hence we don't need Makefile.am in the osx/ and fruity/ sub-directories. clutter/fruity/Makefile.am | 24 ------------------------ clutter/osx/Makefile.am | 25 ------------------------- 2 files changed, 49 deletions(-) commit ce3311df2683dae46b3b63a760ae87353f9f59b6 Author: Emmanuele Bassi Date: Tue Oct 19 12:32:02 2010 +0100 conform: Remove unnecessary destroy() calls Unparented actors are owned by the Script instance, and if that goes away then the actors go away with it. The fact that we needed an explicit destroy() before was a hint of a memory management issue that I blissfully - and regretfully - ignored for the sake of a passing test suite. tests/conform/test-script-parser.c | 5 ----- 1 file changed, 5 deletions(-) commit b5bbdd6cecc47beb0d299fdcf92aa58f71aabb1e Author: Emmanuele Bassi Date: Tue Oct 19 11:03:13 2010 +0100 build: Add test wrappers to the main ignore file They are generated at configure time, so it's a good idea to have them in the main ignore file instead of adding them to the built ignore files under tests. .gitignore | 2 ++ tests/conform/Makefile.am | 1 - tests/interactive/Makefile.am | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) commit e80825535adf57db6d7faa16b81eddb7b5d6b065 Author: Emmanuele Bassi Date: Tue Oct 19 10:48:39 2010 +0100 build: Show whether we have XComposite Since we're doing it for other optional X11 extensions as well. configure.ac | 1 + 1 file changed, 1 insertion(+) commit dd2f55c6f6bbc2f0a12b70ccf90cf7840b6e2212 Author: Emmanuele Bassi Date: Tue Oct 19 10:40:57 2010 +0100 x11: Protect XComposite API calls Since we allow compiling Clutter without the XComposite extension available, we need to protect the calls to the XComposite API with the guards provided by the configure script. clutter/x11/clutter-backend-x11.c | 8 +++++++- clutter/x11/clutter-x11-texture-pixmap.c | 16 ++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) commit 21eb49098a7e90007b9043917a8dcf816db765b7 Author: Emmanuele Bassi Date: Mon Sep 13 23:29:52 2010 +0300 script: Fix the memory management Currently, the memory management in ClutterScript is overly complicated. The basic design tenet should be: - ClutterScript owns a reference on every object it creates This allows the Script instance to reliably handle the lifetime of the instances from creation to disposal. In case of unmerge, the Script instance should destroy any Actor instance, except for the Stage, and release the reference it owns. The Stage is special because it's really owned by Clutter itself, and it should be destroyed explicitly. When disposing the Script itself, it should just release the reference; any parented actor, or any InitiallyUnowned instance, will then be managed by the parent object, as they should, while every GObject instance will go away, as documented. This commit is based on a patch by: Henrik Hedberg http://bugzilla.clutter-project.org/show_bug.cgi?id=2316 clutter/clutter-script-parser.c | 30 ++++++++++++++++++++++-------- clutter/clutter-script-private.h | 3 ++- clutter/clutter-script.c | 20 +++++--------------- 3 files changed, 29 insertions(+), 24 deletions(-) commit 20a359cc530bac6a27bfa46839b49a88e1bec3d6 Author: Emmanuele Bassi Date: Tue Oct 19 01:41:05 2010 +0100 debug: Do not use '&' in the messages Use ':' as a separator between G_STRLOC and the debug message, like we do for warnings. clutter/clutter-debug.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 78d4073f8ebb115d4e02f5ffea11260ed286719f Author: Emmanuele Bassi Date: Tue Oct 19 01:40:44 2010 +0100 Remove unused variables clutter/clutter-script.c | 1 - clutter/clutter-shader-effect.c | 1 - 2 files changed, 2 deletions(-) commit 1c9dcdaeb295867d86a447cfc3df44d4e74d3ae0 Author: Damien Lespiau Date: Thu Oct 14 15:33:17 2010 +0100 build: Fix CLUTTER_EGL_BACKEND definition for eglnative and cex100 CLUTTER_EGL_BACKEND is used to define a special EGL native backend to use and was introduced for the CEX100 EGL backend. Unfortunately CLUTTER_EGL_BACKEND was defined to "cex100" for eglnative, which is obviously wrong. The paches defines the right values for CLUTTER_EGL_BACKEND for the eglnative and cex100 flavours. configure.ac | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 32270730bdcc20d9ac19c5b66cfda08e8e839937 Author: Damien Lespiau Date: Thu Oct 14 16:32:13 2010 +0100 build: Fix EGL/CEX100 build with GLES2 Some headers files have been renamed or removed and the gles(2) did not compile anymore, fix that. clutter/cogl/cogl/driver/gles/cogl-gles.c | 2 +- clutter/cogl/cogl/driver/gles/cogl-gles2-wrapper.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 0f613ea134b7369a214e1bb0056e3a21233982f9 Author: Emmanuele Bassi Date: Fri Oct 15 17:35:41 2010 +0100 cairo-texture: Allow overriding the surface creation By using a new signal, ::create-surface (width, height), it should be possible for third party code and sub-classes to override the default surface creation code in CairoSurface. This commit takes a bit of the patch from: http://bugzilla.clutter-project.org/show_bug.cgi?id=1878 which cleans up CairoTexture; the idea, mutuated from that bug, is that the CairoTexture actor checks whether the surface it has it's an image one, and in that case it uses a Cogl texture as the backing store. In case the surface is not an image one we assume that the surface itself has some way of updating the GL state and flush the surface. clutter/clutter-cairo-texture.c | 303 ++++++++++++++---------- clutter/clutter-cairo-texture.h | 7 +- clutter/clutter-marshal.list | 1 + tests/interactive/Makefile.am | 2 +- tests/interactive/test-cairo-flowers.c | 223 +++++++++++++++++ tests/interactive/test-clutter-cairo-flowers.c | 224 ------------------ 6 files changed, 404 insertions(+), 356 deletions(-) commit 63e314b07e8212089c2c50aab015790fe8908e6a Author: Emmanuele Bassi Date: Fri Oct 15 16:09:19 2010 +0100 build: Depend on cairo-gobject Starting from version 1.10, Cairo ships GTypes for its data types. README | 2 +- configure.ac | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 8729c01377d11874107bdee5d53dbcb23874db20 Author: Emmanuele Bassi Date: Fri Oct 15 16:09:12 2010 +0100 build: Remove unnecessary g-i version check configure.ac | 7 ------- 1 file changed, 7 deletions(-) commit 050e775da27209c5720d5ba8bffde786add562cd Author: Emmanuele Bassi Date: Fri Oct 15 15:24:27 2010 +0100 Move more classes to install_properties() clutter/clutter-actor-meta.c | 51 ++++++----- clutter/clutter-align-constraint.c | 56 ++++++------ clutter/clutter-alpha.c | 20 ++--- clutter/clutter-animation.c | 86 +++++++++--------- clutter/clutter-animator.c | 33 +++---- clutter/clutter-behaviour.c | 18 ++-- clutter/clutter-bin-layout.c | 104 +++++++++++----------- clutter/clutter-bind-constraint.c | 51 +++++------ clutter/clutter-binding-pool.c | 20 +++-- clutter/clutter-cairo-texture.c | 39 ++++----- clutter/clutter-child-meta.c | 35 ++++---- clutter/clutter-click-action.c | 31 +++---- clutter/clutter-clone.c | 20 +++-- clutter/clutter-colorize-effect.c | 18 ++-- clutter/clutter-deform-effect.c | 55 ++++++------ clutter/clutter-desaturate-effect.c | 28 +++--- clutter/clutter-device-manager.c | 20 ++--- clutter/clutter-flow-layout.c | 165 ++++++++++++++++++----------------- clutter/clutter-script.c | 36 ++++---- clutter/clutter-shader-effect.c | 25 +++--- clutter/clutter-timeline.c | 72 ++++++++------- 21 files changed, 492 insertions(+), 491 deletions(-) commit 8429aa8d755b268975c2870978f8d8484f584542 Author: Emmanuele Bassi Date: Fri Oct 8 15:47:00 2010 +0100 Remove unnecessary GLib version checks We now depend on a newer version of GLib than those checks tested for. clutter/clutter-animation.c | 6 ------ clutter/clutter-animator.c | 5 ----- clutter/clutter-box.c | 5 ----- clutter/clutter-container.c | 5 ----- clutter/clutter-frame-source.c | 3 --- clutter/clutter-interval.c | 10 ---------- clutter/clutter-layout-manager.c | 5 ----- clutter/clutter-master-clock.c | 2 -- clutter/clutter-state.c | 5 ----- clutter/clutter-timeout-pool.c | 2 -- clutter/x11/clutter-event-x11.c | 3 --- 11 files changed, 51 deletions(-) commit 7dd09e21861bd1b7ceaea112b6e4fb69aeebbf1e Author: Emmanuele Bassi Date: Fri Oct 8 15:21:57 2010 +0100 Use G_DEFINE_BOXED_TYPE for all boxed types We actually need a couple more macros for registering GValue transformation functions. Those should be added to upstream GLib. clutter/clutter-actor-box.c | 60 +++++++++++---------------- clutter/clutter-actor.c | 88 ++++++++++++++-------------------------- clutter/clutter-animator.c | 16 ++------ clutter/clutter-behaviour.c | 18 ++------ clutter/clutter-color.c | 29 +++---------- clutter/clutter-event.c | 16 ++------ clutter/clutter-paint-volume.c | 16 ++------ clutter/clutter-path.c | 48 +++++++--------------- clutter/clutter-private.h | 24 ++++++++--- clutter/clutter-stage.c | 27 ++---------- clutter/clutter-state.c | 15 ++----- clutter/clutter-state.h | 1 + clutter/clutter-units.c | 45 +++++--------------- 13 files changed, 123 insertions(+), 280 deletions(-) commit 09a830d2945456d882cbf8b326264041b172fea9 Author: Emmanuele Bassi Date: Fri Oct 8 14:49:47 2010 +0100 Remove conditional wrappers for property installation/notification For the time being, just keep the #define's. clutter/clutter-drag-action.c | 11 ++++++----- clutter/clutter-private.h | 27 ++------------------------- 2 files changed, 8 insertions(+), 30 deletions(-) commit 9caf11f2d8f7120830da9f10a694ccc8f30ebee1 Author: Emmanuele Bassi Date: Fri Oct 8 14:47:46 2010 +0100 Use G_DEFINE_INTERFACE GObject provides us with a nice, safe macro for defining interface types. clutter/clutter-animatable.c | 16 +- clutter/clutter-container.c | 178 ++++++++----------- clutter/clutter-media.c | 368 +++++++++++++++++++--------------------- clutter/clutter-scriptable.c | 20 +-- clutter/clutter-stage-window.c | 25 +-- 5 files changed, 263 insertions(+), 344 deletions(-) commit 8f5d6cb790a426536b462297e76be9159109e245 Author: Emmanuele Bassi Date: Fri Oct 8 14:47:13 2010 +0100 build: Depend on GLib ≥ 2.26.0 We are going to need some new macros and API. README | 2 +- configure.ac | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) commit 2b4ee9ab548a58784da7ccc710cbbd213a6c45c9 Author: Emmanuele Bassi Date: Fri Oct 15 16:05:44 2010 +0100 actor: Add more checks to the redraw queue clutter/clutter-actor.c | 4 ++-- clutter/clutter-stage.c | 14 ++++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) commit ad0e7a9e15a18f26b1002056427ded9a9f011e86 Author: Emmanuele Bassi Date: Fri Oct 15 15:24:58 2010 +0100 moduleset: Add Atk as a Clutter dependency build/clutter.modules | 1 + 1 file changed, 1 insertion(+) commit 56c89bd86b61f3c2ecba04d8a3afd4aa6250cf09 Author: Emmanuele Bassi Date: Fri Oct 15 12:40:43 2010 +0100 osx: Fix glib.h include path The fix for removing glib/gmain.h introduced the wrong path for glib.h. clutter/osx/clutter-event-osx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit d8426197554f4745bc2489c81435b9510b62d21a Author: Roland Peffer Date: Thu Oct 14 18:23:02 2010 +0100 osx: Add button mask to the modifier state translation The modifier state translation is missing the CLUTTER_BUTTON*_MASK. http://bugzilla.clutter-project.org/show_bug.cgi?id=2365 Signed-off-by: Emmanuele Bassi clutter/osx/clutter-event-osx.c | 8 ++++++++ 1 file changed, 8 insertions(+) commit 134ce072e793834c7fe08a270c03ee5b2efbe998 Author: Kristian Høgsberg Date: Wed Sep 29 17:10:44 2010 -0400 The amazing lazy-copy-back-repaint-page-flip Always use pageflipping, but avoid full repaint by copying back dirty regions from front to back. Additionally, we dealy copying back until we're ready to paint the new frame, so we can avoid copying areas that will be repainted anyway. This is the least amount of copying per frame we can get away with at all and at the same time we don't have to worry about stalling the GPU on synchronized blits since we always pageflip. clutter/wayland/clutter-backend-wayland.c | 8 + clutter/wayland/clutter-stage-wayland.c | 295 ++++++++++++++++++++++------- clutter/wayland/clutter-stage-wayland.h | 4 +- 3 files changed, 241 insertions(+), 66 deletions(-) commit cb5582c4ab1207738a2b5dc4c94fb4551e696c20 Author: Kristian Høgsberg Date: Tue Sep 28 10:17:46 2010 -0400 Add wayland backend This adds a clutter backend for running under the wayland window system. Initial cogl framebuffer integration by Robert Bragg. clutter/Makefile.am | 19 + clutter/cogl/cogl/Makefile.am | 4 + clutter/cogl/cogl/winsys/cogl-egl.c | 10 +- clutter/wayland/clutter-backend-wayland.c | 552 ++++++++++++++++++++++++ clutter/wayland/clutter-backend-wayland.h | 94 ++++ clutter/wayland/clutter-event-wayland.c | 148 +++++++ clutter/wayland/clutter-input-device-wayland.c | 340 +++++++++++++++ clutter/wayland/clutter-stage-wayland.c | 368 ++++++++++++++++ clutter/wayland/clutter-stage-wayland.h | 94 ++++ clutter/wayland/clutter-wayland.h | 60 +++ configure.ac | 61 ++- 11 files changed, 1738 insertions(+), 12 deletions(-) commit a7cf98ebfc9ca13e3f84bbe33171a2218cfe039b Author: Kristian Høgsberg Date: Mon Sep 27 13:25:50 2010 -0400 Initialize color masks lazily When we don't use a window system drawable, we can't query the color masks at context initialization time. Do it lazily so we're sure to have a current context with a valid framebuffer. clutter/clutter-main.c | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) commit f456116c18dac24454f9c46b02677a51f79e4052 Author: Robert Bragg Date: Thu Oct 14 16:19:55 2010 +0100 When unparenting an actor, remove queued redraws for all descendants We need to make sure that redraws queued for actors on a stage are for actors actually in the stage. So in clutter_actor_unparent() descend through the children and remove redraws. Just removing the actor itself isn't good enough since an entire hierarchy can be removed from the stage without breaking it up into individual actors. http://bugzilla.clutter-project.org/show_bug.cgi?id=2359 This is based on an original patch from Owen Taylor who debugged the root cause of this bug; thanks. clutter/clutter-actor.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) commit 07f2dba7e24abd7b25327cf6b6b3f60dc17091d2 Author: Robert Bragg Date: Thu Sep 30 18:42:40 2010 +0100 stage: handle unclipped redraw following clipped In the case that an unclipped redraw of an actor is queued after a clipped we should update any existing ClutterStageQueueRedrawEntry so entry->has_clip = FALSE and free the previous clip. clutter/clutter-stage.c | 5 +++++ 1 file changed, 5 insertions(+) commit d032b9b2bf21c9c7c02f1a1b11d4e4a1bc7472b6 Author: Emmanuele Bassi Date: Tue Oct 12 17:31:15 2010 +0100 conform: Start cleaning up the conformance test suite Re-order the units into a sensible list, with basic tests at the beginning, and per-class tests at the end - with Cogl last. Also, start renaming the unit functions from test_ to , so that the executable wrappers and the reports have sensible names. tests/conform/test-actor-destroy.c | 18 ++++++- tests/conform/test-actor-invariants.c | 7 --- tests/conform/test-actor-size.c | 6 +-- tests/conform/test-anchors.c | 6 +-- tests/conform/test-clutter-text.c | 46 +++++------------ tests/conform/test-conform-main.c | 80 +++++++++++++++-------------- tests/conform/test-pick.c | 4 +- tests/conform/test-text-cache.c | 3 +- tests/conform/test-timeline-interpolate.c | 3 +- tests/conform/test-timeline-rewind.c | 3 +- 10 files changed, 77 insertions(+), 99 deletions(-) commit b5d5b9628ed8f683231134ac36b75efe80022f06 Author: Emmanuele Bassi Date: Tue Oct 12 17:11:52 2010 +0100 conform: Implement TEST_CONFORM_TODO() correctly The TODO() macro for adding new tests to the test suite has always meant to be implemented like the TODO block in Test::More, i.e. a test that is assumed to fail, and which warns if it unexpectedly succeeds. Since GTest lacks the expressivity of Test::More, the implementation just verifies that the tests marked as TODO actually fail, and will fail if they happen to succeed - at which point the developer will have to change the macro to SIMPLE or SKIP. tests/conform/ADDING_NEW_TESTS | 70 ++++++++++++++++++++++++--------- tests/conform/Makefile.am | 6 ++- tests/conform/test-actor-invariants.c | 7 ++++ tests/conform/test-conform-common.h | 6 +++ tests/conform/test-conform-main.c | 30 ++++++++++++-- 5 files changed, 96 insertions(+), 23 deletions(-) commit 2a23bab8191678f33f10f0bd15fc05c7b05c89d3 Author: Emmanuele Bassi Date: Tue Oct 12 15:43:42 2010 +0100 conform: Save the revision and date inside the test report Even if gtester-report doesn't use that information (yet), we should store the revision of Clutter that generated the report, and the date in which the test suite was ran. tests/conform/Makefile.am | 41 +++++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 12 deletions(-) commit e6418a9dec874b55d51afede7b039d3fd31908d4 Author: Emmanuele Bassi Date: Tue Oct 12 15:43:27 2010 +0100 constraints: Remove unused variable clutter/clutter-align-constraint.c | 1 - clutter/clutter-bind-constraint.c | 1 - 2 files changed, 2 deletions(-) commit 7fd6273c25569fe4f37ad371532d93e5170e51f7 Author: Neil Roberts Date: Mon Oct 11 16:16:45 2010 +0100 tests: Generate the stub scripts using sed Instead of trying to run ./test-conformance with the -l option to generate a list of available tests it now runs sed on the test-conform-main.c file instead. Running the generated executable is a pain for cross-compiling so it would be nice to avoid it unless it's absolutely necessary. Although you could tell people who are cross compiling to just disable the conformance tests, this seems a shame because they could still be useful along with the wrappers for example if the cross compile is built to a shared network folder where the tests can be run on the actual device. The sed script is a little more ugly than it could be because it tries to avoid using the GNU extensions '\+' and '\|'. The script ends up placing restrictions on the format of the C file because the tests must all be listed on one line each. There is now a comment to explain this. Hopefully the trade off is worth it. http://bugzilla.clutter-project.org/show_bug.cgi?id=2363 tests/conform/Makefile.am | 6 ++++-- tests/conform/test-conform-main.c | 5 +++++ 2 files changed, 9 insertions(+), 2 deletions(-) commit 100d541f479d070660905fa763b625853f17bfee Author: Neil Roberts Date: Tue Oct 12 14:43:10 2010 +0100 tests: Re-enable the test-anchors conformance test This test was disabled in b5d58213. The commit message doesn't mention this so I'm guessing it was a mistake. In any case the test appears to work now anyway so it should be re-enabled. http://bugzilla.clutter-project.org/show_bug.cgi?id=2363 tests/conform/test-conform-main.c | 2 -- 1 file changed, 2 deletions(-) commit 2831addcf5ef1e4070fd2fabbe1ce71385b53062 Author: Emmanuele Bassi Date: Tue Oct 12 14:53:20 2010 +0100 test-flow-layout: Track stage size by default Instead of requiring a special command line switch. tests/interactive/test-flow-layout.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 4e724aed46cd7ad0ad7718b584a0f1691b12a09f Author: Emmanuele Bassi Date: Tue Oct 12 14:09:47 2010 +0100 bind-constraint: Use ::queue-relayout Instead of using the allocation-changed signal, use the queue-relayout signal on the source to queue a relayout on the actor to which the BindConstraint has been attached to. The ::allocation-changed signal is not always enough, given that a BindConstraint can use the position as well as the size of an actor to drive the allocation of another; in this regard, it's much similar to a ClutterClone, which requires a notification on every change, even potential, and not just real ones, given the short-circuiting done inside ClutterActor. clutter/clutter-bind-constraint.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) commit 5c82b2551c2053f76bfb09b6d36a5ea4c4e93104 Author: Emmanuele Bassi Date: Tue Oct 12 14:09:17 2010 +0100 constraints: Do not check for :enabled ClutterActor will do it for us. clutter/clutter-align-constraint.c | 3 --- clutter/clutter-bind-constraint.c | 3 --- 2 files changed, 6 deletions(-) commit 3f27afde2484a01c71e0b484d2f485e5ce15f5d7 Author: Emmanuele Bassi Date: Tue Oct 12 14:08:07 2010 +0100 actor: Use an explicit check for NULL Follow the coding style, and don't use the implicit C boolean equivalence for NULL pointers. clutter/clutter-actor.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 3b72fdb20cca143f386d9a81dc42fc5ac64c48e7 Author: Emmanuele Bassi Date: Tue Oct 12 14:07:27 2010 +0100 actor: Queue a relayout when adding/removing constraints Constraints change the way an actor is allocated; this warrants a relayout. clutter/clutter-actor.c | 3 +++ 1 file changed, 3 insertions(+) commit 91a9a355c32e86e597c57f3fd8b4deaecad0b9a4 Author: Emmanuele Bassi Date: Tue Oct 12 14:04:21 2010 +0100 actor: Check CluterActorMeta:enabled Instead of delegating the check for the ActorMeta:enabled property to the sub-classes of ClutterActorMeta, ClutterActor can do the check prior to using the ClutterActorMeta instances. clutter/clutter-actor.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) commit 3f6b82c9c9e75be6ba174f5964c85809ab0746cc Author: Emmanuele Bassi Date: Tue Oct 12 14:04:05 2010 +0100 actor: Add debugging note for allocation changes clutter/clutter-actor.c | 3 +++ 1 file changed, 3 insertions(+) commit 89a389cd2bdfa78768b5901a8a2865cb7d1a8c83 Author: Emmanuele Bassi Date: Mon Oct 11 15:57:22 2010 +0100 actor-box: Split out ActorBox into its own file clutter-actor.c is getting way too large, so splitting it up wherever possible makes sense. clutter/Makefile.am | 1 + clutter/clutter-actor-box.c | 440 +++++++++++++++++++++++++++++++++++++++++++ clutter/clutter-actor.c | 438 ------------------------------------------ 3 files changed, 441 insertions(+), 438 deletions(-) commit 7a54bdc65dcb9eb3d4d30020f65c255ef6f86f29 Author: Emmanuele Bassi Date: Mon Oct 11 15:52:50 2010 +0100 vertex: Register progress function This allows animating properties storing a ClutterVertex. clutter/clutter-actor.c | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) commit 4931802feea47c2fd89aa171a8fd05ebbfa087b4 Author: Emmanuele Bassi Date: Mon Oct 11 15:44:09 2010 +0100 geometry: Register a progress function This allows animating properties storing a ClutterGeometry. clutter/clutter-actor.c | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) commit a5fc90d4d99cf904abd60ed0be0356ecb1efb40a Author: Emmanuele Bassi Date: Mon Oct 11 15:20:25 2010 +0100 actor-box: Register a progress function So that we can animate properties storing ClutterActorBox. clutter/clutter-actor.c | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) commit 2f21c851eafbe217661c3010ad6388414e27a56b Author: Emmanuele Bassi Date: Mon Oct 11 15:07:06 2010 +0100 script: Fix annotation for get_object()'s return value clutter/clutter-script.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit dcf266261645fd2deda5c68ded438160bccd7235 Author: Emmanuele Bassi Date: Mon Oct 11 15:06:11 2010 +0100 interval: Remove special casing for ClutterColor ClutterColor registers a progress function on type initialization, so we don't need to special case it any more. clutter/clutter-interval.c | 17 ----------------- 1 file changed, 17 deletions(-) commit d5376bf317b5b682d85e64f1815f7c308da2ffda Author: Emmanuele Bassi Date: Mon Oct 11 15:04:54 2010 +0100 color: Add Color.interpolate() method The interpolate() method does what it says on the tin: it interpolates between two colors using the given factor. ClutterColor uses it to register a progress function for Intervals. clutter/clutter-color.c | 48 ++++++++++++++++++++++++++++ clutter/clutter-color.h | 5 +++ doc/reference/clutter/clutter-sections.txt | 1 + 3 files changed, 54 insertions(+) commit 7e112472b5ad9deea9b0ad1fda47aa16199a780a Author: Neil Roberts Date: Tue Oct 5 17:17:53 2010 +0100 cogl-texture-2d-sliced: Use the smallest possible waste When picking a size for the last slice in a texture, Cogl would always pick the biggest power of two size that doesn't create too much waste and is less than or equal to the previous slice size. However this can end up creating a texture that is bigger than needed if there is a smaller power of two. For example, if the maximum waste is 127 (the current default) and we try to create a texture that is 257 pixels wide it will decide that the next power of two (512) is too much waste (255) so it will create the first slice at 256 pixels wide. Then we only have 1 pixel left to allocate but Cogl would pick the next smaller size that has a small enough waste which is 128. But of course 1 is already a power of two so that's redundantly oversized by 127. This patch fixes it so that whenever it finds a size that would be big enough, instead of using exactly that it picks the next power of two up from the size we need to fill. http://bugzilla.clutter-project.org/show_bug.cgi?id=2355 clutter/cogl/cogl/cogl-texture-2d-sliced.c | 4 ++++ 1 file changed, 4 insertions(+) commit 1f106b35a99e3784e441feca2df983efafa9fbd9 Author: Emmanuele Bassi Date: Mon Oct 11 13:52:09 2010 +0100 Whitespace alignment fixes clutter/clutter-paint-volume.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 68d656c61badd7a88d7271600a59f24b05fbc36e Author: Emmanuele Bassi Date: Mon Oct 11 13:51:12 2010 +0100 paint-volume: Add arguments checks In some cases we access the arguments in public functions without, or prior to checking the arguments. clutter/clutter-paint-volume.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) commit 8089af3c1b0e9d9501ee5fad4249a3af1bfdb5dc Author: Owen W. Taylor Date: Thu Oct 7 16:00:47 2010 -0400 ClutterClone: Handle clone_source == NULL for get_paint_volume() It's valid to have a ClutterClone without a clone source; in this case the paint volume is empty. http://bugzilla.clutter-project.org/show_bug.cgi?id=2360 clutter/clutter-clone.c | 4 ++++ 1 file changed, 4 insertions(+) commit e0058925349046e315e45e14747879e05bdab262 Author: Emmanuele Bassi Date: Mon Oct 11 13:32:26 2010 +0100 clone: Remove unnecessary G_UNLIKELY macros A Clone:source property might be NULL, and we should not penalize performance when we can just bail out early, because that would kind of defeat the point. clutter/clutter-clone.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 12f80db8b8e826db245880c28f05facd0189c0f8 Author: Emmanuele Bassi Date: Mon Oct 11 12:00:18 2010 +0100 docs: Update the README Add a minimal building reference, and point to git-bz for filing patches to Bugzilla. README | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) commit f8af2da4c8b2e428baba750fac18a38904f55c35 Author: Emmanuele Bassi Date: Sun Oct 10 09:31:55 2010 +0100 osx: Compilation fixes Replace deprecated symbols with the correct ones. clutter/osx/clutter-backend-osx.c | 8 ++- clutter/osx/clutter-event-osx.c | 104 ++++++++++++++++++++++++------------- clutter/osx/clutter-stage-osx.c | 2 +- 3 files changed, 77 insertions(+), 37 deletions(-) commit 981fed1f63ecd1cc077c50869e9814c439ccf407 Author: Emmanuele Bassi Date: Fri Oct 8 13:29:49 2010 +0100 box-layout: Plug a memory leak Similar to commit 4724be167f19fe58cb38179e6f3b34b6797ff639 for TableLayout. http://bugzilla.clutter-project.org/show_bug.cgi?id=2358 clutter/clutter-box-layout.c | 39 +++++++++++++-------------------------- 1 file changed, 13 insertions(+), 26 deletions(-) commit 4724be167f19fe58cb38179e6f3b34b6797ff639 Author: Neil Roberts Date: Wed Oct 6 16:01:03 2010 +0100 Plug a memory leak in clutter-table-layout Whenever the allocation is changed on a child of a ClutterTableLayout and animations are not in effect then it would store a copy of the allocation in the child meta data. However it was not freeing the old copy of the allocation so it would end up with a small leak. Instead of just changing it to free the old value this patch makes it store the allocation inline in the meta data struct because it seems that the size of an actor box is already quite small compared to the size of the meta data struct so it is probably not worth having a separate allocation for it. To detect the case when there has not yet been an allocation a separate boolean is used instead of storing NULL. http://bugzilla.clutter-project.org/show_bug.cgi?id=2358 clutter/clutter-table-layout.c | 39 ++++++++++++++++----------------------- 1 file changed, 16 insertions(+), 23 deletions(-) commit 42dac6c9971fc33acae95f02d6e3605324a8d7f3 Author: Emmanuele Bassi Date: Thu Oct 7 18:01:53 2010 +0100 autogen.sh: libtool 2.4 has been released autogen.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit eec1a5fb7ad0c5d5f6169abbd1825bd083a940c0 Author: Damien Lespiau Date: Thu Oct 7 12:17:33 2010 +0100 po: Update French localization Signed-off-by: Emmanuele Bassi po/fr.po | 264 +++++++++++++++++++++++++++++++------------------------------- 1 file changed, 132 insertions(+), 132 deletions(-) commit 7bdbbe6a8c372e902753151cfacb2a6d7505b96c Author: Andika Triwidada Date: Tue Oct 5 17:23:37 2010 +0100 po: Update Indonesian localization Signed-off-by: Emmanuele Bassi po/id.po | 223 +++++++++++++++++++++++--------------------------------------- 1 file changed, 84 insertions(+), 139 deletions(-) commit 12119ff063f0a7d71c2d7431697004a620d154ab Author: Damien Lespiau Date: Tue Oct 5 17:22:56 2010 +0100 po: Add French localization Signed-off-by: Emmanuele Bassi po/fr.po | 1836 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1836 insertions(+) commit 3cb0436c42ca9369e3d804b8519d2dd40dac86e5 Author: Emmanuele Bassi Date: Tue Oct 5 14:30:01 2010 +0100 clutter.modules: Update Cairo and Pixman build/clutter.modules | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 155bde24650eb613824319f7186bd0a0d690932d Author: Damien Lespiau Date: Tue Oct 5 08:35:19 2010 +0100 texture: Fix the typos in the blurbs and make them not end with '.' All the nifty things you discover when translating strings not exposed to anyone. First the clutter-wide record of the number of typos in one string. Second, ClutterTexture happened to have the only property blurbs ending with a '.', remove them. clutter/clutter-texture.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) commit 2d56ed637c3c71516498c5a9dc11bf521db37f6f Author: Damien Lespiau Date: Tue Oct 5 08:25:06 2010 +0100 text: Rename the nick of the position property "Cursor Position" the "position" property of ClutterText is really the position of the cursor. Rename the nick accordingly not to confuse it with the position of the actor itself and be consistent with all the other cursor-related properties. clutter/clutter-text.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a13182c740c9d61e897c8f41d958ca31ebbe6797 Author: Damien Lespiau Date: Tue Oct 5 08:03:19 2010 +0100 cogl: Use Cogl (not COGL) consistently If I remember correctly, Robert wants to name Cogl, Cogl (not COGL) so start by having a consistent naming in the code. clutter/clutter-texture.c | 16 ++++++++-------- clutter/cogl/cogl/cogl-debug.c | 8 ++++---- configure.ac | 4 ++-- 3 files changed, 14 insertions(+), 14 deletions(-) commit 24577a053868bfa39c7758dea2173cf090230de2 Author: Damien Lespiau Date: Tue Oct 5 07:44:49 2010 +0100 bin-layer: Fix the property blurbs The descriptions for the 'y-align' and 'x-align' properties talk about a layer and a layer manager. It seems that these properties are the alignement factors relative to the BinLayout, so document them accordingly. clutter/clutter-bin-layout.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 9ae1729f37fde328b738972c39db52673a28999e Author: Damien Lespiau Date: Mon Oct 4 18:35:13 2010 +0100 box-layout: Fix missing spaces in the blurbs of vertical and homogeneous clutter/clutter-box-layout.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 9258f9bebb33bd7677f11872fa2c928296399832 Author: Damien Lespiau Date: Mon Oct 4 17:20:30 2010 +0100 deform-effect: Fix Horiontal/Horizontal typo clutter/clutter-deform-effect.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit cd7df1b42133cef69de123986f336767f7a14978 Author: Emmanuele Bassi Date: Mon Oct 4 15:47:53 2010 +0100 build: Fix the release-message target Generate the SHA256 checksum file during release-upload and then copy it to the build directory. build/autotools/Makefile.am.release | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit 75e016ac20528c9fded515a620962cae1d96e5f6 Author: Andika Triwidada Date: Mon Oct 4 15:43:54 2010 +0100 po: Add Indonesian localization po/id.po | 2041 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2041 insertions(+) commit c32c25e4576ef125d83ad74d3ac6c3ae90d098ab Author: Piotr Drąg Date: Mon Oct 4 15:43:16 2010 +0100 po: Update Polish localization po/pl.po | 708 ++++++++++++++++++++++++++++++++------------------------------ 1 file changed, 365 insertions(+), 343 deletions(-) commit 55121d0f35a8f713973254a4a56ef6cdf79f0ea9 Author: Emmanuele Bassi Date: Mon Oct 4 15:20:44 2010 +0100 Post-release version bump to 1.5.3 configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ca5188edbf962e065dd80726a4a4e92ccc8cfacf Author: Emmanuele Bassi Date: Mon Oct 4 14:53:55 2010 +0100 Release Clutter 1.5.2 (snapshot) NEWS | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 2 +- 2 files changed, 53 insertions(+), 1 deletion(-) commit 6af0ee2cbe2d6584b523809f160f56daf16eb583 Author: Emmanuele Bassi Date: Mon Oct 4 14:12:21 2010 +0100 cogl-x11: Trap glXDestroyPixmap() There are ordering issues in the pixmap destruction with current and past X11 server, Mesa and dri2. Under some circumstances, an X pixmap might be destroyed with the GLX pixmap still referencing it, and thus the X server will decide to destroy the GLX pixmap as well; then, when Cogl tries to destroy the GLX pixmap, it gets BadDrawable errors. Clutter 1.2 used to trap + sync all calls to glXDestroyPixmap(), but then we assumed that the ordering issue had been solved. So, we're back to square 1. I left a Big Fat Comment™ right above the glXDestroyPixmap() call referencing the bug and the reasoning behind the trap, so that we don't go and remove it in the future without checking that the issue has been in fact solved. http://bugzilla.clutter-project.org/show_bug.cgi?id=2324 clutter/cogl/cogl/winsys/cogl-texture-pixmap-x11.c | 22 ++++++++++++++++++++ 1 file changed, 22 insertions(+) commit f5aeabadd5faf699ab04ec24d6db12297ee6ee30 Author: Alejandro Piñeiro Date: Mon Oct 4 02:17:40 2010 +0200 Fixing cally.pc.in and moving include headers to previous directory After commit 8dd8fbdb some errors appear if you try work directly against cally: * cally.pc.in removed some elements. After install clutter, doing pkg-config --cflags cally-1.0 fails due missing winsys * cally headers were moved from clutter-1.0/cally to clutter-1.0/clutter/cally. Applications using it (yes I know, nobody is officially using it) would require to: * Change their include. * Add directly a dependency to cally, in order to use the cally.pc file with the correct directory include. Note: Take into account that accessibility support still works (ie: clutter_get_accessibility_enabled). This bug only prevents applications to work directly against cally (ie: create a CallyActor subclass) http://bugzilla.clutter-project.org/show_bug.cgi?id=2353 Signed-off-by: Emmanuele Bassi clutter/Makefile.am | 5 +++-- clutter/cally/cally.pc.in | 6 ++++++ 2 files changed, 9 insertions(+), 2 deletions(-) commit d3b6dd5ec7dda1557b2f5e5f14d3a73c02781683 Author: Emmanuele Bassi Date: Mon Oct 4 11:30:32 2010 +0100 effect: Fix up the class ABI Landing the paint-box branch accidentally added two slots to the ClutterEffectClass vtable, plus the get_paint_volume() function pointer. This is an ABI break from 1.4. clutter/clutter-effect.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) commit e1a1050a39a607aee4c97c4558c0a637136f6b52 Author: Emmanuele Bassi Date: Mon Oct 4 11:27:16 2010 +0100 actor-box: Constify arguments for union The input arguments for clutter_actor_box_union() should be constified, since they will not be modified by the function. clutter/clutter-actor.c | 14 +++++++------- clutter/clutter-types.h | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) commit 45b6d7d47a943faad8d82e0b196be058a1c45193 Author: Emmanuele Bassi Date: Mon Oct 4 11:26:46 2010 +0100 docs: Fix the annotations of ActorClass clutter/clutter-actor.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit bdb24701f04cec42d388fe415aba16b29c2678e5 Author: Emmanuele Bassi Date: Mon Oct 4 10:52:36 2010 +0100 build: Add -xobjective-c to the fruity backend section Like we do for the Quartz backend, we should turn on the -xobjective-c compiler flag for the Fruity backend. This does not mean that the backend actually works. clutter/Makefile.am | 5 +++++ 1 file changed, 5 insertions(+) commit db5e33d4a547862c772e93efbfd041baaebd6423 Author: Emmanuele Bassi Date: Mon Oct 4 10:44:00 2010 +0100 docs: Remove TODO Clutter has long since moved all the RFE and roadmap tracking to Bugzilla. The TODO is just a relic of an ancient past, where men were real men, women were real women, and fuzzy little creatures from Alpha Centauri were fuzzy little creatures from Alpha Centauri. TODO | 7 ------- 1 file changed, 7 deletions(-) commit 0cf2f50ba60d9268f162da89a19f2387b1d6e9cb Author: Emmanuele Bassi Date: Mon Oct 4 09:09:13 2010 +0100 build: Remove redundant EXTRA_DISTs The files for the backend that we conditionally compile are automatically added to the dist process by automake. clutter/Makefile.am | 37 ++----------------------------------- 1 file changed, 2 insertions(+), 35 deletions(-) commit 7728ea951b0675ef3f97c160f212eb9ae72ce45e Author: Emmanuele Bassi Date: Mon Oct 4 09:08:07 2010 +0100 docs: Add unused symbols to the Clutter API reference doc/reference/clutter/clutter-sections.txt | 5 +++++ 1 file changed, 5 insertions(+) commit a29623e8388c949b0c18853ce8c9f0e494a4317d Author: Emmanuele Bassi Date: Mon Oct 4 08:57:29 2010 +0100 build: Unconditionally add GLES2 shaders to EXTRA_DIST clutter/cogl/cogl/Makefile.am | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit ba09e9c6df28bbd57a400de3d6acbe14fd53b7f6 Author: Emmanuele Bassi Date: Sun Oct 3 17:21:10 2010 +0100 build: Generate a stub announcement email when releasing build/autotools/Makefile.am.release | 42 +++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) commit df5702e463769c53a8badf725d158fe4ed94c76e Author: Emmanuele Bassi Date: Sun Oct 3 16:37:41 2010 +0100 docs: Update the RELEASING checklist doc/RELEASING | 60 +++++++++++++++++++++++++++++++-------------------------- 1 file changed, 33 insertions(+), 27 deletions(-) commit 2ed2b7eb83aeb813a8d3d734dd870bf739ef345a Author: Emmanuele Bassi Date: Sun Oct 3 16:13:02 2010 +0100 build: Only generate bzip2 tarballs Don't generate both bz2 and gz tarballs: we only use the former anyway, and the latter just adds time for distcheck to complete. The gz tarball will be generated by the remote installation scripts when publishing the release. configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 939333b4f2dcd5fd7045af7c57db4e21de06d57b Author: Emmanuele Bassi Date: Sun Oct 3 16:10:44 2010 +0100 build: Dist every backend file All backend files should be present in the tarball generated by `make dist`, to allow building Clutter on different platforms. clutter/Makefile.am | 150 ++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 118 insertions(+), 32 deletions(-) commit 6df136ae7cadea1df48d531af0730bf3867f3463 Author: Emmanuele Bassi Date: Sun Oct 3 15:28:14 2010 +0100 container: Do not emit a signal in the class handler Yes, I am that stupid. clutter/clutter-container.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) commit e8d3ab4fd3d85b31230be4a59463338438c5621a Author: Emmanuele Bassi Date: Sun Oct 3 15:16:41 2010 +0100 introspection: Skip Script.connect_signals_full() It's meant to be used by language bindings, not by applications. clutter/clutter-script.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 19b93a94aef1700c83edb9e555f1507fcee2f249 Author: Emmanuele Bassi Date: Sun Oct 3 15:12:01 2010 +0100 container: Fix the marshaller for ::child-notify The marshaller was defined as OBJECT,OBJECT,PARAM but the signal definition used only two arguments. Since the signal never worked and we never got any report about it, nobody could be possibly using the ::child-notify signal. clutter/clutter-container.c | 2 +- clutter/clutter-marshal.list | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 96db215ed3bb79915bfb5b9e037d116c83876a8d Author: Emmanuele Bassi Date: Sun Oct 3 14:53:14 2010 +0100 build: Automate the release process Makefile.am | 12 ++++--- build/autotools/Makefile.am | 1 + build/autotools/Makefile.am.release | 68 +++++++++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 4 deletions(-) commit 87bb089b572071632f3b8c2a63756a07e5d5a73a Author: Emmanuele Bassi Date: Sun Oct 3 11:02:56 2010 +0100 docs: Update the coding style Resynchronize with gtk+'s coding style document, since they switched to ours. doc/CODING_STYLE | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) commit c4668f04f745f30657379727424137b62d44248d Author: Aron Xu Date: Thu Sep 30 15:20:05 2010 +0800 Update zh_CN translation. Signed-off-by: Aron Xu Signed-off-by: Emmanuele Bassi po/zh_CN.po | 290 +++++++++++++++++++++++++++++------------------------------ 1 file changed, 143 insertions(+), 147 deletions(-) commit 7ac84cf7a3695aa495ca28dbf172c8f4f6e48780 Author: Emmanuele Bassi Date: Thu Sep 30 14:58:23 2010 +0100 container: Add child_notify() wrapper The child_notify() virtual function on ClutterContainer does not have a wrapper for implementations to call. clutter/clutter-container.c | 28 ++++++++++++++++++++++++++++ clutter/clutter-container.h | 3 +++ doc/reference/clutter/clutter-sections.txt | 1 + 3 files changed, 32 insertions(+) commit fc344fb93a153f91ea4bafd9fe25dd88d27e8082 Author: Emmanuele Bassi Date: Thu Sep 30 13:11:05 2010 +0100 container: Implement ::child-notify Since we added child properties to the Container interface we made a guarantee that the ::child-notify signal would be emitted whenever a property was set using clutter_container_child_set*(). We were lying. The child_notify virtual function was not implemented, and the signal was never emitted. We also used a G_LIKELY() macro while checking for non-NULL on a function pointer that was by default set to NULL, thus making the setting of child properties far less efficient than needed. clutter/clutter-container.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) commit 18ff73c24471694eb951c7192f15528b594f09b5 Author: Emmanuele Bassi Date: Thu Sep 30 12:43:10 2010 +0100 build: Add more metadata to the introspection files clutter/Makefile.am | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) commit 6a95457b3f0927ec0adaebc9c91499f28ef804a0 Author: Emmanuele Bassi Date: Thu Sep 30 12:32:08 2010 +0100 cookbook: Remove unused variable from the animator example doc/cookbook/examples/animations-moving-animator.c | 1 - 1 file changed, 1 deletion(-) commit fde6efc690e6378eb1999267e5b15dc7c8accd43 Author: Emmanuele Bassi Date: Thu Sep 30 12:31:28 2010 +0100 build: Make Cally.gir depend on Cogl.gir Since Cally's introspection data depends on it. clutter/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c202156794289d210ed4bdf9c9fe6d522685fafd Merge: 077a5b4 cb191ff Author: Emmanuele Bassi Date: Thu Sep 30 12:24:32 2010 +0100 Merge remote branch 'elliot/events-buttons' * elliot/events-buttons: cookbook: Add recipe about handling button events cookbook: Example of using button press and release events cookbook: Example of ClutterClickAction cookbook: Example of simple handling of button events commit 077a5b4c34d7b52d8831ccce4c572c7dcae04a6e Author: Colin Walters Date: Wed Sep 29 13:18:03 2010 -0400 introspection: Update to changed variables for header file names Signed-off-by: Emmanuele Bassi clutter/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 32d647ddd15ebddf91aa15b092fdcdf14d31ec4f Author: Ray Strode Date: Wed Sep 29 18:43:30 2010 -0400 actor: sync entry has_clip member to clip state The clutter stage has a list of entries of actors waiting to be redrawn. Each entry has a "clip" ClutterPaintVolume member which represents which how much of the actor needs to get redrawn. It's possible for there to be no clip associated with the entry. In this case, the clip member is invalid, the has_clip member should be set to false. This commit fixes a bug where the has_clip member was not being initially, explicitly set to false for new entries, and not being explicitly set to false in the event the clip associated with the entry is freed. http://bugzilla.clutter-project.org/show_bug.cgi?id=2350 Signed-off-by: Robert Bragg clutter/clutter-stage.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit fba633529148e65b9e136ea082fa7f853b789d96 Author: Robert Bragg Date: Thu Sep 30 11:18:23 2010 +0100 actor: don't ignore clip for clipped redraws In all the changes made recently to how we handle redraws and adding support for paint-volumes we stopped looking at explicit clip regions passed to _clutter_actor_queue_redraw_with_clip. In _clutter_actor_finish_queue_redraw we had started always trying to clip the redraw to the paint-volume of the actor, but forgot to consider that the user may have already determined the clip region for us! Now we first check if the given clip != NUll and if so we don't need to calculate the paint-volume of the actor. http://bugzilla.clutter-project.org/show_bug.cgi?id=2349 clutter/clutter-actor.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) commit 471659ed4b2f16749c050701bcdc911405e9e018 Author: Robert Bragg Date: Thu Sep 30 02:37:24 2010 +0100 test-pixmap: add timeout to draw arcs on pixmap As a convenient test that clipped redraws are working correctly in response to X pixmap damage this updates test-pixmap to have a repeating 1 second timeout that draws arcs on the pixmap. tests/interactive/test-pixmap.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) commit 18e3273fb1e3ba231d370294f13f180b5df68158 Author: Robert Bragg Date: Thu Sep 30 02:00:24 2010 +0100 x11-tfp: Implement get_paint_volume virtual One of the later changes made on the paint volume branch before merging with master was to make paint volumes opt in only since we couldn't make any safe assumptions about how custom actors may constrain their painting. We added very conservative implementations for the existing Clutter actors - including for ClutterTexture which ClutterX11TexturePixmap is a sub-class of - but we were conservative to the extent of explicitly checking the GType of the actor so we would avoid making any assumptions about sub-classes. The upshot was that we neglected to implement the get_paint_volume vfunc for ClutterX11TexturePixmap. This patch provides an implementation that simply reports the actor's allocation as its paint volume. Also unlike for other core actors it doesn't explicitly check the GType so we are assuming that all existing sub-classes of ClutterX11TexturePixmap constrain their drawing to the actor's transformed allocation. If anyone does want to draw outside the allocation in future sub-classes, then they should also provide an updated get_paint_volume implementation. http://bugzilla.clutter-project.org/show_bug.cgi?id=2349 clutter/x11/clutter-x11-texture-pixmap.c | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 83eb5ab88cb31fc85016975055d28165300b9867 Author: Robert Bragg Date: Fri Sep 24 01:01:33 2010 +0100 material: tweak dot file debug code When using the debug function _cogl_debug_dump_materials_dot_file to write a dot file representing the sparse graph of material state we now only show a link between materials and layers when the material directly owns that layer reference (i.e. just those referenced in material->layer_differences) This makes it possible to see when ancestors of a material are being deferred too for layer state. For example when looking at the graph if you see that a material has an n_layers of 3 but there is only a link to 2 layers, then you know you need to look at it's ancestors to find the last layer. clutter/cogl/cogl/cogl-material.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit cb191ff6f18e291810077271f853658c8d679e3d Author: Elliot Smith Date: Thu Sep 30 11:12:14 2010 +0100 cookbook: Add recipe about handling button events Recipe covers adding handlers for button-press-event and button-release-event signals on actors, and how to examine the content of a ClutterButtonEvent via API functions. The discussion section explains about click count (the criteria for how clicks get counted, including distance and time settings); how button numbers are reported; and how to use ClutterClickAction as an alternative for press + release in certain scenarios. doc/cookbook/events.xml | 388 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 388 insertions(+) commit d8a9026b842655d23d839a639540bb134f734d84 Author: Neil Roberts Date: Wed Sep 29 17:04:25 2010 +0100 win32: Fix the CLUTTER_* keysym macros In 4ee05f8e21d the namespace for the clutter keysym macros were changed to CLUTTER_KEY_* but the win32 events backend was still referring to the old names. clutter/win32/clutter-event-win32.c | 110 +++++++++++++++++------------------ 1 file changed, 55 insertions(+), 55 deletions(-) commit 94439e55265d91e0c5419306115d2af02378e75e Author: Elliot Smith Date: Tue Sep 28 16:53:30 2010 +0100 cookbook: Example of using button press and release events A longer example of using button press and release events to draw rectangles with random colors. doc/cookbook/examples/Makefile.am | 2 + doc/cookbook/examples/events-buttons-lasso.c | 154 ++++++++++++++++++++++++++ 2 files changed, 156 insertions(+) commit 0cda6c006b5909da5919c4e3a1492a32895c596c Author: Elliot Smith Date: Tue Sep 28 16:37:26 2010 +0100 cookbook: Example of ClutterClickAction Example of handling clicks on an actor; part of the recipe on handling button events. doc/cookbook/examples/Makefile.am | 2 + doc/cookbook/examples/events-buttons-click.c | 66 ++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) commit fc9ecdf82ed13cf14be9e8fd5fda9787f8972205 Author: Elliot Smith Date: Mon Sep 27 16:36:16 2010 +0100 cookbook: Example of simple handling of button events Added an example showing how to examine the content of a ClutterButtonEvent in a signal handler. doc/cookbook/examples/Makefile.am | 2 + doc/cookbook/examples/events-buttons.c | 107 ++++++++++++++++++++++++++++++++ 2 files changed, 109 insertions(+) commit f753b0c4a15421e984cf3b2fcb1ccce7f0e6a61d Author: Emmanuele Bassi Date: Thu Sep 30 10:29:00 2010 +0100 Wrap g_object_class_install_properties() GObject ≥ 2.26.0 added a nice convenience call for installing properties from an array of GParamSpec. Since we're already storing all GParamSpec in an array in order to use them with g_object_notify_by_pspec(), this turns out nicely for us. Since we do not depend on GLib 2.26 (yet), we need to provide a simple private wrapper that implements the fall back to the default g_object_class_install_property() call. ClutterDragAction has been converted as a proof of concept. clutter/clutter-drag-action.c | 71 ++++++++++++++++++++--------------------- clutter/clutter-private.h | 17 ++++++++++ 2 files changed, 51 insertions(+), 37 deletions(-) commit f090c3ea496b2bf79b2fb0c7ab6a80299c59aed1 Author: Emmanuele Bassi Date: Thu Sep 30 10:27:10 2010 +0100 stage: Add more checks on the stage window retrieval During destruction, the StageWindow implementation associated to a Stage might be NULL. We need to add more checks for a) the IN_DESTRUCTION flag being set and b) the StageWindow pointer being NULL. Otherwise, we will get warnings during the destruction of the Stage. clutter/clutter-stage.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) commit 52c4d6fa0c5f5260de5093967cdd1036e351050c Author: Emmanuele Bassi Date: Wed Sep 29 17:32:57 2010 +0100 build: Use platform detection to add -no-undefined Instead of relying on the flavour passed to the configure script. configure.ac | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) commit 7aaef8abeed4d3903465ac9d8fd0a916d17aab79 Author: Emmanuele Bassi Date: Wed Sep 29 16:46:06 2010 +0100 modules: Use the stable branch of json-glib build/clutter.modules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a278a1f94053372d49fb31f82cac551f186a28f4 Author: Neil Roberts Date: Wed Sep 29 15:40:22 2010 +0100 cogl-texture-2d-sliced: Don't create the slice textures twice Both of the cogl_texture_2d_sliced_new functions called the slices_create function which creates the underlying GL textures. However this was also called by init_base so the textures would end up being created twice. This would make it leak the GL textures and the arrays which point to them. clutter/cogl/cogl/cogl-texture-2d-sliced.c | 18 ------------------ 1 file changed, 18 deletions(-) commit 54f5e168ecd67838d9fae08912e37f47d786f45e Author: Emmanuele Bassi Date: Wed Sep 29 16:05:55 2010 +0100 Bump up dependency of json-glib to 0.12.0 New stable release. README | 2 +- configure.ac | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 66b0c1969c72ad49482befb3136b3e8478b07c58 Author: Emmanuele Bassi Date: Wed Sep 22 12:56:33 2010 +0100 Remove the internal copy of JSON-GLib The internal copy of JSON-GLib was meant to go away right after the 1.0 release, given that JSON-GLib was still young and relatively unknown. Nowadays, many projects started depending on this little library, and distributions ship it and keep it up to date. Keeping a copy of JSON-GLib means keeping it up to date; unfortunately, this would also imply updating the code not just for the API but for the internal implementations. Starting with the 1.2 release, Clutter preferably dependend on the system copy; with the 1.4 release we stopped falling back automatically. The 1.6 cycle finally removes the internal copy and requires a copy of JSON-GLib installed on the target system in order to compile Clutter. README | 15 +- clutter/Makefile.am | 66 +-- clutter/clutter-json.h.in | 11 - clutter/clutter-script-private.h | 3 +- clutter/clutter-script.c | 2 - clutter/clutter-scriptable.h | 2 +- clutter/json/json-array.c | 725 ------------------------ clutter/json/json-generator.c | 646 --------------------- clutter/json/json-generator.h | 83 --- clutter/json/json-glib.h | 12 - clutter/json/json-marshal.c | 130 ----- clutter/json/json-marshal.h | 37 -- clutter/json/json-node.c | 770 ------------------------- clutter/json/json-object.c | 888 ----------------------------- clutter/json/json-parser.c | 1124 ------------------------------------- clutter/json/json-parser.h | 147 ----- clutter/json/json-types-private.h | 61 -- clutter/json/json-types.h | 288 ---------- configure.ac | 90 +-- doc/reference/clutter/Makefile.am | 2 - 20 files changed, 13 insertions(+), 5089 deletions(-) commit e36cc40a49a9f0c2e200a0326451333dbb68b4ac Merge: 0f22e92 8dd8fbd Author: Emmanuele Bassi Date: Wed Sep 29 15:55:58 2010 +0100 Merge branch 'wip/non-recursive' * wip/non-recursive: build: Start moving to a non-recursive layout commit 0f22e922e3d03bfa9e7272aa6d2819748c3913c7 Author: Emmanuele Bassi Date: Wed Sep 29 15:44:51 2010 +0100 modules: Fix up mesa module build/clutter.modules | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit e072d797b1b5cbdc3c448f1e1acdd6adac0c833b Author: Emmanuele Bassi Date: Wed Sep 29 15:23:53 2010 +0100 modules: Add mesa and wayland to the moduleset build/clutter.modules | 13 +++++++++++++ 1 file changed, 13 insertions(+) commit 42f6364cac945e451725fc4aeeccf28ee5019ff3 Author: Robert Bragg Date: Fri Sep 24 02:24:36 2010 +0100 actor: don't dirty pick buffer in _real_queue_redraw Since re-working how redraws are queued it is no longer necessary to dirty the pick buffer in _clutter_actor_real_queue_redraw since this should now reliably be handled in _clutter_stage_queue_actor_redraw. clutter/clutter-actor.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) commit 51fca9d96807b227d00b0bc58e6e5f216024cf91 Author: Robert Bragg Date: Mon Sep 13 00:33:23 2010 +0100 actor: Adds private _clutter_actor_traverse API This adds two internal functions relating to explicit traversal of the scenegraph: _clutter_actor_foreach_child _clutter_actor_traverse _clutter_actor_foreach_child just iterates the immediate children of an actor, and with a new ClutterForeachCallback type it allows the callbacks to break iteration early. _clutter_actor_traverse traverses the given actor and all of its decendants. Again traversal can be stopped early if a callback returns FALSE. The first intended use for _clutter_actor_traverse is to maintain a cache pointer to the stage for all actors. In this case we will need to update the pointer for all descendants of an actor when an actor is reparented in any way. clutter/clutter-actor.c | 64 +++++++++++++++++++++++++++++++++++++++++++++ clutter/clutter-private.h | 32 +++++++++++++++++++++++ 2 files changed, 96 insertions(+) commit 9a1abbc713537b3ef381e8e9ea1a5e910613567e Author: Robert Bragg Date: Sun Sep 12 23:49:02 2010 +0100 actor: Adds private _clutter_actor_get_n_children This adds a private getter to query the number of children an actor has. One use planned for this API is to avoid calling get_paint_volume on such actors. (It's not clear what the best semantics for get_paint_volume are for actors with children, so we are considering leaving the semantics undefined for the initial clutter 1.4 release) clutter/clutter-actor.c | 7 +++++++ clutter/clutter-private.h | 1 + 2 files changed, 8 insertions(+) commit 239d83f952aa077622ca79c390842be271baddcd Author: Robert Bragg Date: Sun Sep 12 23:31:39 2010 +0100 actor: explicitly track children in clutter-actor.c We now explicitly track the list of children each actor has in a private GList. This gives us a reliable way to know how many children an actor has - even for composite actors that don't implement the container interface. This also will allow us to directly traverse the scenegraph in a more generalized fashion. Previously the scenegraph was more-or-less represented implicitly according the implementation of paint methods. clutter/clutter-actor.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) commit b3edd3e922e3a3a2dafc5a7a1c02bb22a5ffec94 Author: Robert Bragg Date: Sat Sep 11 02:48:18 2010 +0100 debug: fix blue outlines for paint-volumes debug opt When using the CLUTTER_PAINT=paint-volumes debug option we try and show when a paint volume couldn't be determined by drawing a blue outline of the allocation instead. There was a typo though and instead we were drawing an outline the size of the stage instead of for the given actor. This fixes that and removes a FIXME comment relating to the blue outline that is now implemented. clutter/clutter-actor.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) commit 1a8d577168ef48a9fcef21415b44b2b8c2f9a26c Author: Robert Bragg Date: Sat Sep 11 02:39:23 2010 +0100 clone: Implement get_paint_volume virtual To allow Clutter to queue clipped redraws when a clone actor changes we need to be able to report a paint volume for clone actors. This patch makes ClutterClones query the paint volume of their source actor and masquerade it as their own volume. clutter/clutter-clone.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) commit f6ba69f82dba0fdb46998c93929f3c68ebf11cb1 Author: Robert Bragg Date: Fri Sep 10 02:18:16 2010 +0100 Revert "actor: don't immediately queue redraw when queuing relayout" This reverts commit ca44c6a7d8abe9f2c548bee817559ea8adaa7a80. In reality there are probably lots of actors that depend on the exact semantics as they are documented so this change isn't really acceptable. For example when the font changes in ClutterText we only queue a relayout, and since it's possible that the font will have the same size and the actor won't get a new allocation it wouldn't otherwise queue a redraw. Since queue_redraw requests now get deferred until just before a paint run it is actually no longer a problem to queue the redraw here. clutter/clutter-actor.c | 20 -------------------- 1 file changed, 20 deletions(-) commit 3b789490d2cee54652d65950a71fe55736c6a433 Author: Robert Bragg Date: Fri Sep 10 01:33:02 2010 +0100 actor: defer queue-redraw signaling Instead of immediately, recursively emitting the "queue-redraw" signal when clutter_actor_queue_redraw is called we now defer this process until all stage updates are complete. This allows us to aggregate repeated _queue_redraw requests for the same actor avoiding redundant paint volume transformations. By deferring we also increase the likelihood that the actor will have a valid paint volume since it will have an up to date allocation; this in turn means we will more often be able to automatically queue clipped redraws which can have a big impact on performance. Here's an outline of the actor queue redraw mechanism: The process starts in clutter_actor_queue_redraw or _clutter_actor_queue_redraw_with_clip. These functions queue an entry in a list associated with the stage which is a list of actors that queued a redraw while updating the timelines, performing layouting and processing other mainloop sources before the next paint starts. We aim to minimize the processing done at this point because there is a good chance other events will happen while updating the scenegraph that would invalidate any expensive work we might otherwise try to do here. For example we don't try and resolve the screen space bounding box of an actor at this stage so as to minimize how much of the screen redraw because it's possible something else will happen which will force a full redraw anyway. When all updates are complete and we come to paint the stage (see _clutter_stage_do_update) then we iterate this list and actually emit the "queue-redraw" signals for each of the listed actors which will bubble up to the stage for each actor and at that point we will transform the actors paint volume into screen coordinates to determine the clip region for what needs to be redrawn in the next paint. Note: actors are allowed to queue a redraw in reseponse to a queue-redraw signal so we repeat the processing of the list until it remains empty. An example of when this happens is for Clone actors or clutter_texture_new_from_actor actors which need to queue a redraw if their source queues a redraw. clutter/clutter-actor.c | 223 +++++++++++++++++++++++++++++++-------------- clutter/clutter-private.h | 21 ++++- clutter/clutter-stage.c | 173 ++++++++++++++++++++++++++++++----- 3 files changed, 320 insertions(+), 97 deletions(-) commit 7d8effd5e26495dc3e01ba741a0389364183fc5f Author: Robert Bragg Date: Thu Sep 9 18:51:17 2010 +0100 paint_volume: add private api to change reference actor For Clone actors we will need a way to report the volume of the source actor as the volume of the clone actor. To make this work though we need to be able to replace the reference to the source actor with a reference to the clone actor instead. This adds a private _clutter_paint_volume_set_reference_actor function to do that. clutter/clutter-paint-volume.c | 15 +++++++++++++++ clutter/clutter-private.h | 38 ++++++++++++++++++++------------------ 2 files changed, 35 insertions(+), 18 deletions(-) commit 2d895816be659a86d999748ecf631422b9e9176f Author: Robert Bragg Date: Thu Sep 9 17:53:29 2010 +0100 paint_volume: Adds _clutter_paint_volume_set_from_volume This adds a way to initialize a paint volume from another source paint volume. This lets us for instance pass the contents of one paint volume back through the out param of a get_paint_volume implementation. clutter/clutter-paint-volume.c | 12 ++++++++++++ clutter/clutter-private.h | 3 +++ 2 files changed, 15 insertions(+) commit bfacca30119ed51517bac39c362a927ef39291ec Author: Robert Bragg Date: Thu Sep 9 14:30:38 2010 +0100 actor: don't queue_redraw actors not descended from stage This makes clutter_actor_queue_redraw simply bail out early if the actor isn't a descendant of a ClutterStage since the request isn't meaningful and it avoids a crash when trying to queue a clipped redraw against the stage to clear the actors old location. clutter/clutter-actor.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit b77d9a6d2c0cc02519c79efe9dd4c8c184f73b36 Author: Emmanuele Bassi Date: Thu Sep 9 13:11:11 2010 +0100 paint-volume: Add convenience function for using an allocation Classes overriding ClutterActor::get_paint_volume() that wish to use their allocation as the paint volume should have an idiomatic way of doing so. clutter/clutter-paint-volume.c | 37 +++++++++++++++++++++++++++++++++++++ clutter/clutter-types.h | 39 +++++++++++++++++++++------------------ 2 files changed, 58 insertions(+), 18 deletions(-) commit 5640a65046e5fbf5b7283315b457e39331fa028b Author: Emmanuele Bassi Date: Thu Sep 9 12:38:25 2010 +0100 text: Update get_paint_volume() implementation In commit 9818eee4646e49e99beb5a43f1dafcbdcca41f94 I forgot to update ClutterText as well as the other actors. clutter/clutter-text.c | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) commit 16f7ee13f2efb545d7cfd33774f42bab92f0e1e6 Author: Emmanuele Bassi Date: Thu Sep 9 12:30:29 2010 +0100 Move default paint volume computation into a function This should reduce the amount of copy and paste for actor sub-classes that use the default paint volume from the allocation. clutter/clutter-cairo-texture.c | 24 ++++---------------- clutter/clutter-paint-volume.c | 46 +++++++++++++++++++++++++++++++++++++++ clutter/clutter-private.h | 4 ++++ clutter/clutter-rectangle.c | 24 ++++---------------- clutter/clutter-texture.c | 24 ++++---------------- 5 files changed, 62 insertions(+), 60 deletions(-) commit fd41024d29f093afe2fe1f0292c7ec5965ba5801 Author: Robert Bragg Date: Wed Sep 8 21:01:37 2010 +0100 paint_volume: assert non-NULL pv in _volume_copy Instead of carefully checking if the user passes NULL to clutter_paint_volume_copy we now simply use g_return_val_if_fail. clutter/clutter-paint-volume.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) commit 3040b140bce59ac2e70de325e0afa98ec8fa7ce7 Author: Robert Bragg Date: Wed Sep 8 20:39:15 2010 +0100 paint_volume: Splits out clutter_paint_volume code This splits out all the clutter_paint_volume code from clutter-actor.c into clutter-paint-volume.c. Since clutter-actor.c and clutter-paint-volume.c both needed the functionality of _fully_transform_vertices, this function has now been moved to clutter-utils.c as _clutter_util_fully_transform_vertices. clutter/Makefile.am | 1 + clutter/clutter-actor.c | 838 +--------------------------------------- clutter/clutter-paint-volume.c | 817 +++++++++++++++++++++++++++++++++++++++ clutter/clutter-private.h | 14 +- clutter/clutter-util.c | 45 +++ 5 files changed, 882 insertions(+), 833 deletions(-) commit 72eeb8e809492524dc146cb92e0b4e3a5347f628 Author: Robert Bragg Date: Wed Sep 8 19:47:11 2010 +0100 actor: make default get_paint_volume more conservative There are too many examples where the default assumption that an actor paints inside its allocation isn't true, so we now return FALSE in the base implementation instead. This means that by default we are saying "we don't know the paint volume of the actor", so developers need to implement the get_paint_volume virtual to take advantage of culling and clipped redraws with their actors. This patch provides very conservative get_paint_volume implementations for ClutterTexture, ClutterCairoTexture, ClutterRectangle and ClutterText which all explicitly check the actor's object type to avoid making any assumptions about subclasses. clutter/clutter-actor.c | 14 +------------- clutter/clutter-cairo-texture.c | 28 ++++++++++++++++++++++++++++ clutter/clutter-rectangle.c | 28 +++++++++++++++++++++++++++- clutter/clutter-text.c | 26 ++++++++++++++++++++++++++ clutter/clutter-texture.c | 34 ++++++++++++++++++++++++++++++---- 5 files changed, 112 insertions(+), 18 deletions(-) commit d9a7f1b03b8527becd0251e51b8abacd710a1f8d Author: Robert Bragg Date: Wed Sep 8 18:20:54 2010 +0100 actor: don't always check needs_allocation for clipped redraw We were always explicitly checking priv->needs_allocation in _clutter_actor_queue_redraw_with_clip, but we only need to do that if the CLUTTER_REDRAW_CLIPPED_TO_ALLOCATION flag is used. clutter/clutter-actor.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) commit 072595a1bfe084e00e7bc6f7cc074c89a9914ce6 Author: Robert Bragg Date: Wed Sep 8 18:17:27 2010 +0100 actor: new actors should start with an empty paint box This initializes priv->last_paint_box with a degenerate box, so a newly allocated actor added to the scenegraph and made visible only needs to trigger a redraw of its initial position. If we don't have a valid last_paint_box though we would instead trigger a full stage redraw. clutter/clutter-actor.c | 7 +++++++ 1 file changed, 7 insertions(+) commit c2ea35b5cab98a5c2eca305b5199c7d3b44be70c Author: Robert Bragg Date: Wed Sep 8 18:14:04 2010 +0100 actor: when culling/clipped redraws disable ignore paint box To make comparing the performance with culling/clipped redraws enabled/disabled fairer we now avoid querying the paint box when they are disabled, so that results should reflect how the cost of transforming paint volumes into screen space etc gets offset against the benefit of culling. clutter/clutter-actor.c | 76 +++++++++++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 32 deletions(-) commit 5d1600d6036941885a6ad2a4372f35678696d549 Author: Robert Bragg Date: Wed Sep 8 11:32:29 2010 +0100 stage: only update viewport when allocation changes In clutter_stage_allocate at the end we were always querying the latest allocation set and using the geometry to assert the viewport and then kicking a full redraw. These only need to be done when the allocation really changes, so we now read the previous allocation at the start of the function and compare at the end. This was stopping clipped redraws from being used in a lot of cases. clutter/clutter-stage.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) commit 1e7f22db3b7cdf9c8154ec7c3ae7cb9b83ac0655 Author: Robert Bragg Date: Wed Sep 8 01:18:30 2010 +0100 glx: queue full redraws for the first 2 frames To consider that we've see a number of drivers that can struggle to get going and may produce a bad first frame we now force the first 2 frames to be full redraws. This became a serious issue after we started using clipped redraws more aggressively because we assumed that after the first frame the full framebuffer was valid and we only redraw the content that changes. With buggy drivers though, applications would be left with junk covering a lot of the stage until some event triggered a full redraw. clutter/glx/clutter-stage-glx.c | 5 +++++ clutter/glx/clutter-stage-glx.h | 5 +++++ 2 files changed, 10 insertions(+) commit 771348b3696b9f9a0f7de41d9b71abee6309f07b Author: Robert Bragg Date: Wed Sep 8 01:15:00 2010 +0100 x11: minimize nasty artefacts when resizing windows This is a workaround for a race condition when resizing windows while there are in-flight glXCopySubBuffer blits happening. The problem stems from the fact that rectangles for the blits are described relative to the bottom left of the window and because we can't guarantee control over the X window gravity used when resizing so the gravity is typically NorthWest not SouthWest. This means if you grow a window vertically the server will make sure to place the old contents of the window at the top-left/north-west of your new larger window, but that may happen asynchronous to GLX preparing to do a blit specified relative to the bottom-left/south-west of the window (based on the old smaller window geometry). When the GLX issued blit finally happens relative to the new bottom of your window, the destination will have shifted relative to the top-left where all the pixels you care about are so it will result in a nasty artefact making resizing look very ugly! We can't currently fix this completely, in-part because the window manager tends to trample any gravity we might set. This workaround instead simply disables blits for a while if we are notified of any resizes happening so if the user is resizing a window via the window manager then they may see an artefact for one frame but then we will fallback to redrawing the full stage until the cooling off period is over. clutter/glx/clutter-stage-glx.c | 6 ++++- clutter/x11/clutter-event-x11.c | 47 +++++++++++++++++++++++++++++++++++++++ clutter/x11/clutter-stage-x11.h | 2 ++ 3 files changed, 54 insertions(+), 1 deletion(-) commit 012e4ab153337cb973a623d6b03c274231ef68b5 Author: Robert Bragg Date: Wed Sep 8 01:03:15 2010 +0100 x11: Queue clipped redraws for Expose events Instead of triggering a full stage redraw for Expose events we use the geometry of the exposed region given in the event to queue a clipped redraw of the stage. clutter/x11/clutter-event-x11.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) commit 105451d1bea329edff85a5727f0bc4fd3b8e5504 Author: Robert Bragg Date: Tue Sep 7 23:35:26 2010 +0100 cogl: removes unused _cogl_setup_viewport Clutter has now taken responsibility for managing its viewport, projection matrix and view transform as part of ClutterStage so _cogl_setup_viewport is no longer used by anything, and since it's quite an obscure API anyway it's we've taken the opportunity to remove the function. clutter/cogl/cogl/cogl.c | 74 ---------------------------------------------- clutter/cogl/cogl/cogl.h | 26 ---------------- 2 files changed, 100 deletions(-) commit 95ff71d01c44b1d93fdecadb8f233cd05d051d9f Author: Robert Bragg Date: Tue Sep 7 23:25:18 2010 +0100 stage: Sometimes really force a full redraw Since clutter_actor_queue_redraw now automatically clips redraws according to the paint volume of the actor we have to be careful to ensure we really force a full redraw when the stage is allocated a new size or the stage viewport changes. clutter/clutter-stage.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) commit 2235e705859a880415da4d57c76596cef0b9026f Author: Robert Bragg Date: Tue Sep 7 23:09:06 2010 +0100 actor: don't immediately queue redraw when queuing relayout We have bent the originally documented semantics a bit so now where we say "Queueing a new layout automatically queues a redraw as well" it might be clearer to say "Queuing a new layout implicitly queues a redraw as well if anything in the layout changes". This should be close enough to the original semantics to not cause any problems. Without this change then we we fail to take advantage of clipped redraws in a lot of cases because queuing a redraw with priv->needs_allocation == TRUE will automatically be promoted to a full stage redraw since it's not possible to determine a valid paint-volume. Also queuing a redraw here will end up registering a redundant clipped redraw for the current location, doing quite a lot of redundant transforms, and then later when re-allocated during layouting another queue redraw would happen with the correct paint-volume. clutter/clutter-actor.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) commit b499696d83c4f37b1513929ea62323abbaaa5940 Author: Robert Bragg Date: Tue Sep 7 22:21:28 2010 +0100 Use paint volumes to do automatic culling This uses actor paint volumes to perform culling during clutter_actor_paint. When performing a clipped redraw (because only a few localized actors changed) then as we traverse the scenegraph painting the actors we can now ignore actors that don't intersect the clip region. Early testing shows this can have a big performance benefit; e.g. 100% fps improvement for test-state with culling enabled and we hope that there are even much more compelling examples than that in the real world, Most Clutter applications are 2Dish interfaces and have quite a lot of actors that get continuously painted when anything is animated. The dynamic actors are often localized to an area of user focus though so with culling we can completely avoid painting any of the static actors outside the current clip region. Obviously the cost of culling has to be offset against the cost of painting to determine if it's a win, but our (limited) testing suggests it should be a win for most applications. Note: we hope we will be able to also bring another performance bump from culling with another iteration - hopefully in the 1.6 cycle - to avoid doing the culling in screen space and instead do it in the stage's model space. This will hopefully let us minimize the cost of transforming the actor volumes for culling. clutter/clutter-actor.c | 53 ++++++++++++++++++++++++++++++- clutter/clutter-debug.h | 3 +- clutter/clutter-main.c | 3 +- clutter/clutter-private.h | 6 +++- clutter/clutter-stage.c | 20 +++++++++++- clutter/egl/clutter-stage-egl.c | 2 +- clutter/fruity/clutter-backend-fruity.c | 2 +- clutter/glx/clutter-stage-glx.c | 4 +-- clutter/osx/clutter-stage-osx.c | 2 +- clutter/win32/clutter-backend-win32.c | 2 +- 10 files changed, 86 insertions(+), 11 deletions(-) commit ef8be9e25ebe77fc63055191cc48af53d731c108 Author: Robert Bragg Date: Tue Sep 7 22:11:28 2010 +0100 actor: Use paint volumes to always queue clipped redraws This makes clutter_actor_queue_redraw transparently use an actor's paint volume to queue a clipped redraw. We save the actors paint box each time it is painted so that when clutter_actor_queue_redraw is called we can determine the old and new location of the actor so we know the full bounds of what must be redrawn to clear its old view and show the new. clutter/clutter-actor.c | 75 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) commit 13c4d7b95d4a9068322cf1d2b292d4bc98bbecfd Author: Robert Bragg Date: Tue Sep 7 21:43:50 2010 +0100 actor: make _transform_and_project_box static This makes _clutter_actor_transform_and_project_box a static function and removes the prototype from clutter-private.h since it is no longer used outside clutter-actor.c clutter/clutter-actor.c | 2 +- clutter/clutter-private.h | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) commit 120d7595e3128a233c1fdffd762327b5b74a54d1 Author: Robert Bragg Date: Tue Sep 7 21:47:01 2010 +0100 actor: _real_queue_relayout shouldn't queue redraw The base implementation for the actor queue_relayout method was queuing an implicit redraw, but there shouldn't be anything implied from the mere process of queuing a redraw that should force us to queue a redraw. If actors are moved as a part of relayouting later then they will queue a redraw. Also clutter_actor_queue_relayout() still also explicitly queues a redraw so I think this may have been doubly redundant. clutter/clutter-actor.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) commit dc976922714ab74f37c69a9ea109ad4e145fce92 Author: Robert Bragg Date: Tue Sep 7 21:56:33 2010 +0100 actor: re-allocation implies need to redraw If clutter_actor_allocate finds it necessary to update an actors allocation then it now also queue a redraw of that actor. Currently we queue redraws for actors very early on when queuing a relayout instead of waiting to determine the final outcome of relayouting to determine if a redraw is really required. With this in place we can move away from preemptive queuing of redraws. clutter/clutter-actor.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) commit 267e458a433b819f98ca47557c0a899d8c4dd357 Author: Robert Bragg Date: Tue Sep 7 20:29:01 2010 +0100 actor: separate the queue redraw code clutter_actor_queue_relayout currently queues a relayout and a redraw, but the plan is to change it to only queue a relayout and honour the documentation by assuming that the process of relayouting will result queuing redraws for any actors whos allocation changes. This doesn't make that change it just adds an internal _clutter_actor_queue_only_relayout function which clutter_actor_queue_relayout now uses as well as calling clutter_actor_queue_redraw. clutter/clutter-actor.c | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) commit 6d5f6449ddeb47a9bb814f675843d12ae9f7882e Author: Robert Bragg Date: Tue Sep 7 20:08:00 2010 +0100 stage: make it possible to queue a relayout only This adds a private ->relayout_pending boolean similar in spirit to redraw_pending. This will allow us to queue a relayout without implicitly queueing a redraw; instead we can depend on the actions of a relayout to queue any necessary redraw. clutter/clutter-main.c | 44 ------------------------- clutter/clutter-stage.c | 82 +++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 73 insertions(+), 53 deletions(-) commit f8a6e36f1bd1989eaabca81db14dd8bad879fba7 Author: Robert Bragg Date: Tue Sep 7 19:40:28 2010 +0100 texture: Forward queue redraw/relayout for fbos When clutter_texture_new_from_actor is use we need to track when the source actor queues a redraw or a relayout so we can also queue a redraw or relayout for the texture actor. clutter/clutter-texture.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) commit 1ea7145efc46e246610a0db70cb71c57cdf55e2b Author: Robert Bragg Date: Tue Sep 7 19:31:27 2010 +0100 Queue clipped redraws work in terms of paint volumes There is an internal _clutter_actor_queue_redraw_with_clip API that gets used for texture-from-pixmap to minimize what we redraw in response to Damage events. It was previously working in terms of a ClutterActorBox but it has now been changed so an actor can queue a redraw of volume instead. The plan is that clutter_actor_queue_redraw will start to transparently use _clutter_actor_queue_redraw_with_clip when it can determine a paint volume for the actor. clutter/clutter-actor.c | 78 ++++++++++++++++++++---------- clutter/clutter-actor.h | 19 -------- clutter/clutter-private.h | 23 +++++++-- clutter/clutter-stage.c | 57 +++++++++++----------- clutter/x11/clutter-x11-texture-pixmap.c | 20 +++++--- 5 files changed, 115 insertions(+), 82 deletions(-) commit f3bffe5cab61efceaaadc5ba81129860b7b5c1a6 Author: Robert Bragg Date: Tue Sep 7 19:07:19 2010 +0100 blur-effect: fix paint volume padding For the blur effect we use a BLUR_PADDING constant to pad out the volume of the source actor on the x and y axis. Previously we were offsetting the origin negatively using BLUR_PADDING and then adding BLUR_PADDING to the width and height, but we should have been adding 2*BLUR_PADDING instead. clutter/clutter-blur-effect.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit f60703cb1da1158c7d263210ca198203293b9576 Author: Robert Bragg Date: Tue Sep 7 23:07:52 2010 +0100 debug: CLUTTER_DEBUG_REDRAWS: disable clipped redraws This ensures that clipped redraws are disabled when using CLUTTER_PAINT=redraws. This may seem unintuitive given that this option is for debugging clipped redraws, but we can't draw an outline outside the clip region and anything we draw inside the clip region is liable to leave a trailing mess on the screen since it won't be cleared up by later clipped redraws. clutter/clutter-main.c | 7 +++ clutter/glx/clutter-stage-glx.c | 105 +++++++++++++++++++++++---------------- 2 files changed, 68 insertions(+), 44 deletions(-) commit 066220f983d4e27020c9b5340aa7d7bfaace9928 Author: Robert Bragg Date: Tue Sep 7 18:50:29 2010 +0100 paint volumes: CLUTTER_PAINT=paint-volumes debug option This adds a debug option to visualize the paint volumes of all actors. When CLUTTER_PAINT=paint-volumes is exported in the environment before running a Clutter application then all actors will have their bounding volume drawn in green with a label corresponding to the actors type. clutter/clutter-actor.c | 96 +++++++++++++++++++++++++++++++++++++++++++++++ clutter/clutter-debug.h | 3 +- clutter/clutter-main.c | 7 +++- 3 files changed, 104 insertions(+), 2 deletions(-) commit 3540d222e1ebba80bbe6cdfe32e97af052304d77 Author: Robert Bragg Date: Tue Sep 7 18:04:19 2010 +0100 paint volumes: another pass at the design This is a fairly extensive second pass at exposing paint volumes for actors. The API has changed to allow clutter_actor_get_paint_volume to fail since there are times - such as when an actor isn't a descendent of the stage - when the volume can't be determined. Another example is when something has connected to the "paint" signal of the actor and we simply have no way of knowing what might be drawn in that handler. The API has also be changed to return a const ClutterPaintVolume pointer (transfer none) so we can avoid having to dynamically allocate the volumes in the most common/performance critical code paths. Profiling was showing the slice allocation of volumes taking about 1% of an apps time, for some fairly basic tests. Most volumes can now simply be allocated on the stack; for clutter_actor_get_paint_volume we return a pointer to &priv->paint_volume and if we need a more dynamic allocation there is now a _clutter_stage_paint_volume_stack_allocate() mechanism which lets us allocate data which expires at the start of the next frame. The API has been extended to make it easier to implement get_paint_volume for containers by using clutter_actor_get_transformed_paint_volume and clutter_paint_volume_union. The first allows you to query the paint volume of a child but transformed into parent actor coordinates. The second lets you combine volumes together so you can union all the volumes for a container's children and report that as the container's own volume. The representation of paint volumes has been updated to consider that 2D actors are the most common. The effect apis, clutter-texture and clutter-group have been update accordingly. clutter/clutter-actor.c | 920 ++++++++++++++++++++++++++----- clutter/clutter-actor.h | 10 +- clutter/clutter-blur-effect.c | 4 +- clutter/clutter-effect.c | 11 +- clutter/clutter-effect.h | 2 +- clutter/clutter-group.c | 25 + clutter/clutter-main.c | 2 +- clutter/clutter-offscreen-effect.c | 94 ++-- clutter/clutter-private.h | 94 +++- clutter/clutter-stage.c | 47 ++ clutter/clutter-texture.c | 109 +++- clutter/clutter-types.h | 18 + clutter/egl/clutter-stage-egl.c | 2 +- clutter/fruity/clutter-backend-fruity.c | 2 +- clutter/glx/clutter-stage-glx.c | 4 +- clutter/osx/clutter-stage-osx.c | 2 +- clutter/win32/clutter-backend-win32.c | 2 +- 17 files changed, 1089 insertions(+), 259 deletions(-) commit 48a24a2e08d5978e538e31c8480fa3d7b9b0b291 Author: Robert Bragg Date: Thu Aug 19 15:38:15 2010 +0100 actor-box: Adds clutter_actor_box_union utility When using ClutterActorBoxs for representing clip regions it can be convenient to be able to union multiple boxes together. clutter/clutter-actor.c | 28 ++++++++++++++++++++++++++++ clutter/clutter-types.h | 3 +++ 2 files changed, 31 insertions(+) commit 2da127dcff2c272e4d3b4ed5fc06919700fbc036 Author: Robert Bragg Date: Thu Aug 19 15:26:19 2010 +0100 texture: size fbos using clutter_actor_get_paint_box Previously we used the transformed allocation but that doesn't take into account actors with depth which may be projected outside the area covered by the transformed allocation. clutter/clutter-texture.c | 48 ++++++++++++++------------------------------- 1 file changed, 15 insertions(+), 33 deletions(-) commit 044809edb89a736f2aa5ecba54972cdea6d724c4 Author: Emmanuele Bassi Date: Thu Aug 19 15:27:51 2010 +0100 docs: Add PaintVolume to the API reference And document the various related functions. clutter/clutter-actor.c | 166 ++++++++++++++++++++++++++++ doc/reference/clutter/clutter-sections.txt | 16 +++ 2 files changed, 182 insertions(+) commit a6e5ecebe3c7e593257a5c3d4dc052561d4147f9 Author: Emmanuele Bassi Date: Thu Aug 19 14:06:52 2010 +0100 blur-effect: Add padding to account for the blur The blur effect will sample pixels on the edges of the offscreen buffer, so we want to add a padding to avoid clamping the blur. We do this by creating a larger target texture, and updating the paint volume of the actor during paint to take that padding into account. clutter/clutter-blur-effect.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) commit 5d97ca5f87a621b33129a675b5a4342c2b7a1dc7 Author: Emmanuele Bassi Date: Thu Aug 19 14:05:45 2010 +0100 offscreen-effect: Use the paint box to size the FBO We should be using the real, on-screen, transformed size of the actor to size and position the offscreen buffer we use to paint the actor for an effect. clutter/clutter-offscreen-effect.c | 45 +++++++++++++++--------------------- 1 file changed, 19 insertions(+), 26 deletions(-) commit 25abdf09b76fb594f8e64295a93aad241bcc3941 Author: Emmanuele Bassi Date: Mon Aug 16 17:02:15 2010 +0100 effect: Allow any effect to override the paint volume An Effect implementation might override the paint volume of the actor to which it is applied to. The get_paint_volume() virtual function should be added to the Effect class vtable so that any effect can get the current paint volume and update it. The clutter_actor_get_paint_volume() function becomes context aware, and does the right thing if called from within a ClutterEffect pre_paint() or post_paint() implementation, by allowing all effects in the chain up to the caller to modify the paint volume. clutter/clutter-actor.c | 54 +++++++++++++++++++++++++++++++++++++++++++-- clutter/clutter-effect.c | 17 ++++++++++++++ clutter/clutter-effect.h | 9 ++++++-- clutter/clutter-private.h | 6 +++-- 4 files changed, 80 insertions(+), 6 deletions(-) commit 94ce747f83b09c93351a06db233742f3b9255380 Author: Emmanuele Bassi Date: Mon Aug 16 15:53:28 2010 +0100 actor: Allow querying the paint volume An actor has an implicit "paint volume", that is the volume in 3D space occupied when painting itself. The paint volume is defined as a cuboid with the origin placed at the top-left corner of the actor; the size of the cuboid is given by three vectors: width, height and depth. ClutterActor provides API to convert the paint volume into a 2D box in screen coordinates, to compute the on-screen area that an actor will occupy when painted. Actors can override the default implementation of the get_paint_volume() virtual function to provide a different volume. clutter/clutter-actor.c | 269 +++++++++++++++++++++++++++++++++++++++++++++ clutter/clutter-actor.h | 8 +- clutter/clutter-private.h | 4 + clutter/clutter-types.h | 29 ++++- 4 files changed, 305 insertions(+), 5 deletions(-) commit 8dd8fbdbdf940258ff6b5ce616534bf8f8fd356a Author: Emmanuele Bassi Date: Mon Sep 13 11:30:30 2010 +0100 build: Start moving to a non-recursive layout *** WARNING: THIS COMMIT CHANGES THE BUILD *** Do not recurse into the backend directories to build private, internal libraries. We only recurse from clutter/ into the cogl sub-directory; from there, we don't recurse any further. All the backend-specific code in Cogl and Clutter is compiled conditionally depending on the macros defined by the configure script. We still recurse from the top-level directory into doc, clutter and tests, because gtk-doc and tests do not deal nicely with non-recursive layouts. This change makes Clutter compile slightly faster, and cleans up the build system, especially when dealing with introspection data. Ideally, we also want to make Cogl part of the top-level build, so that we can finally drop the sed trick to change the shared library from the GIR before compiling it. Currently disabled: ‣ OSX backend ‣ Fruity backend Currently enabled but untested: ‣ EGL backend ‣ Windows backend .gitignore | 7 +- Makefile.am | 19 +- autogen.sh | 1 - build/Makefile.am | 2 +- build/stringify.sh | 94 ++++ clutter.pc.in | 21 - clutter/Makefile.am | 521 +++++++++++++------ clutter/cally/Makefile.am | 80 --- clutter/cally/cally.pc.in | 9 +- clutter/clutter.pc.in | 21 + clutter/cogl/cogl/Makefile.am | 136 +++-- clutter/cogl/cogl/cogl-context.h | 10 +- clutter/cogl/cogl/cogl-material-arbfp.c | 9 +- clutter/cogl/cogl/cogl-material-fixed.c | 9 +- clutter/cogl/cogl/cogl-material-glsl.c | 8 +- clutter/cogl/cogl/cogl-material-opengl.c | 9 +- clutter/cogl/cogl/driver/gl/Makefile.am | 34 -- .../cogl/cogl/driver/gl/cogl-context-driver-gl.c | 39 ++ .../cogl/cogl/driver/gl/cogl-context-driver-gl.h | 53 ++ clutter/cogl/cogl/driver/gl/cogl-context-driver.c | 39 -- clutter/cogl/cogl/driver/gl/cogl-context-driver.h | 53 -- .../cogl/driver/gl/cogl-feature-functions-gl.h | 410 +++++++++++++++ .../cogl/cogl/driver/gl/cogl-feature-functions.h | 410 --------------- clutter/cogl/cogl/driver/gl/cogl-gl.c | 237 +++++++++ clutter/cogl/cogl/driver/gl/cogl-program-gl.c | 488 ++++++++++++++++++ clutter/cogl/cogl/driver/gl/cogl-program-gl.h | 46 ++ clutter/cogl/cogl/driver/gl/cogl-program.c | 488 ------------------ clutter/cogl/cogl/driver/gl/cogl-program.h | 46 -- .../cogl/cogl/driver/gl/cogl-texture-driver-gl.c | 522 ++++++++++++++++++++ clutter/cogl/cogl/driver/gl/cogl-texture-driver.c | 522 -------------------- clutter/cogl/cogl/driver/gl/cogl.c | 237 --------- clutter/cogl/cogl/driver/gles/Makefile.am | 57 --- .../cogl/driver/gles/cogl-context-driver-gles.c | 46 ++ .../cogl/driver/gles/cogl-context-driver-gles.h | 56 +++ .../cogl/cogl/driver/gles/cogl-context-driver.c | 46 -- .../cogl/cogl/driver/gles/cogl-context-driver.h | 56 --- .../cogl/driver/gles/cogl-feature-functions-gles.h | 111 +++++ .../cogl/cogl/driver/gles/cogl-feature-functions.h | 111 ----- clutter/cogl/cogl/driver/gles/cogl-gles.c | 117 +++++ clutter/cogl/cogl/driver/gles/cogl-gles2-wrapper.c | 1 - clutter/cogl/cogl/driver/gles/cogl-gles2-wrapper.h | 2 +- clutter/cogl/cogl/driver/gles/cogl-program-gles.c | 437 ++++++++++++++++ clutter/cogl/cogl/driver/gles/cogl-program-gles.h | 52 ++ clutter/cogl/cogl/driver/gles/cogl-program.c | 437 ---------------- clutter/cogl/cogl/driver/gles/cogl-program.h | 52 -- .../cogl/driver/gles/cogl-texture-driver-gles.c | 504 +++++++++++++++++++ .../cogl/cogl/driver/gles/cogl-texture-driver.c | 504 ------------------- clutter/cogl/cogl/driver/gles/cogl.c | 117 ----- clutter/cogl/cogl/driver/gles/stringify.sh | 94 ---- clutter/egl/Makefile.am | 46 -- clutter/glx/Makefile.am | 36 -- clutter/json/Makefile.am | 39 -- clutter/win32/Makefile.am | 38 -- clutter/win32/clutter-win32.pc.in | 16 - clutter/x11/Makefile.am | 74 --- clutter/x11/clutter-backend-x11.c | 16 +- clutter/x11/clutter-x11-enum-types.c.in | 31 -- clutter/x11/clutter-x11-enum-types.h.in | 26 - clutter/x11/clutter-x11.h | 1 - clutter/x11/clutter-x11.pc.in | 16 - configure.ac | 102 ++-- 61 files changed, 3798 insertions(+), 4023 deletions(-) commit 27aebb5c9d4a39e3f8e252b40cbf664d9981bbeb Author: Emmanuele Bassi Date: Wed Sep 29 14:10:38 2010 +0100 cally: Do not use deprecated functions The function g_strcasecmp() has been deprecated since GLib 2.2. clutter/cally/cally-actor.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit e798047ca043fea204851ab22faf67a3222fa6d0 Author: Emmanuele Bassi Date: Wed Sep 29 11:44:46 2010 +0100 animator: Code style fixes clutter/clutter-animator.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) commit 3fe10e0bb1a7d6d9ad1f28ab50d609d2a0af55fb Author: Stephen Kennedy Date: Wed Sep 29 10:56:48 2010 +0100 ClutterAnimator doesn't ref timeline properly ClutterAnimator currently has a number of bugs related to its referencing of its internal timeline. 1) The default timeline created in _init is not unreffed (it appears the programmer has wrongly thought ClutterTimeline has a floating reference based on the use of g_object_ref_sink in _set_timeline) 2) The timeline and slave_timeline vars are unreffed in finalize instead of dispose 3) The signal handlers set up in _set_timeline are not disconnected when the animator is disposed http://bugzilla.clutter-project.org/show_bug.cgi?id=2347 Signed-off-by: Emmanuele Bassi clutter/clutter-animator.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) commit d0cab85673a885b9aba317d282dd1bd5518fa241 Author: Neil Roberts Date: Mon Sep 27 22:17:12 2010 +0100 Add a conformance test for clutter_actor_contains This adds a conformance test for clutter_actor_contains to assert that it gets the expected results for the given tree of actors. tests/conform/test-actor-invariants.c | 66 +++++++++++++++++++++++++++++++++ tests/conform/test-conform-main.c | 1 + 2 files changed, 67 insertions(+) commit 306852075256906d268d5e0cb49957963f2e6a87 Author: Neil Roberts Date: Mon Sep 27 17:51:01 2010 +0100 Simplify the loop for clutter_actor_contains This reorganizes the loop for clutter_actor_contains so that it is a for loop rather than a while loop. Although this is mostly just nitpicking, I think this change could make the loop slightly faster if not optimized because it doesn't perform the self == descendant check twice and it is clearer. clutter/clutter-actor.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) commit 99adb88e9b2cddd65b4fd960444f26a5b52ce3c1 Author: Neil Roberts Date: Mon Sep 27 17:47:38 2010 +0100 Document what happens when self==descendant in clutter_actor_contains The documentation for clutter_actor_contains didn't specify what happens when self==descendant. A strict reading of it might lead you to think that it would return FALSE because in that case the descendant isn't an immediate child or a deeper descendant. The code actually would return TRUE. I think this is more useful so this patch fixes the docs rather than the code. clutter/clutter-actor.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit bba1424a444816f61865c5caffb17e56e0eb478b Author: Emmanuele Bassi Date: Mon Sep 27 16:46:26 2010 +0100 Post-branch version bump to 1.5.1 configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 1971581dfa4c4ec1c37ed85f4087800fb28a2e20 Author: Emmanuele Bassi Date: Sun Sep 26 18:48:04 2010 +0100 doap: Remove mallum from the maintainers list clutter.doap | 7 ------- 1 file changed, 7 deletions(-) commit 43e85836b48636fe1a5217cb5fce6517e07ed3d0 Author: Emmanuele Bassi Date: Sun Sep 26 16:52:58 2010 +0100 actor: Dispose all constrains We are leaking the ClutterMetaGroup with all the constraints when disposing an Actor. clutter/clutter-actor.c | 6 ++++++ 1 file changed, 6 insertions(+) commit fda1f3a8ba053aaa98882788b6098acbf7875bd3 Author: Emmanuele Bassi Date: Sat Sep 25 20:23:41 2010 +0100 json: Allow NULL as a value for strings, arrays and objects We should not warn when asking for a string, array or object if the contents were 'null'. Patch from JSON-GLib. clutter/json/json-array.c | 42 ++++++++++++++++++++++++++++++++--------- clutter/json/json-object.c | 45 +++++++++++++++++++++++++++++++++++--------- 2 files changed, 69 insertions(+), 18 deletions(-) commit 8fe9f3a37db72dcb1dfdf0589135310a78b0174e Author: Emmanuele Bassi Date: Fri Sep 24 16:21:06 2010 +0100 test-clutter-units: Force a known resolution to avoid fuzzyness Instead of taking the current resolution, whatever it may be, use a known DPI. This should alleviate fuzzyness and create consistent results. tests/conform/test-clutter-units.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) commit 51a4af92628287b491cd2539ce7bda0811976527 Author: Emmanuele Bassi Date: Fri Sep 24 15:25:15 2010 +0100 Post-release version bump to 1.4.1 configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)