82 Commits

Author SHA1 Message Date
David Herrmann
6bf4723b04 terminal: perform hard-reset on exit
Before starting a pty on a terminal, we now perform a hard-reset to avoid
any left-overs from the previous pty.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-10-02 13:02:44 +02:00
David Herrmann
32faedbfb4 Fix printf() specified bugs all over the code
When enabling the printf() logic for the logging subsystem, several
warnings were produced about missing or wrong specifiers. This fixes all
those occurrences.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-30 18:01:35 +02:00
David Herrmann
89cb239fce pty: set argv via helper function
This makes the pty layer independent of kmscon global state. This allows
us to use it in other applications bundled with kmscon. There is still
some work to do to make it fully independent so we can integrate it into
TSM. But that's not really needed, yet.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-26 21:24:34 +02:00
David Herrmann
9c48153e30 pty: set "TERM" via helper function instead of kmscon_conf
Instead of accessing global state, we now set the TERM value via a helper
function. This is needed to make the pty layer independent of kmscon.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-26 19:25:35 +02:00
David Herrmann
b5aa89f4ac pty: remove public eloop dependency
We now create an eloop object internally to avoid requiring public eloop
headers. Functionality is still the same but now hidden in the library.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 19:22:09 +02:00
David Herrmann
a1a590dd47 tsm: vte: convert to use llog
Instead of using kmscon log_* functions, we now use the independent llog
subsystem.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 19:21:28 +02:00
David Herrmann
1d764ebfbc tsm: add *_set_palette() helper
Instead of accessing kmscon-state we now add a helper to select the
palette and make the terminal-subsystem use it on initialization.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 17:25:34 +02:00
David Herrmann
62e720e069 tsm: vte: rename kmscon_vte object to tsm_vte
Perform final rename of the remaining vte objects.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 16:59:39 +02:00
David Herrmann
67cd0ef3a7 tsm: rename files
Rename all TSM files to have a tsm_* prefix.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 16:54:25 +02:00
David Herrmann
93c5d61a05 tsm: vte: move vte layer to tsm_vte_*
This pushes the whole VTE layer into TSM and performs the huge rename
which turned out to be quite easy to accomplish.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 16:37:17 +02:00
David Herrmann
2f7bb5a57f terminal: drain timer after wakeup
Use the new timer_drain() helper to reset the timer after waking up.
Otherwise, we get spurious warnings that the CPU is too slow.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 16:24:48 +02:00
David Herrmann
3e71989955 tsm: screen: introduce TSM_SCREEN_OPT_RENDER_TIMING
Instead of accessing kmscon state from TSM, we now introduce options to
control the behavior of TSM-screens. Apart from logging, TSM is now
independent of any kmscon state/code.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 15:58:54 +02:00
David Herrmann
e638e6f039 tsm: add tsm_log_t llog-compatible log object
We need to avoid logging to stderr directly in TSM so introduce the
tsm_log_t object similar to eloop.h.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 15:01:45 +02:00
David Herrmann
613e7e7000 tsm: screen: move filenames to tsm_screen.[ch]
All TSM files use the "tsm_*" prefix and the object is now named "screen"
so rename the files to resemble this.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 14:53:46 +02:00
David Herrmann
efb210469d console: rename prefix to tsm_screen_*
This is part of the TSM library creation. We also rename "console" to
"screen" as this layer actually manages the screen.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 14:49:20 +02:00
David Herrmann
c63330d9e9 terminal: don't include tsm_unicode.h
This is not needed. And we want to avoid any dependencies to this layer
wherever possible.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 13:47:19 +02:00
David Herrmann
cca90781c0 tsm: move unicode.[ch] to tsm_unicode.[ch]
All TSM related files will get the tsm_* prefix so move unicode headers
and sources.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 10:54:06 +02:00
David Herrmann
7867c50025 main: add --font-dpi option
This adds a new option to force a global PPI for all fonts. This overrides
per monitor PPI values.
This is useful if monitors do not provide correct PPI values and we want
the same behavior as all other X11 apps (which is 96 PPI forced).

Internally we speak of "Pixels per Inch" as this is more correct. However,
to not confuse users we use the more common term "Dots per Inch".

This also changes the default PPI value from 72 to 96. 96 is the de-facto
default value on linux so we should use it, too.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 09:53:12 +02:00
David Herrmann
93c553c1bc shl: move timer to shl_timer_*
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>
2012-09-16 17:08:21 +02:00
David Herrmann
aed1373bc6 shl: move dlist to shl_dlist.h
Instead of including dlist in the static library, we now move it to SHL.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-15 20:11:00 +02:00
David Herrmann
715e247676 shl: move dlist implementation to shl_dlist_*
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>
2012-09-15 19:10:37 +02:00
David Herrmann
55e37dde77 uterm: add uterm_keysyms.h
We need a copy of xkbcommon-keysyms.h as long as xkbcommon is not included
in all major distributions. We _need_ this build-time dependency,
otherwise, we cannot build the other keyboard backends.

