profile/ivi/clutter.git
14 years agocogl: Remove cogl-defines.h.in from the driver make files
Neil Roberts [Wed, 23 Jun 2010 16:29:08 +0000 (17:29 +0100)]
cogl: Remove cogl-defines.h.in from the driver make files

Commit 7fae8ac051292 changed cogl-defines.h.in so there is only a
single copy in clutter/cogl/ instead of one for each driver. However
the old files were still mentioned in the EXTRA_DIST of the
Makefile.am so make distcheck was failing.

14 years agocogl-path: Disable texture coord arrays before drawing
Chris Lord [Wed, 23 Jun 2010 14:53:50 +0000 (15:53 +0100)]
cogl-path: Disable texture coord arrays before drawing

It was possible that the texture co-ord arrays were left enabled during
stroking, which could possibly cause a crash.

14 years agoclutter-animation: Fix for using fixed:: from clutter_actor_animatev
Neil Roberts [Fri, 18 Jun 2010 10:12:51 +0000 (11:12 +0100)]
clutter-animation: Fix for using fixed:: from clutter_actor_animatev

When using clutter_actor_animatev it would set a boolean whenever a
property begins with "fixed::". However it would never clear the
variable so it would end up marking all subsequent properties as
fixed.

http://bugzilla.openedhand.com/show_bug.cgi?id=2180

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

14 years agoRevert 7e6b60270d1951f0789868740b8df6acfe677d57
Emmanuele Bassi [Wed, 23 Jun 2010 12:34:36 +0000 (13:34 +0100)]
Revert 7e6b60270d1951f0789868740b8df6acfe677d57

You should not commit patches based on the bugzilla description alone.
You should not commit patches based on the bugzilla description alone.
You should not commit patches based on the bugzilla description alone.
...

14 years agoFix the libdir in the pkg-config file
Emmanuele Bassi [Wed, 23 Jun 2010 12:23:19 +0000 (13:23 +0100)]
Fix the libdir in the pkg-config file

14 years agotexture-pixmap-x11: don't assume anything about the GLXFBConfig type
Robert Bragg [Tue, 22 Jun 2010 14:42:41 +0000 (15:42 +0100)]
texture-pixmap-x11: don't assume anything about the GLXFBConfig type

A pedantic change to get_fbconfig_for_depth() so that we don't need to
make any assumptions about the GLXFBConfig typedef or what values
we can overload to indicate an invalid config.

get_fbconfig_for_depth() now simply returns FALSE if it fails to find a
config.

14 years agodrag-action: Disable picking during drag
Emmanuele Bassi [Tue, 22 Jun 2010 15:12:53 +0000 (16:12 +0100)]
drag-action: Disable picking during drag

While dragging we don't need to perform picking to determine the actor
underneath the pointer, for two reasons:

  • we use a capture on the stage to determine the motion delta.
  • we know the actor underneath the pointer because that's the
    actor we are dragging around.

This change should make dragging actors in complex scenes a bit faster.

14 years agoSilence another compiler warning
Emmanuele Bassi [Tue, 22 Jun 2010 13:43:36 +0000 (14:43 +0100)]
Silence another compiler warning

14 years agocogl-texture-pixmap-x11: Use NULL instead of None for invalid GLXFBConfig
Neil Roberts [Tue, 22 Jun 2010 13:10:44 +0000 (14:10 +0100)]
cogl-texture-pixmap-x11: Use NULL instead of None for invalid GLXFBConfig

GLXFBConfigs are opaque pointers not XIDs so it doesn't make sense to
return None from get_fbconfig_for_depth. Instead it now returns NULL.

14 years agoAdd test-cogl-texture-pixmap-x11 to the ignore file
Emmanuele Bassi [Tue, 22 Jun 2010 13:05:39 +0000 (14:05 +0100)]
Add test-cogl-texture-pixmap-x11 to the ignore file

14 years agoSilence some compiler warnings
Emmanuele Bassi [Tue, 22 Jun 2010 12:48:53 +0000 (13:48 +0100)]
Silence some compiler warnings

14 years agodocs: Fix release notes wording
Emmanuele Bassi [Tue, 22 Jun 2010 12:31:41 +0000 (13:31 +0100)]
docs: Fix release notes wording

14 years agodocs: Fix links in the README
Emmanuele Bassi [Tue, 22 Jun 2010 12:31:31 +0000 (13:31 +0100)]
docs: Fix links in the README

14 years agodocs: Remove the 'copyright-waiver' section
Emmanuele Bassi [Tue, 22 Jun 2010 12:29:03 +0000 (13:29 +0100)]
docs: Remove the 'copyright-waiver' section

There is no need to toggle the copyright-waiver flag on Bugzilla
any more.

14 years agoUse -Bsymbolic-functions
Emmanuele Bassi [Tue, 22 Jun 2010 11:13:31 +0000 (12:13 +0100)]
Use -Bsymbolic-functions

The -Bsymbolic-functions linker flag allows to avoid intra-library
PLT jumps on ELF platforms. It is similar to the aliasing hack in
GLib and GTK+, but definitely less messy.

The configure script should look for the flags, in order to support
platforms/linkers that do not have it.

14 years agoconform: Do not use deprecated API in test-clutter-units
Emmanuele Bassi [Tue, 22 Jun 2010 10:59:07 +0000 (11:59 +0100)]
conform: Do not use deprecated API in test-clutter-units

