Instead of converting symbols into UCS4 string in each backend, we now
pass the whole data from the console layer into the renderers.
This makes all renderers indepedent of any recently introduced
symbol-tables and they can be implemented inside of TSM without exporting
them. However, we still need to pass the IDs to the text layer. The text
layer must not use them for anything but identification. Moreover, it must
never assume that they are valid tsm_symbol_t values.
We do this so the backends can still have fast hashtable lookups rather
than allocating big keys containing the UCS4 string+length and using these
for lookups.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We should avoid any global state in shared libraries. As the TSM code is
becoming a shared library, we definitely need contexts for symbol tables.
However, we don't want to fix up all code now so we use a default table
NULL instead.
This can be fixed later but is ok for now.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This moves the timers to SHL and removes the old static_misc header and
source. They are no longer needed.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This moves the whole hashtable implementation into the SHL library. Now we
can link it only to the applications that really use it.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Shl (Static helper library) is the new name of all static helpers in
kmscon that might be shared between different applications.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
When using small glyphs, the pango text renderer used to cut off a pixel
of each glyph. This is due to incorrect rounding in width calculation. To
avoid this, we simply increase each glyph by 1 so it will always have
enough space for the whole data.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Whoops, obvious typo. We need to free the face if the refcount drops to
zero and not if it is non-zero.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We copy the real attributes into the parent font structure only during
font-creation. However, if multiple renderers run simultaneously, they
might share fonts so we need to copy the attributes when reusing a font,
too.
This fixes a nasty division by zero bug during font rendering.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
As gcc is not aware of out list-semantics, it warns about uninitialized
variables when in fact we know that they must be initialized. Suppress
some by initializing the variables to NULL.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
The freetype2 renderer uses ft2 and fontconfig to provide a very
simplistic renderer. We also simplify the logic of the whole subsystem a
lot and guarantee that each glyph will have the same size now.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Whoops, we were checking the wrong variable. Fix the OOM check to
correctly catch the right errors.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We need to actually increase the character count, otherwise, we will never
have a measurement set.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
The pango font backend is similar to the currently used older backend but
provides the new API. It is modular so we can disable it if not needed.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>