357 Commits

Author SHA1 Message Date
David Herrmann
e302a0bd96 eloop: use kmscon_dlist for shared signals
Move to new list-implementation instead of the single-linked list. This
allows removal of elements in O(1).

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-04-22 15:47:00 +02:00
David Herrmann
b7773bc70b misc: add double-linked list implementation
This adds a generic double-linked list implementation so we don't have to
write all list-handling over and over again.

The list-type is similar to the kernel list where we use the same type for
heads and entries. This is a _very_ convenient list-type so we copy it.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-04-22 15:43:00 +02:00
David Herrmann
7a7f977d43 misc: add type-safe "offsetof"
This uses the GCC extension "typeof" to implement a type-safe "offsetof"
similar to the implementation in the linux kernel.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-04-22 15:40:39 +02:00
David Herrmann
68633aee06 misc: fix header protection
There was a typo in the macros for header protection.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-04-22 15:39:57 +02:00
David Herrmann
3a480dc910 misc: add kmscon_hook_num() helper
This helper returns the number of registered callbacks for an hook.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-04-15 14:57:17 +02:00
David Herrmann
f307f145a8 test_output: always enable all outputs
Instead of accepting a list of outputs we now enable all outputs when
testing the video subsystem.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-04-14 19:54:45 +02:00
David Herrmann
24f189a31a test_output: run eloop for 5s instead of sleep()
The new eloop implementation allows to run the eloop for a fixed amount of
time. Use this instead of sleeping for 5s which would prevent us from
catching signals as the eloop blocks them in favor of signalfd.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-04-14 19:49:36 +02:00
David Herrmann
7a27de465b test_output: use new test_include.h header
The test_include.h header now provides the basic initialization that will
later be used in all other tests. This allows us to use the same
program-parameters that kmscon uses and makes sure everything is
initialized properly before we run the tests.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-04-14 19:45:11 +02:00
David Herrmann
b56ec68a91 test_output: remove signal handler
It will be replaced by the event loop signal handler.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-04-14 19:35:12 +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
a0109ffabc console: remove margin_bottom cache
margin_bottom was always the last index of the scroll-region, in contrast
to cells->mbottom_y which is the bottom margin size. However, this cache
is inconvenient so this replaces all calls to margin_bottom with a correct
immediate calculation of the bottom margin.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-04-01 18:17:45 +02:00
David Herrmann
9c2b838054 console: remove mtop cache
We can directly access the buffer now so no need to cache the value.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-04-01 16:12:02 +02:00
David Herrmann
4897b4ce68 console: remove cells_x/y cache
We don't need this anymore as we now have direct access to the buffer
structure.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-04-01 15:00:47 +02:00
David Herrmann
d2786e12d3 console: add "fixed_position" option
The fixed_position option allows to explicitely keep the scrollback-buffer
position instead of scrolling on new input. This was already the current
behavior but now we can also scroll on new input if this is set to false.

Also fix up the formatting of the comments and remove old information.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-04-01 14:08:20 +02:00
David Herrmann
bfe6702c1e console: remove refcnt of buffer object
The buffer object is used internally only and should never be shared.
Hence, we can safely remove the refcnt.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-04-01 12:52:54 +02:00
David Herrmann
c25a2bb249 console: make buffer code private
The buffer should not be accessed from code outside of console.c so make
it private. This includes some code-moving but no bigger changes. The diff
might look scary, though.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-04-01 12:50:17 +02:00
David Herrmann
d01ad92bf8 font: add new font renderer
The old font-renderer was horribly slow. There were several ideas to
speed it up but I decided to add the pango backend again. Pango allows us
to draw combined-characters and all other kinds of special characters. We
would have to rewrite pango if we wouldn't want this dependency so I
currently have no idea why we should make it optional.

However, some people might not care whether they can correctly display all
kind of Unicode text but instead want some shiny kmscon without any
dependencies. Therefore, I will keep the old freetype font-renderer even
though it is not used yet. However, we can convert it at any time.

