profile/ivi/clutter.git
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 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.

13 years agopipeline: optimize state init if changing property
Robert Bragg [Wed, 12 Jan 2011 17:11:48 +0000 (17:11 +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.

13 years agotest-cogl-shader-glsl: Disable the atlas for the hand texture
Neil Roberts [Wed, 12 Jan 2011 16:59:37 +0000 (16:59 +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.

13 years agocogl-atlas-texture: Don't disable atlas if can't read texture data
Neil Roberts [Wed, 12 Jan 2011 16:56:52 +0000 (16:56 +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.

13 years agoPost-release version bump to 1.5.13
Emmanuele Bassi [Tue, 11 Jan 2011 21:34:37 +0000 (21:34 +0000)]
Post-release version bump to 1.5.13

13 years agoRelease 1.5.12
Emmanuele Bassi [Tue, 11 Jan 2011 20:29:30 +0000 (20:29 +0000)]
Release 1.5.12

13 years agopipeline: don't skip flush if skip_gl_color flag differs
Robert Bragg [Tue, 11 Jan 2011 14:10:11 +0000 (14:10 +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.

13 years agotest-shader: Fix the edge-detect shader
Damien Lespiau [Tue, 11 Jan 2011 14:15:46 +0000 (14:15 +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.

13 years agocogl-vertex-attribute: Optionally avoid applying the legacy state
Neil Roberts [Mon, 10 Jan 2011 20:13:41 +0000 (20:13 +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.

13 years agoUpdate the NEWS file
Emmanuele Bassi [Tue, 11 Jan 2011 12:38:52 +0000 (12:38 +0000)]
Update the NEWS file

13 years agoscript-parser: Also honor properties of type GType
Bastian Winkler [Mon, 3 Jan 2011 15:15:17 +0000 (16:15 +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

13 years agoUpdate NEWS file
Emmanuele Bassi [Tue, 11 Jan 2011 11:49:11 +0000 (11:49 +0000)]
Update NEWS file

13 years agoshader: Don't notify properties when finalizing shaders
Damien Lespiau [Tue, 11 Jan 2011 10:23:59 +0000 (10:23 +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

13 years agoClutterListModel: Implement get_n_rows for improved performance
Tomeu Vizoso [Mon, 10 Jan 2011 18:13:03 +0000 (19:13 +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

13 years agoClutterAlignConstraint: Keep pixel aligment
Adel Gadllah [Wed, 5 Jan 2011 09:24:26 +0000 (10:24 +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

13 years agocogl-journal: Avoid enabling blending if possible
Neil Roberts [Tue, 14 Dec 2010 14:44:45 +0000 (14:44 +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

13 years agocogl-vertex-attribute: Add flags to _cogl_draw_vertex_attributes_array
Neil Roberts [Tue, 14 Dec 2010 14:24:17 +0000 (14:24 +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

13 years agocogl: Don't assume that CoglBitmaps are allocated to height*rowstride
Neil Roberts [Fri, 17 Dec 2010 16:30:23 +0000 (16:30 +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

13 years agocogl-texture-driver-gles: Don't copy the bitmap if alignment matches
Neil Roberts [Fri, 17 Dec 2010 16:09:26 +0000 (16:09 +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

13 years agocogl-util: Add an internal wrapper for the ffs function
Neil Roberts [Fri, 17 Dec 2010 16:06:10 +0000 (16:06 +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

13 years agocogl-texture: Don't use the source rowstride if we have to copy bitmap
Neil Roberts [Fri, 17 Dec 2010 14:52:25 +0000 (14:52 +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

13 years agocogl-vertex-attribute: Fix the name of the cogl_normal_in attribute
Neil Roberts [Wed, 22 Dec 2010 01:45:09 +0000 (01:45 +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

13 years agocontainer: Do not use Actor as prerequisite
Emmanuele Bassi [Mon, 10 Jan 2011 14:03:35 +0000 (14:03 +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.

13 years agoegl: Fix build for --with-flavour=opengl-egl-xlib
nobled [Tue, 4 Jan 2011 13:56:05 +0000 (13:56 +0000)]
egl: Fix build for --with-flavour=opengl-egl-xlib

Make sure the EGL backend doesn't forget to include desktop OpenGL headers.

13 years agoegl: Don't use obsolete API
nobled [Tue, 4 Jan 2011 13:59:48 +0000 (13:59 +0000)]
egl: Don't use obsolete API

Fixes a GCC "implicit declaration of function" warning when compiling.

13 years agox11: Create the list of all devices correctly
Kristian Høgsberg [Thu, 6 Jan 2011 12:57:26 +0000 (07:57 -0500)]
x11: Create the list of all devices correctly

Linked lists are tricky.

13 years agotest-text-field: Grab key focus on the first entry
Emmanuele Bassi [Thu, 30 Dec 2010 12:49:41 +0000 (12:49 +0000)]
test-text-field: Grab key focus on the first entry

So that you can start typing right away.

13 years agoosx: Implement the set_accept_focus() vfunc
Emmanuele Bassi [Tue, 28 Dec 2010 22:21:09 +0000 (22:21 +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.

13 years agowin32: Implement the set_accept_focus() vfunc
Emmanuele Bassi [Tue, 28 Dec 2010 18:04:00 +0000 (18:04 +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

13 years agox11: Implement the set_accept_focus() vfunc
Emmanuele Bassi [Tue, 28 Dec 2010 17:38:39 +0000 (17:38 +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

13 years agostage: Add :accept-focus property and accessors
Emmanuele Bassi [Tue, 28 Dec 2010 17:37:18 +0000 (17:37 +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

13 years agostage-window: Add set_accept_focus() vfunc
Emmanuele Bassi [Tue, 28 Dec 2010 17:36:27 +0000 (17:36 +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

13 years agoFixed a crash when destroying the actor of a LEAVE event
Johan Bilien [Wed, 29 Dec 2010 21:49:13 +0000 (16:49 -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 <ebassi@linux.intel.com>
13 years agoautogen.sh: make autoreconf use automake-1.11 when available
Nguyễn Thái Ngọc Duy [Thu, 30 Dec 2010 01:16:10 +0000 (08:16 +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 <pclouds@gmail.com>
http://bugzilla.clutter-project.org/show_bug.cgi?id=2504