summarylogtreecommitdiffstats
path: root/0001-compositor-drm-Release-current-next-fb-when-deactiva.patch
diff options
context:
space:
mode:
Diffstat (limited to '0001-compositor-drm-Release-current-next-fb-when-deactiva.patch')
-rw-r--r--0001-compositor-drm-Release-current-next-fb-when-deactiva.patch53
1 files changed, 53 insertions, 0 deletions
diff --git a/0001-compositor-drm-Release-current-next-fb-when-deactiva.patch b/0001-compositor-drm-Release-current-next-fb-when-deactiva.patch
new file mode 100644
index 000000000000..c94efc1bc75b
--- /dev/null
+++ b/0001-compositor-drm-Release-current-next-fb-when-deactiva.patch
@@ -0,0 +1,53 @@
+From f2da0e2f686ee16ddd3a4e92e06ef3a55ec80472 Mon Sep 17 00:00:00 2001
+From: "Miguel A. Vico" <mvicomoya@nvidia.com>
+Date: Tue, 4 Apr 2017 14:39:47 -0700
+Subject: [PATCH 1/9] compositor-drm: Release current & next fb when
+ deactivating the session
+X-NVConfidentiality: public
+
+With
+
+ commit 47224cc9312fef05c1a523ea0da0a1aae66f100d
+ Author: Daniel Stone <daniels@collabora.com>
+ Date: Sat Nov 5 08:04:07 2016 +0000
+
+ compositor-drm: Delete drm_backend_set_modes
+
+we stopped forcing a modeset when restoring the session. The motivation
+was that we would use a stale fb, so better to let the next repaint
+handle it.
+
+However, if drm_output::current != NULL, we won't issue a modeset upon
+repaint.
+
+This change releases both drm_output::current and drm_output::next when
+deactivating the current session. This ensures the very first repaint
+after restoring the session will issue a modeset.
+
+Signed-off-by: Miguel A Vico Moya <mvicomoya@nvidia.com>
+---
+ libweston/compositor-drm.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c
+index 8e1e788f..63153271 100644
+--- a/libweston/compositor-drm.c
++++ b/libweston/compositor-drm.c
+@@ -3164,6 +3164,14 @@ session_notify(struct wl_listener *listener, void *data)
+ wl_list_for_each(output, &compositor->output_list, base.link) {
+ output->base.repaint_needed = false;
+ drmModeSetCursor(b->drm.fd, output->crtc_id, 0, 0, 0);
++ if (output->fb_current != NULL) {
++ drm_fb_unref(output->fb_current);
++ output->fb_current = NULL;
++ }
++ if (output->fb_pending != NULL) {
++ drm_fb_unref(output->fb_pending);
++ output->fb_pending = NULL;
++ }
+ }
+
+ output = container_of(compositor->output_list.next,
+--
+2.13.3
+