Commit graph

34 commits

Author SHA1 Message Date
Bob Ham
91880f1e9e compositor-{drm, fbdev, rpi}: Make VT switching configurable
Add a new boolean weston.ini option, "vt-switching" to enable or
disable Ctrl-Alt-Fn key combinations.

Signed-off-by: Bob Ham <bob.ham@collabora.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>

(Derek Foreman changed the prototype for switch_vt_binding to
have a weston_keyboard * instead of weston_seat *.  The pointer
wasn't used, so this is just a warning fix.)
2016-01-12 09:21:28 -06:00
Jasper St. Pierre
72dea06d79 launcher: Split out launcher implementations into three distinct ones
We now have a launcher interface and distinct implementations for
logind, weston-launch, and direct DRM, each in their own files.

This helps up clean up the spaghetti code into something that's
hopefully a bit more understood. There should be no functional
changes here.

Reviewed-by: Derek Foreman <derekf@osg.samsung.com>

update:  Dropped redundant free() in weston_launcher_destroy()
2015-09-23 15:47:48 -07:00
Jasper St. Pierre
30bcf35ceb launcher: Rename logind-util to launcher-logind
We're refactoring this to have multiple launcher "implementations".

Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2015-09-23 15:47:36 -07:00
Bryce Harrington
a0bbfea64b src: Update boilerplate from MIT X11 license to MIT Expat license 2015-06-15 13:04:18 -07:00
Derek Foreman
2663c68330 launcher-util: Force all weston_launcher_open()s to use O_CLOEXEC
Really, there's pretty much no time we'd ever want O_CLOEXEC unset,
as it will likely result in leaking fds to processes that aren't
interested in them or shouldn't have them.

This also removes the (now unused) code from weston_logind_open() that
could drop O_CLOEXEC.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-05-15 18:02:14 +03:00
Derek Foreman
8f5acc2f3a logind: actually close fd in weston_launcher_close()
You had one job...

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Acked-by: David Herrmann <dh.herrmann@gmail.com> [implicit from v1
comment]
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-05-15 17:58:22 +03:00
David Herrmann
2ecb84a20d logind: forward Active=true changes for non-DRM backends
Logind sends us a notification whenever the Active attribute of our session
changes. However, due to the way compositor-drm.c relies on the master DRM
device to be synced with the session, we used to delay Active=true
handling until the DRM device was up, too. See:

    commit aedc7732eb
    Author: David Herrmann <dh.herrmann@gmail.com>
    Date:   Sat Nov 30 11:25:45 2013 +0100

        logind: delay wakeup until DRM-device is resumed

However, the other compositor backends do not use DRM, so logind-util will
never get notified about any DRM device. Therefore, we have to forward the
Active=true change immediately.

This commit fixes logind-util to take sync_drm as argument. If it is true,
we do DRM-device synchronisation, otherwise we don't.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=86889
Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Tested-by: nerdopolis <bluescreen_avenger@verizon.net>
2015-01-16 18:34:10 -08:00
David Herrmann
541b6047b6 launcher: use SIGRTMIN to not conflict with xwayland
xwayland uses SIGUSR1 as startup notification. Make sure to use SIGRTMIN
for VT handling to avoid conflicts.

A bonus is SIGRT* signals can be queued multiple times, so we will be able
to correctly track them and will no longer lose signals (which wouldn't
really matter, but is confusing in logs).

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Tested-by: nerdopolis <bluescreen_avenger@verizon.net>
2015-01-16 18:34:10 -08:00
Kristian Høgsberg
9a14b8f4fa launcher-util: Initialize kb_mode also when weston-launch sets up tty
We need a valid kb_mode to restore to in case weston-launch dies and
weston has to clean up the tty.  We don't get a chance to read out the
kb mode before weston-launch changes it, but it's safe to assume that it's
always K_UNICODE.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=77455
2014-04-30 10:40:39 -07:00
Kristian Høgsberg
d2c9d8af50 configure.ac: Make libdrm optional in weston-launch
If libdrm is available, weston-launch and launcer-util.c will support
getting the drm device and setting and dropping drm master, otherwise
we'll only support getting input devices.
2013-11-24 15:16:23 -08:00
Kristian Høgsberg
a28ba55b56 launcher: Make sure we drop drm master before we allow VT switches
On shutdown, we can risk having a pending vt switch that we normally
handle in the vt signal handler.  However as we put the vt back in VT_AUTO
mode, the pending VT switch will go through and if we haven't dropped
drm master at that point, we could switch to another display server
without dropping drm master.  That will typically crash the other server,
so let's try to make sure we don't do that.

https://bugs.freedesktop.org/show_bug.cgi?id=70877
2013-10-30 16:27:16 -07:00
Kristian Høgsberg
d4c1cd77c3 logind: Remove missing 'else'
Only fall through to cleaning up weston-launch or standalone state
if we didn't use logind.
2013-10-22 13:19:23 -07:00
David Herrmann
cc5b2ed2b8 launcher: add logind backend
Instead of connecting to weston-launch from launcher-util, we now try to
connect to logind first. If logind provides session-devices, we use them.
If not, we fall back to the old weston-launch facility.
2013-10-21 16:23:58 -07:00
David Herrmann
e461f85385 launcher: add weston_launcher_close() dummy
If you request a device via weston_launcher_open(), you should now release
it via weston_launcher_close() instead of close(). This is currently not
needed but will be required for logind devices.
2013-10-21 16:07:45 -07:00
Kristian Høgsberg
891a16ddee launcher: Drop unecessary checks for drm_fd == -1
We never get into this case, and if we do, we just want to pass the invalid
fd through to the underlying ioctl and get the error that way."
2013-10-14 14:00:03 -07:00
Kristian Høgsberg
876c75f1fa launcher: Fix reverted sense of drm_check_master() wrapper
Also rename to drm_is_master() to make it clearer what we're checking.

https://bugs.freedesktop.org/show_bug.cgi?id=70459
2013-10-14 13:57:44 -07:00
Tomeu Vizoso
0b12db5f51 launcher: Wrap drmGetMagic and drmAuthMagic so we can build without libdrm 2013-10-10 16:51:37 -07:00
Kristian Høgsberg
74b0d72817 launcher: Remove left-over debug logging 2013-10-10 16:50:18 -07:00
Kristian Høgsberg
4a74d5a4a4 launcher: Don't leak tty file descriptor on error 2013-10-10 16:50:18 -07:00
Kristian Høgsberg
325390e529 launcher: Don't leak tty file descriptor on launcher destroy 2013-10-10 16:50:18 -07:00
Kristian Høgsberg
6ff3ff57aa launcher: Add back support for specifying VT to run on
This is only available when running weston directly as root typically for
ssh logins.  It's a somewhat destructive option, as it will take over any
existing VT completely, unless there's already an display server running
there.

https://bugs.freedesktop.org/show_bug.cgi?id=69731
2013-10-02 11:47:28 -07:00
Kristian Høgsberg
1468e60647 launcher: Bail out if we can't be drm master
If we can't be drm master, we won't be able to do anything useful with
the drm device.
2013-10-02 10:49:05 -07:00
Kristian Høgsberg
57a10e4d13 launcher: Set make sure we're drm master when opening the drm device
In case we try to run on a tty where some other process is already
drm master, back off and exit with an error message.
2013-10-01 15:37:09 -07:00
Kristian Høgsberg
19ec77aef7 launcher: Fail weston_launcher_create() if tty setup fails 2013-10-01 12:54:55 -07:00
Adrian Negreanu
908e6d0b8f launcher-util: pull in drm only for compositor-drm
Add drm_set_master and drm_drop_master
as wrappers for drm(Set|Drop)Master, when building compositor-drm
or as empty functions otherwise.

Signed-off-by: Adrian Negreanu <adrian.m.negreanu@intel.com>
2013-09-30 15:38:15 -07:00
Kristian Høgsberg
3f4958755d launcher: Move rest of tty object into struct weston_launcher
The struct weston_launcher object will now either handle tty and vt switching
details in-process (when running weston directly as root) or talk to
the weston-launch process.
2013-09-18 23:00:17 -07:00
Kristian Høgsberg
1eb482d814 launcher: Handle drm set/drop master and vt switch signals in launcher 2013-09-18 11:14:14 -07:00
Kristian Høgsberg
05ad1e4e8a launcher: Collect launcher state in new struct weston_launcher
We're going to add a bit more launcher state, so start out by creating
a new struct weston_launcher we can track it in.
2013-09-18 11:14:14 -07:00
Daniel Stone
c228e23b05 configure.ac: Enable AC_USE_SYSTEM_EXTENSIONS
AC_USE_SYSTEM_EXTENSIONS enables _XOPEN_SOURCE, _GNU_SOURCE and similar
macros to expose the largest extent of functionality supported by the
underlying system.  This is required since these macros are often
limiting rather than merely additive, e.g. _XOPEN_SOURCE will actually
on some systems hide declarations which are not part of the X/Open spec.

Since this goes into config.h rather than the command line, ensure all
source is consistently including config.h before anything else,
including system libraries.  This doesn't need to be guarded by a
HAVE_CONFIG_H ifdef, which was only ever a hangover from the X.Org
modular transition.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>

[pq: rebased and converted more files]
2013-06-05 01:16:34 -04:00
Martin Andersson
566b46467f weston-launcher: Add missing newline in error message 2013-02-14 13:38:40 -05:00
Pekka Paalanen
27979b053f weston-launcher: use CLOEXEC on fallback path
If there is no weston-launcher available, launcher-util.c will fall back
to opening the given file itself. It that case it does not set the
close-on-exec flag, and will presumably leak the file descriptor to
children.

Use O_CLOEXEC on the fallback path, too.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-07-31 22:19:31 -04:00
Kristian Høgsberg
ba25bd7be1 weston-launcher: Fix uninitialized variable warning 2012-04-10 01:31:09 -04:00
Kristian Høgsberg
9e14091778 weston-launcher: Fix aliasing warnings 2012-04-10 01:26:18 -04:00
Benjamin Franzke
bfeda130de Introduce weston-launch
weston-launch starts weston and provides mechanism
for weston to set/drop drm master, open a tty,
and read input devices without being root.

Execution is allowed for local-active sessions
or users in the group weston-launch.
2012-04-06 14:01:19 +02:00