As portions of this code have been derived from existing code in
Weston, we should also be including their copyright/licence text to
give credit.
NB: Fixes T3286
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
This patch brings the tty code more inline with what the logind code
Was doing. It also fixes the return value from the vt_signal handler,
and opens the tty in non-blocking mode now.
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
Summary:
printf %m stringifies and prints errno. I've tried to remove its use
anywhere that the immediately preceding function might not set errno
or is a complicated function for which knowing errno doesn't really
give any useful information.
I've left a few of the drmMode calls because they're just wrappers
around ioctl, which legitimately sets errno.
@fix
Reviewers: zmike, devilhorns
Reviewed By: zmike, devilhorns
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3572
Summary: If we go to setup a tty and it is already in graphics mode,
then there is no need to exit with a failed setup here. Instead, we
can actually continue to setup the tty.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: clang reports missing field initializers for usage of vt_mode
structure, so add the missing initializers
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: Due to libinput process events directly from evdev, when we
VT switch we should disable/enable inputs accordingly.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: If we fail to duplicate stdin, we should write out an error
and exit appropriately.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This cleans up the tty code a bit, and makes it the
responsibility of the tty code to handle VT switching signals
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: When we are shutting down a tty, restore the old keyboard
mode that we retain from tty_setup.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: Now that things are shaping up, we can re-enable the K_OFF
tty mode which will help with buffering input, etc.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: need to restore vt to text mode, when failed to setup.
@fix
Reviewers: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1777
Summary:
this event is to notify session activation state to compositor.
thus compositor can change composite state by this event.
Reviewers: devilhorns
Subscribers: torori, cedric
Differential Revision: https://phab.enlightenment.org/D1767
Summary: if ecore-drm failed to be run after changing tty mode, need to restore VT to text mode.
Test Plan:
- run enlightenment(drm backend) without systemd.
after changing tty graphics mode, if it's failed to be run by any reason,
you'll see black screen and coulnd't control session.
@fix
Reviewers: devilhorns
Reviewed By: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1764
Summary: added code to free string of tty's name when failed to setup tty.
@fix
Reviewers: devilhorns
Reviewed By: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1763
Summary: Apparently, it's better if we just let this fail rather than
trying to be proactive for the API user.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: Because this is an exposed API function, we should be
checking that the name parameter is valid, and also verify it's
formatting before we use it. This patch fixes that by comparing the
passed in name and assembling a valid tty name to open
@fix
Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>
Reviewers: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1521
This commit fixes VT switching in the ecore_drm library code to work
again. Previously we were not dup'ing the stdin fd which lead to
inappropriate ioctls for that fd. Fix that by adding the missing dup
call. This also adds more error messages during ioctl function calls,
and cleans up the switching handler code (for keyboard events).
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
Because vt mode of tty is set to VT_PROCESS,
ecore-drm is responsible for managing switch-to or switch-from other vt.
For that, ecore-drm has to handshake with kernel(tty driver).
On switch-from side(A):
1. Listen key event to satisfy vt switch key binding.
2. ioctl(fd, VT_ACTIVE, switch-to-vt) for activating switch-to vt.
3. Receive SIGUSR1(relsig) from kernel.
4. Prepare releasing vt, and ioctl(fd, VT_RELDISP, 1).
On switch-to side(B):
0. Kernel receive VT_RELDISP with value 1(ok) from switch-from vt.
1. Receive SIGUSR2(acqsig) from kernel.
2. ioctl(fd, VT_RELDISP, VT_ACKACQ), and start to setup vt.
This revision added A-1 step on above.
Test Plan:
On booted PC with systemd.
1. launch enlightenment_start with drm and wayland
ex) ECORE_DRM_TTY=/dev/tty1 \
E_WL_FORCE=drm \
ELM_ENGINE=wayland_shm enlightenment_start
2. try to switch vt by pressing "Ctrl + Alt + (F1 ~ F8)"
Reviewers: gwanglim, stefan_schmidt, devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1280
Summary:
No need to check tty fd again as we just did that.
Remove this and adjust indent.
Test Plan: N/A
Reviewers: devilhorns, stefan_schmidt, raster
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1407
SIGUSR1 is used here to catch VT switching and either acquire or
release the VT. The problem is that XWayland Also sends SIGUSR1 when
it has finished initializing. In order to not get confused about where
the SIGUSR1 came from we can check the pid inside the siginfo
structure and see if it matches.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
@feature: Added API function to return the file descriptor from the
opened virtual terminal.
This is needed for use in ecore_evas. When it sets up the canvas, we
pass this fd to the canvas for use in setting up the vt framebuffers
Signed-off-by: Chris Michael <cp.michael@samsung.com>
@feature: Add Ecore_Drm library code for setting up drm card, outputs,
virtual terminals, framebuffers, and input for use with ecore_evas drm
code.
Signed-off-by: Chris Michael <cp.michael@samsung.com>