Emmanuele Bassi [Wed, 1 Feb 2012 18:33:55 +0000 (18:33 +0000)]
Add ClutterContent
ClutterContent is an interface for creating delegate objects that handle
what an actor is going to paint.
Since they are a newly added type, they only hook into the new PaintNode
based API.
The position and size of the content is controlled in part by the
content's own preferred size, and by the ClutterContentGravity
enumeration.
Emmanuele Bassi [Wed, 1 Feb 2012 17:47:15 +0000 (17:47 +0000)]
actor: Add paint_node virtual function
The ::paint-node virtual inside ClutterActor is what we want people to
use when painting their actors.
Right now, it's a new code path, that gets called while painting; the
paint_node() implementation should only paint the actor itself, and not
its children — they will get their own paint_node() called when needed.
Internally, ClutterActor will automatically create a dummy PaintNode and
paint the background color; then control will be handed out to the
implementation on the class. This is required to maintain compatibility
with the old ::paint signal emission.
Once we are able to get rid of the paint (and pick) sequences, we'll
switch to a fully retained render tree.
Emmanuele Bassi [Wed, 1 Feb 2012 15:51:27 +0000 (15:51 +0000)]
Add PaintNode, an element on the render object tree
Now that we have a proper scene graph API, we should split out the
rendering part from the logical and event handling part.
ClutterPaintNode is a lightweight fundamental type that encodes only the
paint operations: pipeline state and geometry. At its most simple, is a
way to structure setting up the programmable pipeline using a
CoglPipeline, and submitting Cogl primitives. The important take away
from this API is that you are not allowed to call Cogl API like
cogl_set_source() or cogl_primitive_draw() directly.
The interesting approach to this is that, in the future, we should be
able to move to a purely retained mode: we will decide which actors need
to be painted, they will update their own branch of the render graph,
and we'll take the render graph and build all the rendering commands
from that.
For the 1.x API, we will have to maintain invariants and the existing
behaviour, but as soon as we can break API, the old paint signal will
just go away, and Actors will only be allowed to manipulate the render
tree.
Daniel Mustieles [Fri, 16 Mar 2012 12:04:34 +0000 (13:04 +0100)]
Updated Spanish translation
Nilamdyuti Goswami [Fri, 16 Mar 2012 07:24:23 +0000 (12:54 +0530)]
Assamese translation updated
Fran Diéguez [Fri, 16 Mar 2012 00:56:03 +0000 (01:56 +0100)]
Updated Galician translations
Matej Urbančič [Thu, 15 Mar 2012 20:57:19 +0000 (21:57 +0100)]
Updated Slovenian translation
Piotr Drąg [Thu, 15 Mar 2012 19:53:33 +0000 (20:53 +0100)]
Updated Polish translation
Piotr Drąg [Thu, 15 Mar 2012 19:47:06 +0000 (20:47 +0100)]
Updated POTFILES.in
Emmanuele Bassi [Thu, 15 Mar 2012 17:51:22 +0000 (17:51 +0000)]
animator: Fix NULL check
Emmanuele Bassi [Thu, 15 Mar 2012 17:42:42 +0000 (17:42 +0000)]
interactive/texture-async: Use implicit animations
Emmanuele Bassi [Thu, 15 Mar 2012 17:41:28 +0000 (17:41 +0000)]
actor: Remove G_SIGNAL_NO_RECURSE
As it turns out, we do end up recursing inside the ::paint signal
emission - especially inside the conformance test suite.
This thoroughly sucks - and we'll only be able to fix it properly
when we bump API for 2.0.
Emmanuele Bassi [Thu, 15 Mar 2012 17:32:53 +0000 (17:32 +0000)]
I should compile the changes I make
Emmanuele Bassi [Thu, 15 Mar 2012 17:31:36 +0000 (17:31 +0000)]
actor: Fix get_transition() method
We now store a closure, not directly a ClutterTransition instance.
Emmanuele Bassi [Thu, 15 Mar 2012 16:57:18 +0000 (16:57 +0000)]
doc: Reference fixes
Emmanuele Bassi [Thu, 15 Mar 2012 16:53:19 +0000 (16:53 +0000)]
symbols: Update
Emmanuele Bassi [Thu, 15 Mar 2012 16:40:41 +0000 (16:40 +0000)]
actor: Add generic transition support
ClutterActor should be able to hold all transitions, even the ones that
have been explicitly created.
This will allow to add new transitions types in the future, like the
keyframe-based one, or the transition group.
Emmanuele Bassi [Thu, 15 Mar 2012 13:53:56 +0000 (13:53 +0000)]
transition: Clear the animatable member when removing on complete
Emmanuele Bassi [Thu, 15 Mar 2012 13:52:09 +0000 (13:52 +0000)]
transition: Check the repeat count to remove on complete
We can now ask the timeline for the current repeat, and if it's the last
one, then we can safely detach the transition from the animatable
instance.
Emmanuele Bassi [Thu, 15 Mar 2012 13:50:28 +0000 (13:50 +0000)]
timeline: Add more state accessors
It should be possible to ask a timeline what is its duration, taking
into account eventual repeats, and which repeat is the one currently
in progress.
These two functions allow writing animations that depend on the current
state of another timeline.
Emmanuele Bassi [Thu, 15 Mar 2012 12:24:02 +0000 (12:24 +0000)]
actor: Add delay to the easing state
It should be possible to set up the delay of a transition, but since
we start the Transition instance before returning control to the caller,
we cannot use clutter_actor_get_transition() to do it without something
extra-awkward, like:
transition = clutter_actor_get_transition (actor, "width");
clutter_timeline_stop (transition);
clutter_timeline_set_delay (transition, 1000);
clutter_timeline_start (transition);
for each property involved. It's much easier to add a delay to the
easing state of an actor.
Emmanuele Bassi [Thu, 15 Mar 2012 11:25:52 +0000 (11:25 +0000)]
interactive/bin-layout: Use implicit animations
Emmanuele Bassi [Thu, 15 Mar 2012 11:25:26 +0000 (11:25 +0000)]
interactive/actor: Do not use clutter_actor_animate()
Use implicit animations instead.
Emmanuele Bassi [Thu, 15 Mar 2012 11:24:46 +0000 (11:24 +0000)]
interactive/transitions: An easing demo without animate()
Use the newly added implicit animations support in ClutterActor.
Emmanuele Bassi [Thu, 15 Mar 2012 11:24:27 +0000 (11:24 +0000)]
docs: Update the API reference
Emmanuele Bassi [Thu, 15 Mar 2012 11:24:07 +0000 (11:24 +0000)]
symbols: Update
Emmanuele Bassi [Thu, 15 Mar 2012 11:09:11 +0000 (11:09 +0000)]
actor: Implement implicit animatable properties
Clutter is meant to be, and I quote from the README, a toolkit:
for creating fast, compelling, portable, and dynamic graphical
user interfaces
and yet the default mode of operation for setting an actor's state on
the scene graph (position, size, opacity, rotation, scaling, depth,
etc.) is *not* dynamic. We assume a static UI, and then animate it.
This is the wrong way to design an API for a toolkit meant to be used to
create animated user interfaces. The default mode of operation should be
to implicitly animate every state transition, and only allow skipping
the animation if the user consciously decides to do so — i.e. the design
tenet of the API should be to make The Right Thing™ by default, and make
it really hard (or even impossible) to do The Wrong Thing™.
So we should identify "animatable" properties, i.e. those properties
that should be implicitly animated by ClutterActor, and use the
animation framework we provide to tween the transitions between the
current state and the desired state; the implicit animation should
happen when setting these properties using the public accessors, and not
through some added functionality. For instance, the following:
clutter_actor_set_position (actor, newX, newY);
should not make the actor jump to the (newX, newY) point; it should
tween the actor's position between the current point and the desired
point.
Since we have to maintain backward compatibility with existing
applications, we still need to mark the transitions explicitly, but we
can be smart about it, and treat transition states as a stack that can
be pushed and popped, e.g.:
clutter_actor_save_easing_state (actor);
clutter_actor_set_easing_duration (actor, 500);
clutter_actor_set_position (actor, newX, newY);
clutter_actor_set_opacity (actor, newOpacity);
clutter_actor_restore_easing_state (actor);
And we can even start stacking animations, e.g.:
clutter_actor_save_easing_state (actor);
clutter_actor_set_easing_duration (actor, 500);
clutter_actor_set_position (actor, newX, newY);
clutter_actor_save_easing_state (actor);
clutter_actor_set_easing_duration (actor, 500);
clutter_actor_set_easing_mode (actor, CLUTTER_LINEAR);
clutter_actor_set_opacity (actor, newOpacity);
clutter_actor_set_depth (actor, newDepth);
clutter_actor_restore_easing_state (actor);
clutter_actor_restore_easing_state (actor);
And so on, and so forth.
The implementation takes advantage of the newly added Transition API,
which uses only ClutterTimeline sub-classes and ClutterInterval, to cut
down the amount of signal emissions and memory management of object
instances; as well of using the ClutterAnimatable interface for custom
properties and interpolation of values.
Emmanuele Bassi [Thu, 15 Mar 2012 11:06:00 +0000 (11:06 +0000)]
Add ClutterPropertyTransition
ClutterPropertyTransition is a ClutterTransition that animates a
property of a ClutterAnimatable implementation.
Emmanuele Bassi [Thu, 15 Mar 2012 11:04:31 +0000 (11:04 +0000)]
Add ClutterTransition
ClutterTransition is a Timeline sub-class that allows interpolation of a
value between the initial and final states held by a ClutterInterval.
Emmanuele Bassi [Thu, 15 Mar 2012 11:08:38 +0000 (11:08 +0000)]
types: Declare new Transition classes
Emmanuele Bassi [Thu, 15 Mar 2012 11:02:30 +0000 (11:02 +0000)]
interval: Add variadic arguments for initial/final setters
As a convenience for the C API.
Language bindings should already be using the GValue variants.
This commit also moves the custom progress functions out of the
clutter-interval.c, as they are meant to be generic interpolation
functions and not ClutterInterval-specific.
Emmanuele Bassi [Thu, 15 Mar 2012 17:00:38 +0000 (17:00 +0000)]
docs: Update reference symbols
Chun-wei Fan [Thu, 15 Mar 2012 08:55:55 +0000 (16:55 +0800)]
Fix "install" paths in VS 2010 property sheets
Emmanuele Bassi [Wed, 14 Mar 2012 11:33:55 +0000 (11:33 +0000)]
actor: Annotate signals to enable some optimization
The ::paint, ::queue-redraw, and ::queue-relayout signals should be
marked as no-recurse and no-hooks; these signals are emitted *a lot*
during each frame, and since GLib has a bunch of optimizations for
signals with no closures, we should try and squeeze every single CPU
cycle we can.
Stefano Facchini [Tue, 13 Mar 2012 17:22:19 +0000 (18:22 +0100)]
Install clutter-version.h
Chun-wei Fan [Mon, 5 Mar 2012 02:32:44 +0000 (10:32 +0800)]
Dist clutter-version.h
Dist clutter-version.h for use under non-autotools-based build
environments (e.g. MSVC) as this header is now generic under the
systems Clutter supports
Checked with Emmanuele Bassi on IRC.
Chun-wei Fan [Thu, 8 Mar 2012 09:11:35 +0000 (17:11 +0800)]
clutter-master-clock.c: Set frame_budget conditionally
The frame_budget member of ClutterMasterClock is only enabled when
CLUTTER_ENABLE_DEBUG is enabled, so fix the build with this.
Checked with Emmanuele Bassi on IRC.
Kenneth Nielsen [Tue, 13 Mar 2012 08:08:31 +0000 (09:08 +0100)]
Updated Danish translation
Antonio Fernandes C. Neto [Fri, 9 Mar 2012 13:29:33 +0000 (10:29 -0300)]
Updated Brazilian Portuguese translation
Emmanuele Bassi [Mon, 12 Mar 2012 14:23:35 +0000 (14:23 +0000)]
Bump up the GDK dependency
Commit
ac6ce79aa389982c3e7113f6192f492a6e21b4b1 introduced a dependency
on the latest GDK symbols, so we need to bump up the required version of
GDK.
Stefano Facchini [Sat, 10 Mar 2012 15:39:16 +0000 (16:39 +0100)]
gdk: add new device types (GDK_SOURCE_TOUCHSCREEN, GDK_SOURCE_TOUCHPAD)
https://bugzilla.gnome.org/show_bug.cgi?id=671779
ManojKumar Giri [Mon, 12 Mar 2012 12:14:54 +0000 (17:44 +0530)]
Updated Odia Translation
Timo Jyrinki [Mon, 12 Mar 2012 09:29:54 +0000 (11:29 +0200)]
Add partial Finnish translation
Yuri Myasoedov [Sun, 11 Mar 2012 19:36:53 +0000 (23:36 +0400)]
Updated Russian translation
Мирослав Николић [Sat, 10 Mar 2012 22:07:27 +0000 (23:07 +0100)]
Updated Serbian translation
Khoem Sokhem [Sat, 10 Mar 2012 12:53:53 +0000 (13:53 +0100)]
Add initial Khmer translation
Gil Forcada [Sat, 10 Mar 2012 12:44:09 +0000 (13:44 +0100)]
Updated Catalan translation
Ihar Hrachyshka [Fri, 9 Mar 2012 18:55:55 +0000 (21:55 +0300)]
Updated Belarusian translation.
Piotr Drąg [Fri, 9 Mar 2012 18:09:40 +0000 (19:09 +0100)]
Updated Polish translation
Florian Müllner [Fri, 9 Mar 2012 15:17:52 +0000 (16:17 +0100)]
Add skeleton translations for RTL locales
RTL locales need to translate the "default:LTR" string to have
clutter_actor_get_text_direction() return the expected result;
as GNOME Shell now makes use of that API, users of RTL locales
would be up for an unpleasant surprise, so add all locales that
translate "default:LTR" to "default:RTL" in GTK+.
https://bugzilla.gnome.org/show_bug.cgi?id=671736
Florian Müllner [Fri, 9 Mar 2012 15:34:54 +0000 (16:34 +0100)]
Update Hebrew translations
RTL locales need to translate the "default:LTR" string to have
clutter_actor_get_text_direction() return the expected result;
as GNOME Shell now makes use of that API, users of RTL locales
would be up for an unpleasant surprise, so add the required
translation.
https://bugzilla.gnome.org/show_bug.cgi?id=671736
Emmanuele Bassi [Fri, 9 Mar 2012 17:32:46 +0000 (17:32 +0000)]
po: Update bug tracker in Makevars
Tristan Van Berkom [Fri, 9 Mar 2012 17:06:10 +0000 (02:06 +0900)]
Fixed leaking GValue content in clutter_animation_setup_valist().
Normally this leak goes unnoticed because basic fundamental types
are typically used with clutter_actor_animate(), the leak shows up
if boxed or object types are passed (such as ClutterVertex in the
case I stumbled upon).
Emmanuele Bassi [Thu, 8 Mar 2012 14:07:15 +0000 (14:07 +0000)]
text: Use CoglFramebuffer API for the path-based clip
Bruce Cowan [Fri, 9 Mar 2012 16:24:35 +0000 (16:24 +0000)]
Updated British English translation
Fran Diéguez [Thu, 8 Mar 2012 22:25:57 +0000 (23:25 +0100)]
Updated Galician translations
Alexander Shopov [Thu, 8 Mar 2012 20:45:17 +0000 (22:45 +0200)]
Updated Bulgarian translation
Matej Urbančič [Thu, 8 Mar 2012 14:42:14 +0000 (15:42 +0100)]
Updated Slovenian translation
Chun-wei Fan [Thu, 8 Mar 2012 09:44:02 +0000 (17:44 +0800)]
Fixup VS 2010 property sheets
There are some properties which were not correctly set. My bad for not
fixing these sooner.
Daniel Mustieles [Thu, 8 Mar 2012 09:29:08 +0000 (10:29 +0100)]
Updated Spanish translation
Chun-wei Fan [Thu, 8 Mar 2012 09:07:34 +0000 (17:07 +0800)]
Update VS property sheets
"Install" the new headers that were introduced lately.
Nilamdyuti Goswami [Thu, 8 Mar 2012 08:42:50 +0000 (14:12 +0530)]
Assamese translation completed
Chao-Hsiung Liao [Thu, 8 Mar 2012 07:53:04 +0000 (15:53 +0800)]
Updated Traditional Chinese translation(Hong Kong and Taiwan)
Piotr Drąg [Wed, 7 Mar 2012 23:04:55 +0000 (00:04 +0100)]
Updated POTFILES.in
Ihar Hrachyshka [Wed, 7 Mar 2012 20:40:08 +0000 (23:40 +0300)]
Updated Belarusian translation.
Joseph Scheuhammer [Thu, 2 Feb 2012 21:23:00 +0000 (16:23 -0500)]
Add brightness/contrast effect
The ClutterBrightnessContrastEffect effect class allows changing the
brightness and contrast levels of an actor.
Modified-by: Emmanuele Bassi <ebassi@linux.intel.com>
Modified-by: Neil Roberts <neil@linux.intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=656156
Emmanuele Bassi [Wed, 7 Mar 2012 12:59:25 +0000 (12:59 +0000)]
cally/text: Constify string members
Emmanuele Bassi [Wed, 7 Mar 2012 12:35:57 +0000 (12:35 +0000)]
build: Increase the anal-retentiveness of the maintainer flags
The new rules have already caught a couple of issues.
Emmanuele Bassi [Wed, 7 Mar 2012 12:34:48 +0000 (12:34 +0000)]
build: Remove maintainer flags from test build
Part of the test infrastructure relies on relaxed build conditions, so
there's no point to enforce the anal retentive maintainer flags.
Emmanuele Bassi [Wed, 7 Mar 2012 12:34:06 +0000 (12:34 +0000)]
Fix missing/redundant declarations
Emmanuele Bassi [Wed, 7 Mar 2012 12:32:32 +0000 (12:32 +0000)]
cally: Fix redundant declarations
Emmanuele Bassi [Wed, 7 Mar 2012 12:31:25 +0000 (12:31 +0000)]
snap-constraint: Fix typo that broke the get_edges() method
We were declaring a get_edges() method, but the definition was called
get_edge().
Emmanuele Bassi [Wed, 7 Mar 2012 12:07:41 +0000 (12:07 +0000)]
x11/device-manager-core: Avoid a signed/unsigned comparison
Emmanuele Bassi [Wed, 7 Mar 2012 12:07:15 +0000 (12:07 +0000)]
x11/keymap: Avoid a signed/unsigned comparison
Emmanuele Bassi [Wed, 7 Mar 2012 12:06:24 +0000 (12:06 +0000)]
x11/backend: Ensure that pre/post parse hooks are not exposed
Not even as private methods.
Emmanuele Bassi [Wed, 7 Mar 2012 12:04:44 +0000 (12:04 +0000)]
Try to avoid duplicate declarations for profile macros
We can use the __COUNTER__ macro or, failing that, the __LINE__ macro to
ensure that we don't declare dummy variables more than once with the
same name.
Emmanuele Bassi [Wed, 7 Mar 2012 12:04:25 +0000 (12:04 +0000)]
gdk: Add missing declaration of clutter_gdk_get_default_display()
Fran Diéguez [Wed, 7 Mar 2012 11:54:09 +0000 (12:54 +0100)]
Updated Galician translations
Daniel Mustieles [Wed, 7 Mar 2012 10:33:52 +0000 (11:33 +0100)]
Updated Spanish translation
Alexander Shopov [Wed, 7 Mar 2012 04:36:27 +0000 (06:36 +0200)]
Updated Bulgarian translation
Emmanuele Bassi [Fri, 27 Jan 2012 12:30:04 +0000 (12:30 +0000)]
osx: Call finishLaunching on post-parse
https://bugzilla.gnome.org/show_bug.cgi?id=668801
Emmanuele Bassi [Tue, 6 Mar 2012 15:39:29 +0000 (15:39 +0000)]
texture: Fix the async loop ceiling
The comment says that we're going to load textures in a loop until we
still have work to do, or if one iteration took more than 5
milliseconds, to avoid blowing up our frame budget, but the check is for
5 seconds, which is hardly a sensible value.
Nilamdyuti Goswami [Tue, 6 Mar 2012 15:37:26 +0000 (21:07 +0530)]
Assamese translation completed
Emmanuele Bassi [Tue, 6 Mar 2012 15:07:55 +0000 (15:07 +0000)]
interactive/text-field: Use :background-color
Instead of a custom paint signal handler.
Emmanuele Bassi [Tue, 6 Mar 2012 15:06:52 +0000 (15:06 +0000)]
text: Use the background color when painting
If the ClutterActor:background-color-set property is set to TRUE.
Emmanuele Bassi [Tue, 6 Mar 2012 15:05:36 +0000 (15:05 +0000)]
text: Center the cursor caret
We remove 2 pixels from the height of the cursor, but we should also
remove the same amount from the position on the y axis, so that the
cursor caret appears centered in the allocated height.
https://bugzilla.gnome.org/show_bug.cgi?id=655491
Matej Urbančič [Tue, 6 Mar 2012 14:43:08 +0000 (15:43 +0100)]
Updated Slovenian translation
Emmanuele Bassi [Tue, 6 Mar 2012 14:23:33 +0000 (14:23 +0000)]
script: Support translatable strings for properties
ClutterScript should be able to automatically call gettext() and friends
on strings loaded from a UI definition, prior to passing the string to
the object it is constructing.
The basic implementation is trivial:
- set a translation domain on the ClutterScript instance
- mark the translatable strings inside the JSON data, like:
"property" : {
"translatable" : true,
"string" : "a translatable string"
}
The hard part is now getting the tools we use to extract the
translatable strings to understand the JSON format we use inside
ClutterScript.
Emmanuele Bassi [Tue, 6 Mar 2012 14:22:43 +0000 (14:22 +0000)]
Annotate clutter_threads_add_repaint_func_full()
Emmanuele Bassi [Tue, 6 Mar 2012 14:21:04 +0000 (14:21 +0000)]
Add missing enumeration type to clutter.symbols
Emmanuele Bassi [Tue, 6 Mar 2012 13:50:10 +0000 (13:50 +0000)]
master-clock: Add frame budget diagnostic messages
Let's keep a budget of 16.6 milliseconds per frame, and reduce it by the
amount of time spent in each phase of the frame processing. If any phase
goes over the allocated budget then we use the diagnostic mode
facilities to warn the app developer.
Emmanuele Bassi [Tue, 6 Mar 2012 12:55:27 +0000 (12:55 +0000)]
master-clock: Clean up the frame processing
Split out every phase into its own function, to ensure that the sequence
of operation is clear and easy to follow.
Emmanuele Bassi [Tue, 6 Mar 2012 12:09:00 +0000 (12:09 +0000)]
Improve repaint functions
It is sometimes useful to be able to have better control on when a
repaint function is called. Currently, all repaint functions are called
prior to the stages update phase of the frame processing.
We can introduce flags to represent the point in the frame update
process in which we wish Clutter called the repaint function.
As a bonus, we can also add a flag that causes adding a repaint function
to spin the master clock.
Emmanuele Bassi [Mon, 5 Mar 2012 23:57:01 +0000 (23:57 +0000)]
Post-release version bump to 1.9.15
Emmanuele Bassi [Mon, 5 Mar 2012 23:41:52 +0000 (23:41 +0000)]
Release Clutter 1.9.14 (snapshot)
Emmanuele Bassi [Mon, 5 Mar 2012 23:34:27 +0000 (23:34 +0000)]
docs: Updates to the API reference
Emmanuele Bassi [Mon, 5 Mar 2012 22:02:01 +0000 (22:02 +0000)]
Update the release notes
Emmanuele Bassi [Mon, 5 Mar 2012 21:59:53 +0000 (21:59 +0000)]
actor: Ensure static scope to allocation-changed arguments
In theory, handlers connected to the ::allocation-changed signal may be
able to modify the actor's real allocation and allocation flags,
especially now that we use STATIC_SCOPE; let's avoid this, so that we
don't regret it later.
Neil Roberts [Mon, 5 Mar 2012 19:23:46 +0000 (19:23 +0000)]
tests: Remove test-cogl-pixel-buffer
This has been converted to a Cogl-based test in the cogl source tree
so there is no need to maintain it here anymore.
Reviewed-by: Robert Bragg <robert@linux.intel.com>
Emmanuele Bassi [Mon, 5 Mar 2012 17:45:23 +0000 (17:45 +0000)]
conformance/invariants: Test that visibility is not recursive
The show and hide methods should not recurse; that is the job of
show_all and hide_all, which are deprecated.