Commit Graph

1752 Commits

Author SHA1 Message Date
Neil Roberts
463603f1a0 cogl-winsys: Fix freeing a CoglOnscreen
All of the winsys backends didn't handle cleaning up the CoglOnscreen
properly so that they would assert in cogl_onscreen_free because the
winsys pointer is never freed. They also didn't cope if deinit is
called before init (which will be the case if an onscreen is created
and freed without being allocated).
2011-05-10 20:23:39 +01:00
Neil Roberts
6654533e40 cogl-winsys-wgl: Plug leak on error from SetPixelFormat
When SetPixelFormat fails, the DC would get released but none of the
other resources would be freed. This patch makes it call
_cogl_winsys_onscreen_deinit on failure to clean up all of the
resources. The patch looks big because it moves the onscreen_deinit
and onscreen_bind functions.
2011-05-10 19:53:00 +01:00
Neil Roberts
6788c80342 Add a WGL winsys
This adds a full winsys to handle WGL and Win32.
2011-05-10 17:58:41 +01:00
Neil Roberts
14d1303259 cogl-winsys: Explicitly comment which vfuncs are optional
Some of the virtual functions in CoglWinsysVtable only need to be
implemented for specific backends or when a specific feature is
advertised. This splits the vtable struct into two commented sections
marking which are optional and which are required. Wherever an
optional function is used there is now a g_return_if_fail to ensure
there is an implementation.
2011-05-10 17:15:22 +01:00
Neil Roberts
614efb190b cogl-winsys: Remove the get_vsync_counter virtual
This function is only used internally within the GLX winsys so there
doesn't seem to be much point in it being a virtual winsys backend
function.
2011-05-10 17:13:23 +01:00
Neil Roberts
f2a37b27f9 CoglWinsysVtable: Remove 'has_feature'
This virtual function is no longer used or defined anywhere since the
function was moved to the common backend code in 16bfa27d43.
2011-05-10 17:13:23 +01:00
Robert Bragg
e8b83f2880 Adds wayland support to the cogl EGL winsys
Wayland now supports integration via standard eglSurfaces which makes it
possible to share more code with other EGL platforms. (though at some
point cogl-winsys-egl.c really needs to gain a more formal
CoglEGLPlatform abstraction so we can rein back on the amount of #ifdefs
we have.)
2011-05-10 16:36:40 +01:00
Robert Bragg
4b6169267c winsys-egl: fix typo in _cogl_winsys_onscreen_init
We were trying to set attr.event_mask instead of xattr.event mask which
was causing a compilation error.
2011-05-10 16:36:40 +01:00
Robert Bragg
ef60979258 Adds experimental cogl 2.0 reference
This pulls in the experimental cogl 2.0 reference manual from the
clutter repository since it wasn't included in the filter-branch when we
split cogl out.
2011-05-10 16:36:40 +01:00
Piotr Drąg
e6c98ae6ae Updated Polish translation 2011-05-08 21:31:46 +02:00
Piotr Drąg
39943228f0 Updated POTFILES.in 2011-05-08 21:27:37 +02:00
Damien Lespiau
ed97d871df build: Distribute CODING_STYLE 2011-05-06 18:56:38 +01:00
Damien Lespiau
c310dbbc72 build: Make sure to build examples, doc and po last
It seems more natural to compile examples after optional libraries as
you could have an example illustrating one of those libraries.

Build the docs and po files at the end too, trying to group the
compilation of C files together.
2011-05-06 18:56:38 +01:00
Neil Roberts
d093c1b389 cogl-pango-render: Add the atlas reorg callback to the right cache
When creating a new display list the pango renderer tries to add a
callback to the glyph cache so that it can be notified whenever the
atlas is reorganized. However it was always registering the callback
for the glyph cache which doesn't use mipmapping so if mipmapping is
enabled then it wouldn't work correctly.

