Commit Graph

22235 Commits

Author SHA1 Message Date
d2a35a1e22 cogl-pipeline: Fix comparing the texture data state for NULL textures
When comparing the texture data for a pipeline layer it tries to get
the GL texture handle out of the texture object. However it's valid
for a layer to have a NULL texture object but in that case the code
would just crash. This patch fixes it to compare the texture types
when the texture object is NULL.

Reviewed-by: Robert Bragg <robert@linux.intel.com>
2012-02-13 17:10:18 +00:00
b96e6900f5 cogl-pipeline-layer: Use CoglTextureType instead of GL target enum
Instead of storing the GLenum for the target of the last used texture
for a layer it now stores the CoglTextureType instead. The state name
has been renamed to 'texture type' instead of 'texture target'.
Previously the default pipeline layer would store 0 here to represent
that there is no texture. This has been changed to store
COGL_TEXTURE_TYPE_2D instead which means that all pipeline layers
always have a valid value for the texture type. Any places that were
previously fetching the texture from a layer to determine the target
(for example when generating shaders or when enabling a particular
texture target) now use the texture type instead. This means they will
work even for layers that don't have a texture.

This also changes it so that when binding a fallback texture instead
of always using a 2D texture it will now use the default texture
corresponding to the texture type of the layer. That way when the
generated shader tries to do a texture lookup for that type of texture
it will get a valid texture object. To make this work the patch adds a
default texture for 3D textures to the context and also makes the
default rectangle texture actually be a rectangle texture instead of
using a 2D texture.

Reviewed-by: Robert Bragg <robert@linux.intel.com>
2012-02-13 17:09:34 +00:00
8012eee31f Add _cogl_texture_get_type()
This adds an internal function to get the type of the underlying
hardware texture for any CoglTexture. It can return one of three
values to represent 2D textures, 3D textures or rectangle textures.
The idea is that this can be used as a replacement for
cogl_texture_get_gl_texture when only the target is required to make
it a bit less GL-centric. The implementation adds a new virtual
function which all of the texture backends now implement.

The enum is in a public header because a later patch will want to use
it from the CoglPipeline API. We may want to consider making the
function public too later.

Reviewed-by: Robert Bragg <robert@linux.intel.com>
2012-02-13 17:02:46 +00:00
bc2e4ac6c2 Clean up clutter-timeline.h
Re-align everything to allow expansion, and move the only "protected"
function to the clutter-master-clock.h private header.
2012-02-13 13:39:47 +00:00
9b87e8602c cogl/Makefile.am: Filter out SDL winsys for Visual C++ builds
Just being a bit paranoid here, as the SDL winsys sources are dealt in the
projects as they are not built for all configurations to avoid them
included more than once in the projects, which can cause trouble.

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

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2012-02-13 12:22:19 +00:00
596ff72dc9 Update cogl.symbols
-Adapt to the removal of _EXP mangling from many of the experimental
 functions
-Adapt to newly added/replaced APIs
-_cogl_handle_atlas_texture_get_type is gone

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

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2012-02-13 12:22:18 +00:00
2c463c56b1 cogl-in-gles-core-functions.h: Remove stray ';'
There is a stray ';' which some compilers are not fond of.

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

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2012-02-13 12:22:18 +00:00
356e134ffb Win32: Update predefined cogl-defines.h's
-Add a define for COGL_HAS_GLIB_SUPPORT, the Visual C++ projects will build
 GLib support for COGL for all builds at this time, unless there is a
 significant call for the need of a COGL Visual C++ build with no
 dependency on GLib
