1From d0b587a185c0324792cf17c54b6d62eb4da4d400 Mon Sep 17 00:00:00 2001
2From: Jeffy Chen <jeffy.chen@rock-chips.com>
3Date: Tue, 5 Jul 2022 13:51:11 +0800
4Subject: [PATCH 10/10] ecore_drm2: Set output's crtc atomic prop as well
5
6Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
7---
8 src/lib/ecore_drm2/ecore_drm2_fb.c      | 7 +++++++
9 src/lib/ecore_drm2/ecore_drm2_outputs.c | 8 +++++++-
10 2 files changed, 14 insertions(+), 1 deletion(-)
11
12diff --git a/src/lib/ecore_drm2/ecore_drm2_fb.c b/src/lib/ecore_drm2/ecore_drm2_fb.c
13index 38c8287..57bc154 100644
14--- a/src/lib/ecore_drm2/ecore_drm2_fb.c
15+++ b/src/lib/ecore_drm2/ecore_drm2_fb.c
16@@ -336,6 +336,7 @@ _fb_atomic_flip_test(Ecore_Drm2_Output *output)
17    int ret = 0;
18    Eina_List *l;
19    Ecore_Drm2_Crtc_State *cstate;
20+   Ecore_Drm2_Connector_State *cnstate;
21    Ecore_Drm2_Plane_State *pstate;
22    Ecore_Drm2_Plane *plane;
23    drmModeAtomicReq *req = NULL;
24@@ -350,6 +351,7 @@ _fb_atomic_flip_test(Ecore_Drm2_Output *output)
25    sym_drmModeAtomicSetCursor(req, 0);
26
27    cstate = output->crtc_state;
28+   cnstate = output->conn_state;
29
30    ret =
31      sym_drmModeAtomicAddProperty(req, cstate->obj_id, cstate->mode.id,
32@@ -361,6 +363,11 @@ _fb_atomic_flip_test(Ecore_Drm2_Output *output)
33                                   cstate->active.value);
34    if (ret < 0) goto err;
35
36+   ret =
37+     sym_drmModeAtomicAddProperty(req, cnstate->obj_id, cnstate->crtc.id,
38+                                  cnstate->crtc.value);
39+   if (ret < 0) goto err;
40+
41    if (cstate->background.id)
42      {
43         ret =
44diff --git a/src/lib/ecore_drm2/ecore_drm2_outputs.c b/src/lib/ecore_drm2/ecore_drm2_outputs.c
45index 2140079..ba6b139 100644
46--- a/src/lib/ecore_drm2/ecore_drm2_outputs.c
47+++ b/src/lib/ecore_drm2/ecore_drm2_outputs.c
48@@ -1265,10 +1265,12 @@ static Eina_Bool
49 _output_mode_atomic_set(Ecore_Drm2_Output *output, Ecore_Drm2_Output_Mode *mode)
50 {
51    Ecore_Drm2_Crtc_State *cstate;
52+   Ecore_Drm2_Connector_State *cnstate;
53    drmModeAtomicReq *req = NULL;
54    int ret = 0;
55
56    cstate = output->crtc_state;
57+   cnstate = output->conn_state;
58
59    if (mode)
60      {
61@@ -1294,9 +1296,13 @@ _output_mode_atomic_set(Ecore_Drm2_Output *output, Ecore_Drm2_Output_Mode *mode)
62      {
63         cstate->active.value = 1;
64         cstate->mode.value = mode->id;
65+        cnstate->crtc.value = cstate->obj_id;
66      }
67    else
68-     cstate->active.value = 0;
69+     {
70+        cstate->active.value = 0;
71+        cnstate->crtc.value = 0;
72+     }
73
74    ret = sym_drmModeAtomicAddProperty(req, cstate->obj_id, cstate->mode.id,
75                                       cstate->mode.value);
76--
772.20.1
78
79