diff options
Diffstat (limited to 'addon-true-color.patch')
-rw-r--r-- | addon-true-color.patch | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/addon-true-color.patch b/addon-true-color.patch deleted file mode 100644 index d172e6e319b8..000000000000 --- a/addon-true-color.patch +++ /dev/null @@ -1,112 +0,0 @@ -diff --git a/src/tsm/tsm-vte.c b/src/tsm/tsm-vte.c -index abadd51..e773ebb 100644 ---- a/src/tsm/tsm-vte.c -+++ b/src/tsm/tsm-vte.c -@@ -1056,7 +1056,8 @@ static void do_esc(struct tsm_vte *vte, uint32_t data) - static void csi_attribute(struct tsm_vte *vte) - { - static const uint8_t bval[6] = { 0x00, 0x5f, 0x87, 0xaf, 0xd7, 0xff }; -- unsigned int i, code; -+ unsigned int i, code, val; -+ uint8_t cr, cg, cb; - - if (vte->csi_argc <= 1 && vte->csi_argv[0] == -1) { - vte->csi_argc = 1; -@@ -1204,53 +1205,61 @@ static void csi_attribute(struct tsm_vte *vte) - case 38: - /* fallthrough */ - case 48: -- if (i + 2 >= vte->csi_argc || -- vte->csi_argv[i + 1] != 5 || -- vte->csi_argv[i + 2] < 0) { -- llog_debug(vte, "invalid 256color SGR"); -- break; -- } -- -- code = vte->csi_argv[i + 2]; -- if (vte->csi_argv[i] == 38) { -- if (code < 16) { -- vte->cattr.fccode = code; -- } else if (code < 232) { -- vte->cattr.fccode = -1; -- code -= 16; -- vte->cattr.fb = bval[code % 6]; -- code /= 6; -- vte->cattr.fg = bval[code % 6]; -- code /= 6; -- vte->cattr.fr = bval[code % 6]; -- } else { -- vte->cattr.fccode = -1; -- code = (code - 232) * 10 + 8; -- vte->cattr.fr = code; -- vte->cattr.fg = code; -- vte->cattr.fb = code; -+ val = vte->csi_argv[i]; -+ if (vte->csi_argv[i + 1] == 5) { // 256color mode -+ if (i + 2 >= vte->csi_argc || -+ vte->csi_argv[i + 2] < 0) { -+ llog_debug(vte, "invalid 256color SGR"); -+ break; - } -- } else { -+ code = vte->csi_argv[i + 2]; - if (code < 16) { -- vte->cattr.bccode = code; -+ //nochange - } else if (code < 232) { -- vte->cattr.bccode = -1; - code -= 16; -- vte->cattr.bb = bval[code % 6]; -+ cb = bval[code % 6]; - code /= 6; -- vte->cattr.bg = bval[code % 6]; -+ cg = bval[code % 6]; - code /= 6; -- vte->cattr.br = bval[code % 6]; -+ cr = bval[code % 6]; -+ code = -1; - } else { -- vte->cattr.bccode = -1; - code = (code - 232) * 10 + 8; -- vte->cattr.br = code; -- vte->cattr.bg = code; -- vte->cattr.bb = code; -+ cr = code; -+ cg = code; -+ cb = code; -+ code = -1; - } -+ i += 2; -+ } else if (vte->csi_argv[i + 1] == 2) { // true color mode -+ if (i + 4 >= vte->csi_argc || -+ vte->csi_argv[i + 2] < 0 || -+ vte->csi_argv[i + 3] < 0 || -+ vte->csi_argv[i + 4] < 0) { -+ llog_debug(vte, "invalid true color SGR"); -+ break; -+ } -+ cr = vte->csi_argv[i + 2]; -+ cg = vte->csi_argv[i + 3]; -+ cb = vte->csi_argv[i + 4]; -+ code = -1; -+ i += 4; -+ } else { -+ llog_debug(vte, "invalid SGR"); -+ break; -+ } -+ if (val == 38) { -+ vte->cattr.fccode = code; -+ vte->cattr.fr = cr; -+ vte->cattr.fg = cg; -+ vte->cattr.fb = cb; -+ } else { -+ vte->cattr.bccode = code; -+ vte->cattr.br = cr; -+ vte->cattr.bg = cg; -+ vte->cattr.bb = cb; - } - -- i += 2; - break; - default: - llog_debug(vte, "unhandled SGR attr %i", |