Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.1/patches/2222080/?format=api
{ "id": 2222080, "url": "http://patchwork.ozlabs.org/api/1.1/patches/2222080/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260410-qemu-vnc-v2-14-231416f76dc3@redhat.com/", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/1.1/projects/14/?format=api", "name": "QEMU Development", "link_name": "qemu-devel", "list_id": "qemu-devel.nongnu.org", "list_email": "qemu-devel@nongnu.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20260410-qemu-vnc-v2-14-231416f76dc3@redhat.com>", "date": "2026-04-10T19:18:36", "name": "[v2,14/67] ui/console-vc: set vt100 associated pixman image", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "5e8b5e7d02569735b5fab3521b578e248338e301", "submitter": { "id": 66774, "url": "http://patchwork.ozlabs.org/api/1.1/people/66774/?format=api", "name": "Marc-André Lureau", "email": "marcandre.lureau@redhat.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260410-qemu-vnc-v2-14-231416f76dc3@redhat.com/mbox/", "series": [ { "id": 499494, "url": "http://patchwork.ozlabs.org/api/1.1/series/499494/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=499494", "date": "2026-04-10T19:18:23", "name": "ui: add standalone VNC server over D-Bus", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/499494/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2222080/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2222080/checks/", "tags": {}, "headers": { "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=YNrsQqX6;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)" ], "Received": [ "from lists.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fsmqX6j0Nz1y2d\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 11 Apr 2026 05:20:56 +1000 (AEST)", "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wBHPE-0004zk-5Z; Fri, 10 Apr 2026 15:20:42 -0400", "from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <marcandre.lureau@redhat.com>)\n id 1wBHOy-0004jP-Qe\n for qemu-devel@nongnu.org; Fri, 10 Apr 2026 15:20:24 -0400", "from us-smtp-delivery-124.mimecast.com ([170.10.129.124])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <marcandre.lureau@redhat.com>)\n id 1wBHOx-000189-2N\n for qemu-devel@nongnu.org; Fri, 10 Apr 2026 15:20:24 -0400", "from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com\n (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by\n relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n cipher=TLS_AES_256_GCM_SHA384) id us-mta-673-WOBWvqk7NlqgHBfxx0W9aQ-1; Fri,\n 10 Apr 2026 15:20:21 -0400", "from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id 497361800345; Fri, 10 Apr 2026 19:20:20 +0000 (UTC)", "from localhost (unknown [10.44.22.4])\n by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP\n id 1427D180049F; Fri, 10 Apr 2026 19:20:18 +0000 (UTC)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1775848822;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=f95ATmdiY5d94eUC7k7kUvpTiBIL3Lv55v1kPJaIGF4=;\n b=YNrsQqX62UbvljsJx/WgIXnP3vcllvgU9TiyHRsiYFVQNcoYYVgFbKyvUmF6xB2GEVd1HA\n 9Ueq+L/v+EmcPX8FT/levG2oL/cw6xgA19Gg3csd1BnXqkJq/marJsAmrM5Pi1lLKuLj0r\n ag7NFbeca8pg+MarTRa1RND8BttI3/g=", "X-MC-Unique": "WOBWvqk7NlqgHBfxx0W9aQ-1", "X-Mimecast-MFC-AGG-ID": "WOBWvqk7NlqgHBfxx0W9aQ_1775848820", "From": "=?utf-8?q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com>", "Date": "Fri, 10 Apr 2026 23:18:36 +0400", "Subject": "[PATCH v2 14/67] ui/console-vc: set vt100 associated pixman image", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "8bit", "Message-Id": "<20260410-qemu-vnc-v2-14-231416f76dc3@redhat.com>", "References": "<20260410-qemu-vnc-v2-0-231416f76dc3@redhat.com>", "In-Reply-To": "<20260410-qemu-vnc-v2-0-231416f76dc3@redhat.com>", "To": "qemu-devel@nongnu.org", "Cc": "=?utf-8?q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com>,\n\t=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>", "X-Developer-Signature": "v=1; a=openpgp-sha256; l=6225;\n i=marcandre.lureau@redhat.com; h=from:subject:message-id;\n bh=Baw5rMs8bwBjzgkFxZfs9rC3Qi9crFdvgPbcJYPkFdA=;\n b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBp2U0UiLQ1zmqXqirOk/DEQHM5sO+/yxLCRvOAn\n TrGhwD62NyJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCadlNFAAKCRDa6OEJdZac\n 5SLDD/4y+k5xRbncqE5dUmjnNcGuf4ikWb1TZEM6+fmKPBOfgQYPLS/0Bm3lbKwYOC3mGLkt0K9\n vp6kIOvdDzozBUzINWrrMnjaro5pMcmkCaTUYbNq79x0gJ58Uzcyxd65xH0SIDfUbDxVyalAeFj\n tJUTB/4L6Oeq8c969Aa6bOchCtcsKPxdQ58R7MDjQ1jBTnZB/ig5EHi2eQTjKAhXE7o6fLG3N5Q\n ztJwqfusyd1pejBsPzPIoPRvNOErPhFWvIwIgvZTKmBX5wGkfCh9xWd0q1N/qbHrtMhqeUsroCQ\n xIKlRyYkUJ0g5jrZYUQBHquE15rkcx3g+77++tERVwJGTzPBkOlPlippATI8oTASv5bUhds9vGv\n kswdu6zKwtzdkyOMbsn71JdpXVL0nmEIAD64JAOR7V6GyGTzErXuS9vDc6bqBIA106oOO+nGKva\n z+lvGk35LV49TeAMwbLsKkONwMkO93nsNo6o3E3ur7hcRBnOGQPhdoB+SvZ82cMkBsh2qPBAixi\n aVIYUq4mghHE1PX+jLQsT7cKjAil+mzw//+kh0uqgMhaHDABZFkkujHBFIXZUUFsXrQlr1A1eAl\n d1aPYEkI+6IRzww0FjqMR5HNkoohmPZIP+wH5Zw99UfxpX3NaZGVPf7nua4ceuvTNwmv/dEDEJC\n abYWqFPC0vGOYHQ==", "X-Developer-Key": "i=marcandre.lureau@redhat.com; a=openpgp;\n fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5", "X-Scanned-By": "MIMEDefang 3.4.1 on 10.30.177.93", "Received-SPF": "pass client-ip=170.10.129.124;\n envelope-from=marcandre.lureau@redhat.com;\n helo=us-smtp-delivery-124.mimecast.com", "X-Spam_score_int": "-25", "X-Spam_score": "-2.6", "X-Spam_bar": "--", "X-Spam_report": "(-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001,\n RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,\n SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no", "X-Spam_action": "no action", "X-BeenThere": "qemu-devel@nongnu.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "qemu development <qemu-devel.nongnu.org>", "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>", "List-Archive": "<https://lists.nongnu.org/archive/html/qemu-devel>", "List-Post": "<mailto:qemu-devel@nongnu.org>", "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>", "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>", "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org", "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org" }, "content": "Start removing dependency on DisplaySurface for vt100 handling.\n\nNote that before, the rendering is done on the current DisplaySurface.\nIt's not obvious the QemuTextConsole associated surface isn't changed\nover time, in particular if it was doing resize. But\nqemu_console_resize() is only implemented for QemuGraphicConsole.\n\nReviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>\nSigned-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>\n---\n ui/console-vc.c | 54 +++++++++++++++++++++++++-----------------------------\n 1 file changed, 25 insertions(+), 29 deletions(-)", "diff": "diff --git a/ui/console-vc.c b/ui/console-vc.c\nindex cc061dff769..267620689e4 100644\n--- a/ui/console-vc.c\n+++ b/ui/console-vc.c\n@@ -49,6 +49,8 @@ enum TTYState {\n };\n \n typedef struct QemuVT100 {\n+ pixman_image_t *image;\n+\n int width;\n int height;\n int total_height;\n@@ -136,28 +138,22 @@ qemu_text_console_get_label(QemuConsole *c)\n return tc->chr ? g_strdup(tc->chr->label) : NULL;\n }\n \n-static void qemu_console_fill_rect(QemuConsole *con, int posx, int posy,\n- int width, int height, pixman_color_t color)\n+static void image_fill_rect(pixman_image_t *image, int posx, int posy,\n+ int width, int height, pixman_color_t color)\n {\n- DisplaySurface *surface = qemu_console_surface(con);\n pixman_rectangle16_t rect = {\n .x = posx, .y = posy, .width = width, .height = height\n };\n \n- assert(surface);\n- pixman_image_fill_rectangles(PIXMAN_OP_SRC, surface->image,\n- &color, 1, &rect);\n+ pixman_image_fill_rectangles(PIXMAN_OP_SRC, image, &color, 1, &rect);\n }\n \n /* copy from (xs, ys) to (xd, yd) a rectangle of size (w, h) */\n-static void qemu_console_bitblt(QemuConsole *con,\n- int xs, int ys, int xd, int yd, int w, int h)\n+static void image_bitblt(pixman_image_t *image,\n+ int xs, int ys, int xd, int yd, int w, int h)\n {\n- DisplaySurface *surface = qemu_console_surface(con);\n-\n- assert(surface);\n pixman_image_composite(PIXMAN_OP_SRC,\n- surface->image, NULL, surface->image,\n+ image, NULL, image,\n xs, ys, 0, 0, xd, yd, w, h);\n }\n \n@@ -165,10 +161,10 @@ static void vga_putcharxy(QemuConsole *s, int x, int y, int ch,\n TextAttributes *t_attrib)\n {\n static pixman_image_t *glyphs[256];\n- DisplaySurface *surface = qemu_console_surface(s);\n+ pixman_image_t *image = QEMU_TEXT_CONSOLE(s)->vt.image;\n pixman_color_t fgcol, bgcol;\n \n- assert(surface);\n+ assert(image);\n if (t_attrib->invers) {\n bgcol = color_table_rgb[t_attrib->bold][t_attrib->fgcol];\n fgcol = color_table_rgb[t_attrib->bold][t_attrib->bgcol];\n@@ -180,7 +176,7 @@ static void vga_putcharxy(QemuConsole *s, int x, int y, int ch,\n if (!glyphs[ch]) {\n glyphs[ch] = qemu_pixman_glyph_from_vgafont(FONT_HEIGHT, vgafont16, ch);\n }\n- qemu_pixman_glyph_render(glyphs[ch], surface->image,\n+ qemu_pixman_glyph_render(glyphs[ch], image,\n &fgcol, &bgcol, x, y, FONT_WIDTH, FONT_HEIGHT);\n }\n \n@@ -233,20 +229,20 @@ static void console_show_cursor(QemuTextConsole *s, int show)\n \n static void console_refresh(QemuTextConsole *s)\n {\n- DisplaySurface *surface = qemu_console_surface(QEMU_CONSOLE(s));\n QemuVT100 *vt = &s->vt;\n TextCell *c;\n int x, y, y1;\n+ int w = pixman_image_get_width(vt->image);\n+ int h = pixman_image_get_height(vt->image);\n \n- assert(surface);\n vt->text_x[0] = 0;\n vt->text_y[0] = 0;\n vt->text_x[1] = vt->width - 1;\n vt->text_y[1] = vt->height - 1;\n vt->cursor_invalidate = 1;\n \n- qemu_console_fill_rect(QEMU_CONSOLE(s), 0, 0, surface_width(surface), surface_height(surface),\n- color_table_rgb[0][QEMU_COLOR_BLACK]);\n+ image_fill_rect(vt->image, 0, 0, w, h,\n+ color_table_rgb[0][QEMU_COLOR_BLACK]);\n y1 = vt->y_displayed;\n for (y = 0; y < vt->height; y++) {\n c = vt->cells + y1 * vt->width;\n@@ -260,8 +256,7 @@ static void console_refresh(QemuTextConsole *s)\n }\n }\n console_show_cursor(s, 1);\n- dpy_gfx_update(QEMU_CONSOLE(s), 0, 0,\n- surface_width(surface), surface_height(surface));\n+ dpy_gfx_update(QEMU_CONSOLE(s), 0, 0, w, h);\n }\n \n static void console_scroll(QemuTextConsole *s, int ydelta)\n@@ -401,8 +396,9 @@ static void text_console_resize(QemuTextConsole *t)\n \n assert(s->scanout.kind == SCANOUT_SURFACE);\n \n- w = surface_width(s->surface) / FONT_WIDTH;\n- h = surface_height(s->surface) / FONT_HEIGHT;\n+ t->vt.image = s->surface->image;\n+ w = pixman_image_get_width(t->vt.image) / FONT_WIDTH;\n+ h = pixman_image_get_height(t->vt.image) / FONT_HEIGHT;\n if (w == t->vt.width && h == t->vt.height) {\n return;\n }\n@@ -464,12 +460,12 @@ static void vc_put_lf(VCChardev *vc)\n vt->text_x[1] = vt->width - 1;\n vt->text_y[1] = vt->height - 1;\n \n- qemu_console_bitblt(QEMU_CONSOLE(s), 0, FONT_HEIGHT, 0, 0,\n- vt->width * FONT_WIDTH,\n- (vt->height - 1) * FONT_HEIGHT);\n- qemu_console_fill_rect(QEMU_CONSOLE(s), 0, (vt->height - 1) * FONT_HEIGHT,\n- vt->width * FONT_WIDTH, FONT_HEIGHT,\n- color_table_rgb[0][TEXT_ATTRIBUTES_DEFAULT.bgcol]);\n+ image_bitblt(vt->image, 0, FONT_HEIGHT, 0, 0,\n+ vt->width * FONT_WIDTH,\n+ (vt->height - 1) * FONT_HEIGHT);\n+ image_fill_rect(vt->image, 0, (vt->height - 1) * FONT_HEIGHT,\n+ vt->width * FONT_WIDTH, FONT_HEIGHT,\n+ color_table_rgb[0][TEXT_ATTRIBUTES_DEFAULT.bgcol]);\n vt->update_x0 = 0;\n vt->update_y0 = 0;\n vt->update_x1 = vt->width * FONT_WIDTH;\n", "prefixes": [ "v2", "14/67" ] }