This patch moves the two sets of caches (pipeline cache and glyph
cache) into one struct so that it's a little bit easier to determine
which pair to use in the code.
2011-05-06 18:37:59 +01:00
Neil Roberts
0bd87220b3 cogl-pango/Makefile.am: Add $(top_builddir) to INCLUDES
Some of the sources need to include <cogl/cogl-defines.h> which is in
the build directory. I think this directory gets added to the include
flags anyway by something so the actual building works but when
building the introspection data out of tree it was not included so it
failed to scan.
2011-05-06 18:37:59 +01:00
Damien Lespiau
8d4a6f4d4c build: Enable building the documentation again
At least the 1.6.0 documentation. The 2.0 one has been missed by the
filter-branch and will be re-added later.
2011-05-06 18:17:57 +01:00
Neil Roberts
3919f3e97e configure.ac: Add the check for the ffs function
When Cogl was sharing Clutter's configure script, it had a check for
the ffs function of libc so that it can provide a fallback if it is
not available. This fallback was missed in the split out so Cogl would
end up always using the fallback.
2011-05-06 17:48:24 +01:00
Emmanuele Bassi
0d5b38c8bf build: Don't make cogl-pango-1.0 depend on cogl-2.0 2011-05-06 17:34:57 +01:00
Emmanuele Bassi
800954e339 po: Fix xgettext complaining about a missing bug address 2011-05-06 17:34:57 +01:00
Emmanuele Bassi
5c131e61e5 build: Generate CoglPango introspection data 2011-05-06 17:34:57 +01:00
Damien Lespiau
62b7ea5972 build: Fix make distcheck
Some header files were split but never included in the list of source
files and thus not distributed.
2011-05-06 17:13:42 +01:00
Emmanuele Bassi
48c9157e97 build: Compile the introspection data
The compilation step for the introspection data was missing.
2011-05-06 16:53:43 +01:00
Damien Lespiau
f02ec9fc46 gitignore: Update .gitignore to make git status silent again 2011-05-06 16:23:13 +01:00
Robert Bragg
8b4ee0964b Remove all the options for building cogl standalone
This removes all the remnants from being able to build Cogl standalone
while it was part of the Clutter repository. Now that Cogl has been
split out then standalone builds are the only option.
2011-05-06 12:36:39 +01:00
Robert Bragg
102d174a2a Adds an initial README to the repo 2011-05-06 12:33:00 +01:00
Robert Bragg
bf4c64e190 Adds an initial .gitignore
This adds a .gitignore file to the top of the repo
2011-05-06 12:12:13 +01:00
Robert Bragg
00e157e8c9 Adds an initial cogl.doap file
This adds an initial doap file for Cogl.
2011-05-06 12:12:13 +01:00
Robert Bragg
6f2193545e consistently refer to cogl-pango as "cogl-pango"
This renames the pango directory to cogl-pango and it renames the
installed library to libcogl-pango instead of libcoglpango.
2011-05-06 12:12:08 +01:00
Robert Bragg
fbda52d21b Give cogl-pango it's own pkg-config file
We now install cogl-pango-1.0 and cogl-pango-2.0 pkg-config files that
applications should optionally depend on if they want to use the
cogl_pango API.
2011-05-06 12:12:08 +01:00
Robert Bragg
4211462eb2 Make building cogl-pango optional
When building for platforms that don't use pango for handling text
you may not need the cogl-pango library.
2011-05-06 12:12:03 +01:00
Robert Bragg
b6ebbc366e Adds a COPYING file
This adds a COPYFILE detailing the LGPL v2.1
2011-05-05 21:27:11 +01:00
Robert Bragg
a7541e0911 Adds mingw dependency fetching script
This adds a script to simplify fetching the dependencies for
cross-compiling Cogl for windows using a mingw gcc compiler.
2011-05-05 21:20:47 +01:00
Robert Bragg
680c173947 framebuffer: in onscreen_x11_get_xid return foreign xids
If a foreign xid has been set on a CoglOnscreen then
cogl_onscreen_x11_get_window_xid doesn't need to defer to the winsys to
get the underlying window xid. This also means it's possible to read
back the xid before the framebuffer is allocated which fixes a crash in
the x11-foreign example app.
2011-05-05 20:41:01 +01:00
Robert Bragg
ccd0079b57 fix a /XDisplay/Display/ typo in x11-foreign.c
This removes a spurious X prefix that was causing a compilation error.
2011-05-05 20:38:13 +01:00
Robert Bragg
3a4d0a735b Export some private symbols from libcogl for coglpango
Ideally we wouldn't have any private symbols exported, but for now there
are some APIs that coglpango needs access to that aren't public so we
have ensure they are exported. The aim is to get rid of this need at
some point.
2011-05-05 20:34:54 +01:00
Neil Roberts
14ed963b05 cogl-debug: Add an option to disable atlasing sharing
If COGL_DEBUG contains disable-shared-atlas Cogl will not try to share
the atlas between glyphs and images.
2011-05-05 17:32:31 +01:00
Neil Roberts
184527580e cogl_pipeline_equal: Handle COGL_WRAP_MODE_AUTOMATIC better
When comparing the wrap modes of two pipeline layers it now considers
COGL_WRAP_MODE_AUTOMATIC to be equivalent to CLAMP_TO_EDGE. By the
time the pipeline is in the journal, the upper primitive code is
expected to have overridden this wrap mode with something else if it
wants any other behaviour. This is important for getting text to batch
together with textures because the text explicitly sets the wrap mode
to CLAMP_TO_EDGE on its pipeline.
2011-05-05 17:32:30 +01:00
Neil Roberts
66c54e04de cogl-pango: Don't set the special combine function for atlased textures
The material cache will now only set the special combine mode if the
texture only has an alpha component. The atlased textures will have
all four components so it will leave the combine functions at the
default. This increases the chances of batching between glyphs and
images.

