68 Commits

Author SHA1 Message Date
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
David Herrmann
325412bc15 terminal: avoid adding displays multiple times
We now enumerate displays on wake-up so we might end up adding a display
twice. This causes the display to be redrawn twice which is nasty so we
avoid it.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-06-24 10:52:05 +02:00
David Herrmann
5dfba2f3e7 font: support 2D blitting
If OpenGL is not supported, we now allow 2D blitting into the video
framebuffer as alternative to shaders.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-06-24 10:32:42 +02:00
David Herrmann
036ace6227 terminal: create shader only when OpenGL is available
If the video backend does not provide an OpenGL context, there is no need
to create the gl shaders. We then use the 2D blitting functions instead.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-06-24 10:27:46 +02:00
David Herrmann
6f76f97e96 terminal: add debug message when removing display
This can help a lot when debugging displays that are registered multiple
times with a terminal object.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-06-24 10:27:07 +02:00
David Herrmann
7129a9038c terminal/vte/console: support inverse-screen-mode
In inverse screen mode we switch background and foreground colors. As our
console layer supports transparent backgrounds, we have to do this in the
terminal layer.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-05-30 18:19:49 +02:00
David Herrmann
9aa76272e9 vte: use callback for outgoing messages
VTE now requires a new callback that is called when we want to send
messages to the pty etc. This is needed if we want to send messages as
responses to incoming data. Otherwise, we would have way too much overhead
assembling composed messages.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-05-28 16:38:56 +02:00
David Herrmann
2c5712685b vte: remove kmscon_vte_bind()
Bind the console at vte creation instead of dynamically during runtime.
There is no need to rebind a console so remove this complexity.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-05-27 14:47:11 +02:00
David Herrmann
199f4cbfa8 Replace old input subsystem with new uterm input
Use the new subsystem now throughout the whole code.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-05-26 14:57:08 +02:00
David Herrmann
3219b9ccfd eloop: convert idle sources to hooks
Instead if implementing complex idle sources we now provide a hook so
other subsystems can register callbacks.

This simplifies the code a lot and doesn't drop any major functionality.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-05-17 18:35:00 +02:00
David Herrmann
dab18c4eb7 console: remove old font-factory code
Remove the code that is no longer needed due to the new font renderer.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-04-01 19:31:57 +02:00
David Herrmann
a220fbae1a terminal: use new font backend
Instead of using the slow old font-factory we now use the new font_screen
object which allows faster software rendering with pango/cairo.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-04-01 19:25:54 +02:00
David Herrmann
c9ea08d9b5 unicode: use static global symbol table
A symbol table should never be created twice therefore we can make it
static and global. We add locks so it is totally thread-safe, too.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-29 16:17:55 +02:00
David Herrmann
622f3c72e2 terminal: rework API
We now use the new input/video hooks to avoid waking up the UI all the
time. This reduces the code in the generic UI subsystem and makes the
terminal handle all the stuff.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-27 16:11:38 +02:00
David Herrmann
096f0cadc7 Move to new uterm infrastructure
This fixes all compositor/output/context/etc. uses and replaces them by
the new uterm API.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-23 14:18:50 +01:00