config.h is meant to be around in all files, as it contains stuff like
_GNU_SOURCE, NDEBUG and HAVE_*.
Make these definitions available without needing to #include config.h
every single time.
Signed-off-by: Ran Benita <ran234@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
log_warn is much shorter and we already use log_err instead of log_error
so this is more consistent now.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We now properly draw fonts with OpenGL. We now use FreeType2 instead of
pango to avoid big dependencies.
We also add a DejaVu font so we currently don't have to deal with font
selection.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
To avoid cairo dependencies we now take a compositor reference in the
font backend so fonts can be drawn with GL textures instead of cairo.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Instead of drawing with fixed-function GL pipeline we now use our own
shader for texture drawing. This also fixes test_console to no longer
depend on GL.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
To switch to the new drawing subsystem we need a reference to a valid
compositor object so we can retrieve the GL context.
This also applies to the terminal object.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Here's how it goes:
1. stdin reaches EOF, kmscon_eloop_rm_fd is called on stdin_fd.
2. The fd object is freed, the memory is reused in the meantime.
3. rm_fd is called again in destroy_eloop.
4. con->stdin_fd points to garbage and we get a segmentation fault.
Signed-off-by: Ran Benita <ran234@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We use a new font factory which is used to create a new font. It will later also
be used to cache fonts and select proper system fonts.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We should activate the GL context on initialization to allow other subsystems to
create GL objects.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Currently, we set up our VT with SIGUSR1/2 signals and after that the user may
connect the signal handlers to the eloop. However, if we receive a signal in
between, the signal gets lost.
Therefore, this simply merges the kmscon_vt_connect_eloop function into
kmscon_vt_open as there is no obvious reason to split them.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We must not destroy the compositor object if there is still a console using the
GL context. Otherwise we get a SEGFAULT when calling any gl* function.
In future we may need propoper dependencies here. We use reference counts so
this should be easy to implement.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Remove the *_set_res() function entirely. Instead, the *_resize() function now
accepts a height argument which is used as quality hint. Internally, we compute
the texture width by the selected font plus the given height. This simplifies
the API and the internal handling and improves output on non-standard
resolutions or with non-standard fonts.
Until now it was only optimized for my 16x9 output but 5x4 output was quite
garbled.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Add kmscon_console_write() to write a character to the current position of the
cursor. The cursor is automatically moved to the next cell.
Also extend the test_console example to use this new function.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
The test_console application now supports VT-switching and monitor-hotplug. New
monitors are detected when switching VTs. Full hotplug-support will be added
later.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Further commits will need a Signed-off-by line, otherwise I cannot accept them.
MIT license is compatible with GPL so we still can switch to GPL in the future
if we want.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Correctly set locale on startup and sleep for one second after each redraw to
reduce CPU consumption.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This test application prints a console on all connected outputs. It does not
emulate any terminal but instead just prints the test-console.
It can be used to test the console subsystem in connection with the DRM/KMS
output subsystem.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>