Setting the DPI is done through the ClutterSettings:font-dpi property.

14 years agoDo not hardcode paths in pkgconfig file
Emmanuele Bassi [Tue, 22 Jun 2010 07:29:02 +0000 (08:29 +0100)]
Do not hardcode paths in pkgconfig file

The pkgconfig file correctly sets $prefix to @prefix@, but the other
paths should be relative to $prefix.

14 years agoAdd a test case for CoglTexturePixmapX11
Neil Roberts [Fri, 18 Jun 2010 17:51:15 +0000 (18:51 +0100)]
Add a test case for CoglTexturePixmapX11

14 years agoclutter-{glx,x11}-texture-pixmap: Use CoglTexturePixmapX11
Neil Roberts [Wed, 26 May 2010 17:06:39 +0000 (18:06 +0100)]
clutter-{glx,x11}-texture-pixmap: Use CoglTexturePixmapX11

The pixmap handling of both of the texture pixmap actors in Clutter is
now removed and instead it just creates a CoglTexturePixmapX11. Both
actors are now equivalent so there is no need to choose between the
two.

14 years agoAdd a CoglTexturePixmapX11 texture backend
Neil Roberts [Tue, 25 May 2010 17:56:14 +0000 (18:56 +0100)]
Add a CoglTexturePixmapX11 texture backend

This is a publicly exposed texture backend to create a texture which
contains the contents of an X11 pixmap. The API is currently marked as
experimental.

The backend internally holds a handle to another texture. All of the
backend virtuals simply redirect to the internal texture.

The texture can optionally be automatically updated if the
automatic_updates parameter is TRUE. If set then Cogl will listen for
damage events on the pixmap and update the texture accordingly.
Alternatively a damage object can be created externally and passed
down to Cogl.

The updates can be performed with XGetImage, XShmGetImage or the
GLX_EXT_texture_pixmap extension. If the TFP extension is used it will
optionally try to create a rectangle texture if the driver does not
support NPOTs or it is forced through the
COGL_PIXMAP_TEXTURE_RECTANGLE or CLUTTER_PIXMAP_TEXTURE_RECTANGLE
environment variables.

If the GLXFBConfig does not support mipmapping then it will fallback
to using X{Shm,}GetImage. It keeps a separate texture around for this
so that it can later start using the TFP texture again if the texture
is later drawn with mipmaps disabled.

14 years agotest-pixmap: Use the 'm' key to toggle texture quality
Neil Roberts [Mon, 14 Jun 2010 16:36:24 +0000 (17:36 +0100)]
test-pixmap: Use the 'm' key to toggle texture quality

When the 'm' key is pressed it will now recursively look for all
ClutterTexture subclasses on the stage and toggle the texture quality
between high and low. This is useful to test the mipmap fallback.

14 years agotest-pixmap: Draw something more interesting when the mouse is clicked
Neil Roberts [Fri, 28 May 2010 17:41:20 +0000 (18:41 +0100)]
test-pixmap: Draw something more interesting when the mouse is clicked

When the mouse button is pressed it would previously draw a small
1-pixel wide fully transparent line to the pixmap. This is a useful
feature to help test the automatic updates but the line is quite hard
to see so it's to easy miss. This patch changes it to draw a thick
black circle. The circle is drawn at a different position every time
the button is clicked.

14 years agotest-pixmap: Add a --disable-animation option
Neil Roberts [Fri, 28 May 2010 16:53:04 +0000 (17:53 +0100)]
test-pixmap: Add a --disable-animation option

Sometimes the animation makes debugging awkward so this patch adds a
--disable-animation option to simplify the test.

14 years agotest-pixmap: Enable automatic updates for the hand
Neil Roberts [Fri, 28 May 2010 16:45:07 +0000 (17:45 +0100)]
test-pixmap: Enable automatic updates for the hand

The hand actor has a feature that if you click on the stage it will
draw a line to the actor. However it's not possible to see the results
of this because automatic updates were disabled so the texture would
never be updated.

14 years agotest-pixmap: Implement the --disable-x11 option
Neil Roberts [Fri, 28 May 2010 16:32:21 +0000 (17:32 +0100)]
test-pixmap: Implement the --disable-x11 option

test-pixmap has long had a --disable-x11 option that didn't do
anything. This patch adds the neccessary if (disable_x11) to disable
adding the ClutterX11TexturePixmap actor when the option is given.

14 years agoAdd -DCOGL_ENABLE_EXPERIMENTAL_API to Makefiles for Cogl and x11/glx
Neil Roberts [Mon, 21 Jun 2010 11:48:02 +0000 (12:48 +0100)]
Add -DCOGL_ENABLE_EXPERIMENTAL_API to Makefiles for Cogl and x11/glx

Cogl and Clutter should be able to use the experimental API so this
adds the required define to the CPPFLAGS in the Makefiles.

14 years agocogl-defines.h: Add a COGL_HAS_X11 define
Neil Roberts [Fri, 18 Jun 2010 13:30:23 +0000 (14:30 +0100)]
cogl-defines.h: Add a COGL_HAS_X11 define

This will be defined in cogl-defines.h whenever Cogl is built using a
winsys that supports X11. This implies CoglTexturePixmapX11 will be
available.

To make this work the two separate cogl-defines.h.in files have been
merged into one. The configure script now makes a @COGL_DEFINES@
substitution variable which contains the #define lines to put in
rather than directly having them in the seperate files.

