profile/ivi/clutter.git
13 years agocogl-debug: Add a debug option for tracing clipping
Neil Roberts [Mon, 24 Jan 2011 16:36:56 +0000 (16:36 +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.

13 years agocogl-debug: Split the flags to support more than 32
Neil Roberts [Mon, 24 Jan 2011 14:28:00 +0000 (14:28 +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.

13 years agocogl-pipeline: Flush the lighting params in common code not vertend
Neil Roberts [Fri, 14 Jan 2011 11:11:44 +0000 (11:11 +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.

13 years agocogl-pipeline-progend-glsl: Generalize updating GLES2 uniforms
Neil Roberts [Thu, 13 Jan 2011 18:24:22 +0000 (18:24 +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.

13 years agocogl-shader-boilerplate: Move the uniforms to the common code
Neil Roberts [Wed, 12 Jan 2011 13:47:55 +0000 (13:47 +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.

13 years agoClutterTimeline: Fix the 'msecs' parameter for the new-frame signal
Neil Roberts [Mon, 24 Jan 2011 11:49:04 +0000 (11:49 +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'.

13 years agoclutter-timeline: Emit the new-frame signal even on the first frame
Neil Roberts [Mon, 24 Jan 2011 11:29:59 +0000 (11:29 +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.

13 years agoPost-release version bump to 1.5.15
Emmanuele Bassi [Mon, 24 Jan 2011 10:51:06 +0000 (10:51 +0000)]
Post-release version bump to 1.5.15

13 years agoRelease Clutter 1.5.14 (1.6.0rc1)
Emmanuele Bassi [Mon, 24 Jan 2011 10:23:36 +0000 (10:23 +0000)]
Release Clutter 1.5.14 (1.6.0rc1)

13 years agoUpdate the NEWS file
Emmanuele Bassi [Fri, 21 Jan 2011 20:46:09 +0000 (20:46 +0000)]
Update the NEWS file

13 years agomodel: Add support to define rows in ClutterScript
Bastian Winkler [Fri, 21 Jan 2011 13:50:44 +0000 (14:50 +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

13 years agoscript-parser: Allow initialized GValue arg in clutter_script_parse_node
Bastian Winkler [Wed, 12 Jan 2011 12:09:52 +0000 (13:09 +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

13 years agomodel: Change the column argument type to gint for clutter_model_set_sort
Bastian Winkler [Wed, 12 Jan 2011 11:54:43 +0000 (12:54 +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

13 years agomodel: Fix some GObject-Introspection annotations
Bastian Winkler [Sat, 22 Jan 2011 11:51:31 +0000 (12:51 +0100)]
model: Fix some GObject-Introspection annotations

http://bugzilla.clutter-project.org/show_bug.cgi?id=2526

13 years agoMerge branch 'xi2'
Emmanuele Bassi [Fri, 21 Jan 2011 20:22:32 +0000 (20:22 +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
  ...

13 years agocogl: call _cogl_texture_init for x11 tfp
Robert Bragg [Fri, 21 Jan 2011 18:43:35 +0000 (18:43 +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.

13 years agojournal: start uprof flush timer after flushing fb deps
Robert Bragg [Fri, 21 Jan 2011 17:38:14 +0000 (17:38 +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.

13 years agocogl: make sure to init ctx->framebuffers
Robert Bragg [Fri, 21 Jan 2011 17:28:34 +0000 (17:28 +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.

13 years agocogl: rename CoglVertexAttribute CoglAttribute
Robert Bragg [Thu, 20 Jan 2011 19:31:53 +0000 (19:31 +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.

13 years agodocs: Adds bitmap section to cogl reference manual
Robert Bragg [Thu, 20 Jan 2011 18:51:24 +0000 (18:51 +0000)]
docs: Adds bitmap section to cogl reference manual

This adds an include for the cogl-bitmap section to cogl-docs.xml.in

13 years agocogl: s/Cogl*Vertex/CoglVertex*/
Robert Bragg [Thu, 20 Jan 2011 12:29:49 +0000 (12:29 +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.

13 years agotest-picking: Don't manually paint the stage
Robert Bragg [Thu, 20 Jan 2011 18:30:55 +0000 (18:30 +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.

13 years agodebug: Adds a COGL_DEBUG=disable-fast-read-pixel option
Robert Bragg [Thu, 20 Jan 2011 14:41:51 +0000 (14:41 +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.

13 years agocogl: Implements a software only read-pixel fast-path
Robert Bragg [Wed, 12 Jan 2011 22:12:41 +0000 (22:12 +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.

13 years agomatrix: fix transform/project_points() APIs
Robert Bragg [Tue, 18 Jan 2011 16:37:01 +0000 (16:37 +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.

13 years agocogl: Adds _cogl_util_point_in_polygon API
Robert Bragg [Thu, 13 Jan 2011 14:29:46 +0000 (14:29 +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.

13 years agocogl: Adds _cogl_swap_buffers_notify for clutter backends
Robert Bragg [Wed, 12 Jan 2011 22:06:58 +0000 (22:06 +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.

13 years agoclip: rename get_clip_stack + add framebuffer_get_stack
Robert Bragg [Wed, 12 Jan 2011 19:30:30 +0000 (19:30 +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.

13 years agoclip-stack: Adds _cogl_clip_stack_get_bounds API
Robert Bragg [Wed, 12 Jan 2011 19:13:45 +0000 (19:13 +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()

13 years agojournal: Support per-framebuffer journals
Robert Bragg [Thu, 6 Jan 2011 13:25:45 +0000 (13:25 +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.

13 years agocogl-object: Adds an internal _cogl_object_set_user_data
Robert Bragg [Wed, 12 Jan 2011 20:37:53 +0000 (20:37 +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.

13 years agoframebuffer: Move clear code to cogl-framebuffer.c
Robert Bragg [Wed, 5 Jan 2011 15:30:04 +0000 (15:30 +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.)

13 years agotest-devices: Actually print the axis data
Emmanuele Bassi [Fri, 21 Jan 2011 15:27:56 +0000 (15:27 +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.

13 years agodevice-manager/xi2: Sync the stage of source devices
Emmanuele Bassi [Fri, 21 Jan 2011 15:26:52 +0000 (15:26 +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.

13 years agoevent: Clean up clutter_event_copy()
Emmanuele Bassi [Fri, 21 Jan 2011 15:14:11 +0000 (15:14 +0000)]
event: Clean up clutter_event_copy()

Try to avoid duplication of variables and blocks.

13 years agodevice: unset the axes array pointer when resetting
Emmanuele Bassi [Fri, 21 Jan 2011 14:12:19 +0000 (14:12 +0000)]
device: unset the axes array pointer when resetting

Otherwise we'll get a nice realloc() error from glibc.

13 years agostage: Do not create the default stage on stage.is_default()
Emmanuele Bassi [Fri, 21 Jan 2011 11:43:00 +0000 (11:43 +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.

13 years agodevice-manager/xi2: Fix device hotplugging
Emmanuele Bassi [Fri, 21 Jan 2011 11:41:36 +0000 (11:41 +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.

13 years agoglx: Clean up GLX implementation
Emmanuele Bassi [Fri, 21 Jan 2011 10:49:12 +0000 (10:49 +0000)]
glx: Clean up GLX implementation

Like commit a277b4091a3fa09a39cf001809c3048eb27f3952, but targeted at
the GLX backend.

13 years agodevice/x11: Store min/max keycode in the XI device class
Emmanuele Bassi [Fri, 21 Jan 2011 10:24:34 +0000 (10:24 +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.

13 years agox11: Hide all private symbols
Emmanuele Bassi [Thu, 20 Jan 2011 15:39:28 +0000 (15:39 +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.

13 years agodocs: More documentation fixes for InputDevice
Emmanuele Bassi [Wed, 19 Jan 2011 17:03:27 +0000 (17:03 +0000)]
docs: More documentation fixes for InputDevice

13 years ago*/event: Never manipulate the event queue directly
Emmanuele Bassi [Wed, 19 Jan 2011 16:34:49 +0000 (16:34 +0000)]
*/event: Never manipulate the event queue directly

Always use _clutter_event_push() instead.

13 years agowin32: Update DeviceManager device creation
Emmanuele Bassi [Wed, 19 Jan 2011 16:34:37 +0000 (16:34 +0000)]
win32: Update DeviceManager device creation

13 years agodevice: Allow enabling/disabling non-master devices
Emmanuele Bassi [Wed, 19 Jan 2011 16:23:45 +0000 (16:23 +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.

13 years agobackend/eglx: Add newly created stages to the translators
Emmanuele Bassi [Wed, 19 Jan 2011 15:17:34 +0000 (15:17 +0000)]
backend/eglx: Add newly created stages to the translators

The events directed to the stage should be translated by the stage.

13 years agodevice: Add more doc annotations
Emmanuele Bassi [Wed, 19 Jan 2011 13:54:27 +0000 (13:54 +0000)]
device: Add more doc annotations

Even for internal API.

13 years agodevice: Use a double for translate_axis() argument
Emmanuele Bassi [Wed, 19 Jan 2011 13:53:20 +0000 (13:53 +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.

13 years agotest-devices: Clean up and show axes data
Emmanuele Bassi [Wed, 19 Jan 2011 13:52:33 +0000 (13:52 +0000)]
test-devices: Clean up and show axes data

13 years agoevent: Fix up clutter_event_copy()
Emmanuele Bassi [Tue, 18 Jan 2011 22:31:14 +0000 (22:31 +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.

13 years agodevice/xi2: Translate the axis data after setting devices
Emmanuele Bassi [Tue, 18 Jan 2011 22:30:21 +0000 (22:30 +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.

13 years agodevice: Add more accessors for properties
Emmanuele Bassi [Tue, 18 Jan 2011 17:33:22 +0000 (17:33 +0000)]
device: Add more accessors for properties

Allow using real accessor methods for getting the ClutterInputDevice
properties set on construction.

13 years agodocs: Update API reference
Emmanuele Bassi [Tue, 18 Jan 2011 16:57:14 +0000 (16:57 +0000)]
docs: Update API reference

13 years agodevice: Add get_axis_value()
Emmanuele Bassi [Tue, 18 Jan 2011 16:55:14 +0000 (16:55 +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.

13 years agoevent: Add accessor for the axes field
Emmanuele Bassi [Tue, 18 Jan 2011 16:54:12 +0000 (16:54 +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.

13 years agodevice: Add keys and axes accessors
Emmanuele Bassi [Tue, 18 Jan 2011 16:13:26 +0000 (16:13 +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.

13 years agodocs: Update dependencies in README
Emmanuele Bassi [Tue, 18 Jan 2011 15:42:02 +0000 (15:42 +0000)]
docs: Update dependencies in README

13 years agoegl/x11: Defer X11-specific code to the X11 backend
Emmanuele Bassi [Tue, 18 Jan 2011 14:16:11 +0000 (14:16 +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.

13 years agodocs: Fill out documentation for new symbols
Emmanuele Bassi [Tue, 18 Jan 2011 14:09:04 +0000 (14:09 +0000)]
docs: Fill out documentation for new symbols

13 years agobackend/x11: Allow querying xinput support
Emmanuele Bassi [Tue, 18 Jan 2011 13:15:20 +0000 (13:15 +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.

13 years agoevent/x11: Epic clean up
Emmanuele Bassi [Tue, 18 Jan 2011 13:08:09 +0000 (13:08 +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.

13 years agodevice/x11: Use similar core for axis translation as XI2
Emmanuele Bassi [Tue, 18 Jan 2011 13:07:36 +0000 (13:07 +0000)]
device/x11: Use similar core for axis translation as XI2

13 years agostage/x11: Do not check a boolean for equality
Emmanuele Bassi [Tue, 18 Jan 2011 13:05:46 +0000 (13:05 +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.

13 years agoAdd copyright and licensing blurbs
Emmanuele Bassi [Tue, 18 Jan 2011 13:05:17 +0000 (13:05 +0000)]
Add copyright and licensing blurbs

13 years agodevice/xi2: Implement get_core_device()
Emmanuele Bassi [Tue, 18 Jan 2011 13:03:07 +0000 (13:03 +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.

13 years agodevice/xi2: Remove the ::remove implementation
Emmanuele Bassi [Tue, 18 Jan 2011 13:02:15 +0000 (13:02 +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.

13 years agodevice/xi2: Blow the cached devices list
Emmanuele Bassi [Tue, 18 Jan 2011 13:01:27 +0000 (13:01 +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.

13 years agoClean up the copyright and licensing blurbs
Emmanuele Bassi [Tue, 18 Jan 2011 12:59:49 +0000 (12:59 +0000)]
Clean up the copyright and licensing blurbs

13 years agox11: Use XI2 API only if we support it
Emmanuele Bassi [Tue, 18 Jan 2011 12:57:50 +0000 (12:57 +0000)]
x11: Use XI2 API only if we support it

XIQueryVersion() is XI2 API.

13 years agoinput-device: Add documentation
Emmanuele Bassi [Tue, 18 Jan 2011 12:57:12 +0000 (12:57 +0000)]
input-device: Add documentation

13 years agoinput-device: Move select_stage_events() to a vfunc
Emmanuele Bassi [Mon, 17 Jan 2011 17:01:58 +0000 (17:01 +0000)]
input-device: Move select_stage_events() to a vfunc

Don't use a signal, use a virtual function.

13 years agoinput-device: Make ClutterInputDeviceClass private
Emmanuele Bassi [Mon, 17 Jan 2011 16:56:07 +0000 (16:56 +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.

13 years agoEnable XInput support by default
Emmanuele Bassi [Mon, 17 Jan 2011 16:42:18 +0000 (16:42 +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.

13 years agoevent/x11: Rework the way we translate X11 events
Emmanuele Bassi [Tue, 4 Jan 2011 12:32:04 +0000 (12:32 +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.

13 years agoAppease the gods in introspection
Emmanuele Bassi [Thu, 20 Jan 2011 16:18:16 +0000 (16:18 +0000)]
Appease the gods in introspection

Reduce the amount of bogus warnings g-ir-scanner prints out.

13 years agoUpdate the NEWS file
Emmanuele Bassi [Thu, 20 Jan 2011 13:44:16 +0000 (13:44 +0000)]
Update the NEWS file

13 years agoExpose deprecated symbols whilst building Clutter
Emmanuele Bassi [Thu, 20 Jan 2011 13:29:37 +0000 (13:29 +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.

13 years agoglx: Deprecate ClutterGLXTexturePixmap
Emmanuele Bassi [Thu, 20 Jan 2011 13:19:03 +0000 (13:19 +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.

13 years agotest-pixmap: Remove the GLX code
Emmanuele Bassi [Thu, 20 Jan 2011 12:59:56 +0000 (12:59 +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.

13 years agotest-pixmap: Fix up compilation on EGLX
Emmanuele Bassi [Wed, 19 Jan 2011 18:51:01 +0000 (18:51 +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.

13 years agodocs: Ignore clutter-config.h when scanning headers
Emmanuele Bassi [Wed, 19 Jan 2011 17:54:28 +0000 (17:54 +0000)]
docs: Ignore clutter-config.h when scanning headers

13 years agotests: Try to drop including config.h
Emmanuele Bassi [Wed, 19 Jan 2011 14:36:30 +0000 (14:36 +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.

13 years agobuild: Generate an instealled config header
Emmanuele Bassi [Wed, 19 Jan 2011 14:33:27 +0000 (14:33 +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.

13 years agoUpdate the NEWS file
Emmanuele Bassi [Tue, 18 Jan 2011 15:14:58 +0000 (15:14 +0000)]
Update the NEWS file

13 years agotimeline: Check if the timeline is playing in do_tick
Chris Lord [Tue, 18 Jan 2011 15:48:29 +0000 (15:48 +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.

13 years agodrag-action: fix case where motion events are indefinitely disabled
Lucas Rocha [Mon, 17 Jan 2011 18:28:49 +0000 (18:28 +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

13 years agostage: Fix gtk-doc annotation for set_accept_focus()
Emmanuele Bassi [Tue, 18 Jan 2011 14:46:02 +0000 (14:46 +0000)]
stage: Fix gtk-doc annotation for set_accept_focus()

13 years agointrospection: Add missing (out) annotations for get_color()
Bastian Winkler [Fri, 14 Jan 2011 13:53:05 +0000 (14:53 +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

13 years agodocs: Add ClutterClickAction.get_state()
Emmanuele Bassi [Mon, 17 Jan 2011 17:30:47 +0000 (17:30 +0000)]
docs: Add ClutterClickAction.get_state()

13 years agoclick-action: add API to get modifier type
Lucas Rocha [Mon, 17 Jan 2011 00:38:04 +0000 (00:38 +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

13 years agocolor: Mark the new static color API as being new from 1.6
Damien Lespiau [Mon, 17 Jan 2011 15:22:48 +0000 (15:22 +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.

13 years agocogl-program: Don't use separate definitions on GLES 1.1
Neil Roberts [Mon, 17 Jan 2011 12:21:33 +0000 (12:21 +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

13 years agocogl-pipeline-opengl: #ifdef out set_glsl_program for GLES 1.1
Neil Roberts [Mon, 17 Jan 2011 12:20:06 +0000 (12:20 +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

13 years agocogl-pipeline: Fix the enum names for the constant combine source
Neil Roberts [Mon, 17 Jan 2011 12:06:13 +0000 (12:06 +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

13 years agoClutterX11TexturePixmap: Fix doc comment
Adel Gadllah [Sun, 16 Jan 2011 22:19:28 +0000 (23:19 +0100)]
ClutterX11TexturePixmap: Fix doc comment

The wrong signal name was used probably a copy & paste
mistake, fix that.

13 years agocogl-buffer: Support mapping buffers for write on GLES
Neil Roberts [Thu, 13 Jan 2011 15:54:50 +0000 (15:54 +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.

13 years agocogl: Enable the VBOs feature for GLES2
Neil Roberts [Thu, 13 Jan 2011 15:36:08 +0000 (15:36 +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.

13 years agocogl: Fallback to set_data when mapping a buffer to fill it
Neil Roberts [Thu, 13 Jan 2011 15:35:30 +0000 (15:35 +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.

13 years agocogl-context: Don't enable point sprites on GLES2
Neil Roberts [Thu, 13 Jan 2011 14:12:10 +0000 (14:12 +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.

13 years agopipeline: differentiate texture target and data state
Robert Bragg [Tue, 11 Jan 2011 16:02:06 +0000 (16:02 +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.