From 1be74251867f008c5317cea42593cd4ecdd07a3f Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 17 Dec 2021 06:15:10 +0530 Subject: [PATCH] Another mypy 0.920 fix --- kitty/fast_data_types.pyi | 2 +- kitty/fonts.c | 5 +++-- kitty/fonts/render.py | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/kitty/fast_data_types.pyi b/kitty/fast_data_types.pyi index ea066fde7..f07ca0449 100644 --- a/kitty/fast_data_types.pyi +++ b/kitty/fast_data_types.pyi @@ -953,7 +953,7 @@ def set_font_data( Tuple[int, Union[bytearray, bytes, Array[c_ubyte]]]], prerender_func: Callable[ [int, int, int, int, int, int, int, float, float, float, float], - Tuple[Union[Array[c_ubyte], int], ...]], + Tuple[Tuple[int, ...], Tuple[Array[c_ubyte], ...]]], descriptor_for_idx: Callable[[int], Tuple[FontObject, bool, bool]], bold: int, italic: int, bold_italic: int, num_symbol_fonts: int, symbol_maps: Tuple[Tuple[int, int, int], ...], font_sz_in_pts: float, diff --git a/kitty/fonts.c b/kitty/fonts.c index db6c610bc..c6b0f1328 100644 --- a/kitty/fonts.c +++ b/kitty/fonts.c @@ -1345,12 +1345,13 @@ send_prerendered_sprites(FontGroup *fg) { if (error != 0) { sprite_map_set_error(error); PyErr_Print(); fatal("Failed"); } PyObject *args = PyObject_CallFunction(prerender_function, "IIIIIIIffdd", fg->cell_width, fg->cell_height, fg->baseline, fg->underline_position, fg->underline_thickness, fg->strikethrough_position, fg->strikethrough_thickness, OPT(cursor_beam_thickness), OPT(cursor_underline_thickness), fg->logical_dpi_x, fg->logical_dpi_y); if (args == NULL) { PyErr_Print(); fatal("Failed to pre-render cells"); } - for (ssize_t i = 0; i < PyTuple_GET_SIZE(args) - 1; i++) { + PyObject *cell_addresses = PyTuple_GET_ITEM(args, 0); + for (ssize_t i = 0; i < PyTuple_GET_SIZE(cell_addresses); i++) { x = fg->sprite_tracker.x; y = fg->sprite_tracker.y; z = fg->sprite_tracker.z; if (y > 0) { fatal("Too many pre-rendered sprites for your GPU or the font size is too large"); } do_increment(fg, &error); if (error != 0) { sprite_map_set_error(error); PyErr_Print(); fatal("Failed"); } - uint8_t *alpha_mask = PyLong_AsVoidPtr(PyTuple_GET_ITEM(args, i)); + uint8_t *alpha_mask = PyLong_AsVoidPtr(PyTuple_GET_ITEM(cell_addresses, i)); ensure_canvas_can_fit(fg, 1); // clear canvas Region r = { .right = fg->cell_width, .bottom = fg->cell_height }; render_alpha_mask(alpha_mask, fg->canvas.buf, &r, &r, fg->cell_width, fg->cell_width); diff --git a/kitty/fonts/render.py b/kitty/fonts/render.py index 78510eca1..989497ab9 100644 --- a/kitty/fonts/render.py +++ b/kitty/fonts/render.py @@ -372,7 +372,7 @@ def prerender_function( cursor_underline_thickness: float, dpi_x: float, dpi_y: float -) -> Tuple[Union[int, CBufType], ...]: +) -> Tuple[Tuple[int, ...], Tuple[CBufType, ...]]: # Pre-render the special underline, strikethrough and missing and cursor cells f = partial( render_special, cell_width=cell_width, cell_height=cell_height, baseline=baseline, @@ -385,7 +385,7 @@ def prerender_function( cursor_underline_thickness=cursor_underline_thickness, cell_width=cell_width, cell_height=cell_height, dpi_x=dpi_x, dpi_y=dpi_y) cells = f(1), f(2), f(3), f(0, True), f(missing=True), c(1), c(2), c(3) - return tuple(map(ctypes.addressof, cells)) + (cells,) + return tuple(map(ctypes.addressof, cells)), cells def render_box_drawing(codepoint: int, cell_width: int, cell_height: int, dpi: float) -> Tuple[int, CBufType]: