Commit Graph

4505 Commits

Author SHA1 Message Date
Robert Bragg
2d8083bab8 unify egl and glx backends as "cogl" backend
Since GLX and EGL are abstracted by Cogl the two backends are both
implementing everything using the Cogl API and they are almost
identical.

This updates the egl backend to support everything that the glx backend
supports. Now that EGL and GLX are abstracted by Cogl, the plan is that
we will squash the clutter-egl/glx backends into one. Since the EGL
backend in clutter can conditionally not depend on X11 we will use the
EGL backend as the starting point of our common backend.

https://bugzilla.gnome.org/show_bug.cgi?id=649826
2011-06-14 20:35:18 +01:00
Robert Bragg
951cb82ec5 egl: fix args to cogl_onscreen_x11_set_foreign_window_xid
We hadn't updated the egl backend inline with a change to the arguments
that cogl_onscreen_x11_set_foreign_window_xid would expect and that was
causing a compilation error.
2011-06-14 20:19:27 +01:00
Emmanuele Bassi
05bcd40729 stage: Ignore do_update() on unrealized stages
An unrealized stage has no resources set yet, so we might as well skip
it during the master clock spin.

https://bugzilla.gnome.org/show_bug.cgi?id=652566
2011-06-14 16:11:54 +01:00
Emmanuele Bassi
81e9bf6127 backend: Do not call ensure_context() with NULL stage
Always call ensure_context() if we have a valid Stage.

https://bugzilla.gnome.org/show_bug.cgi?id=652566
2011-06-14 15:55:06 +01:00
Emmanuele Bassi
0b20739232 glx: Ignore ensuring context on NULL stages
https://bugzilla.gnome.org/show_bug.cgi?id=652566
2011-06-14 15:55:06 +01:00
Emmanuele Bassi
a7fc76a1c5 build: Disable deprecated symbols during development cycles
And add a configure switch to toggle them.
2011-06-14 14:50:10 +01:00
Emmanuele Bassi
4382e6588c glx: Remove unused Atom members from ClutterBackendGLX
The atoms were moved to the shared X11 backend structure ages ago.
2011-06-14 11:36:01 +01:00
Colin Walters
b046bc354c ClutterModifierType: Port fix from GDK to clutter's GDK copy
See https://bugzilla.gnome.org/show_bug.cgi?id=634994 where GDK was
modified to include all flag values, which helps bindings.  Port this
fix to Clutter's copy of GDK.

https://bugzilla.gnome.org/show_bug.cgi?id=650329
2011-06-14 00:05:33 +01:00
Philippe Normand
494629d4b9 clutter-text: new clutter_text_get_layout_offsets API
This new function can be used to retrieve the coordinates where the
ClutterText will draw the PangoLayout representing the text.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2553
2011-06-13 16:15:22 +01:00
Emmanuele Bassi
74a9b71060 effect: Rename RunFlags to PaintFlags
Since run() was replaced and both paint() and pick() use the
enumeration.

https://bugzilla.gnome.org/show_bug.cgi?id=651700
2011-06-13 16:00:45 +01:00
Tomeu Vizoso
0ede622f51 Give a chance to effects for running when picking
Some effects can change the actor's shape and position, so they need
to run when picking.

https://bugzilla.gnome.org/show_bug.cgi?id=651700
2011-06-13 15:45:36 +01:00
Tomeu Vizoso
700c543850 Rename ClutterEffect::run to ClutterEffect::paint
In preparation for adding ClutterEffect::pick

https://bugzilla.gnome.org/show_bug.cgi?id=651700
2011-06-13 15:44:58 +01:00
Emmanuele Bassi
165b2f9599 docs: Fix Clutter API reference 2011-06-13 15:36:07 +01:00
Emmanuele Bassi
cd2b36ed91 Merge branch 'swipe-action'
* swipe-action:
  test-swipe-action: Clean up the test code
  docs: Add the new actions to the API reference
  gesture-action: Remove the multi-device entry points
  swipe-action: Remove the required devices call
  swipe-action: Clean up
  gesture-action: Clean up
  Add ClutterSwipeAction and ClutterGestureAction
2011-06-13 14:39:03 +01:00
Emmanuele Bassi
4f0769d69d docs: Update missing documentation 2011-06-13 13:47:09 +01:00
Emmanuele Bassi
8625f07c3b script: Plug a leak
The SignalInfo structure gained a couple of string fields that should be
deallocated when destroying the structure.
2011-06-13 13:47:09 +01:00
Emmanuele Bassi
a9dd5abfcc script: Allow warping to states
Do not just allow animating states connected to signals: add a "warp"
optional key that ends up calling clutter_state_warp_to_state(). This
is useful for debugging.
2011-06-13 13:47:09 +01:00
Emmanuele Bassi
3017a48228 Skip introspection for GValue ↔ CoglFixed API
It's pointless to introspect an API that it's not meant to be used
through introspection.
2011-06-13 13:47:09 +01:00
Emmanuele Bassi
d9c1a2ebbb script: Use a weak ref to remove the signal emission hook
When an object goes away we should remove the emission hook for the
state transitions, to avoid leaving hooks around.
2011-06-13 13:47:09 +01:00
Emmanuele Bassi
b33973f9f8 script: Rename "state" → "states"
Make it clear that the key used when defining a state-based signal is
linked to the states of a ClutterState.
2011-06-13 13:47:08 +01:00
Emmanuele Bassi
29d7c5a297 script: Allow resolving signals states added from code
Currently, defining states for object signals can only be done by
defining a ClutterState inside the ClutterScript definition. We should
allow creating a (named) ClutterState in code, and associating it to a
ClutterScript instance — and have the Script resolve the "state" field
of a signal definition correctly.
2011-06-13 13:47:08 +01:00
Emmanuele Bassi
dd8cf63a62 script: Allow connecting signal to ClutterState states
One of the uses of a ClutterState state machine along with ClutterScript
is to provide a quick way to transition from state to state in response
to signal emitted on specific instances.

Connecting a real function, in code, to a specific signal does not
improve the ease of use of ClutterScript to define scenes.

By adding a new signal definition to the current one we can have both a
simple way to define application logic in code and in the UI definition
file.

The new syntax is trivial:

  {
    "name" : <signal name>,
    "state" : <state machine script id>,
    "target-state" : <target state>
  }

The ClutterState instance is identified by its script id, and the target
state is resolved at run-time, so it can be defined both in
ClutterScript or in code. Ideally, we should find a way to associate a
default ClutterState instance to the ClutterScript one that parses the
definition; this way we would be able to remove the "state" member, or
even "style" the behaviour of an object by replacing the ClutterState
instance.

The implementation uses a signal emission hook, to avoid knowing the
signal signature; we check the emitter of the signal against the object
that defined the signal, to avoid erroneous state changes.
2011-06-13 13:47:08 +01:00
Robert Bragg
7b4f7cd3e0 build: include <cairo.h> not <cairo/cairo.h>
cairo.h is intended to be included as <cairo.h> not <cairo/cairo.h> as
is the style for clutter.h. If you have installed cairo to a custom
prefix then using cairo/cairo.h can result in unintentional use of the
system cairo headers, or if they aren't installed then it will result in
a failure to find the header.
2011-06-10 17:57:18 +01:00
Emmanuele Bassi
2c791da70a gesture-action: Remove the multi-device entry points
GestureAction supports a single device/touch point. We'll need touch
events supported in Clutter before adding the ability to set required
device/touch points on gestures.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2585
2011-06-10 15:15:15 +01:00
Emmanuele Bassi
f9ce901496 swipe-action: Remove the required devices call
The SwipeAction requires one device/touch point, and that is the default
for GestureAction — if GestureAction supported multiple devices/touch
points.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2585
2011-06-10 15:15:15 +01:00
Emmanuele Bassi
11d961b605 swipe-action: Clean up
Clean up the documentation, and use a type safe GFlags marshaller for
the ::swept signal's @direction argument - instead of a generic integer
marshaller.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2585
2011-06-10 15:15:15 +01:00
Emmanuele Bassi
0058c78b79 gesture-action: Clean up
The GestureAction is marked as abstract, but it has a constructor. It
should be possible to create simple gesture recognizers through signal
handling alone, so we might as well have GestureAction be a concrete
class from the start.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2585
2011-06-10 15:15:15 +01:00
Tomeu Vizoso
ba72235b66 Add ClutterSwipeAction and ClutterGestureAction
To allow actors to handle gestures in a more organized way.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2585
2011-06-10 14:02:17 +01:00
Neil Roberts
d151d789f6 clutter-text: Use the ink rect in the paint volume
Previously ClutterText was just reporting the allocation as the paint
volume. The preferred size of a ClutterText is just the logical
rectangle of the layout. A pango layout can sometimes draw outside of
its logical rectangle for example with an italicised font with large
serifs. Additionally, ClutterText doesn't make any attempt to clip the
text if the actor gets allocated a size too small for the text so it
would also end up drawing outside of the paint volume in that case. To
fix this, the paint volume is now reported as the ink rect of the
Pango layout. The rectangle for the cursor and selection is also
unioned into that because it won't necessarily be within the ink
rectangle.