However, requiring xkbcommon as build-time dependency is not a solution as
no major distribution includes it.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-11 19:30:26 +02:00
David Herrmann
71b8cfe93c vte: make independent of uterm
Remove the last reference to uterm structures so we can put the vte layer
into a separate library without any dependency to rendering
infrastructure.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-08 14:20:53 +02:00
David Herrmann
0d43751e88 console: make independent of text drawing layer
We finally want to get rid of any dependencies in the vte/console layer so
we can split it out into a separate library.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-08 14:09:09 +02:00
David Herrmann
009d8aa182 terminal: make shortcuts configurable via command-line
This adds command line options to make all currently available keyboard
shortcuts of the terminal layer configurable on the command-line and
config-file.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-05 19:50:41 +02:00
David Herrmann
facb99b913 terminal: print debug warning when skipping frames
If the CPU is too slow to render the console in a decent speed and we have
to skip frames, then we should print warnings if debug mode is on.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-04 18:42:31 +02:00
David Herrmann
e1a6437473 main: add --render-engine option
This option allows changing the console renderer during runtime. This is
only useful for debugging. The default choice should be best for all
situations.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-08-28 10:41:33 +02:00
David Herrmann
beb7c25137 terminal: remove debug messages
These messages should have never been committed, oops. Remove them as they
are really not needed.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-08-22 12:59:11 +02:00
David Herrmann
8398f4b0f9 terminal: add --fps to limit framerate
Instead of redrawing on change, we now use a framerate-timer which
redraws the screen. This timer stays active for 1s after the last redraw
so we do not enable/disable the timer while the console is under heavy
work-load. This still needs to be benchmarked but it seems to work nicely.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-08-21 17:59:02 +02:00
David Herrmann
40ef6f9491 terminal: add wake-up/sleep logic
Similar to the UI subsystem, we also need to be aware of our current state
inside of the terminal subsystem. We can now avoid rendering graphics when
not awake. This suppresses odd warnings that occured when keeping an
application active and printing in the terminal while the terminal was in
background.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-08-15 09:24:45 +02:00
David Herrmann
b697fcd43c terminal: implement basic scrolling-keys
This implements Shift+UP/DOWN and Shift+PageUp/PageDown as scrolling keys
for terminals. This will later be made configurable so other
keyboard-shortcuts can be used.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-08-14 17:09:42 +02:00
David Herrmann
5a24d624ae terminal: add --sb-size to control scrollback buffer size
The new sb-size option specifies the size of the scrollback buffer. Use 0
to disable the scrollback-buffer.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-08-14 17:08:55 +02:00
David Herrmann
4a034895c8 main: add font options
This adds two options --font-size and --font-name that can be used to
configure which font is used.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-08-14 16:29:55 +02:00
David Herrmann
c9ccc70fcb main: move conf_global to kmscon_conf in new header main.h
The main configuration is now limited to kmscon and thus should not use
the conf_* prefix. Move all code to use the new name and introduce the new
main.h header mainly for kmscon.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-08-11 22:02:46 +02:00
David Herrmann
11a4b6c887 terminal: remove global video object
We used to have a global video object for each terminal. However, this has
all been moved to the UI subsystem which can deal with multiple video
objects simultaneously. Hence, we can remove this as it is no longer used.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-08-11 14:01:04 +02:00
David Herrmann
ac8cc08f41 terminal: check for errors when initializing text renderer
We need to check for errors, otherwise, the text-renderer may be invalid
and we will never be able to render on it.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-08-10 11:51:02 +02:00
David Herrmann
4e9ad1b915 terminal: choose "gltex" renderer if OpenGL is available
If the uterm backend supports OpenGL, then we should use the "gltex"
renderer as the "bblit" renderer performs pretty badly on OpenGL displays.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-08-10 11:49:12 +02:00
David Herrmann
ac3fa529dc text: rework text renderer system
This reworks the text renderer system to make it easier to write backends.
We also allow returning errors during rendering now.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-08-10 11:42:00 +02:00
David Herrmann
002e8fb65e text: move font_char_attr to text.h
This way we can now remove all font.h includes. We can rename the
structure later.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-08-08 11:27:19 +02:00
David Herrmann
1f5fa54bfe terminal: remove OpenGL drawing stubs
Drawing with OpenGL didn't work, so we can safely remove the stubs.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-08-08 11:20:36 +02:00
David Herrmann
c52ecdfa6b conf: add "font-engine" option
This option allows to select the font-engine during run-time.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-08-06 14:45:03 +02:00
David Herrmann
5517fa16bd Use new text renderer
This fixes the console and terminal layer to use the new text renderer
instead of the old one.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-08-01 15:41:22 +02:00
David Herrmann
a0217124e5 ui: dispatch redraws in UI instead of terminal
We now schedule the terminal redraw from the UI to avoid having the
terminal using uterm-video directly.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-07-21 17:22:05 +02:00
David Herrmann
e18e063d87 terminal: allow external redraw-schedule
Allow UI subsystem to schedule redraws.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-07-21 16:40:05 +02:00
David Herrmann
181d26f0e7 ui: explicitely remove displays from terminals
Move display-removal from terinal subsystem to UI subsystem to avoid
needing video-callback in the terminal subsystem.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-07-21 15:47:51 +02:00
David Herrmann
45c2284ece terminal: add API to remove displays
This new function allows external subsystems to remove displays from the
terminal objects. It is required to make the terminal subsystem
independent of the uterm-video subsystem to allow different displays from
different video-objects to be part of a terminal.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-07-21 15:44:41 +02:00
David Herrmann
354a67555b terminal: be more verbose when adding displays
When adding displays, we know print errors if we cannot allocate buffers
or other resources. This helps debugging video problems where the device
is ready but the terminal is not printed.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-07-21 15:32:19 +02:00
David Herrmann
2af9952a72 terminal: close pty before opening it
There is no explicit call to reopen the underlying pty so we simply
force-close it before (re)-opening it. This will allow the UI to reopen a
pty when the child died.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-07-14 12:14:25 +02:00
David Herrmann
901f21457f gl: add wrappers for glClear and glClearColor
This helps us moving opengl dependencies into a single source file so we
can easily disable it.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-07-01 14:39:30 +02:00
David Herrmann
2d84eaad38 terminal: redraw on wake-up
The drm video backend does automatically blit the framebuffer on wake-up,
however, the fbdev backend does not. Hence, we automatically redraw on
wake-up in the terminal backend now.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-06-24 10:53:04 +02:00