14 years agocogl: Add _cogl_xlib_{,un}trap_errors
Neil Roberts [Fri, 4 Jun 2010 09:38:30 +0000 (10:38 +0100)]
cogl: Add _cogl_xlib_{,un}trap_errors

This is similar to clutter_x11_{,un}trap_errors except that it stores
the previous trap state in a caller-allocated struct so that it can be
re-entrant.

Make _cogl_xlib_trap_errors re-entrant

(this will be squashed into an earlier commit)

14 years agocogl-texture: Avoid premult conversion if the dst format has no alpha
Neil Roberts [Tue, 1 Jun 2010 12:32:57 +0000 (13:32 +0100)]
cogl-texture: Avoid premult conversion if the dst format has no alpha

The _cogl_texture_needs_premult_conversion function was already
checking whether the source format had an alpha channel before
returning TRUE, but it also doesn't make sense to do the premult
conversion if the destination format has no alpha. This patch adds
that check in too.

14 years agocogl: Add the infrastructure for checking for winsys extensions
Neil Roberts [Wed, 2 Jun 2010 16:55:56 +0000 (17:55 +0100)]
cogl: Add the infrastructure for checking for winsys extensions

This adds the framework needed to check for winsys specific extensions
(such as GLX extensions) using a similar mechanism to the
cogl-feature-functions header. There is a separate
cogl-winsys-feature-functions header which will contain macros to list
the extensions and functions. cogl_create_context_winsys now calls
_cogl_feature_check for each of these functions. _cogl_feature_check
has had to be changed to accept the driver prefix as the first
parameter so that it can prepend "GLX" rather than "GL" in this case.

14 years agoPass all Xlib events through Cogl
Neil Roberts [Wed, 19 May 2010 15:13:07 +0000 (16:13 +0100)]
Pass all Xlib events through Cogl

The Clutter X11 backend now passes all events through
_cogl_xlib_handle_event. This function can now internally be hooked
with _cogl_xlib_add_filter. These are added to a list of callbacks
which are all called in turn by _cogl_xlib_handle_event. This is
intended to be used internally in Cogl by any parts that need to see
Xlib events.

Cogl now also has an internally exposed function to set a pointer to
the Xlib display. This is stored in a global variable. The Clutter X11
backend sets this.

_cogl_xlib_handle_event and _cogl_xlib_set_display can be removed once
Cogl gains a proper window system abstraction.

14 years agocogl: Add a struct for winsys-specific data to CoglContext
Neil Roberts [Wed, 2 Jun 2010 14:16:14 +0000 (15:16 +0100)]
cogl: Add a struct for winsys-specific data to CoglContext

This creates a separate struct to store the fields of the context that
are specific to the winsys. This is all stored in one file but ideally
this could work more like the CoglContextDriver struct and have a
different header for each winsys.

14 years agocogl: Add an internal CoglTextureRectangle backend
Neil Roberts [Thu, 10 Jun 2010 14:33:34 +0000 (15:33 +0100)]
cogl: Add an internal CoglTextureRectangle backend

This adds an internal rectangle texture backend which is mostly based
on the CoglTexture2D backend. It will throw assert failures if any
operations are attempted that rectangle textures don't support, such
as mipmapping or hardware repeating.

14 years agocogl-texture: Replace the ensure_mipmaps virtual with pre_paint
Neil Roberts [Wed, 9 Jun 2010 16:39:59 +0000 (17:39 +0100)]
cogl-texture: Replace the ensure_mipmaps virtual with pre_paint

Instead of the ensure_mipmaps virtual that is only called whenever the
texture is about to be rendered with a min filter that needs the
mipmap, there is now a pre_paint virtual that is always called when
the texture is about to be painted in any way. It has a flags
parameter which is used to specify whether the mipmap will be needed.

This is useful for CoglTexturePixmapX11 because it needs to do stuff
before painting that is unrelated to mipmapping.

14 years agocogl-texture: List texture subclass types rather than hardcoding them
Neil Roberts [Fri, 11 Jun 2010 12:50:36 +0000 (13:50 +0100)]
cogl-texture: List texture subclass types rather than hardcoding them

Instead of having a hardcoded series of if-statements in
cogl_is_texture to determine which types should appear as texture
subclasses, they are now stored in a GSList attached to the Cogl
context. The list is amended to using a new cogl_texture_register_type
function. There is a convenience macro called COGL_TEXTURE_DEFINE
which uses COGL_HANDLE_DEFINE_WITH_CODE to register the texture type
when the _get_type() function is first called.

14 years agoAdd COGL_{OBJECT,HANDLE}_DEFINE_WITH_CODE
Neil Roberts [Fri, 11 Jun 2010 12:44:27 +0000 (13:44 +0100)]
Add COGL_{OBJECT,HANDLE}_DEFINE_WITH_CODE

This macro is similar to COGL_HANDLE_DEFINE_WITH_CODE except that it
allows a snippet of code to be inserted into the _get_type()
function. This is similar to how G_DEFINE_TYPE_WITH_CODE
works. COGL_HANDLE_DEFINE is now just a wrapper around
COGL_HANDLE_DEFINE_WITH_CODE.

14 years agoAdd _cogl_texture_2d_externally_modified
Neil Roberts [Thu, 3 Jun 2010 14:06:47 +0000 (15:06 +0100)]
Add _cogl_texture_2d_externally_modified

