From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sonic306-20.consmr.mail.ir2.yahoo.com (sonic306-20.consmr.mail.ir2.yahoo.com [77.238.176.206]) by sourceware.org (Postfix) with ESMTPS id 45ABB381DCCC for ; Sat, 6 Mar 2021 17:41:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 45ABB381DCCC X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1615052496; bh=CulPHj1Ma65Zpmf8YutbDxXgejszpo0U7q2Ch0B4RwH=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=sOkwYHtUKwQslsBdEh+atThxpndA5myHYjKTskWWcknUM8KVVutg3KrfUT/SZXQHN8b28GU758BgkjdHVT0bvMH3+K36Esr3C1SCBRSErGRszUiC+dj7ArV18LeMqbAIMmdXJ8EmAHd0+R6Ea0WEwSJ2dnWqKgh28wKDswTQ4JyYaPBxJvHOhagxEt980p2wGNC/Qwq4M3CXF/pJW3k09qe8EzKHwkJY23n9QhCa8fZwYtvEWTLYSDDgal3JTaPsDqMgidvG15ro1Zw+nlmRzEJNg0rLO5A4Bg5abKSzZZQ5eY6WjFkfpogeGZQ4D8gJ5Ca/Z19sLm3D80/SIAkw2Q== X-YMail-OSG: nDRMAvQVM1m1sf.UpLLE9joOLvPekBjE0OX06YzlNMCZPvTaqClcg3nh33xxkay h0prF.lyZFRkSbfL90w_EjL_Bk89KLCHuqFQQz7RAcCR891tDDYTzawTugmzFBkWBpJ4Ub94GXEe w6zfbhpXHpGVg58npVZXk71vk9VIbrGv19BqtfdtRqB6O1.QZ48sH35TlCVVyg3eFJpRe5ivV7NY _buoDJxFLx3G0f5Uu7jBo1dqOk5a5W89FUib3WcD9CcR1tPM_NK9m331LTLLfS8XNtZg9oWGMjsZ I4bbkpoxyaHohTGvEMO9gNe8TBo5s9eWj_Ll2_IEBdh.iv98I6YCPqCxfeVdq90G1W2jQudlu8F3 u03LH16QEoGU6J6Dexk4Uxks6tYPNCkspezgAiUkpulXk5pZxhfxFVv1Vo4PyrgomRpBdH6ahOAF f8HWJGXu4zdbwgRA4zpfDwcOKokCgdeUUSVRhpgkmCUTsUUAHnh9E5s4ZnoRvckHGTbwueuWXcZN YHDFhPIopTlLCTkTq7VXiXLSOOjihBnUC8yo4ZAMCccbamkXosorHkF7rkEYYQIpu2Xi3fVMvHpp 30SVwZwOST7pEgn8Haei13KfDQX8yCioKs.nRHWoBdxAHG.pA2oj6TQL6DXPkQT1ceCilndSdyK9 4uPFzkiCqd3.KacemEvcs8tUj16m9M16CQcFEcH_.O2h81SuGSoYdrtwEal4oOPsiFmuz.2iRbeB 8UjtMyUQzk9JmR96eojaozoywwZ1rQjhZapTaiI62oQiSI3ahUkpJbrEEVeqXnNi4MYTi9cLSojW C1P0hIi7p_sSLOrrqk7UDJnZ3rq6JwJ7biKxUpPJAp80B4t1nW20cYF9jwHRFjkPH.2HpRfWb4CT UsHecHAlwwAlOhA9arWqXARwYJijrbFD_tlsyq6hIorYgKHTvqmEeuC43jGCBIZfN2.JDJ6xNc8G J6kQpGt0c.xLnRTtgf5P58dODZNut5wW39c5_f0x83s3Nq6MVvOSzXfSV977UEpzn_LMNhwgJfSF 6xin4js1S8YUk8hxeuerW3MkGdUn88khwaXiAJWIzDN_FxvGYINOolJwPwEmdn0XoVIzf0TETnOb fttR5Xt_AByRHsjvWJrI5c8bNuEtQIt7VWp7UCP25vG_A7i6DxNBVusV_XBgsh9AqYwLqEaEkGcH e6pfRfrLcez_mAZO_0Uj8y8cv6ZBl2cvmwbXyA6eCjE6tA.AZRmTBms3EZ80U.2SUMxBCUrkAtbK 2ssU1hBW4c5E6G22sZjbylskjbCVYSL0PTuXyX6BAtCCzsVRR_NUslZY7cmMa.JMyvzt4MBqyhHN ZdLqCgg4goMPuRHJzXZ4Wf0xSkQAhCNfisz4ER5_yEQ6UV2VXqmjjeak6U0b0U3QTU5SM8bbImg4 IceYgQ7wZyme3TvEVBd6hC7q5p5xeBhRpqbffmgRBbxW8AoYzy5YNwhWuTsn31VzWuD_foF2u_Z. 8nYX1qoIYorjn9MboIRk8SleOfRpB1Yl7E0Ej8N.GIzrVe6rtR8m6ztpZ19qfvJFgeRs4BQI2Td0 nPxT8fZWNUCFT0gBq9qz8ET8NlE2QTLjW3oTp6o4T64jdtcVBpx5CtDaSpKEjiNPSLt18F.Dbu.O 9AlX4F3BhrqB0iPHodNL3m944Be4wv6I8zYAYC4G.2iTOo.75P23ZtLfGXNP9BbB72fMloIMFZqg Y.tLrweQXWq6SwAfMTnDGVc5_vnwqpp8Rd5DX_gH3DVDQxstgmHztrJ4ypmHxVtDo.iEnVaIs1AC ccQM_Yf6ihLGXc7UUPT28Gp1TGh_3wCkqbUiZoGsJkVBl8or3UIJ5Bf86CtMV5kSaRt3ljJeISAA rRsqv5Uqa8bm0bcjss3NO3Dqai68WLFCx.SrM50Wv8ijjECFr.S65bxKh7t8jNQoQ19r7aw6AK_g 9A_KYkLmmpn56xzV55dn6sZY3Q5xawOPC.Eb24WSGOzgb0QSciWZ7dwS6It0RLybuAmu2bvtP5lA XV8HJXUhVwMDtGVE3bcjBw_xokZdPDPxll.p2PFljW.UYVZYzjP9QsJ7G7tRCo3iIC0fIJ0t2ciR NlFbvDRFaxLyNLXaQYOCaOQrqAyHyXI5Sy2jrlasFILor7Ipnedfftc5IlYzabL0wuOatj_oLVxi dcPn4_m.5KtnIqaZQ5OawqksiQGkLFM2EuqFIslf3Ou.XjLsvDLYofAOaCIRVZBVij.QkzoKJrk8 HUPSouKfg4M8a6BgirGasehXq5TFw.Ww9wV9krbBj5Yi2hyiDdoqp4zFUnPBwCoXWN2.X.0POS1u HbCeaArtv72FRX5KAZL0IrZYXi77UWelz36IEh31WQwxqCKFFZuhEqpo2oyvZTi_xwZh50i_qXk0 opmlayIX6r2S_6Id9RIr9Qdo1u9nqnRVOQiEY.2a3IDolAGSzuhe9WIxMx4TbK8yt0FTUMYQY39w zDtGKaQuacy0J6AtfMeLSVQtHx1eQwNCLPKPmVthlRiwitgNqksKy8fcktQqIh7yV X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic306.consmr.mail.ir2.yahoo.com with HTTP; Sat, 6 Mar 2021 17:41:36 +0000 Received: by smtp405.mail.ir2.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID a5c7f4eda18399a55bb44d180f23ad87; Sat, 06 Mar 2021 17:41:32 +0000 (UTC) From: Hannes Domani To: gdb-patches@sourceware.org Subject: [PATCH 12/22] Add optional full_window argument to TuiWindow.write Date: Sat, 6 Mar 2021 18:40:52 +0100 Message-Id: <20210306174102.21597-3-ssbssa@yahoo.de> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210306174102.21597-1-ssbssa@yahoo.de> References: <20210306174102.21597-1-ssbssa@yahoo.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Antivirus: Avast (VPS 210306-0, 03/06/2021), Outbound message X-Antivirus-Status: Clean X-Spam-Status: No, score=-10.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 06 Mar 2021 17:41:38 -0000 To prevent flickering when first calling erase, then write, this new argument indicates that the passed string contains the full contents of the window. This fills every unused cell of the window with a space, so it's not necessary to call erase beforehand. --- gdb/doc/python.texi | 6 +++++- gdb/python/py-tui.c | 17 ++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi index 565e87d0784..0e613d564e5 100644 --- a/gdb/doc/python.texi +++ b/gdb/doc/python.texi @@ -5876,10 +5876,14 @@ displayed above the window. This attribute can be modified. Remove all the contents of the window. @end defun -@defun TuiWindow.write (@var{string}) +@defun TuiWindow.write (@var{string} @r{[}, @var{full_window}@r{]}) Write @var{string} to the window. @var{string} can contain ANSI terminal escape styling sequences; @value{GDBN} will translate these as appropriate for the terminal. + +If the @var{full_window} parameter is @code{True}, then @var{string} +contains the full contents of the window. This is similar to calling +@code{erase} before @code{write}, but avoids the flickering. @end defun The factory function that you supply should return an object diff --git a/gdb/python/py-tui.c b/gdb/python/py-tui.c index 02dcd6949df..e0522f65a99 100644 --- a/gdb/python/py-tui.c +++ b/gdb/python/py-tui.c @@ -114,7 +114,7 @@ class tui_py_window : public tui_win_info } /* Write STR to the window. */ - void output (const char *str); + void output (const char *str, bool full_window); /* A helper function to compute the viewport width. */ int viewport_width () const @@ -246,12 +246,18 @@ tui_py_window::click (int mouse_x, int mouse_y, int mouse_button) } void -tui_py_window::output (const char *text) +tui_py_window::output (const char *text, bool full_window) { if (m_inner_window != nullptr) { + if (full_window) + werase (m_inner_window.get ()); + tui_puts (text, m_inner_window.get ()); - tui_wrefresh (m_inner_window.get ()); + if (full_window) + check_and_display_highlight_if_needed (); + else + tui_wrefresh (m_inner_window.get ()); } } @@ -422,13 +428,14 @@ gdbpy_tui_write (PyObject *self, PyObject *args) { gdbpy_tui_window *win = (gdbpy_tui_window *) self; const char *text; + int full_window = 0; - if (!PyArg_ParseTuple (args, "s", &text)) + if (!PyArg_ParseTuple (args, "s|i", &text, &full_window)) return nullptr; REQUIRE_WINDOW (win); - win->window->output (text); + win->window->output (text, full_window); Py_RETURN_NONE; } -- 2.30.1