-Pre-define COGL_SYSDEF_POLL* as listed in the default values in commit
 74974752 since Windows does not have poll.h and thus does not have special
 values for these.

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

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2012-02-13 12:22:17 +00:00
aec65c9198 actor-meta: Correct annotations for vfuncs
Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
2012-02-13 12:00:44 +00:00
96031a4f6f actor: Fix some broken annotations
Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
2012-02-13 12:00:38 +00:00
3adcbb265c Update the Clutter moduleset 2012-02-13 11:49:10 +00:00
d8a51726e1 actor: Implement remove_all_children using ActorIter
The remove_all_children() method is an ideal candidate for using the
ActorIter API; the end result is more compact and easy to follow.
2012-02-13 08:59:09 +00:00
8f6da170bc input-device: Do not use weak references with actors
Use the ClutterActor::destroy signal.
2012-02-13 08:52:08 +00:00
f024b852f9 stage: Do not use weak refs with actors
ClutterActor provides a signal for notifying destruction: using weak
references is neither indicated nor recommended.
2012-02-13 08:45:22 +00:00
519da376f0 stage: Clean up
Remove some ifdeffed out dead code, and some duplication.
2012-02-13 08:44:40 +00:00
cd118f0dc0 text: Fix regression
When the ClutterTextBuffer support inside ClutterText was merged, it
introduced a regression that was identified and fixed in bug 659116.

The optimization to not paint empty ClutterText actors is only valid
is the actor is not editable, or if the cursor is not visible.
2012-02-11 16:02:31 +00:00
f770cce7a5 build: Fix platform_linux check
Missing * at the end.

As a side effect, this commit enables the ABI check when running make
check inside the clutter/ directory.
2012-02-10 12:26:43 +00:00
66451e75d3 Update config.h.win32(.in)
Make it more like the config.h(.in) in terms of the entries to check.
2012-02-10 16:15:06 +08:00
ca9b27615d Update Visual C++ property sheets
-Stop installing the cookbook items for now
-Reflect on newly added and deprecated public headers
2012-02-10 16:10:47 +08:00
5220d659e0 Update Clutter Visual C++ projects
Link also to GIO as the GResource APIs from GIO is now being used
2012-02-10 15:50:55 +08:00
e654e3f699 Update Visual C++ property sheets
Make sure GLib support functions are placed into the cogl.def file so
that they will be exported.
2012-02-10 11:37:54 +08:00
001e839401 Add abicheck.sh
Courtesy of GLib and GTK+. The abicheck.sh is a simple, Linux-only,
script to check that we're not leaking private symbols, or that the
clutter.symbols file hasn't been updated.

In theory, it should go inside the distcheck phase.
2012-02-09 18:42:27 +00:00
de9efd98a7 symbols: Update
Add a bunch of missing public symbols, and remove some cruft.
2012-02-09 18:41:55 +00:00
92f6b520cb build: Identify the Linux hosts
This gives us a nice conditional, like the one we have on Windows and
OSX.
2012-02-09 18:41:19 +00:00
910b09d70a Mark internal symbol as private
A bunch of private symbols have escaped into the SO; let's rectify this
situation by using the '_' private prefix, or making them static as they
should have been.
2012-02-09 18:40:03 +00:00
8ba0351c7a conform/actor: Add unit for the Container signals
ClutterActor should be emitting signals defined on the ClutterContainer
interface, as well as ensuring that manipulating the scene graph is
still possible from within them.

The new unit checks that we're emitting signals, by implementing
something similar to the Bin class available in toolkits like gtk, st,
and mx — i.e. a container that can only hold one child at any given
point.
2012-02-09 16:48:08 +00:00
fee53a2993 clutter-backend: Use the Cogl main loop mechanism
Cogl now requires that all applications integrate their main loop with
Cogl so that it can listen for events from winsys. This patch just
adds Cogl's GSource to the main loop.

Reviewed-by: Emmanuele Bassi <ebassi@linux.intel.com>
Reviewed-by: Robert Bragg <robert@linux.intel.com>
2012-02-09 16:34:25 +00:00
bace07c0a0 Updates use of Cogl in line with api changes
Some of Cogl's experimental apis have changed so that the buffer apis
now need to be passed a context argument and some drawing apis have been
replaced with cogl_framebuffer_ drawing apis that take explicit
framebuffer and pipeline arguments.

These changes were made as part of Cogl moving towards a more stateless
api that doesn't rely on a global context.