_cogl_texture_2d_externally_modified is a function specific to the
CoglTexture2D texture backend that should be called whenever the
contents of the texture are modified without the backend knowing about
it. It simply marks the mipmap tree as invalid.

14 years agocogl: Fix the include path in driver/*/Makefile.am
Neil Roberts [Wed, 2 Jun 2010 14:01:18 +0000 (15:01 +0100)]
cogl: Fix the include path in driver/*/Makefile.am

The include path for the winsys and driver folder was given relative
to $(srcdir) so it would end up relative to the driver folder which is
wrong. It is now specified as $(srcdir)/../../winsys to get the right
location. The driver folder is removed because it is actually just
$(srcdir) and that is already included.

14 years agotest-shader: guard GLES2 specific changes with COGL_HAS_GLES2
Robert Bragg [Tue, 8 Jun 2010 21:54:26 +0000 (22:54 +0100)]
test-shader: guard GLES2 specific changes with COGL_HAS_GLES2

Previously we were using an internal only HAVE_COGL_GLES2 define to
guard GLES 2 specific changes so for instance the precision modifiers
weren't being emitted in the shader source.

http://bugzilla.o-hand.com/show_bug.cgi?id=2178

14 years agogles2: don't disable clip planes for GLES2
Robert Bragg [Tue, 8 Jun 2010 17:38:25 +0000 (18:38 +0100)]
gles2: don't disable clip planes for GLES2

GLES2 doesn't provide user clip planes (you would have to use a vertex +
fragment shader to achieve the same kind of result) so we make sure not
to call glEnable/Disable with any of the GL_CLIP_PLANE0..3 defines.

http://bugzilla.o-hand.com/show_bug.cgi?id=2177

14 years agomaterial: fix a typo in _cogl_material_journal_unref
Robert Bragg [Tue, 22 Jun 2010 10:21:09 +0000 (11:21 +0100)]
material: fix a typo in _cogl_material_journal_unref

The function had a line like:

CoglMaterial *material =
    material = _cogl_material_pointer_from_handle (material_handle);

where the duplicate "material =" wasn't intended, so this patch removes
it.

14 years agojson: Bump up the requirement of json-glib
Emmanuele Bassi [Tue, 22 Jun 2010 07:00:40 +0000 (08:00 +0100)]
json: Bump up the requirement of json-glib

We're actually using a symbol (the JSON_NODE_HOLDS macro) that was
defined in json-glib 0.10, so we need to bump up the dependency.

14 years agojson: Backport JSON_NODE_HOLDS macros
Emmanuele Bassi [Tue, 22 Jun 2010 06:58:49 +0000 (07:58 +0100)]
json: Backport JSON_NODE_HOLDS macros

Unbreak the compilation with the internal copy of json-glib.

14 years agox11: Use the _clutter symbols for xsettings_* API
Emmanuele Bassi [Mon, 21 Jun 2010 17:56:16 +0000 (18:56 +0100)]
x11: Use the _clutter symbols for xsettings_* API

Instead of using the bare xsettings_* API; this maintains consistency.

14 years agobackend: Undeprecated clutter_backend_get_resolution()
Emmanuele Bassi [Mon, 21 Jun 2010 17:01:57 +0000 (18:01 +0100)]
backend: Undeprecated clutter_backend_get_resolution()

Since the Settings:font-dpi property is exposed as 1024 * real_dpi in
order to make the setting as neutral as possible (and allow XSETTINGS
to use it natively) we need a simple API returning the DPI using a
floating point value.

14 years agoDeprecate the Backend settings
Emmanuele Bassi [Mon, 21 Jun 2010 16:58:26 +0000 (17:58 +0100)]
Deprecate the Backend settings

The Settings instance is the preferred way of accessing the settings.

14 years agoRemove default settings from backends
Emmanuele Bassi [Mon, 21 Jun 2010 16:57:57 +0000 (17:57 +0100)]
Remove default settings from backends

The defaults are set in the Settings instance.

14 years agodocs: Add Settings to the API reference
Emmanuele Bassi [Mon, 21 Jun 2010 16:57:11 +0000 (17:57 +0100)]
docs: Add Settings to the API reference

And document properties.

14 years agosettings: freeze notification on XSETTINGS notify
Emmanuele Bassi [Mon, 21 Jun 2010 15:10:49 +0000 (16:10 +0100)]
settings: freeze notification on XSETTINGS notify

14 years agox11: Add the XSETTINGS machinery
Emmanuele Bassi [Mon, 21 Jun 2010 14:43:31 +0000 (15:43 +0100)]
x11: Add the XSETTINGS machinery

Use the XSETTINGS machinery to get notification from foreign
environments about settings that might interest Clutter itself - namely:
the default font name, the font DPI, and the Xft font options that can
be mapped on cairo_font_options_t.

14 years agosettings: Migrate Backend settings to a new object
Emmanuele Bassi [Mon, 21 Jun 2010 14:42:20 +0000 (15:42 +0100)]
settings: Migrate Backend settings to a new object

Instead of storing settings inside the Backend instance we should use a
separate public object.

14 years agoconfigure.ac only explicitly add -lGL if no pkgconfig file
Robert Bragg [Fri, 18 Jun 2010 12:59:00 +0000 (13:59 +0100)]
configure.ac only explicitly add -lGL if no pkgconfig file

When configuring the glx flavour we were always explicitly adding -lGL
to the linker flags even when a pkg-config file was found which should
take care of that option for us.

