summarylogtreecommitdiffstats
path: root/160-nvidia-open-fix-hdmi-names.patch
blob: 7894bd859754b482099558eeb57cfa5eff4a4446 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
--- a/src/nvidia-modeset/src/nvkms-hdmi.c
+++ b/src/nvidia-modeset/src/nvkms-hdmi.c
@@ -1046,27 +1046,13 @@ static NvBool FillELDBuffer(const NVDpyE
 
     if (status == NVT_STATUS_SUCCESS) {
         /*
-         * NvTiming_GetProductName() returns a nul-terminated string, but the
-         * string in the EDID is terminated with 0x0A and padded with 0x20.
-         * Put back these special characters.
+         * NvTiming_GetProductName returns a nul-terminated string. Figure out
+         * how long it is and copy the bytes up to, but not including, the nul
+         * terminator.
          */
-        NvBool pastTerminator = FALSE;
-        NvU32 i;
-
-        for (i = 0; i < NVT_EDID_LDD_PAYLOAD_SIZE; i++) {
-            if (pastTerminator) {
-                name[i] = 0x20;
-            }
-            if (name[i] == '\0') {
-                name[i] = 0x0A;
-                pastTerminator = TRUE;
-            }
-        }
-
-        monitorNameLen = NVT_EDID_LDD_PAYLOAD_SIZE;
-        pEld->buffer[4] |= NVT_EDID_LDD_PAYLOAD_SIZE;
-        nvkms_memcpy(&pEld->buffer[20], name,
-                     NVT_EDID_LDD_PAYLOAD_SIZE);
+        monitorNameLen = nvkms_strlen((char *)name);
+        pEld->buffer[4] |= monitorNameLen;
+        nvkms_memcpy(&pEld->buffer[20], name, monitorNameLen);
     }
 
     /* offset 20 + MNL ~ 20 + MNL + (3 * SAD_Count) - 1 : CEA_SADs */