The function for drawing the selection rectangles has been split up
into a generic function that calculates the rectangles that need to be
drawn and a function that draws them. That way the get_paint_volume
virtual can share the code to calculate the rectangles.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2599
2011-06-10 14:02:07 +01:00
Neil Roberts
a20a8071ed clutter-text: Don't move the cursor to the left when at pos 0
When the cursor is at the leftmost position in the text the drawn
pixel position is moved to the left by the size of the cursor. There's
no explanation for why this happens and it doesn't seem to make any
sense so this patch removes it. It makes multi-line texts looks odd
because the cursor ends up at a different horizontal position when it
is on the first line from any other line. It also makes using
priv->cursor_pos difficult in any other part of the code because the
paint function modifies it.

The original patch that added this can be traced back to Tidy commit
c356487c15. There's no explanation in the commit message either.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2599
2011-06-10 13:07:11 +01:00
Emmanuele Bassi
46cab9c8c6 event: Add clutter_event_set_source() declaration
The function was defined but not declared in the header.
2011-06-09 15:40:26 +01:00
Emmanuele Bassi
b91ec2a82e Fix deprecation guards for ClutterGLXTexturePixmap 2011-06-09 15:28:39 +01:00
Emmanuele Bassi
23a9980c72 click-action: Add support for long press detection
A long press is a special form of click action; the default
implementation uses a single signal with multiple states: query, action
and cancel. On click we use the "query" state to check whether the
ClutterClickAction supports long presses; if the callback returns TRUE
then we install a timeout and we either emit the "activate" state when
the timeout expires or we emit the "cancel" state if the pointer leaves
the actor, or if the pointer moves outside a certain threshold. If the
long press reached the "activate" state then we skip the clicked signal
emission.
2011-06-09 15:12:41 +01:00
Emmanuele Bassi
93207d08f8 settings: Add the :long-press-duration
A property to control the minimum time that has to elapse before a press
is recognized as a long press. This will be used by ClutterClickAction,
but it can be shared across touch-based gestures.
2011-06-09 14:43:34 +01:00
Emmanuele Bassi
2b81d90dd7 Eliminate G_CONST_RETURN
The G_CONST_RETURN define in GLib is, and has always been, a bit fuzzy.

We always used it to conform to the platform, at least for public-facing
API.

At first I assumed it has something to do with brain-damaged compilers
or with weird platforms where const was not really supported; sadly,
it's something much, much worse: it's a define that can be toggled at
compile-time to remove const from the signature of public API. This is a
truly terrifying feature that I assume was added in the past century,
and whose inception clearly had something to do with massive doses of
absynthe and opium — because any other explanation would make the
existence of such a feature even worse than assuming drugs had anything
to do with it.

Anyway, and pleasing the gods, this dubious feature is being
removed/deprecated in GLib; see bug:

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