14 years agoconfigure.ac: Use pkg-config for gles1/2 if available
Robert Bragg [Fri, 18 Jun 2010 12:35:09 +0000 (13:35 +0100)]
configure.ac: Use pkg-config for gles1/2 if available

When building for gles1/2 we now always try and look for a libglesv1_cm
or libglesv2 .pc file with details about where to find the library and
headers.

14 years agoegl: Consolidates eglx and eglnative into one "egl" winsys
Robert Bragg [Fri, 18 Jun 2010 03:38:43 +0000 (04:38 +0100)]
egl: Consolidates eglx and eglnative into one "egl" winsys

This remove quite a lot of redundant code by consolidating the eglx and
eglnative window system backends.

14 years agotslib: Add USE_TSLIB conditional for clutter-event-tslib.c
Robert Bragg [Thu, 17 Jun 2010 23:29:12 +0000 (00:29 +0100)]
tslib: Add USE_TSLIB conditional for clutter-event-tslib.c

This adds an automake USE_TSLIB condition to decide when we should
compile clutter-event-tslib.c. This is in preparation for consolidating
the eglx and eglnative backends.

14 years agoegl: rename clutter-event-egl.c -> clutter-event-tslib.c
Robert Bragg [Thu, 17 Jun 2010 23:25:57 +0000 (00:25 +0100)]
egl: rename clutter-event-egl.c -> clutter-event-tslib.c

clutter-event-egl had nothing to do with EGL, it's code for opening
tslib devices and creating a GSource for touch screen events. It just
happens that this only ever gets used with the eglnative backend.

14 years agoclutter event egl: fixes lots of compiler warnings
Robert Bragg [Thu, 17 Jun 2010 23:18:02 +0000 (00:18 +0100)]
clutter event egl: fixes lots of compiler warnings

The way the #ifdef HAVE_TSLIB guards were spread around it meant there
were lots of warnings about unused variables when building without
tslib.

14 years agoegl: support creating OpenGL contexts
Robert Bragg [Thu, 17 Jun 2010 22:12:34 +0000 (23:12 +0100)]
egl: support creating OpenGL contexts

Right before we create the EGL context, we check if we were built with
OpenGL or OpenGLES support and it was OpenGL then we call eglBindAPI
(EGL_OPENGL_API); This also explicitly requests a EGL_RENDERABLE_TYPE
supporting the EGL_OPENGL_BIT.

This will let us add a new ./configure flavour that combines OpenGL and
EGL instead of OpenGL and GLX.

14 years agoegl: Unify the eglx and eglnative backends
Robert Bragg [Thu, 17 Jun 2010 21:26:12 +0000 (22:26 +0100)]
egl: Unify the eglx and eglnative backends

Without actually consolidating the two backends this patch brings their
code within a cats whisker of each other in preparation for
consolidation.

14 years agobuild: Adds a new opengl-egl-xlib build flavour
Robert Bragg [Thu, 17 Jun 2010 22:23:12 +0000 (23:23 +0100)]
build: Adds a new opengl-egl-xlib build flavour

With this patch if you ./configure clutter using
--with-flavour=opengl-egl-xlib then it will use EGL + OpenGL instead of
the default GLX and OpenGL.

These days upstream driver work is more focused on improving EGL than it
is GLX so likewise we want to make sure Clutter has good support for
EGL.

14 years agobuild: distinguish CLUTTER_WINSYS and CLUTTER_SONAME_INFIX
Robert Bragg [Fri, 18 Jun 2010 00:25:46 +0000 (01:25 +0100)]
build: distinguish CLUTTER_WINSYS and CLUTTER_SONAME_INFIX

This adds a separate variable name "CLUTTER_SONAME_INFIX" to define the
infix for the clutter library that gets linked. Currently the WINSYS
corresponds to the directory we enter when building to compile the
window system and input support, but it is desirable to be able to
define multiple flavours that use the same WINSYS but should result in
different library names.

For example we are planning to combine the eglx and eglnative window
systems into one "egl" winsys but we will need to preserve the current
library names for the eglx and eglnative flavours.

14 years agoconfigure.ac: avoid some duplication
Robert Bragg [Fri, 18 Jun 2010 00:56:23 +0000 (01:56 +0100)]
configure.ac: avoid some duplication

When we check the flavour we now just set boolean variables for the
following things:

SUPPORT_X11=1
SUPPORT_XLIB=1
SUPPORT_GLX=1
SUPPORT_EGL=1
SUPPORT_EGL_POWERVR_X11=1
SUPPORT_EGL_POWERVR_NULL=1

This lets us avoid some duplication and also some error prone tests for
lists of flavours used, for example, to determine when we need to check
for x libraries.

14 years agoconfigure.ac: distinguish CLUTTER_FLAVOUR and CLUTTER_WINSYS
Robert Bragg [Fri, 18 Jun 2010 00:13:33 +0000 (01:13 +0100)]
configure.ac: distinguish CLUTTER_FLAVOUR and CLUTTER_WINSYS

It's desirable to have a separation between the "flavour" and the
"winsys". The flavour is a concept internal to the configure script and
is a convenient name to represent the users choice of window system,
opengl driver and input backend. The CLUTTER_WINSYS currently defines
the subdirectory under clutter/ that should be compiled to handle the
window system and input.

With a separation we could add a flavour with no correspondence to which
clutter/subdirectory needs to be built.

