[mutter] renderer-native: Unset mode on disabled CRTCs
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] renderer-native: Unset mode on disabled CRTCs
- Date: Mon, 2 Oct 2017 20:14:06 +0000 (UTC)
commit 20749e5dbd15f6125519b241e989d985a0d5ccdf
Author: Jonas Ådahl <jadahl gmail com>
Date: Thu Sep 28 11:59:27 2017 -0400
renderer-native: Unset mode on disabled CRTCs
Make sure we properly unset the CRTC mode when a monitor is disabled.
https://bugzilla.gnome.org/show_bug.cgi?id=787629
src/backends/native/meta-renderer-native.c | 26 ++++++++++++++++++++++++++
src/backends/native/meta-stage-native.c | 1 +
2 files changed, 27 insertions(+), 0 deletions(-)
---
diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c
index 7559708..4d1d890 100644
--- a/src/backends/native/meta-renderer-native.c
+++ b/src/backends/native/meta-renderer-native.c
@@ -132,6 +132,7 @@ struct _MetaRendererNative
CoglClosure *swap_notify_idle;
int64_t frame_counter;
+ gboolean pending_unset_disabled_crtcs;
gboolean no_add_fb2;
};
@@ -1396,6 +1397,8 @@ meta_renderer_native_queue_modes_reset (MetaRendererNative *renderer_native)
onscreen_native->pending_set_crtc = TRUE;
}
+
+ renderer_native->pending_unset_disabled_crtcs = TRUE;
}
static CoglOnscreen *
@@ -1778,6 +1781,29 @@ void
meta_renderer_native_finish_frame (MetaRendererNative *renderer_native)
{
renderer_native->frame_counter++;
+
+ if (renderer_native->pending_unset_disabled_crtcs)
+ {
+ MetaBackend *backend = meta_get_backend ();
+ MetaMonitorManager *monitor_manager =
+ meta_backend_get_monitor_manager (backend);
+ MetaMonitorManagerKms *monitor_manager_kms =
+ META_MONITOR_MANAGER_KMS (monitor_manager);
+ unsigned int i;
+
+ for (i = 0; i < monitor_manager->n_crtcs; i++)
+ {
+ MetaCrtc *crtc = &monitor_manager->crtcs[i];
+
+ if (crtc->current_mode)
+ continue;
+
+ meta_monitor_manager_kms_apply_crtc_mode (monitor_manager_kms,
+ crtc, 0, 0, 0);
+ }
+
+ renderer_native->pending_unset_disabled_crtcs = FALSE;
+ }
}
int64_t
diff --git a/src/backends/native/meta-stage-native.c b/src/backends/native/meta-stage-native.c
index 82ede47..3a39f93 100644
--- a/src/backends/native/meta-stage-native.c
+++ b/src/backends/native/meta-stage-native.c
@@ -160,6 +160,7 @@ meta_stage_native_rebuild_views (MetaStageNative *stage_native)
MetaRenderer *renderer = meta_backend_get_renderer (backend);
meta_renderer_rebuild_views (renderer);
+ meta_renderer_native_queue_modes_reset (META_RENDERER_NATIVE (renderer));
ensure_frame_callbacks (stage_native);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]