diff options
author | David Herrmann <dh.herrmann@gmail.com> | 2014-10-02 18:51:29 +0200 |
---|---|---|
committer | David Herrmann <dh.herrmann@gmail.com> | 2014-10-03 15:57:00 +0200 |
commit | 1bfa594cf26a9880c489cdcb5911bfb3440aa566 (patch) | |
tree | 7a1151927b5924f60138dd1e1b1776716a24ef85 /src | |
parent | 66695cc343647dcbf654fbb4b3f38bd1ee092a0d (diff) |
terminal/drm: clear 'applied' flag when changing state
If a pipe is enabled/disabled, we have to clear crtc->applied of the
linked CRTC. Otherwise, we will not run a deep modeset, but leave the crtc
in the pre-configured state.
Diffstat (limited to 'src')
-rw-r--r-- | src/libsystemd-terminal/grdev-drm.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/libsystemd-terminal/grdev-drm.c b/src/libsystemd-terminal/grdev-drm.c index f01df1dae2..232321c0e2 100644 --- a/src/libsystemd-terminal/grdev-drm.c +++ b/src/libsystemd-terminal/grdev-drm.c @@ -1549,9 +1549,23 @@ static grdev_fb *grdrm_pipe_target(grdev_pipe *basepipe) { return basepipe->back; } +static void grdrm_pipe_enable(grdev_pipe *basepipe) { + grdrm_pipe *pipe = grdrm_pipe_from_base(basepipe); + + pipe->crtc->applied = false; +} + +static void grdrm_pipe_disable(grdev_pipe *basepipe) { + grdrm_pipe *pipe = grdrm_pipe_from_base(basepipe); + + pipe->crtc->applied = false; +} + static const grdev_pipe_vtable grdrm_pipe_vtable = { .free = grdrm_pipe_free, .target = grdrm_pipe_target, + .enable = grdrm_pipe_enable, + .disable = grdrm_pipe_disable, }; /* |