This patch updates Clutter to work with the latest Cogl api and bumps
the required Cogl version to 1.9.5.

Reviewed-by: Emmanuele Bassi <ebassi@linux.intel.com>
Reviewed-by: Neil Roberts <neil@linux.intel.com>
2012-02-09 16:34:25 +00:00
d0e945fb70 actor: Add ClutterActorIter.destroy()
Similar to the clutter_actor_iter_remove(), but it'll call destroy()
instead of remove_child().

We can also reimplement the ::destroy default handler using it, and make
it more compact.
2012-02-09 15:49:30 +00:00
59bb19a449 actor: Add a default handler for ::destroy
Now that ClutterActor can be instantiated, we need to do the right
thing, and destroy its children when it is destroyed.
2012-02-09 15:43:25 +00:00
630e602eac docs: Update the Container interface documentation
The API reference should be more explicit about which parts of the
interface should be overridden, and which are deprecated.
2012-02-09 15:38:11 +00:00
3ea6acc072 buffer: explicitly relate buffers to a context
All CoglBuffer constructors now take an explicit CoglContext
constructor. This is part of the on going effort to adapt to Cogl API so
it no longer depends on a global, default context.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2012-02-09 14:28:02 +00:00
0c715d0026 conform/actor-graph: Add more cases
The actor-insert unit is not exercising the whole API and its allowed
arguments; this let sneak in the buglet found in bug 669730.
2012-02-09 14:22:31 +00:00
269878217f debug: don't overlay wireframe
When using COGL_DEBUG=wireframe we were overlaying a wireframe of the
users geometry over the top of what was drawn for each primitive. It
seems to be more useful though that if the wireframe debug option has
been enabled then we should draw only the wireframes instead of
overlaying them.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2012-02-09 13:22:33 +00:00
983c9f0dc4 cogl-crate: remove spurious cogl_set_depth_test_enabled call
Use of cogl_set_depth_test_enabled() has been deprecated for some time
and cogl-create already uses the new api for enabling depth testing so
it was just an oversight that we forgot to remove the old call to
cogl_set_depth_test_enabled().

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2012-02-09 13:20:27 +00:00
b168ff8ef6 journal: use pipeline term instead of source
Since we are adapting the Cogl api to be less stateful one of the things
we no longer require is the cogl_set_source() api since a pipeline can
be explicitly passed as an argument when drawing. This means the term
"source" has been deprecated and internally we should aim to
consistently use the term "pipeline" instead. This patch updates the
journal code to use the term pipeline instead of source.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2012-02-09 13:13:07 +00:00
9a254d8292 debug: Adds COGL_DEBUG=winsys option
Although we internally had a COGL_DEBUG_WINSYS enum we weren't providing
a way to enable that via the COGL_DEBUG environment variable. This adds
a "winsys" option that can be used to enable printing of winsys debug
notes.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2012-02-09 13:10:14 +00:00
379fa8b435 display: Remove _EXP symbol mangling and add gtk-doc
We are in the process of removing all _EXP suffix mangling for
experimental APIs (Ref: c6528c4b6c) and adding missing gtk-doc
comments so that we can instead rely on the "Stability: unstable"
markers in the gtk-doc comments. This patch tackles the display api
symbols.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2012-02-09 13:09:15 +00:00
92c3063014 framebuffer: Add cogl_framebuffer draw methods
This adds cogl_framebuffer_ apis for drawing attributes and primitives
that replace corresponding apis that depend on the default CoglContext.
This is part of the on going effort to adapt the Cogl api so it no
longer depends on a global context variable.

All the new drawing functions also take an explicit pipeline argument
since we are also aiming to avoid being a stateful api like Cairo and
OpenGL. Being stateless makes it easier for orthogonal components to
share access to the GPU. Being stateless should also minimize any
impedance miss-match for those wanting to build higher level stateless
apis on top of Cogl.