When using the global atlas, the glyph from cairo is now rendered into
an ARGB surface rather than an alpha-only surface.
2011-05-05 17:32:30 +01:00
Neil Roberts
cbf011dcd0 cogl-pango: Use a seperate cache of pipelines
Instead of creating just two materials (one for texturing and one for
solid primitives) the pango renderer now maintains a cache of
pipelines. The display list can request a pipeline for a texture from
the cache. The same pipeline cache is used by all display lists so
that the pipelines can be shared. This avoids changing the texture on
the material during a paint run.
2011-05-05 17:32:30 +01:00
Neil Roberts
b83069f3b2 cogl-pango-glyph-cache: Don't put zero-sized glyphs in the cache
It now avoids trying to reserve space for zero-sized glyphs. That
happens for example when the layout contains a space. This was causing
the regular glyph cache to be used because the global atlas does not
support zero-sized images. That would then break up the
batching. Instead it now still reserves an entry in the cache but
leaves the texture as COGL_INVALID_HANDLE.
2011-05-05 17:32:30 +01:00
Neil Roberts
f098f8fdec Revert "cogl-pango-display-list: Don't use VBOs if the texture can't handle it"
This reverts commit 32c91793e4.

This commit is no longer needed since the display list will now only
have primitive textures in it.
2011-05-05 17:32:29 +01:00
Neil Roberts
3f1e0c701e cogl-pango-render: Add the base texture to the display list
When rendering a glyph from a texture, instead of adding the glyph's
texture handle to the display list it now retrieves the base texture
using _cogl_texture_foreach_subtexture_in_region and adds that
instead. That way the display can recognise that glyphs in the global
atlas are sharing the same texture and combine them into one VBO.
2011-05-05 17:32:29 +01:00
Neil Roberts
a7aad27212 cogl-bitmap-private.h: Include cogl-bitmap.h
There was a header dependency problem which meant that
cogl-texture-private.h couldn't be included without first including
cogl-bitmap.h
2011-05-05 17:32:29 +01:00
Neil Roberts
28b0f76cc9 cogl-pango-glyph-cache: Notify of reorg for global atlased glyphs
Whenever the glyph cache puts a glyph in the global atlas it will now
register for notifications of reorganisation of the global
atlases. When this happens it will forward this on as a notification
of reorganisation of the glyph cache.
2011-05-05 17:32:28 +01:00
Neil Roberts
239614a375 cogl-atlas-texture: Add a callback for when any atlas reorganizes
This adds cogl_atlas_texture_* functions to register a callback that
will get invoked whenever any of the CoglAtlas's the textures use get
reorganized. The callback is global and is not tied to any particular
atlas texture.
2011-05-05 17:32:28 +01:00
Neil Roberts
25c36c452f pango-glyph-cache: Try to put glyphs in the global atlas
If mipmapping is disabled, it will now try to create a standalone
atlas texture for a glyph rather than putting it in the atlas.

If the atlas texture can't be created then it will fallback to the
glyph cache.
2011-05-05 17:32:28 +01:00
Neil Roberts
c76a4f8e24 cogl-atlas-texture: Split out new_from_bitmap to new_with_size
This adds a new function called _cogl_atlas_texture_new_with_size. The
old new_from_bitmap function now just calls this and updates the
texture with the data.
2011-05-05 17:32:27 +01:00
Neil Roberts
a2d9ad21ef cogl-pango-display-list: Don't use VBOs if the texture can't handle it
If the texture can't be hardware repeated (ie, if it is sliced or it
has waste) then Cogl will reject the layer when rendering with a
VBO. In this case we should always fall back to rendering with
cogl_rectangle.

This commit is only needed temporarily because Cogl will end up
putting atlas textures in the display list. A later commit in the
series will make it so that the display list always has primitive
textures in it so this commit can be reverted.
2011-05-05 17:32:27 +01:00
Neil Roberts
12b751a8e1 cogl-pango: Use a separate glyph cache for mipmapped rendering
This reverts the changes in 54d8aadf which combined the two glyph
caches into one. We want to start using separate caches again so that
we can non-mipmapped textures into the global atlas.
2011-05-05 17:32:27 +01:00
Robert Bragg
6c23f27801 Adds a way for Cogl to control event_mask of foreign wins
This extends cogl_onscreen_x11_set_foreign_xid to take a callback to a
function that details the event mask the Cogl requires the application
to select on foreign windows. This is required because Cogl, for
example, needs to track size changes of a window and may also in the
future want other notifications such as map/unmap.

Most applications wont need to use the foreign xwindow apis, but those
that do are required to pass a valid callback and update the event mask
of their window according to Cogl's requirements.
2011-05-05 15:05:42 +01:00