Before deprecation, though, we should just remove its usage from the
whole API. We should especially remove its usage from Cally's internals,
since there it never made sense in the first place.
2011-06-07 16:06:24 +01:00
Tomeu Vizoso
e636a0bbce Sync allocation in ClutterBoxLayout with the one in GtkBox
https://bugzilla.gnome.org/show_bug.cgi?id=650487

Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
2011-06-07 14:43:52 +01:00
Craig R. Hughes
9ecddeb1c3 osx: Handle bare modifier keypresses
http://bugzilla.clutter-project.org/show_bug.cgi?id=2644
2011-06-07 14:39:01 +01:00
Emmanuele Bassi
22cc9b35cb stage: Bail out of do_update() when no impl is set
If the Stage has been destroyed the StageWindow implementation is not
going to be available, but the IN_DESTRUCTION flag will have already
been cleared.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2656
2011-06-07 14:34:19 +01:00
Emmanuele Bassi
19c986c0c6 actor: Avoid queueing redraws during destruction
If an actor or the stage to which it belongs are being destroyed then
there is no point in queueing a redraw that will not be seen anyway.
Bailing out early also avoids the case in which a redraw is queued
during destruction wil cause redraw entries will be added to the Stage,
which will take references on it and cause the Stage never to be
finalized.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2652
2011-06-07 14:25:17 +01:00
Emmanuele Bassi
835fc2381c Deprecate ClutterShader
With the instantiatable ClutterShaderEffect, the only reason for
ClutterShader to exist is to make the ClutterActor::paint implementation
miserable.

Yes, ClutterShader doesn't use a FBO, so it's "more efficient" on
ClutterTextures. It's also generally wrong unless you know *exactly* how
the actor's pipeline is set up — something we cannot even guarantee
internally unless we start doing lame type checks.
2011-06-07 14:09:53 +01:00
Emmanuele Bassi
53483896a8 shader-effect: Allow instantiating ShaderEffect
ClutterShaderEffect doesn't require to be sub-classed in order to be
useful. It is possible to just create an instance, set the source and
the uniforms, and attach it to an actor. This should effectively replace
ClutterShader for good.
2011-06-07 14:09:53 +01:00
Alexandre Franke
1a85b87fc9 Fix typo 2011-06-02 22:16:45 +02:00
Robert Bragg
588d97c2c7 culling: Use vertex_count not '4' to determine partial culls
We were mistakenly using the constant 4 to determine the number of
vertices that need to be culled for a paint-volume to be considered
fully culled too. This is only ok for 2d volumes and was resulting in
some 3d volumes being considered culled whenever 4 out of 8 vertices
were culled. This fix is simply to reference the vertex_count variable
instead of assuming 4.
2011-06-02 21:02:11 +01:00
Øyvind Kolås
ba8cc8e064 stage: ensure correct stage is current when picking
_clutter_stage_do_pick called by interactive picking and
clutter_stage_get_actor_at_pos could be accidentally reading back the wrong
actor id's if an other stage has had a more recent render due to animation.

This should resolve some multi stage / ClutterGtk related pick id warnings.
2011-06-01 22:46:26 +01:00
Emmanuele Bassi
eed1744612 stage: Use the debug name for the pick buffer dump stem
This avoids overwriting files in the multi-stage case.
2011-06-01 18:34:09 +01:00
Peter Ward
c836b8c53c device: Prevent segfault
When disposing a slave device without a master.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2655
2011-05-31 11:57:20 +01:00
Dan Winship
e83a7851ad clutter-id-pool: fix warning on bad pick
Commit 13ac1fe7 purported to extend the _clutter_id_pool_lookup()
warning to the case where the id referred to a deleted actor, but did
not actually do so, because _clutter_id_pool_remove() set deleted IDs
to 0xdecafbad, not NULL. Fix this.

https://bugzilla.gnome.org/show_bug.cgi?id=650597
2011-05-26 08:48:13 -04:00
Alejandro Piñeiro
46aadb745b [cally] Removed default actions on CallyActor 2011-05-21 00:55:01 +02:00
Alejandro Piñeiro
d007155ac4 [cally] CallyRoot is the parent of any CallyStage object
http://bugzilla.clutter-project.org/show_bug.cgi?id=2597
2011-05-20 14:18:09 +02:00
Alejandro Piñeiro
58adcb4022 [cally] Added old cally Changelog (pre clutter-cally merge)
http://bugzilla.clutter-project.org/show_bug.cgi?id=2484
2011-05-20 14:13:14 +02:00