14 years agoconfigure.ac: move the special handling of the fruity flavour
Robert Bragg [Fri, 18 Jun 2010 00:07:59 +0000 (01:07 +0100)]
configure.ac: move the special handling of the fruity flavour

After checking the flavour option the user gives we were checking for
the fruity flavour to override the glesversion. Now that the glsl
checking has been moved this can instead just wait until the AS_CASE
that handles all the flavour configuration.

14 years agoconfigure.ac: move gles checks after the flavour checks
Robert Bragg [Fri, 18 Jun 2010 00:02:38 +0000 (01:02 +0100)]
configure.ac: move gles checks after the flavour checks

The flavour AS_CASE should define whether a flavour uses the gl or gles
COGL_DRIVER and so we shouldn't need to have an expanding list of
tests to gate when we check for a gles driver because if we move the
checks for gles after the flavour checks we can just look at
$COGL_DRIVER.

14 years agoconfigure.ac: don't have so many XYX_{LIBS,CFLAGS} vars
Robert Bragg [Fri, 18 Jun 2010 00:02:38 +0000 (01:02 +0100)]
configure.ac: don't have so many XYX_{LIBS,CFLAGS} vars

This removes EGL_{LIBS,CFLAGS}, GLX_{LIBS,CFLAGS}, OSX_{LIBS,CFLAGS},
WIN32_{LIBS,CFLAGS}, and GLES_{LIBS,CFLAGS} and instead we just append
to FLAVOUR_{LIBS,CFLAGS}.

This makes more of the file relocatable because there were previously
dependencies on the order that some variables were setup in.

14 years agoclutter-stage: Use g_array_free instead of g_array_unref
Neil Roberts [Fri, 18 Jun 2010 14:19:59 +0000 (15:19 +0100)]
clutter-stage: Use g_array_free instead of g_array_unref

g_array_unref was only added in GLib 2.22 so we should really update
the requirements in the configure script if we want to use that
function. However the array doesn't appear to have any extra reference
taken on it anywhere so it should be safe to use g_array_free instead.

14 years agocogl-context: Use the function pointer for glActiveUnit
Neil Roberts [Fri, 18 Jun 2010 14:25:51 +0000 (15:25 +0100)]
cogl-context: Use the function pointer for glActiveUnit

Under WGL, any functions that were defined after GL 1.1 are not
directly exported in the DLL so we need to reference them via the
function pointers. A new call to glActiveUnit was missed in
cogl-context.c

14 years agocogl-material: Don't use the symbol 'near'
Neil Roberts [Fri, 18 Jun 2010 14:33:03 +0000 (15:33 +0100)]
cogl-material: Don't use the symbol 'near'

The window headers contain the line

 #define near

so it's not possible to use the symbol 'near' in code that's portable
to Windows. This replaces it with 'near_val'.

I think the define is meant to improve compatibility with code written
for Windows 3.1 where near would be a keyword to make it a smaller
pointer size.

14 years agoactor: Parse actions, constraints and effects members
Emmanuele Bassi [Thu, 17 Jun 2010 16:35:00 +0000 (17:35 +0100)]
actor: Parse actions, constraints and effects members

ClutterActor should allow attaching actions, constraints and effects
just like it allows behaviours, e.g.:

  {
    ...
    "constraints" : [
      {
        "type" : "ClutterAlignConstraint",
        "source" : "stage",
        "align-axis" : "x-axis",
        "factor" : 0.5
      },
      {
        "type" : "ClutterAlignConstraint",
        "source" : "stage",
        "align-axis" : "y-axis",
        "factor" : 0.5
      }
    ],
    ...
  }

or:

  {
    ...
    "actions" : [
      {
        "type" : "ClutterDragAction",
        "signals" : [
          { "name" : "drag-end", "handler" : "on_drag_end" }
        ]
      }
    ],
    ...
  }

In order to do so, we use the Scriptable interface implementation and
add three new custom properties accepting an array; then we parse each
member of the array as a new object.

14 years agoconstraints: Allow Align and Bind sources to be NULL
Emmanuele Bassi [Thu, 17 Jun 2010 16:33:10 +0000 (17:33 +0100)]
constraints: Allow Align and Bind sources to be NULL

Since constructing AlignConstraint and BindConstraint instances could be
deferred (think ClutterScript) we need to make their :source properties
setters accept NULL. This does not break the constraints because they
need to handle that condition in case they actor to which they are
applied is destroyed and somebody is holding a reference on them anyway.

14 years agoscript-parser: Expose extracting the id from a node
Emmanuele Bassi [Thu, 17 Jun 2010 15:41:44 +0000 (16:41 +0100)]
script-parser: Expose extracting the id from a node

The get_id_from_node() internal function should be exposed inside
Clutter (as a private function) because it can be useful to other
custom parsing code. The code is pretty trivial, but it would be
pointless to re-implement it.

14 years agoactor: Disable the layout cycle warning with debug disabled
Emmanuele Bassi [Thu, 17 Jun 2010 11:32:24 +0000 (12:32 +0100)]
actor: Disable the layout cycle warning with debug disabled

If Clutter has been configured with --enable-debug set to 'no' then we
hide most of the warnings.

14 years agobind-constraint: Add accessor methods
Emmanuele Bassi [Thu, 17 Jun 2010 11:02:28 +0000 (12:02 +0100)]
bind-constraint: Add accessor methods

