David Herrmann [Sat, 19 May 2012 15:58:08 +0000 (17:58 +0200)]
eloop: add initial gtk-doc comments
Add gtk-doc compatible comments to most of the functions in eloop.c.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 19 May 2012 11:47:55 +0000 (13:47 +0200)]
eloop: dynamically reallocate dispatch cache
We do not maintain event caches so we must make sure that every event
source gets dispatched. If we call epoll_wait() and our buffer gets
filled everytime, then there might be an event source that does not get
dispatched because it is always above the buffer range. Therefore, we now
dynamically increase the cache size when it once gets filled up.
This gets critical if we handle thousands of clients or fds, however, our
use case is limited to some system resources and hence does not suffer
here.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 19 May 2012 11:33:05 +0000 (13:33 +0200)]
eloop: add more comments
Add comments describing each source and the nesting features.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 19 May 2012 11:07:12 +0000 (13:07 +0200)]
eloop: use counter source for idle events
epoll has the great feature that the poll object is an fd itself. However,
if we want to use idle-sources, we couldn't add them to the epoll set.
Now, we use a counter source for all idle sources so if we add a single
event-loop as source to another event loop, the idle sources will get
dispatched correctly. Furthermore, we now longer block after handling idle
sources but instead now correctly run idle sources every next round
without sleeping for fd events in between.
Unregister idle sources to avoid hogging the CPU.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 19 May 2012 11:05:49 +0000 (13:05 +0200)]
eloop: fix not returning new counter object
We forgot to actually store the pointer to the new counter object in the
\out variable. Fix this now.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 19 May 2012 10:47:08 +0000 (12:47 +0200)]
eloop: forward timer HUP and I/O errors to caller
Similar to counter callbacks we now call timer callbacks with 0 as
argument on errors and disable the timer source.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 19 May 2012 10:30:05 +0000 (12:30 +0200)]
eloop: forward EOF and I/O errors of counters to caller
Instead of silently dropping read() errors we now disable the counter and
call the user-supplied callback with 0 as argument so they can react on
errors.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 19 May 2012 10:26:55 +0000 (12:26 +0200)]
eloop: allow enabling/disabling counter sources
Similar to fd and timer sources we now also support disabling counter
sources via similar functions.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 19 May 2012 10:24:28 +0000 (12:24 +0200)]
eloop: allow enabling/disabling timer sources
Similar to the fd_enable/disable functions we now also allow the same
operations on timer sources.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 19 May 2012 10:15:51 +0000 (12:15 +0200)]
eloop: correctly forward error codes
Instead of ignoring epoll errors we should forward them to the caller. The
caller can then still decide to ignore errors.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Fri, 18 May 2012 15:35:18 +0000 (17:35 +0200)]
eloop: allow enabling/disabling fd sources
We sometimes want to be able to enable/disable an fd-source without
allocating memory (for a short period, for instance). Therefore, introduce
two new functions to enable and disable an fd source.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Fri, 18 May 2012 14:39:23 +0000 (16:39 +0200)]
fbdev: add few implementation hints
fbdev is still not ready but we add some hints so implmenting it later
will be easier.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Fri, 18 May 2012 14:38:51 +0000 (16:38 +0200)]
eloop: move callback declarations into correct order
Use same order as the function definitions.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Thu, 17 May 2012 16:35:00 +0000 (18:35 +0200)]
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>
David Herrmann [Thu, 17 May 2012 16:17:52 +0000 (18:17 +0200)]
eloop: move code
Restructure eloop code. This puts stuff more closely together if it is
related.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Thu, 17 May 2012 15:40:14 +0000 (17:40 +0200)]
eloop: make timers create fd on initialization
Similar to other event sources we now initialize internal data on timer
creation instead of when the source is added to the loop.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Thu, 17 May 2012 15:03:46 +0000 (17:03 +0200)]
eloop: take fd argument for fd-sources at initialization
When creating a new fd-source you must supply the file descriptor
directly. You cannot delay this to the time when you add the fd to the
event loop.
This simplifies the logic and allows much smoother handling in the event
loop core.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Thu, 17 May 2012 14:41:26 +0000 (16:41 +0200)]
eloop: add counter sources
Counter sources are based on the eventfd syscall of linux. Internally, is
uses a 64bit counter which is initialized to 0 and can be increased by the
caller. Whenever the value is non-zero, the fd is marked readable and we
call our callback. We read the 64bit integer (which resets it to 0) and
pass the current value to the callback.
This can be used to implement cross-process notification methods or to
have idle-sources as valid file-descriptors in an epoll set which could be
exported to other applications that are not compliant to our event loop.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Thu, 17 May 2012 14:33:47 +0000 (16:33 +0200)]
eloop: add ev_fd_is_bound() helper
This helper returns true if the fd is bound to an eloop object, otherwise
false is returned.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Thu, 17 May 2012 14:31:38 +0000 (16:31 +0200)]
test_output: explicitely activate GL context
We now support multiple GL contexts in uterm so we need to explicitely
enable them before using them.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Thu, 17 May 2012 12:44:50 +0000 (14:44 +0200)]
font: fix trailing newline in debug message
log_* appends newline automatically so remove it from the debug message.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 5 May 2012 20:49:29 +0000 (22:49 +0200)]
test_output: fix build failure
Use new uterm_video constructor. This requires hard-coding the DRM card
but this is needed until we use the uterm_monitor interface.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 5 May 2012 20:48:15 +0000 (22:48 +0200)]
test_input: use new input API
Use new uterm_monitor and input API instead.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 5 May 2012 20:41:23 +0000 (22:41 +0200)]
uterm_monitor: correctly enumerate input devices
We are actually not interested in the main input device but rather in the
evdev interface. However, the evdev interface is a child of the input
device and therefore has no seat values specifies. This patch removes the
scan-filter for seat tags and performs seat matching in user-space by
first finding the parent of the input device.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 5 May 2012 20:40:32 +0000 (22:40 +0200)]
uterm_monitor: refresh seats before scanning the system
We currently only scan devices in uterm_monitor_scan() but we should read
the initial seat values before even searching for devices.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 5 May 2012 20:40:01 +0000 (22:40 +0200)]
uterm_monitor: initialize list heads correctly
List heads must be initialized and cannot be set to NULL by default.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 5 May 2012 20:39:24 +0000 (22:39 +0200)]
uterm_monitor: add debug messages
Be more verbose about added and removed devices. Otherwise, debugging is
not as easy as it could be.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 5 May 2012 20:37:21 +0000 (22:37 +0200)]
uterm_input: fix initializing device list
kmscon_dlist heads must be initialized and cannot be set to NULL by
default!
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 5 May 2012 20:36:23 +0000 (22:36 +0200)]
uterm_input_xkb: fix typo
We renamed kmscon_kbd to kbd_dev but forgot that single function.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 5 May 2012 20:35:43 +0000 (22:35 +0200)]
uterm_input: fix typo
The header said *_is_asleep() instead of *_is_awake().
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 5 May 2012 19:30:06 +0000 (21:30 +0200)]
uterm_input: add xkb backend
This mainly copies the kbd_xkb.c backend into the uterm library.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 5 May 2012 19:15:57 +0000 (21:15 +0200)]
uterm_input: use new kbd API
Use the uterm internal kbd API instead of the kmscon kbd API.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 5 May 2012 19:14:38 +0000 (21:14 +0200)]
uterm_input: add kbd API
Internally, we use a new kbd API to handle keyboard related stuff in
uterm. It is a reimplementation of the old kbd_dumb.c backend.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 5 May 2012 18:33:27 +0000 (20:33 +0200)]
uterm_input: add input layer to uterm
This is a rewrite of the input layer but integrated into uterm. It has the
same functionality but is tightly bound to the concepts behind uterm and
will soon supercede the old implementation.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 5 May 2012 16:21:58 +0000 (18:21 +0200)]
uterm_monitor: add input device support
To allow moving all input handling to uterm, too, we need to detect input
devices in the uterm-monitor like all other devices, too.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 5 May 2012 15:39:46 +0000 (17:39 +0200)]
uterm_video: remove hotplug awareness
To introduce the new uterm-monitor object we need to remove all the udev
handling from uterm_video. To not break "git bisect" we now remove all the
udev code from uterm_video and uterm_video_drm and make kmscon use the
static /dev/dri/card0 interface for now.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 5 May 2012 15:24:23 +0000 (17:24 +0200)]
uterm_video_drm: include xf86drmMode.h again
Upstream mesa fixed the missing header protection of xf86drmMode.h so we
can include it again.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 5 May 2012 15:16:13 +0000 (17:16 +0200)]
uterm_monitor: add system monitor for full seat support
The new uterm_monitor watches the system for seat-changes and puts all
devices under the correct seat. This allows to run kmscon on multiple
seats in a single process. It now also correctly handles seat-changes,
that is, devices that are reattached to a different seat on runtime.
It is not integrated into the kmscon source, yet, but will soon be.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 5 May 2012 15:14:28 +0000 (17:14 +0200)]
misc: add safe list iterator
New for-each implementation that keeps a safe pointer to the next element
so you can remove the current element from the list.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sat, 5 May 2012 15:13:42 +0000 (17:13 +0200)]
eloop: allow flushing an fd
Sometimes one wants to remove all pending events for an fd. The new
ev_eloop_flush_fd() call allows this in a safe way.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Thu, 3 May 2012 17:24:39 +0000 (19:24 +0200)]
uterm_video: add udev device parameter to video_new()
When triggered by seat monitor we need to be able to create uterm_video
objects on a concrete device so enable passing it in.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Thu, 3 May 2012 17:05:59 +0000 (19:05 +0200)]
build: fix build for automake 1.12
automake-1.12 complains about missing AC_PROG_AR so add it.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Thu, 3 May 2012 16:11:40 +0000 (18:11 +0200)]
uterm: fix comments
Update comments to resemble new uterm_video logic.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Wed, 25 Apr 2012 16:19:21 +0000 (18:19 +0200)]
uterm_video_drm: return -EINVAL if already activated
If a display is already activated we return EINVAL. Otherwise, the user
might think that the requested mode was activated even though a totally
different mode may be still active.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Wed, 25 Apr 2012 15:35:03 +0000 (17:35 +0200)]
uterm_video: allow explicitely activating GL ctx
We may have to use multiple GL contexts if we mix DRM and fbdev devices.
Therefore, we need explicit GL-ctx management.
We now allow to explicitely activate a specific GL context. This means,
the user needs to use the right GL context before he creates textures or
similar.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sun, 22 Apr 2012 15:19:55 +0000 (17:19 +0200)]
uterm_video: disable egl context on destruction
Make sure to reset the egl-context before destroying it.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sun, 22 Apr 2012 15:07:11 +0000 (17:07 +0200)]
test_input: use new test_include.h infrastructure
test_input compiles again and uses the same helpers as the other tests do.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sun, 22 Apr 2012 14:57:45 +0000 (16:57 +0200)]
tests: remove unneeded tests
test_buffer and test_terminal no longer compile and are not needed so
remove them.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sun, 22 Apr 2012 14:51:28 +0000 (16:51 +0200)]
test_vt: use new test_include.h code
test_vt now compiles again and uses the new infrastructure.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sun, 22 Apr 2012 14:42:25 +0000 (16:42 +0200)]
test_console: remove
This test doesn't compile and is no longer needed. We can now use the
kmscon program or test_terminal for the same functionality.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sun, 22 Apr 2012 14:38:53 +0000 (16:38 +0200)]
console: avoid unneeded matrix transformations
We now assume a screen of -1,-1 to 1,1 instead of 0,0 to 1,1 to avoid
matrix transformations.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sun, 22 Apr 2012 14:38:23 +0000 (16:38 +0200)]
font_pango: add debug messages
Add debug messages so we always know what kind of screen is created.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sun, 22 Apr 2012 14:37:43 +0000 (16:37 +0200)]
gl: disable texture stride support
This currently does not work properly so disable it. However, we
definitely need to fix this later.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sun, 22 Apr 2012 13:47:40 +0000 (15:47 +0200)]
eloop: fix memory leak for shared signals
A shared signal owns an eloop_fd object. This has a reference of its
connected eloop. Therefore, we must free a shared signal to drop a
reference to the connected eloop and cannot postpone this to
eloop-destruction. Otherwise, the eloop will never get destroyed.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sun, 22 Apr 2012 13:47:00 +0000 (15:47 +0200)]
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>
David Herrmann [Sun, 22 Apr 2012 13:43:00 +0000 (15:43 +0200)]
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>
David Herrmann [Sun, 22 Apr 2012 13:40:39 +0000 (15:40 +0200)]
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>
David Herrmann [Sun, 22 Apr 2012 13:39:57 +0000 (15:39 +0200)]
misc: fix header protection
There was a typo in the macros for header protection.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sun, 15 Apr 2012 12:57:17 +0000 (14:57 +0200)]
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>
David Herrmann [Sat, 14 Apr 2012 17:54:45 +0000 (19:54 +0200)]
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>
David Herrmann [Sat, 14 Apr 2012 17:49:36 +0000 (19:49 +0200)]
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>
David Herrmann [Sat, 14 Apr 2012 17:45:11 +0000 (19:45 +0200)]
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>
David Herrmann [Sat, 14 Apr 2012 17:35:12 +0000 (19:35 +0200)]
test_output: remove signal handler
It will be replaced by the event loop signal handler.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sun, 1 Apr 2012 17:31:57 +0000 (19:31 +0200)]
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>
David Herrmann [Sun, 1 Apr 2012 17:25:54 +0000 (19:25 +0200)]
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>
David Herrmann [Sun, 1 Apr 2012 16:17:45 +0000 (18:17 +0200)]
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>
David Herrmann [Sun, 1 Apr 2012 14:12:02 +0000 (16:12 +0200)]
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>
David Herrmann [Sun, 1 Apr 2012 13:00:47 +0000 (15:00 +0200)]
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>
David Herrmann [Sun, 1 Apr 2012 11:08:27 +0000 (13:08 +0200)]
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>
David Herrmann [Sun, 1 Apr 2012 10:52:54 +0000 (12:52 +0200)]
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>
David Herrmann [Sun, 1 Apr 2012 10:50:17 +0000 (12:50 +0200)]
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>
David Herrmann [Sat, 31 Mar 2012 20:45:12 +0000 (22:45 +0200)]
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>
David Herrmann [Sat, 31 Mar 2012 20:44:37 +0000 (22:44 +0200)]
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>
David Herrmann [Fri, 30 Mar 2012 16:49:04 +0000 (18:49 +0200)]
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>
David Herrmann [Fri, 30 Mar 2012 16:30:55 +0000 (18:30 +0200)]
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>
David Herrmann [Fri, 30 Mar 2012 13:55:23 +0000 (15:55 +0200)]
console: fix log messages
Use LOG_SUBSYSTEM and remove trailing newlines.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Fri, 30 Mar 2012 13:51:33 +0000 (15:51 +0200)]
vte: fix log messages
Use LOG_SUBSYSTEM and remove trailing newlines.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Fri, 30 Mar 2012 13:49:28 +0000 (15:49 +0200)]
font_freetype2: fix log messages
Use LOG_SUBSYSTEM and remove newlines.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Thu, 29 Mar 2012 16:04:39 +0000 (18:04 +0200)]
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>
David Herrmann [Thu, 29 Mar 2012 16:03:21 +0000 (18:03 +0200)]
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>
David Herrmann [Thu, 29 Mar 2012 14:06:56 +0000 (16:06 +0200)]
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>
David Herrmann [Wed, 28 Mar 2012 15:20:13 +0000 (17:20 +0200)]
unicode: fix logging messages
Use new logging style in unicode layer.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Tue, 27 Mar 2012 14:48:27 +0000 (16:48 +0200)]
Update README
Fix some small typos and add TODOs.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Tue, 27 Mar 2012 14:42:31 +0000 (16:42 +0200)]
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>
David Herrmann [Tue, 27 Mar 2012 14:11:38 +0000 (16:11 +0200)]
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>
David Herrmann [Tue, 27 Mar 2012 11:30:42 +0000 (13:30 +0200)]
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>
David Herrmann [Sun, 25 Mar 2012 17:14:30 +0000 (19:14 +0200)]
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>
David Herrmann [Sun, 25 Mar 2012 17:02:23 +0000 (19:02 +0200)]
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>
David Herrmann [Sun, 25 Mar 2012 16:50:30 +0000 (18:50 +0200)]
pty: fix using right fd
Use right fd when spawning child process.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sun, 25 Mar 2012 16:37:45 +0000 (18:37 +0200)]
pty: random fixes
Fix some random coding-style issues and adjust to new eloop-rules.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sun, 25 Mar 2012 16:16:05 +0000 (18:16 +0200)]
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>
David Herrmann [Sun, 25 Mar 2012 16:10:27 +0000 (18:10 +0200)]
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>
David Herrmann [Sun, 25 Mar 2012 16:06:33 +0000 (18:06 +0200)]
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>
David Herrmann [Sun, 25 Mar 2012 15:59:58 +0000 (17:59 +0200)]
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>
David Herrmann [Sun, 25 Mar 2012 15:58:17 +0000 (17:58 +0200)]
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>
David Herrmann [Sun, 25 Mar 2012 15:53:16 +0000 (17:53 +0200)]
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>
David Herrmann [Sun, 25 Mar 2012 15:44:58 +0000 (17:44 +0200)]
main: use new shared signals
Use the shared signal-implementation instead of the generic signals.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
David Herrmann [Sun, 25 Mar 2012 15:34:49 +0000 (17:34 +0200)]
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>
David Herrmann [Sun, 25 Mar 2012 15:08:00 +0000 (17:08 +0200)]
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>
David Herrmann [Sun, 25 Mar 2012 14:45:39 +0000 (16:45 +0200)]
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>