The new font-renderer is not used yet. We need to cleanup the console
layer first before it can be hooked into the terminal.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-31 22:45:12 +02:00
David Herrmann
728f4a1b18 gl: add stride parameter to texture upload
Allow to specify the stride when uploading data into a texture.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-31 22:44:37 +02:00
David Herrmann
f091b2b763 misc: replace all GHashTable with kmscon_hashtable
We use a new wrapper to move all glib deps to central points so we can
replace them easily.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-30 18:49:04 +02:00
David Herrmann
2707ba7336 misc: hash-table wrapper
We want to move away from glib eventually. Until then, we use a simple
wrapper around the hash-table functions so we need to change a single
place only.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-30 18:42:12 +02:00
David Herrmann
046833530c console: fix log messages
Use LOG_SUBSYSTEM and remove trailing newlines.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-30 15:55:23 +02:00
David Herrmann
8baea629f9 vte: fix log messages
Use LOG_SUBSYSTEM and remove trailing newlines.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-30 15:51:33 +02:00
David Herrmann
c4716ad6ce font_freetype2: fix log messages
Use LOG_SUBSYSTEM and remove newlines.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-30 15:49:28 +02:00
David Herrmann
668052401e conf: add --seat parameter
The --seat parameter specifies which seat is used for drm and input
devices. Default is seat0.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-29 18:04:39 +02:00
David Herrmann
262a0e98a0 conf: fix negative getopt_long parameters
I don't know the reason but negative values don't work here. We simply use
big integers now to avoid clashes with valid getopt() values.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-29 18:03:21 +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
a31455a10b unicode: fix logging messages
Use new logging style in unicode layer.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-28 17:20:13 +02:00
David Herrmann
1648c9101b Update README
Fix some small typos and add TODOs.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-27 16:48:27 +02:00
David Herrmann
f02d745928 Bump version number to 1
We use a single version number. The current state seems to be pretty
stable and has all the important features regarding the DRM/input setup.
Only missing stuff is VTE and console.
This is no stable release but rather a first development release.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-27 16:42:31 +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
3bcce95be3 pty: add kmscon_pty_signal()
Allow to send arbitrary signals to the foreground process group of the
pty. Linux supports the TIOCSIG ioctl so we actually do not need to
implement this on our own, yeah!

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-27 13:35:41 +02:00
David Herrmann
84b87c320b pty: avoid calling callbacks twice
We shouldn't call the close-cb twice. Therefore, correctly free the FD on
first error, however, keep the signal-callback to get nice log-messages.
Only when the user calls *_close() we eventually stop everything.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-25 19:14:30 +02:00
David Herrmann
9a2e025475 eloop: wait for all childs
Move child-waiting into the eloop subsystem so all childs are always
correctly freed.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-25 19:02:23 +02:00
David Herrmann
3935a77439 pty: fix using right fd
Use right fd when spawning child process.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-25 18:50:30 +02:00
David Herrmann
5cdf94711b pty: random fixes
Fix some random coding-style issues and adjust to new eloop-rules.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-25 18:37:45 +02:00
David Herrmann
e0546adcaa pty: correctly terminate when child_setup fails
We currently return "ret" when child setup fails, however, we should
rather call exit(). Also avoid cleaning up as this is impossible here
anyway.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-25 18:16:05 +02:00
David Herrmann
0392fb8c49 pty: fix wrong fd check
FDs may be 0 so check for >= and not > for fds.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-25 18:10:27 +02:00
David Herrmann
6bcc73666a pty: fix race when starting child
We should do fork() as the last operation when starting the child.
Currently, if our eloop-add() fails, we have a started child but return
failure to the caller. Therefore, the child will stay alive but we do not
use it.

We now perform all startup correctly before fork()'ing so we are always
safe when starting the child.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-25 18:06:33 +02:00
David Herrmann
21f6bbb15d eloop: remove old signal sources
Remove the old non-shared signal sources in favor of shared-signals.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-25 17:59:58 +02:00
David Herrmann
524cfb0093 vt: use new shared signals
Use the new shared-signal backend so we can finally remove the old
signals.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-25 17:58:17 +02:00
David Herrmann
9e87b853ab use pthread_sigmask instead of sigprocmask
pthread is already in our vmem due to our dependencies so link to it
explicitly and use pthread_sigmask to avoid buggy sigprocmask in
multi-threaded applications.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-25 17:53:16 +02:00
David Herrmann
f545d9641a main: use new shared signals
Use the shared signal-implementation instead of the generic signals.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-25 17:44:58 +02:00
David Herrmann
580b0a7992 eloop: add shared signal callbacks
Our current signal source has the problem that a single signal event is
only delivered to one random registered source. This is the design of the
signalfd kernel feature. However, for signals like SIGCHLD it is often
desired to have multiple callbacks. Hence, while keeping the old
signal-source, we now also allow a shared signal source. It is registered
the same way as the old signal source but uses a shared hook.

We may remove the old source so we don't use it in the new implementation.
There are still problems when multiple eloops are used in a single
process and you register the same shared-signum in both eloops. However,
such a design is bad anyway, so we don't care.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-25 17:39:55 +02:00
David Herrmann
56f5eebf0e hook: delete by callback *and* data argument
When deleting a hook we should not search for the callback only. Otherwise
we might remove the wrong callback. Therefore, we now search for callback
and data argument. If multiple callbacks are registered with the same data
and cb, then we don't care which one is removed as this wouldn't make any
difference. They behave the same way, anyway.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-25 17:08:00 +02:00
David Herrmann
ac9df3aac5 eloop: catch EINTR in epoll_wait()
epoll_wait() returns EINTR even if using SA_RESTART for signals.
Therefore, catch EINTR and set count to zero.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-25 16:45:39 +02:00
David Herrmann
c0030f47c2 conf: fix local storage of default argv
We assigned stack-storage to a global pointer and therefore we got
seg-faults when using the default. Fix that.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-25 16:22:27 +02:00
David Herrmann
b1cb8c918c pty: use reentrant ptsname_r
Avoid static storage in pty subsystem and use the ptsname_r extension.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-25 16:18:03 +02:00
David Herrmann
8773331331 pty: introduce --term
Allow setting TERM to different values than the default with a
command-line switch.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-24 18:15:50 +01:00
David Herrmann
ec2dfaa244 pty: add --login option
Allow to specify a separate login-program that is executed instead of the
default. All arguments specified after --login are considered argv[] of
the new process and not parsed by the library.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-03-24 18:10:55 +01:00