ClutterBindConstraint should have accessor methods for its properties,
to allow direct manipulation instead of going through GObject's API.

14 years agostate: add a duration property
Øyvind Kolås [Wed, 16 Jun 2010 16:33:48 +0000 (17:33 +0100)]
state: add a duration property

Adding a duration property to ClutterState allows the json parsing
to parse the default transition duration with the generic code paths.

14 years agostate: avoid walking off empty list
Øyvind Kolås [Wed, 16 Jun 2010 16:44:06 +0000 (17:44 +0100)]
state: avoid walking off empty list

When removing the last key in a list, the last part of the for statement
could cause dereferencing (NULL)->next and thus segfaulting.

14 years agoanimator: avoid walking off empty list
Øyvind Kolås [Wed, 16 Jun 2010 16:43:44 +0000 (17:43 +0100)]
animator: avoid walking off empty list

When removing the last key in a list, the last part of the for statement
could cause dereferencing (NULL)->next and thus segfaulting.

14 years agoshader-effect: Add a size check
Emmanuele Bassi [Wed, 16 Jun 2010 16:17:27 +0000 (17:17 +0100)]
shader-effect: Add a size check

Similar to the one in commit 2a354d9650bb8215dd75a90b947fb82734c35b78
that went into clutter_value_set_shader_*. We end up in the same
situation, but it's better to fail from within ClutterShaderEffect.

14 years agoshader-types: Check the size of the values
Richard Hughes [Wed, 16 Jun 2010 15:19:48 +0000 (16:19 +0100)]
shader-types: Check the size of the values

Emit a critical error if the user tries to send more data than
the static shader GValues can hold.

This fixes the random memory corruption you get when specifying
size > 4.

Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
14 years agocairo-texture: Disable :sync-size
Emmanuele Bassi [Wed, 16 Jun 2010 12:58:41 +0000 (13:58 +0100)]
cairo-texture: Disable :sync-size

The :sync-size property of ClutterTexture should be set to FALSE by
default by ClutterCairoTexture. The preferred size of the
ClutterCairoTexture is already the size of the internal Cairo surface,
and we override the preferred width/height getters to that effect.

The :sync-size property is also responsible of changing the size of
the Texture actor when changing the texture handle - but since we
encourage that to happen during the CairoTexture allocation, we get a
queue_relayout() invocation (and a warning) when we change the size
of the Cairo image surface.

Since GObject doesn't make it easy to override the default value of the
:sync-size property in sub-classes, we should simply call the setter
function during the ClutterCairoTexture instance initialization.

We should also change one of the interactive tests using a CairoTexture
to rebuild the contents of the actor in response to an allocation.

14 years agocairo-texture: Clean up style
Emmanuele Bassi [Wed, 16 Jun 2010 11:53:02 +0000 (12:53 +0100)]
cairo-texture: Clean up style

14 years agoalign-constraint: Publish the properties accessors
Emmanuele Bassi [Wed, 16 Jun 2010 11:47:56 +0000 (12:47 +0100)]
align-constraint: Publish the properties accessors

The accessor methods for the AlignConstraint properties should be
public.

14 years agobuild: Fix a compiler warning when using make dist
Richard Hughes [Tue, 15 Jun 2010 21:36:19 +0000 (22:36 +0100)]
build: Fix a compiler warning when using make dist

Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
14 years agostage-glx: Never promote clipped redraws to full redraws.
Robert Bragg [Wed, 9 Jun 2010 01:42:01 +0000 (02:42 +0100)]
stage-glx: Never promote clipped redraws to full redraws.

When clipped redraws were first supported in Clutter a heuristic was
added to promote tall clipped redraws into full redraws due to a concern
that using glXCopySubBuffer for tall rectangles would block the GPU for
too long waiting for the vtrace to be in a suitable position so that
tearing isn't seen. We've so far been unable to measure any impact from
this blocking even with full height windows so we are removing the
arbitrary threshold of 300px that was originally "plucked out of thin
air".

http://bugzilla.o-hand.com/show_bug.cgi?id=2136

14 years agoSplit out the ignored test files
Emmanuele Bassi [Tue, 15 Jun 2010 15:51:55 +0000 (16:51 +0100)]
Split out the ignored test files

14 years agoAdd cogl-depth-test to the Git ignore file
Emmanuele Bassi [Tue, 15 Jun 2010 15:46:59 +0000 (16:46 +0100)]
Add cogl-depth-test to the Git ignore file

14 years agoSet the initial value of a variable
Emmanuele Bassi [Tue, 15 Jun 2010 15:42:30 +0000 (16:42 +0100)]
Set the initial value of a variable

Fixes a compiler warning.

14 years agomaterial: Adds arbfp compile counter
Robert Bragg [Mon, 14 Jun 2010 22:14:15 +0000 (23:14 +0100)]
material: Adds arbfp compile counter

This adds a uprof counter to track how many ARBfp programs get compiled
by an application.

14 years agomaterial: Support sparse ARBfp program generation
Robert Bragg [Thu, 10 Jun 2010 18:03:57 +0000 (19:03 +0100)]
material: Support sparse ARBfp program generation

We don't need to generate a new ARBfp program for every material created
if we can find an ancestor whos state will result in the same program
being generated.

The more code we can have adopt the coding pattern of deriving their
materials from other similar materials using cogl_material_copy() the
more likely this metric will be good enough on its own to minimize the
set of arbfp programs necessary to support a given application.