Note: none of the legacy, global state options such as
cogl_set_depth_test_enabled(), cogl_set_backface_culling_enabled() or
cogl_program_use() are supported by these new drawing apis and if set
will simply be silently ignored.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2012-02-09 13:09:15 +00:00
0365f6cda3 examples: use framebuffer matrix stack apis
Instead of using apis like cogl_push/pop_matrix, cogl_rotate,
cogl_translate and cogl_scale all the examples now use the
cogl_framebuffer_* equivalents. Our aim is to remove the need for the
default CoglContext and so we are switching towards apis that
are explicitly tied to a specific context.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2012-02-09 13:09:15 +00:00
7287dd1faf examples: use cogl_framebuffer_clear4f not cogl_clear
cogl_clear depends on the default CoglContext which we are trying to
steer the API away from requiring. cogl_framebuffer_clear4f is
explicitly passed a framebuffer pointer which is implicitly related to a
specific context.

This updates all the examples to use cogl_framebuffer_clear4f instead of
cogl_clear and removes any redundant CoglColor that was previously
passed to cogl_clear.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2012-02-09 13:09:15 +00:00
cdbc1dc9b1 examples: Remove explicit framebuffer allocations
It used to be that cogl_framebuffer_allocate() had to be done explicitly
but we have since made Cogl lazily allocate framebuffers when they are
first used if they haven't already been explicitly allocated. Developers
only need to explicitly allocate framebuffers if they are planning to
gracefully handle any errors. In cases where the program will simply
abort due to an allocation error they can simply rely on implicit
allocation which will cause an abort on error.

This updates the examples to not explicitly allocate the framebuffers
since they all just abort on error anyway.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2012-02-09 13:09:15 +00:00
a023bb3412 actor: Fix add_child_at_index() for negative index
There is a typo in the check for a negative index: the index variable
should be index_, not index - unfortunately, the latter can still be
resolved to index(3), so compiler and linker are perfectly happy.

https://bugzilla.gnome.org/show_bug.cgi?id=669730
2012-02-09 09:29:13 +01:00
74821f61c0 Updated Serbian translation 2012-02-08 21:40:54 +01:00
88f8780367 cogl-primitives: Copy across the texture coordinates if no texture
Previously when using the cogl_rectangle_* family of functions with a
pipeline that doesn't have a texture for a particular layer then
validate_tex_coords_cb would bail out immediately leaving the texture
coords for that layer uninitialised. This patch changes it so that it
bails out after copying in the texture coordinates instead. This was
causing problems for pipelines that were trying to completely generate
the texture values in a CoglSnippet because they wouldn't get any
texture coordinates.

Reviewed-by: Robert Bragg <robert@linux.intel.com>
2012-02-08 19:25:19 +00:00
15d43bb697 glx: Only call swap_buffer callbacks @ dispatch time
This ensures we don't call swap buffer notify callback functions
immediately when they are received since it could be awkward for
applications to ensure they have dropped all necessary locks if they
don't know when callbacks might be invoked.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2012-02-08 18:58:06 +00:00
0f33c942f2 kms: gracefully handle NULL save_state at cleanup
If we failed to save any crtc state then we skip trying to restore the
old state at cleanup.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2012-02-08 17:00:25 +00:00
1a638b6fd6 kms: Adds api to get at the kms file descriptor
This adds a cogl_kms_renderer_get_kms_fd() function that lets developers
access the kms file descriptor being used for controlling the kernel
mode setting.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2012-02-08 17:00:25 +00:00
6b7af18313 renderer: fix s/contraint/constraint/ typo
The recent patch to add an api for explicitly constraining how a
renderer backend is chosen had a typo which this patch fixes.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2012-02-08 17:00:25 +00:00
161fad2860 texture-2d/wayland: destroy transient EGLImages
When creating a texture from a wayland buffer we create an intermediate
EGLImage that we then create a GL texture from, but we were never
destroying that EGLImage. This patch ensures we destroy the image right
after we've created the texture so we don't leak a reference to the
underlying buffer.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
2012-02-08 17:00:25 +00:00