Emmanuele Bassi [Tue, 15 Feb 2011 14:15:59 +0000 (14:15 +0000)]
docs: Update the README
Fix some typos; add URLs for API references and Bugzilla.
Emmanuele Bassi [Tue, 15 Feb 2011 12:13:14 +0000 (12:13 +0000)]
build: Re-enable --warn-all for g-ir-scanner
Now that I don't have to see a bunch of false positives any more, we can
finally use warnings to catch issues.
Emmanuele Bassi [Tue, 15 Feb 2011 12:11:28 +0000 (12:11 +0000)]
introspection: Override the GParamSpec type
About other assorted boneheadedness, the GType for GParamSpec is
called 'GParam'. Why? Who knows. I assume alcohol was involved,
but I honestly don't want to know.
This removes the last g-ir-scanner warning in Clutter.
Emmanuele Bassi [Tue, 15 Feb 2011 12:31:12 +0000 (12:31 +0000)]
Fix ISO C90 compiler warnings in Cogl
Mixing declarations and statements and unused variables.
Emmanuele Bassi [Tue, 15 Feb 2011 11:50:26 +0000 (11:50 +0000)]
More ISO C90 warning fixes in Clutter
This time, in Clutter core.
The ObjC standard library provides a type called 'id', which obviously
requires any library to either drop the useful shadowed variable warning
or stop using 'id' as a variable name.
Yes, it's almost unbearably stupid. Well, at least it's not 'index' in
string.h, or 'y2' in math.h.
Emmanuele Bassi [Tue, 15 Feb 2011 11:34:21 +0000 (11:34 +0000)]
Fix some ISO C90 warnings on OSX
Neil Roberts [Thu, 20 Jan 2011 17:45:47 +0000 (17:45 +0000)]
cogl-atlas: Try 4 different approaches for migrating textures
Instead of directly banging GL to migrate textures the atlas now uses
the CoglFramebuffer API. It will use one of four approaches; it can
set up two FBOs and use _cogl_blit_framebuffer to copy between them;
it can use a single target fbo and then render the source texture to
the FBO using a Cogl draw call; it can use a single FBO and call
glCopyTexSubImage2D; or it can fallback to reading all of the texture
data back to system memory and uploading it again with a sub texture
update.
Previously GL calls were used directly because Cogl wasn't able to
create a framebuffer without a stencil and depth buffer. However there
is now an internal version of cogl_offscreen_new_to_texture which
takes a set of flags to disable the two buffers.
The code for blitting has now been moved into a separate file called
cogl-blit.c because it has become quite long and it may be useful
outside of the atlas at some point.
The 4 different methods have a fixed order of preference which is:
* Texture render between two FBOs
* glBlitFramebuffer
* glCopyTexSubImage2D
* glGetTexImage + glTexSubImage2D
Once a method is succesfully used it is tried first for all subsequent
blits. The default default can be overridden by setting the
environment variable COGL_ATLAS_DEFAULT_BLIT_MODE to one of the
following values:
* texture-render
* framebuffer
* copy-tex-sub-image
* get-tex-data
Neil Roberts [Thu, 10 Feb 2011 18:24:14 +0000 (18:24 +0000)]
cogl-texture-2d: Add _cogl_is_texture_2d to the private header
This adds a declaration for _cogl_is_texture_2d to the private header
so that it can be used in cogl-blit.c to determine if the target
texture is a simple 2D texture.
Neil Roberts [Thu, 10 Feb 2011 18:22:27 +0000 (18:22 +0000)]
cogl-texture-2d: Add an internal wrapper around glCopyTexSubImage2D
This adds a function called _cogl_texture_2d_copy_from_framebuffer
which is a simple wrapper around glCopyTexSubImage2D. It is currently
specific to the texture 2D backend.
Neil Roberts [Sat, 5 Feb 2011 11:19:52 +0000 (11:19 +0000)]
cogl-framebuffer: Add _cogl_blit_framebuffer
This adds the _cogl_blit_framebuffer internal function which is a
wrapper around glBlitFramebuffer. The API is changed from the GL
version of the function to reflect the limitations provided by the
GL_ANGLE_framebuffer_blit extension (eg, no scaling or mirroring).
Neil Roberts [Sat, 5 Feb 2011 12:42:39 +0000 (12:42 +0000)]
cogl-gles: Check for the GL_ANGLE_framebuffer_blit extension
This extension is the GLES equivalent of the GL_EXT_framebuffer_blit
extension except that it has some extra restrictions. We need to check
for some extension that provides glBlitFramebuffer so that we can
unconditionally use ctx->drv.pf_glBlitFramebuffer in both GL and GLES
code. Even with the restrictions, the extension provides enough
features for what Cogl needs.
Neil Roberts [Fri, 21 Jan 2011 17:37:10 +0000 (17:37 +0000)]
cogl-atlas-texture: Make copying a texture out more robust
Previously when _cogl_atlas_texture_migrate_out_of_atlas is called it
would unreference the atlas texture's sub-texture before calling
_cogl_atlas_copy_rectangle. This would leave the atlas texture in an
inconsistent state during the copy. This doesn't normally matter but
if the copy ends up doing a render then the atlas texture may end up
being referenced. In particular it would cause problems if the texture
is left in a texture unit because then Cogl may try to call
get_gl_texture even though the texture isn't actually being used for
rendering. To fix this the sub texture is now unrefed after the copy
call instead.
Neil Roberts [Wed, 2 Feb 2011 14:23:53 +0000 (14:23 +0000)]
cogl-framebuffer: Separate the draw and read buffer
The current framebuffer is now internally separated so that there can
be a different draw and read buffer. This is required to use the
GL_EXT_framebuffer_blit extension. The current draw and read buffers
are stored as a pair in a single stack so that pushing the draw and
read buffer is done simultaneously with the new
_cogl_push_framebuffers internal function. Calling
cogl_pop_framebuffer will restore both the draw and read buffer to the
previous state. The public cogl_push_framebuffer function is layered
on top of the new function so that it just pushes the same buffer for
both drawing and reading.
When flushing the framebuffer state, the cogl_framebuffer_flush_state
function now tackes a pointer to both the draw and the read
buffer. Anywhere that was just flushing the state for the current
framebuffer with _cogl_get_framebuffer now needs to call both
_cogl_get_draw_buffer and _cogl_get_read_buffer.
Emmanuele Bassi [Mon, 14 Feb 2011 18:36:51 +0000 (18:36 +0000)]
annotations: Use caller-allocates for color getters
This should avoid a separate initialization of a ClutterColor in
language bindings.
Emmanuele Bassi [Mon, 14 Feb 2011 17:34:15 +0000 (17:34 +0000)]
build: Add README template to EXTRA_DIST
Emmanuele Bassi [Mon, 14 Feb 2011 16:49:01 +0000 (16:49 +0000)]
build: Generate README
Use the configure script to generate the README from a template file, so
that we can keep the versions of the dependencies in one place.
Emmanuele Bassi [Mon, 14 Feb 2011 16:15:55 +0000 (16:15 +0000)]
Post-release version bump to 1.6.5
Emmanuele Bassi [Mon, 14 Feb 2011 15:53:02 +0000 (15:53 +0000)]
Release Clutter 1.6.4 (stable)
Adel Gadllah [Sat, 12 Feb 2011 23:04:52 +0000 (00:04 +0100)]
backend-glx: Remove redundant glFlush()
As noted in commit
ce3f55292a an explict glFlush is needed for
both glBlitFramebuffer and glXCopySubBuffer.
_clutter_backend_glx_blit_sub_buffer was already doing an explicit
flush when using glBlitFramebuffer, so just do it unconditonally
and remove the call from clutter_stage_glx_redraw.
http://bugzilla.clutter-project.org/show_bug.cgi?id=2558
Emmanuele Bassi [Mon, 14 Feb 2011 12:00:31 +0000 (12:00 +0000)]
stage/glx: Code clean ups
Emmanuele Bassi [Mon, 14 Feb 2011 11:59:49 +0000 (11:59 +0000)]
stage/x11: Clean up ClutterStageX11 struct
Use the right parent instance and class structure; the X11 stage
implementation hasn't been a ClutterGroup in a long, long time.
Emmanuele Bassi [Sun, 13 Feb 2011 19:27:51 +0000 (19:27 +0000)]
tests/multi-stage: Clean up child stages
Do not leave them around: force a destroy() on any child stage left when
the main loop quits.
Emmanuele Bassi [Sun, 13 Feb 2011 19:26:29 +0000 (19:26 +0000)]
stage: Call ClutterStageWindow::unrealize() on dispose
Since we realize on creation we need to unrealize on destruction. This
makes sure that the ClutterStageWindow implementation can tear down any
resource set up during the realization phase.
http://bugzilla.clutter-project.org/show_bug.cgi?id=2559
Emmanuele Bassi [Sun, 13 Feb 2011 19:25:21 +0000 (19:25 +0000)]
stage/x11: Add a debug note for unrealization
We remove the ClutterStageWindow ↔ Window mapping in the ::unrealize
implementation; let's just check that we get there using a simple
debug note.
Emmanuele Bassi [Fri, 11 Feb 2011 16:53:28 +0000 (16:53 +0000)]
build: Fix clutter-config.h defines
The checks for non-x11/glx platforms were using the wrong configure.ac
variables and values.
Emmanuele Bassi [Fri, 11 Feb 2011 16:45:45 +0000 (16:45 +0000)]
Merge remote-tracking branch 'nobled/wayland-fixes2'
* nobled/wayland-fixes2:
wayland: fix shm buffers
wayland: set renderable type on dummy surface
wayland: check for egl extensions explicitly
wayland: fall back to shm buffers if drm fails
wayland: add shm buffer code
wayland: make buffer handling generic
wayland: really fix buffer format selection
wayland: fix pixel format
wayland: clean up buffer creation code
wayland: don't require the surfaceless extensions
wayland: check for API-specific surfaceless extension
wayland: fix GLES context creation
wayland: use EGL_NO_SURFACE
wayland: update to new api
wayland: fix connecting to default socket
fix ClutterContainer docs
Chris Lord [Fri, 11 Feb 2011 16:27:46 +0000 (16:27 +0000)]
actor: Rename in_clone_paint parameter to avoid variable shadowing
The 'in_clone_paint' parameter of the private function
_clutter_actor_set_in_clone_paint() shadowed the private function
in_clone_paint(). Rename this parameter to 'is_in_clone_paint' to remove
a compiler warning.
Chris Lord [Fri, 11 Feb 2011 15:18:08 +0000 (15:18 +0000)]
offscreen: Fix partially off-stage actors being clipped in the fbo
If an actor was partially off of the stage, it would be clipped because
of the stage viewport. This produces problems if you use an offscreen
effect that relies on the entire actor being rendered (e.g. shadows).
Expand the viewport in this scenario so that the offscreen-rendering isn't
clipped.
This fixes http://bugzilla.clutter-project.org/show_bug.cgi?id=2550
Chris Lord [Thu, 3 Feb 2011 14:36:55 +0000 (14:36 +0000)]
offscreen-effect: Use actor's opacity_override when redirecting painting
Override the actor's paint opacity so that it will appear fully opaque in
the offscreen surface. This avoids multiple multiplications of an actor's
opacity.
Fixes http://bugzilla.clutter-project.org/show_bug.cgi?id=2541
Chris Lord [Thu, 3 Feb 2011 13:58:20 +0000 (13:58 +0000)]
actor: Replace private opacity_parent with opacity_override
Replace the opacity_parent with an opacity_override variable, to allow
direct overriding of the paint opacity and simplify this mechanism
somewhat.
This also required a new private flag, in_clone_paint, to maintain the
functionality of the public function clutter_actor_is_in_clone_paint()
Emmanuele Bassi [Fri, 11 Feb 2011 15:45:13 +0000 (15:45 +0000)]
build: Modify maintainer compiler flags values
We use the micro version for distinguishing released tarballs and Git
builds; the maintainer compiler flags should be enabled for the latter,
and not just for unstable cycles, since it makes sense to have extra
warning flags even on stable cycles.
We also want to allow people to turn on -Werror on demand, so let's add
a third option to --enable-maintainer-flags.
Emmanuele Bassi [Fri, 11 Feb 2011 15:44:03 +0000 (15:44 +0000)]
docs: Clarify interface_age usage in configure.ac
The clutter_interface_age value should be changed only on stable cycles;
unstable cycles should reset the value to 0.
Emmanuele Bassi [Fri, 11 Feb 2011 15:03:22 +0000 (15:03 +0000)]
Merge remote-tracking branch 'elliot/cookbook-animations-path'
* elliot/cookbook-animations-path:
docs: Add recipe for animating an actor on a curved path
Neil Roberts [Wed, 2 Feb 2011 15:17:50 +0000 (15:17 +0000)]
cogl-framebuffer: Fix flushing the framebuffer on push
When pushing a framebuffer it would previously push
COGL_INVALID_HANDLE to the top of the framebuffer stack so that when
it later calls cogl_set_framebuffer it will recognise that the
framebuffer is different and replace the top with the new
pointer. This isn't ideal because it breaks the code to flush the
journal because _cogl_framebuffer_flush_journal is called with the
value of the old pointer which is NULL. That function was checking for
a NULL pointer so it wouldn't actually flush. It also would mean that
if you pushed the same framebuffer twice we would end up dirtying
state unnecessarily. To fix this cogl_push_framebuffer now pushes a
reference to the current framebuffer instead.
Neil Roberts [Wed, 9 Feb 2011 19:31:42 +0000 (19:31 +0000)]
cogl-framebuffer: Remove all dependencies after a flush
After a dependent framebuffer is added to a framebuffer it was never
getting removed. Once the journal for a framebuffer is flushed we no
longer depend on any framebuffers so the list should be cleared. This
was causing leaks of offscreens and textures.
Emmanuele Bassi [Thu, 10 Feb 2011 10:35:35 +0000 (10:35 +0000)]
clutter.modules: Fix Wayland's location
The Git repository URL for Wayland has been moved into the main fd.o
structure.
Robert Bragg [Tue, 8 Feb 2011 17:54:49 +0000 (17:54 +0000)]
glx: Make sure to glFlush if blitting to frontbuffer.
Unlike glXSwapBuffers, glXCopySubBuffer and glBlitFramebuffer don't
issue an implicit glFlush() so we have to flush ourselves if we want the
request to complete in finite amount of time since otherwise the driver
can batch the command indefinitely.
http://bugzilla.clutter-project.org/show_bug.cgi?id=2551
Robert Bragg [Tue, 1 Feb 2011 13:24:13 +0000 (13:24 +0000)]
docs: clarify cogl_vertex_buffer_adds docs
This adds a clarification that cogl_vertex_buffer_add can also be
used to replace a previously added attribute with the same name.
Robert Bragg [Tue, 1 Feb 2011 13:19:49 +0000 (13:19 +0000)]
matrix: note that _matrix_multiply can multiply in-place
This adds a note to clarify that cogl_matrix_multiply allows you to
multiply the @a matrix in-place, so @a can equal @result but @b can't
equal @result.
Emmanuele Bassi [Wed, 9 Feb 2011 16:16:57 +0000 (16:16 +0000)]
Fix compilation of the EGL backend
Sorry for breaking it.
Emmanuele Bassi [Wed, 9 Feb 2011 16:20:40 +0000 (16:20 +0000)]
keymap/x11: Remove unused variables
Silence compiler warnings.
Neil Roberts [Wed, 9 Feb 2011 15:24:43 +0000 (15:24 +0000)]
cogl: Set the layer matrix on the right layer instead of a random one
When uploading the layer matrix to GL it wasn't first calling
glActiveTextureMatrix to set the right texture unit for the
layer. This would end up setting the texture matrix on whatever layer
happened to be previously active. This happened to work for
test-cogl-multitexture presumably because it was coincidentally
setting the layer matrix on the last used layer.
Neil Roberts [Wed, 9 Feb 2011 15:12:13 +0000 (15:12 +0000)]
Add a conformance test for cogl_pipeline_set_layer_matrix
This adds a conformance test which paints using a pipeline that has
two layers containing textures. Each layer has a different user
matrix. When the two layers are combined with the right matrices then
all of the colors end up white. The test then verifies this by reading
back the pixels.
Emmanuele Bassi [Wed, 9 Feb 2011 14:53:20 +0000 (14:53 +0000)]
Intern clutter_get_actor_by_gid() implementation
As the prelude to deprecation of the function in 1.8, let's move the
implementation to an internal function, and use that instead of the
public facing one.
Emmanuele Bassi [Wed, 9 Feb 2011 13:05:12 +0000 (13:05 +0000)]
test-actors: Clear the state on destroy
The venerable test-actors used the default stage, which meant that
closing the window just stopped the main loop but left the scene intact.
This does not happen with a normal stage created through
clutter_stage_new().
The change happened in
6ed6b2a54b5c8f44496399057ad5e58771bfc620, in an
unhelpfully named commit that was just supposed to switch to static
colors. My bad.
Anyway, the change led to some assertion failures when closing the stage
in the middle of an animation.
The correct thing to do when using an actor from another object (a
Timeline ::new-frame callback in this case) without owning the instance
is to connect to the ::destroy signal and clean up the pointer to avoid
calling an invalid actor.
Emmanuele Bassi [Wed, 9 Feb 2011 12:55:25 +0000 (12:55 +0000)]
Clean up ClutterMainContext and clutter-private.h
Do a better job at documenting the main context structure fields; remove
unused members; clean up the declarations.
Emmanuele Bassi [Wed, 9 Feb 2011 12:38:10 +0000 (12:38 +0000)]
Avoid direct access to the main context events queue
The GQueue that stores the global events queue is handled all over the
place:
• the structure is created in _clutter_backend_init_events();
• the queue is handled in clutter-event.c, clutter-stage.c and
clutter-backend.c;
• ClutterStage::dispose cleans up the events associated with
the stage being destroyed;
• the queue is destroyed in ClutterBackend::dispose.
Since we need to have access to it in different places we cannot put it
inside ClutterBackendPrivate, hence it should stay in ClutterMainContext;
but we should still manage it from just one place - preferably by the
ClutterEvent API only.
Emmanuele Bassi [Wed, 9 Feb 2011 12:20:56 +0000 (12:20 +0000)]
backend: Move event translators to the base class
In the future, we want event translators to be the way to handle events
in backends. For this reason, they should be a part of the base abstract
ClutterBackend class, and not an X11-only concept.
Emmanuele Bassi [Tue, 8 Feb 2011 18:03:43 +0000 (18:03 +0000)]
docs: Update the HACKING.backends documentation
Emmanuele Bassi [Fri, 4 Feb 2011 15:09:41 +0000 (15:09 +0000)]
backend: Invoke ClutterStageWindow::redraw by default
Instead of asking all backends to do that for us, we can call
ClutterStageWindow::redraw ourselves by default.
This changeset fixes all backends to actually do the right thing, and
move the stage implementation redraw inside the ClutterStageWindow
implementation itself.
nobled [Tue, 8 Feb 2011 15:55:18 +0000 (15:55 +0000)]
wayland: fix shm buffers
We need to *write* to the shared memory, not read from it.
cogl_texture_from_data() is read-only, it doesn't keep
the data in sync with the texture.
Instead, we have to call cogl_texture_get_data() ourselves
to sync manually.
nobled [Tue, 8 Feb 2011 15:53:08 +0000 (15:53 +0000)]
wayland: set renderable type on dummy surface
Make sure it's compatible with the API that's in use.
nobled [Tue, 8 Feb 2011 15:45:39 +0000 (15:45 +0000)]
wayland: check for egl extensions explicitly
eglGetProcAddress() returns non-null function pointers
whether or not they're actually supported by the driver,
since it can be used before any driver gets loaded. So
we have to check if the extensions are advertised first,
which requires having an initialized display, so we split
the display creation code into its own function.
The exception to extension-checking is EGL_MESA_drm_display,
since by definition it's needed before any display is even
created.
Emmanuele Bassi [Fri, 4 Feb 2011 15:08:48 +0000 (15:08 +0000)]
stage-window: Add ::redraw virtual function
How to redraw a ClutterStage's implementation should be part of the
ClutterStageWindow interface.
Emmanuele Bassi [Tue, 8 Feb 2011 15:31:20 +0000 (15:31 +0000)]
Skip some x11-specific calls when generating introspection
Some types are just not handled currently.
Emmanuele Bassi [Tue, 8 Feb 2011 15:30:48 +0000 (15:30 +0000)]
Unify the vfunc parameters names with their callers
Otherwise g-ir-scanner will get fairly angry.
Elliot Smith [Tue, 8 Feb 2011 14:37:59 +0000 (14:37 +0000)]
docs: Add recipe for animating an actor on a curved path
Show how to animate an actor using a ClutterPathConstraint.
This demonstrates how to get effects similar to
ClutterPathBehaviour with the modern animation APIs.
Includes 3 examples:
1) Simple ClutterPathConstraint used with implicit animations
2) ClutterPathConstraint used to simulate circular animation,
using ClutterAnimator
3) Creating simple curved path animations with non-linear
easing
Emmanuele Bassi [Tue, 8 Feb 2011 12:08:18 +0000 (12:08 +0000)]
x11: Refresh key mapping when notified by X11
Use both the MappingNotify event and the XKB XkbMapNotify event, if
we're compiled with XKB support.
This change is also useful for making ClutterKeymapX11 an event
translator and let it deal with XKB events internally like we do for
stage and input events.
Based on a patch by: Damien Lespiau <damien.lespiau@intel.com>
Signed-off by: Emmanuele Bassi <ebassi@linux.intel.com>
http://bugzilla.clutter-project.org/show_bug.cgi?id=2525
Emmanuele Bassi [Mon, 7 Feb 2011 15:59:42 +0000 (15:59 +0000)]
Post-release version bump to 1.6.3
Emmanuele Bassi [Mon, 7 Feb 2011 15:42:45 +0000 (15:42 +0000)]
Release Clutter 1.6.2
Emmanuele Bassi [Mon, 7 Feb 2011 15:42:23 +0000 (15:42 +0000)]
Update NEWS
Emmanuele Bassi [Mon, 7 Feb 2011 15:40:09 +0000 (15:40 +0000)]
build: Fix the Cally pkg-config file
Do not use ${winsys}: use ${soname_infix} instead.
http://bugzilla.clutter-project.org/show_bug.cgi?id=2549
Emmanuele Bassi [Thu, 3 Feb 2011 16:25:42 +0000 (16:25 +0000)]
osx: Add more checks to the redraw function
The redraw function might be called during destruction phase, when the
Stage state has not entirely been tore down. We need to be slightly more
resilient to that scenario.
Emmanuele Bassi [Thu, 3 Feb 2011 11:30:10 +0000 (11:30 +0000)]
Add some more sanity checks to clutter_do_event()
Silently ignore events on stages during destruction; but print out a
warning if clutter_do_event() is being called with a stage-less event.
Emmanuele Bassi [Thu, 3 Feb 2011 11:26:09 +0000 (11:26 +0000)]
stage: Unconditionally create the devices hash table
Emmanuele Bassi [Thu, 3 Feb 2011 11:25:28 +0000 (11:25 +0000)]
stage: Do not update when destroying a stage
During the stage destruction we should just skip event processing, since
we cannot guarantee that the stage is actually valid.
Viatcheslav Gachkaylo [Thu, 3 Feb 2011 08:51:20 +0000 (14:51 +0600)]
Fixed bugs with mouse events.
Enter/leave events are now being received. Mouse move events
now work properly.
Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
http://bugzilla.clutter-project.org/show_bug.cgi?id=2545
Emmanuele Bassi [Wed, 2 Feb 2011 14:43:38 +0000 (14:43 +0000)]
osx: Use _clutter_event_push()
Do not operate directly on the event queue, but use the wrapper call
that all backends share.
Emmanuele Bassi [Wed, 2 Feb 2011 14:41:57 +0000 (14:41 +0000)]
osx: Re-add the event time
Some overzealous diffing led to a missing call to setting the time of a
ClutterEvent from the corresponding NSEvent.
Neil Roberts [Tue, 1 Feb 2011 18:43:27 +0000 (18:43 +0000)]
cogl-vertex-buffer: Use a ref count on the pipeline private data
The pipeline private data is accessed both from the private data set
on a CoglPipeline and the destroy notify function of a weak material
that the vertex buffer creates when it needs to override the wrap
mode. However when a CoglPipeline is destroyed, the CoglObject code
first removes all of the private data set on the object and then the
CoglPipeline code gets invoked to destroy all of the weak children. At
this point the vertex buffer's weak override destroy notify function
will get invoked and try to use the private data which has already
been freed causing a crash.
This patch instead adds a reference count to the pipeline private data
stuct so that we can avoid freeing it until both the private data on
the pipeline has been destroyed and all of the weak materials are
destroyed.
http://bugzilla.clutter-project.org/show_bug.cgi?id=2544
Neil Roberts [Tue, 1 Feb 2011 17:38:58 +0000 (17:38 +0000)]
cogl-pipeline: Fix comparing the color in set_layer_combine_constant
In cogl_pipeline_set_layer_combine_constant it was comparing whether
the new color is the same as the old color using a memcmp on the
constant_color parameter. However the combine constant is stored in
the layer data as an array of four floats but the passed in color is a
CoglColor (which is currently an array of four guint8s). This was
causing valgrind errors and presumably also the check for setting the
same color twice would always fail.
This patch makes it do the conversion to a float array upfront before
the comparison.
Emmanuele Bassi [Tue, 1 Feb 2011 14:44:22 +0000 (14:44 +0000)]
event: The device setter work on sub-types
Instead of just setting the input device pointer in the private event
data, it should also set the field in the event sub-types, so that
direct access to the structures still works.
Emmanuele Bassi [Tue, 1 Feb 2011 14:38:08 +0000 (14:38 +0000)]
build: Pass --enable-cookbook when distchecking
We should force building the cookbook when releasing a tarball of
Clutter, so that users of packaged tarballs can actually build the
cookbook themselves.
Emmanuele Bassi [Tue, 1 Feb 2011 14:33:29 +0000 (14:33 +0000)]
build: Fixes to pass distcheck
Try to make the cookbook pass the distcheck phase, so that we can run
distcheck with --enable-docs, and make sure that a tarballed clutter
release can actually build the cookbook.
Emmanuele Bassi [Tue, 1 Feb 2011 14:32:41 +0000 (14:32 +0000)]
docs: Switch a 'Since' annotation in CallyActor
Since doesn't like it when it's not the last annotation.
Neil Roberts [Mon, 31 Jan 2011 18:53:51 +0000 (18:53 +0000)]
cogl-matrix: Get rid of the *_packed variants
cogl_matrix_project_points and cogl_matrix_transform_points had an
optimization for the common case where the stride parameters exactly
match the size of the corresponding structures. The code for both when
generated by gcc with -O2 on x86-64 use two registers to hold the
addresses of the input and output arrays. In the strided version these
pointers are incremented by adding the value of a register and in the
packed version they are incremented by adding an immediate value. I
think the difference in cost here would be negligible and it may even
be faster to add a register.
Also GCC appears to retain the loop counter in a register for the
strided version but in the packed version it can optimize it out and
directly use the input pointer as the counter. I think it would be
possible to reorder the code a bit to explicitly use the input pointer
as the counter if this were a problem.
Getting rid of the packed versions tidies up the code a bit and it
could potentially be faster if the code differences are small and we
get to avoid an extra conditional in cogl_matrix_transform_points.
Emmanuele Bassi [Tue, 1 Feb 2011 12:45:52 +0000 (12:45 +0000)]
build: Dist cb-button.h in the cookbook examples
The header is missing, so we have a build failure if you try to build
Clutter's cookbook from the tarball.
nobled [Mon, 31 Jan 2011 05:05:28 +0000 (05:05 +0000)]
wayland: fall back to shm buffers if drm fails
nobled [Mon, 31 Jan 2011 04:22:50 +0000 (04:22 +0000)]
wayland: add shm buffer code
It's not enabled to do anything yet.
Emmanuele Bassi [Mon, 31 Jan 2011 15:04:48 +0000 (15:04 +0000)]
Post-release version bump to 1.6.1
Emmanuele Bassi [Mon, 31 Jan 2011 14:47:37 +0000 (14:47 +0000)]
Release Clutter 1.6.0
Emmanuele Bassi [Mon, 31 Jan 2011 13:59:14 +0000 (13:59 +0000)]
docs: Update the NEWS file
Emmanuele Bassi [Mon, 31 Jan 2011 13:58:12 +0000 (13:58 +0000)]
Merge remote branch 'elliot/cookbook-actors-composite'
* elliot/cookbook-actors-composite:
docs: Add reference to useful GObject tutorial
docs: Explain why destroy() is implemented
docs: Implement destroy() rather than dispose()
docs: Don't use clutter_stage_get_default()
docs: Change text on button
docs: Add a note about other state variables
docs: Complete composite actor recipe
docs: Change order of functions in example to match docs
docs: Add more comments on how allocate() works
docs: Include code examples in the recipe
docs: Explain enums for properties and signals
docs: Don't set explicit size on button
docs: Add example of preferred_height() and preferred_width()
docs: Add recipe for creating a custom ClutterActor with composition
docs: Add more comments on code example for composite actor
docs: Improve example code formatting
docs: Add some gtk-doc annotations to example
docs: Add custom ClutterActor example which uses composition
Emmanuele Bassi [Mon, 31 Jan 2011 13:50:37 +0000 (13:50 +0000)]
docs: Update NEWS file
Emmanuele Bassi [Fri, 28 Jan 2011 14:53:08 +0000 (14:53 +0000)]
osx: Add devices to event translation code
Use a DeviceManager sub-class similar to the Win32 backend one, which
creates two InputDevices: a core pointer and a core keyboard.
The event translation code then uses these two devices to fill out the
.device field of the events.
Throw in enter/leave tracking, given that we need to update the device's
state.
http://bugzilla.clutter-project.org/show_bug.cgi?id=2490
Viatcheslav Gachkaylo [Fri, 28 Jan 2011 12:56:57 +0000 (12:56 +0000)]
osx: Improve the event loop
Implementation of event loop which works with GLib events, native OS X
events and Clutter events.
The event loop source code comes from the equivalent code in the Quartz
GDK backend from GTK+ 2.22.1, which is LGPL v2.1+ and thus compatible
with Clutter's licensing terms.
The code has been tested with libsoup, which did not work before together
with Clutter.
Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
http://bugzilla.clutter-project.org/show_bug.cgi?id=2490
Elliot Smith [Mon, 31 Jan 2011 13:40:10 +0000 (13:40 +0000)]
docs: Add reference to useful GObject tutorial
Add a reference to a GObject tutorial which
is a good introduction to the various macros etc.
and what they're for.
Elliot Smith [Mon, 31 Jan 2011 13:39:11 +0000 (13:39 +0000)]
docs: Explain why destroy() is implemented
As destroy() is Clutter-specific and not generic
GObject code, explain why we implement it
(rather than dispose()).
Emmanuele Bassi [Mon, 31 Jan 2011 13:37:32 +0000 (13:37 +0000)]
docs: Fix documentation for clutter_actor_pop_internal()
http://bugzilla.clutter-project.org/show_bug.cgi?id=2534
Elliot Smith [Mon, 31 Jan 2011 13:36:37 +0000 (13:36 +0000)]
docs: Implement destroy() rather than dispose()
Remove the dispose() implementation and replace
with destroy().
This should be promoted as the standard approach
for implementing a composite actor, as it emits a
signal when instances of the actor subclass are destroyed.
Emmanuele Bassi [Mon, 31 Jan 2011 13:04:49 +0000 (13:04 +0000)]
docs: Update Cogl release notes for 1.6
Emmanuele Bassi [Mon, 31 Jan 2011 13:04:35 +0000 (13:04 +0000)]
Update the NEWS file
Emmanuele Bassi [Mon, 31 Jan 2011 12:51:14 +0000 (12:51 +0000)]
docs: Update the documentation for clutter_actor_unparent()
Make sure that we document the semantics of unparent() and who should
call it.
Emmanuele Bassi [Mon, 31 Jan 2011 12:50:25 +0000 (12:50 +0000)]
docs: Update documentation for ::destroy
The ::destroy signal is meant to be used to break reference cycles on
third party code. The documentation should really make it clear.
Emmanuele Bassi [Mon, 31 Jan 2011 12:28:03 +0000 (12:28 +0000)]
docs: Update release notes for 1.6
Elliot Smith [Mon, 31 Jan 2011 12:18:58 +0000 (12:18 +0000)]
docs: Don't use clutter_stage_get_default()
clutter_stage_get_new() is the recommended way to
get a stage instance, so use that instead.
Elliot Smith [Mon, 31 Jan 2011 11:06:01 +0000 (11:06 +0000)]
docs: Change text on button
Modify the text shown on the button to "hello / world"
rather than "winkle / pickers". Slightly more
sensible.
Elliot Smith [Mon, 31 Jan 2011 11:05:27 +0000 (11:05 +0000)]
docs: Add a note about other state variables
Explain that the private structure would be the
place to store other state variables for the instance.
Elliot Smith [Mon, 31 Jan 2011 10:53:52 +0000 (10:53 +0000)]
docs: Complete composite actor recipe
Add some extra detail to the Discussion section of the
composite actor recipe, concentrating on the pros and
cons of this approach.
Also explain more about the Clutter parts of the implementation.
Also general tidy up of language and style.
Elliot Smith [Fri, 28 Jan 2011 17:09:24 +0000 (17:09 +0000)]
docs: Change order of functions in example to match docs
Moved the functions around in the C code file, to match
the order Clutter uses them, and the order they are explained
in the recipe.