14 years agomaterial: free any layer cache in material_set_parent
Robert Bragg [Mon, 14 Jun 2010 21:20:27 +0000 (22:20 +0100)]
material: free any layer cache in material_set_parent

Previously in _cogl_material_pre_change_notify we manually freed the
layer caches of a material if we caused a reparent, but it makes more
sense to have _cogl_material_set_parent do this directly instead.

14 years agoAdds an internal weak material mechanism
Robert Bragg [Thu, 27 May 2010 19:04:49 +0000 (20:04 +0100)]
Adds an internal weak material mechanism

This adds a _cogl_material_weak_copy() function that can be used to
create materials that don't count as strong dependants on their parents.
This means the parent can be modified without worrying about how it will
affect weak materials. The material age of the parent can potentially be
queried to determine if a weak material might need to be re-created.

14 years agomaterial: Adds a simple material age getter
Robert Bragg [Thu, 27 May 2010 14:19:15 +0000 (15:19 +0100)]
material: Adds a simple material age getter

When we add support for weak materials it's expected that Clutter will
want to attach them as private data to other materials and it needs a
mechanism to determine when a weak material should be re-created because
its parent has changed somehow.

This adds the concept of a material age (internal only currently) which
increments whenever a material is modified. Clutter can then save the
age of the material which its weak materials are derived from and later
determine when the weak material may be invalid.

14 years agoprimitives: we were memsetting the wrong wrap mode overrides pointer
Robert Bragg [Thu, 27 May 2010 14:18:15 +0000 (15:18 +0100)]
primitives: we were memsetting the wrong wrap mode overrides pointer

In _cogl_texture_quad_multiple_primitives we weren't memsetting the
CoglMaterialWrapModeOverrides structure we were memsetting
&state.wrap_mode_overrides where state.wrap_mode_overrides is just a
pointer that might potentially later point to the
CoglMaterialWrapModeOverrides structure.

14 years agomaterial: generalize how we compare simple material properties
Robert Bragg [Wed, 26 May 2010 13:13:37 +0000 (14:13 +0100)]
material: generalize how we compare simple material properties

In _cogl_material_equal we were repeating the same code pattern to
compare several of the state groups so this just adds
simple_property_equal function that's now used instead.

14 years agomaterial: Make CoglMaterial responsible for depth state
Robert Bragg [Wed, 26 May 2010 10:33:32 +0000 (11:33 +0100)]
material: Make CoglMaterial responsible for depth state

This redirects the legacy depth testing APIs through CoglMaterial and
adds a new experimental cogl_material_ API for handling the depth
testing state.

This adds the following new functions:
cogl_material_set_depth_test_enabled
cogl_material_get_depth_test_enabled
cogl_material_set_depth_writing_enabled
cogl_material_get_depth_writing_enabled
cogl_material_set_depth_test_function
cogl_material_get_depth_test_function
cogl_material_set_depth_range
cogl_material_get_depth_range

As with other experimental Cogl API you need to define
COGL_ENABLE_EXPERIMENTAL_API to access them and their stability isn't
yet guaranteed.

14 years agocogl docs: Improve documentation for cogl_ortho
Robert Bragg [Wed, 26 May 2010 02:07:17 +0000 (03:07 +0100)]
cogl docs: Improve documentation for cogl_ortho

cogl_ortho is one of those APIs whos style was, for better or worse,
copied from OpenGL and for some inexplicable reason the near and far
arguments are inconsistent with the left, right, top, bottom arguments
because they don't take z coordinates they take a "distance" which
should be negative for a plane behind the viewer.

This updates the documentation to explain this.

14 years agoprimitives: no longer assume _get_layers list remains valid
Robert Bragg [Wed, 19 May 2010 00:02:16 +0000 (01:02 +0100)]
primitives: no longer assume _get_layers list remains valid

The internal CoglMaterialLayer pointers associated with a material may
change whenever layer properties are modified so it's no longer ok to
assume that a list of layers returned by cogl_material_get_layers
remains valid if the layers have been changed.

14 years agomaterial: Adds simple breadcrumb debugging mechanism
Robert Bragg [Tue, 18 May 2010 23:36:31 +0000 (00:36 +0100)]
material: Adds simple breadcrumb debugging mechanism

Since it can sometimes be awkward to figure out where a particular
material came from when debugging, this adds a breadcrumb mechanism that
lets you associate a const string with a material that may give a clue
about its origin.

14 years agomaterial: remove override options from _cogl_material_equal
Robert Bragg [Tue, 18 May 2010 22:38:33 +0000 (23:38 +0100)]
material: remove override options from _cogl_material_equal

As a follow on to using cogl_material_copy instead of flush options this
patch now removes the ability to pass flush options to
_cogl_material_equal which is the final reference to the
CoglMaterialFlushOptions mechanism.

14 years agocogl: remove _cogl_material_flush_gl_state flush options
Robert Bragg [Tue, 18 May 2010 21:42:49 +0000 (22:42 +0100)]
cogl: remove _cogl_material_flush_gl_state flush options

Since cogl_material_copy should now be cheap to use we can simplify
how we handle fallbacks and wrap mode overrides etc by simply copying
the original material and making our override changes on the new
material. This avoids the need for a sideband state structure that has
been growing in size and makes flushing material state more complex.

Note the plan is to eventually use weak materials for these override
materials and attach these as private data to the original materials so
we aren't making so many one-shot materials.