get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.1/patches/2222120/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2222120,
    "url": "http://patchwork.ozlabs.org/api/1.1/patches/2222120/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260410-qemu-vnc-v2-60-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-60-231416f76dc3@redhat.com>",
    "date": "2026-04-10T19:19:22",
    "name": "[v2,60/67] ui/console: rename public API to use consistent qemu_console_ prefix",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "f0f4a2548a3ee8eca7c74846b2cac848a2c7dc0d",
    "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-60-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/2222120/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2222120/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=QIKTFA8P;\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 4fsmyc3cn2z1yGb\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 11 Apr 2026 05:27:04 +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 1wBHTr-0007Zc-G3; Fri, 10 Apr 2026 15:25:27 -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 1wBHTa-0007P9-Tc\n for qemu-devel@nongnu.org; Fri, 10 Apr 2026 15:25:13 -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 1wBHTT-0002jI-53\n for qemu-devel@nongnu.org; Fri, 10 Apr 2026 15:25:10 -0400",
            "from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com\n (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by\n relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n cipher=TLS_AES_256_GCM_SHA384) id us-mta-363-imkVm4RcNXSfn3P3B7tRZw-1; Fri,\n 10 Apr 2026 15:24:54 -0400",
            "from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111])\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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id C449F195608F\n for <qemu-devel@nongnu.org>; Fri, 10 Apr 2026 19:24:53 +0000 (UTC)",
            "from localhost (unknown [10.44.22.4])\n by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP\n id 51F8F18002A6; Fri, 10 Apr 2026 19:24:50 +0000 (UTC)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1775849097;\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=aQkA2DSqZlPisb8lLgT74xUeCra9Q1sPuB1khMGY49Q=;\n b=QIKTFA8PNr9mM5MvpI9r6K7GYr5vF5MhNvXvuK8bh1SBtYRTL84gr/aY7axdEB91Iq6itg\n YRPREy+4IBm0chvZrvCnFUu6rSrdpiDvfKR0uDoAg92ZT/EMhIM2dRhlvoWrW7hwgLvp6j\n Rm2eg0c+2DuC/x6bZLBvgvD3cmem1Do=",
        "X-MC-Unique": "imkVm4RcNXSfn3P3B7tRZw-1",
        "X-Mimecast-MFC-AGG-ID": "imkVm4RcNXSfn3P3B7tRZw_1775849093",
        "From": "=?utf-8?q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com>",
        "Date": "Fri, 10 Apr 2026 23:19:22 +0400",
        "Subject": "[PATCH v2 60/67] ui/console: rename public API to use consistent\n qemu_console_ prefix",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=\"utf-8\"",
        "Content-Transfer-Encoding": "8bit",
        "Message-Id": "<20260410-qemu-vnc-v2-60-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>",
        "X-Developer-Signature": "v=1; a=openpgp-sha256; l=111649;\n i=marcandre.lureau@redhat.com; h=from:subject:message-id;\n bh=P9VRIk2Z+wW2zb09YoDP6fxWYaYrsi2xMuPQKG6mhv8=;\n b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBp2U0XqvCu0LCqIKVsIOPjszAuu/74wwTphj3rf\n 9QVD+jcMWuJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCadlNFwAKCRDa6OEJdZac\n 5WQaEACMtV3sS6qICmgWz6d+PbDlIGDSzlzRpnNQWJj4L+HD8aQzh/DgyhqhK1jwxZjeQ9dE3oz\n QWzy9klrWOk3LjAKzikktJEoubSIzNNmWALNHl+g9nnT99YnXaWQ8ueCq5VrzxlAWzRxZtHCNqT\n DThmHso1auO8irnTzWuFv7FeqjBGL83YFLZZtuyZRObsVLNWwCIVzqb0kerASk8CgecV5nYevuS\n WFm0L9mjid+/H1l0ax/wELbMobOaMJWdwCISJjDL5IbkBYVR1GA5jvbVTszwzqBmLywWdOlNiqJ\n ksIMtCAYx4Rc3lAo6eliYZMCSUieJfQnjHmd8R20KSG2A/VTU7LTw7NeiKl6r9ieunqQnZ4604D\n jsq9qvOnAapyTU05xAFeyZWM0+nrW2GMdVzA5yzc6JYK3TO1/xegp5pziBnLHnEtHnAiPcb0Ryn\n K4AD349Cvxb6QJ34feHsrO32qYAApSeV02pQDmoWaJNxI5Afsd6Sohz2z3R+XzG53LJrUm5EJ5n\n 16mGRQB3uMWoyXfbBf8dg8Gwz5i+LfUKMRfAUqOYs8XtOGC0njV7viPG9Nu1phM/O9Jlw7taK61\n /p+jCV8hWd1wAbfEAaMMaafGss1PTSQsVH93xES7qypDEMR7bM+z3AI4k9qPuOQjGvMBOCiUedN\n hwBRrcgIswgcG5w==",
        "X-Developer-Key": "i=marcandre.lureau@redhat.com; a=openpgp;\n fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5",
        "X-Scanned-By": "MIMEDefang 3.4.1 on 10.30.177.111",
        "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": "7",
        "X-Spam_score": "0.7",
        "X-Spam_bar": "/",
        "X-Spam_report": "(0.7 / 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_SBL_CSS=3.335, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001,\n RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001,\n SPF_PASS=-0.001 autolearn=no 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": "Rename the display and graphic console public functions to follow a\nconsistent qemu_console_ (or qemu_graphic_console_) naming convention.\n\nThe previous API used a mix of prefixes: dpy_, graphic_hw_,\ngraphic_console_, console_has_, and update_displaychangelistener().\nUnify them under a common qemu_console_ namespace for better\ndiscoverability and consistency.\n\nThe main renames are:\n- dpy_gfx_*() / dpy_text_*() / dpy_gl_*() → qemu_console_*()\n- dpy_{get,set}_ui_info() → qemu_console_{get,set}_ui_info()\n- graphic_hw_*() → qemu_console_hw_*()\n- graphic_console_*() → qemu_graphic_console_*()\n- console_has_gl() → qemu_console_has_gl()\n- update_displaychangelistener() → qemu_console_listener_set_refresh()\n\nNo functional changes.\n\nSigned-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>\n---\n include/ui/console.h             | 108 +++++++++++++++---------------\n hw/arm/musicpal.c                |   4 +-\n hw/display/artist.c              |   4 +-\n hw/display/ati.c                 |  16 ++---\n hw/display/bcm2835_fb.c          |   5 +-\n hw/display/bochs-display.c       |  14 ++--\n hw/display/cg3.c                 |   6 +-\n hw/display/cirrus_vga.c          |   8 +--\n hw/display/cirrus_vga_isa.c      |   2 +-\n hw/display/dm163.c               |   6 +-\n hw/display/exynos4210_fimd.c     |   4 +-\n hw/display/g364fb.c              |  10 +--\n hw/display/jazz_led.c            |   8 +--\n hw/display/macfb.c               |   6 +-\n hw/display/next-fb.c             |   4 +-\n hw/display/omap_lcdc.c           |   4 +-\n hw/display/pl110.c               |   4 +-\n hw/display/qxl-render.c          |  12 ++--\n hw/display/qxl.c                 |  14 ++--\n hw/display/ramfb-standalone.c    |   2 +-\n hw/display/ramfb.c               |   4 +-\n hw/display/sm501.c               |   6 +-\n hw/display/ssd0303.c             |   4 +-\n hw/display/ssd0323.c             |   5 +-\n hw/display/tcx.c                 |  16 ++---\n hw/display/vga-isa.c             |   2 +-\n hw/display/vga-mmio.c            |   2 +-\n hw/display/vga-pci.c             |   6 +-\n hw/display/vga.c                 |  40 ++++++-----\n hw/display/vhost-user-gpu.c      |  22 +++---\n hw/display/virtio-gpu-base.c     |   2 +-\n hw/display/virtio-gpu-rutabaga.c |  10 +--\n hw/display/virtio-gpu-udmabuf.c  |   4 +-\n hw/display/virtio-gpu-virgl.c    |  20 +++---\n hw/display/virtio-gpu.c          |  26 ++++----\n hw/display/virtio-vga.c          |   2 +-\n hw/display/vmware_vga.c          |  12 ++--\n hw/display/xenfb.c               |   6 +-\n hw/display/xlnx_dp.c             |  10 +--\n hw/vfio/display.c                |  32 ++++-----\n ui/console-vc.c                  |  12 ++--\n ui/console.c                     | 140 +++++++++++++++++++--------------------\n ui/curses.c                      |   8 +--\n ui/dbus-console.c                |   4 +-\n ui/dbus-listener.c               |  10 +--\n ui/egl-headless.c                |   4 +-\n ui/gtk-egl.c                     |   6 +-\n ui/gtk-gl-area.c                 |   6 +-\n ui/gtk.c                         |  18 ++---\n ui/sdl2-2d.c                     |   2 +-\n ui/sdl2-gl.c                     |   2 +-\n ui/sdl2.c                        |   6 +-\n ui/spice-display.c               |  16 ++---\n ui/vnc.c                         |  22 +++---\n hw/display/apple-gfx.m           |  16 ++---\n ui/cocoa.m                       |  10 +--\n 56 files changed, 372 insertions(+), 382 deletions(-)",
    "diff": "diff --git a/include/ui/console.h b/include/ui/console.h\nindex c93ab7d619e..5566d1f65f9 100644\n--- a/include/ui/console.h\n+++ b/include/ui/console.h\n@@ -308,49 +308,49 @@ DisplayState *init_displaystate(void);\n void qemu_console_register_listener(QemuConsole *con,\n                                     DisplayChangeListener *dcl,\n                                     const DisplayChangeListenerOps *ops);\n-void update_displaychangelistener(DisplayChangeListener *dcl,\n-                                  uint64_t interval);\n+void qemu_console_listener_set_refresh(DisplayChangeListener *dcl,\n+                                       uint64_t interval);\n void qemu_console_unregister_listener(DisplayChangeListener *dcl);\n \n-bool dpy_ui_info_supported(const QemuConsole *con);\n-const QemuUIInfo *dpy_get_ui_info(const QemuConsole *con);\n-int dpy_set_ui_info(QemuConsole *con, QemuUIInfo *info, bool delay);\n-\n-void dpy_gfx_update(QemuConsole *con, int x, int y, int w, int h);\n-void dpy_gfx_update_full(QemuConsole *con);\n-void dpy_gfx_replace_surface(QemuConsole *con,\n-                             DisplaySurface *surface);\n-void dpy_text_cursor(QemuConsole *con, int x, int y);\n-void dpy_text_update(QemuConsole *con, int x, int y, int w, int h);\n-void dpy_text_resize(QemuConsole *con, int w, int h);\n-void dpy_mouse_set(QemuConsole *con, int x, int y, bool on);\n-void dpy_cursor_define(QemuConsole *con, QEMUCursor *cursor);\n-bool dpy_gfx_check_format(QemuConsole *con,\n-                          pixman_format_code_t format);\n-\n-void dpy_gl_scanout_disable(QemuConsole *con);\n-void dpy_gl_scanout_texture(QemuConsole *con,\n-                            uint32_t backing_id, bool backing_y_0_top,\n-                            uint32_t backing_width, uint32_t backing_height,\n-                            uint32_t x, uint32_t y, uint32_t w, uint32_t h,\n-                            void *d3d_tex2d);\n-void dpy_gl_scanout_dmabuf(QemuConsole *con,\n-                           QemuDmaBuf *dmabuf);\n-void dpy_gl_cursor_dmabuf(QemuConsole *con, QemuDmaBuf *dmabuf,\n-                          bool have_hot, uint32_t hot_x, uint32_t hot_y);\n-void dpy_gl_cursor_position(QemuConsole *con,\n-                            uint32_t pos_x, uint32_t pos_y);\n-void dpy_gl_release_dmabuf(QemuConsole *con,\n-                           QemuDmaBuf *dmabuf);\n-void dpy_gl_update(QemuConsole *con,\n-                   uint32_t x, uint32_t y, uint32_t w, uint32_t h);\n-\n-QEMUGLContext dpy_gl_ctx_create(QemuConsole *con,\n-                                QEMUGLParams *params);\n-void dpy_gl_ctx_destroy(QemuConsole *con, QEMUGLContext ctx);\n-int dpy_gl_ctx_make_current(QemuConsole *con, QEMUGLContext ctx);\n-\n-bool console_has_gl(QemuConsole *con);\n+bool qemu_console_ui_info_supported(const QemuConsole *con);\n+const QemuUIInfo *qemu_console_get_ui_info(const QemuConsole *con);\n+int qemu_console_set_ui_info(QemuConsole *con, QemuUIInfo *info, bool delay);\n+\n+void qemu_console_update(QemuConsole *con, int x, int y, int w, int h);\n+void qemu_console_update_full(QemuConsole *con);\n+void qemu_console_set_surface(QemuConsole *con,\n+                              DisplaySurface *surface);\n+void qemu_console_text_set_cursor(QemuConsole *con, int x, int y);\n+void qemu_console_text_update(QemuConsole *con, int x, int y, int w, int h);\n+void qemu_console_text_resize(QemuConsole *con, int w, int h);\n+void qemu_console_set_mouse(QemuConsole *con, int x, int y, bool on);\n+void qemu_console_set_cursor(QemuConsole *con, QEMUCursor *cursor);\n+bool qemu_console_check_format(QemuConsole *con,\n+                               pixman_format_code_t format);\n+\n+void qemu_console_gl_scanout_disable(QemuConsole *con);\n+void qemu_console_gl_scanout_texture(QemuConsole *con,\n+                                     uint32_t backing_id, bool backing_y_0_top,\n+                                     uint32_t backing_width, uint32_t backing_height,\n+                                     uint32_t x, uint32_t y, uint32_t w, uint32_t h,\n+                                     void *d3d_tex2d);\n+void qemu_console_gl_scanout_dmabuf(QemuConsole *con,\n+                                    QemuDmaBuf *dmabuf);\n+void qemu_console_gl_cursor_dmabuf(QemuConsole *con, QemuDmaBuf *dmabuf,\n+                                   bool have_hot, uint32_t hot_x, uint32_t hot_y);\n+void qemu_console_gl_cursor_position(QemuConsole *con,\n+                                     uint32_t pos_x, uint32_t pos_y);\n+void qemu_console_gl_release_dmabuf(QemuConsole *con,\n+                                    QemuDmaBuf *dmabuf);\n+void qemu_console_gl_update(QemuConsole *con,\n+                            uint32_t x, uint32_t y, uint32_t w, uint32_t h);\n+\n+QEMUGLContext qemu_console_gl_ctx_create(QemuConsole *con,\n+                                         QEMUGLParams *params);\n+void qemu_console_gl_ctx_destroy(QemuConsole *con, QEMUGLContext ctx);\n+int qemu_console_gl_ctx_make_current(QemuConsole *con, QEMUGLContext ctx);\n+\n+bool qemu_console_has_gl(QemuConsole *con);\n \n enum {\n     GRAPHIC_FLAGS_NONE     = 0,\n@@ -375,19 +375,19 @@ typedef struct GraphicHwOps {\n     void (*gl_block)(void *opaque, bool block);\n } GraphicHwOps;\n \n-QemuConsole *graphic_console_init(DeviceState *dev, uint32_t head,\n-                                  const GraphicHwOps *ops,\n-                                  void *opaque);\n-void graphic_console_set_hwops(QemuConsole *con,\n-                               const GraphicHwOps *hw_ops,\n-                               void *opaque);\n-void graphic_console_close(QemuConsole *con);\n-\n-void graphic_hw_update(QemuConsole *con);\n-void graphic_hw_update_done(QemuConsole *con);\n-void graphic_hw_invalidate(QemuConsole *con);\n-void graphic_hw_text_update(QemuConsole *con, uint32_t *chardata);\n-void graphic_hw_gl_block(QemuConsole *con, bool block);\n+QemuConsole *qemu_graphic_console_create(DeviceState *dev, uint32_t head,\n+                                         const GraphicHwOps *ops,\n+                                         void *opaque);\n+void qemu_graphic_console_set_hwops(QemuConsole *con,\n+                                    const GraphicHwOps *hw_ops,\n+                                    void *opaque);\n+void qemu_graphic_console_close(QemuConsole *con);\n+\n+void qemu_console_hw_update(QemuConsole *con);\n+void qemu_console_hw_update_done(QemuConsole *con);\n+void qemu_console_hw_invalidate(QemuConsole *con);\n+void qemu_console_hw_text_update(QemuConsole *con, uint32_t *chardata);\n+void qemu_console_hw_gl_block(QemuConsole *con, bool block);\n \n void qemu_console_early_init(void);\n \ndiff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c\nindex 913f98b5d8e..2f43d774dbe 100644\n--- a/hw/arm/musicpal.c\n+++ b/hw/arm/musicpal.c\n@@ -171,7 +171,7 @@ static bool lcd_refresh(void *opaque)\n         }\n     }\n \n-    dpy_gfx_update(s->con, 0, 0, 128*3, 64*3);\n+    qemu_console_update(s->con, 0, 0, 128*3, 64*3);\n     return true;\n }\n \n@@ -254,7 +254,7 @@ static const GraphicHwOps musicpal_gfx_ops = {\n static void musicpal_lcd_realize(DeviceState *dev, Error **errp)\n {\n     musicpal_lcd_state *s = MUSICPAL_LCD(dev);\n-    s->con = graphic_console_init(dev, 0, &musicpal_gfx_ops, s);\n+    s->con = qemu_graphic_console_create(dev, 0, &musicpal_gfx_ops, s);\n     qemu_console_resize(s->con, 128 * 3, 64 * 3);\n }\n \ndiff --git a/hw/display/artist.c b/hw/display/artist.c\nindex a07508378c7..288d466ec64 100644\n--- a/hw/display/artist.c\n+++ b/hw/display/artist.c\n@@ -1324,7 +1324,7 @@ static bool artist_update_display(void *opaque)\n     artist_draw_cursor(s);\n \n     if (first >= 0) {\n-        dpy_gfx_update(s->con, 0, first, s->width, last - first + 1);\n+        qemu_console_update(s->con, 0, first, s->width, last - first + 1);\n     }\n \n     return true;\n@@ -1424,7 +1424,7 @@ static void artist_realizefn(DeviceState *dev, Error **errp)\n     s->misc_video |= 0x0A000000;\n     s->misc_ctrl  |= 0x00800000;\n \n-    s->con = graphic_console_init(dev, 0, &artist_ops, s);\n+    s->con = qemu_graphic_console_create(dev, 0, &artist_ops, s);\n     qemu_console_resize(s->con, s->width, s->height);\n }\n \ndiff --git a/hw/display/ati.c b/hw/display/ati.c\nindex 88a5bbbf07a..882ffc1bcf9 100644\n--- a/hw/display/ati.c\n+++ b/hw/display/ati.c\n@@ -161,7 +161,7 @@ static void ati_cursor_define(ATIVGAState *s)\n     }\n     cursor_set_mono(s->cursor, s->regs.cur_color1, s->regs.cur_color0,\n                     (uint8_t *)&data[64], 1, (uint8_t *)&data[0]);\n-    dpy_cursor_define(s->vga.con, s->cursor);\n+    qemu_console_set_cursor(s->vga.con, s->cursor);\n }\n \n /* Alternatively support guest rendered hardware cursor */\n@@ -624,9 +624,9 @@ static void ati_mm_write(void *opaque, hwaddr addr,\n                 if (s->regs.crtc_gen_cntl & CRTC2_CUR_EN) {\n                     ati_cursor_define(s);\n                 }\n-                dpy_mouse_set(s->vga.con, s->regs.cur_hv_pos >> 16,\n-                              s->regs.cur_hv_pos & 0xffff,\n-                              (s->regs.crtc_gen_cntl & CRTC2_CUR_EN) != 0);\n+                qemu_console_set_mouse(s->vga.con, s->regs.cur_hv_pos >> 16,\n+                                       s->regs.cur_hv_pos & 0xffff,\n+                                       (s->regs.crtc_gen_cntl & CRTC2_CUR_EN) != 0);\n             }\n         }\n         if ((val & (CRTC2_EXT_DISP_EN | CRTC2_EN)) !=\n@@ -778,8 +778,8 @@ static void ati_mm_write(void *opaque, hwaddr addr,\n         }\n         if (!s->cursor_guest_mode &&\n             (s->regs.crtc_gen_cntl & CRTC2_CUR_EN) && !(t & BIT(31))) {\n-            dpy_mouse_set(s->vga.con, s->regs.cur_hv_pos >> 16,\n-                          s->regs.cur_hv_pos & 0xffff, true);\n+            qemu_console_set_mouse(s->vga.con, s->regs.cur_hv_pos >> 16,\n+                                   s->regs.cur_hv_pos & 0xffff, true);\n         }\n         break;\n     }\n@@ -1092,7 +1092,7 @@ static void ati_vga_realize(PCIDevice *dev, Error **errp)\n     }\n     vga_init(vga, OBJECT(s), pci_address_space(dev),\n              pci_address_space_io(dev), true);\n-    vga->con = graphic_console_init(DEVICE(s), 0, s->vga.hw_ops, vga);\n+    vga->con = qemu_graphic_console_create(DEVICE(s), 0, s->vga.hw_ops, vga);\n     if (s->cursor_guest_mode) {\n         vga->cursor_invalidate = ati_cursor_invalidate;\n         vga->cursor_draw_line = ati_cursor_draw_line;\n@@ -1165,7 +1165,7 @@ static void ati_vga_exit(PCIDevice *dev)\n     ATIVGAState *s = ATI_VGA(dev);\n \n     timer_del(&s->vblank_timer);\n-    graphic_console_close(s->vga.con);\n+    qemu_graphic_console_close(s->vga.con);\n }\n \n static const Property ati_vga_properties[] = {\ndiff --git a/hw/display/bcm2835_fb.c b/hw/display/bcm2835_fb.c\nindex 83c4c03c7ca..bd58f625fcd 100644\n--- a/hw/display/bcm2835_fb.c\n+++ b/hw/display/bcm2835_fb.c\n@@ -207,8 +207,7 @@ static bool fb_update_display(void *opaque)\n                                draw_line_src16, s, &first, &last);\n \n     if (first >= 0) {\n-        dpy_gfx_update(s->con, 0, first, s->config.xres,\n-                       last - first + 1);\n+        qemu_console_update(s->con, 0, first, s->config.xres, last - first + 1);\n     }\n \n     s->invalidate = false;\n@@ -427,7 +426,7 @@ static void bcm2835_fb_realize(DeviceState *dev, Error **errp)\n \n     bcm2835_fb_reset(dev);\n \n-    s->con = graphic_console_init(dev, 0, &vgafb_ops, s);\n+    s->con = qemu_graphic_console_create(dev, 0, &vgafb_ops, s);\n     qemu_console_resize(s->con, s->config.xres, s->config.yres);\n }\n \ndiff --git a/hw/display/bochs-display.c b/hw/display/bochs-display.c\nindex 8ef9b76cf85..64e669429c4 100644\n--- a/hw/display/bochs-display.c\n+++ b/hw/display/bochs-display.c\n@@ -224,12 +224,12 @@ static bool bochs_display_update(void *opaque)\n                                              mode.format,\n                                              mode.stride,\n                                              ptr + mode.offset);\n-        dpy_gfx_replace_surface(s->con, ds);\n+        qemu_console_set_surface(s->con, ds);\n         full_update = true;\n     }\n \n     if (full_update) {\n-        dpy_gfx_update_full(s->con);\n+        qemu_console_update_full(s->con);\n     } else {\n         snap = memory_region_snapshot_and_clear_dirty(&s->vram,\n                                                       mode.offset, mode.size,\n@@ -243,14 +243,12 @@ static bool bochs_display_update(void *opaque)\n                 ys = y;\n             }\n             if (!dirty && ys >= 0) {\n-                dpy_gfx_update(s->con, 0, ys,\n-                               mode.width, y - ys);\n+                qemu_console_update(s->con, 0, ys, mode.width, y - ys);\n                 ys = -1;\n             }\n         }\n         if (ys >= 0) {\n-            dpy_gfx_update(s->con, 0, ys,\n-                           mode.width, y - ys);\n+            qemu_console_update(s->con, 0, ys, mode.width, y - ys);\n         }\n \n         g_free(snap);\n@@ -279,7 +277,7 @@ static void bochs_display_realize(PCIDevice *dev, Error **errp)\n     }\n     s->vgamem = pow2ceil(s->vgamem);\n \n-    s->con = graphic_console_init(DEVICE(dev), 0, &bochs_display_gfx_ops, s);\n+    s->con = qemu_graphic_console_create(DEVICE(dev), 0, &bochs_display_gfx_ops, s);\n \n     memory_region_init_ram(&s->vram, obj, \"bochs-display-vram\", s->vgamem,\n                            &error_fatal);\n@@ -344,7 +342,7 @@ static void bochs_display_exit(PCIDevice *dev)\n {\n     BochsDisplayState *s = BOCHS_DISPLAY(dev);\n \n-    graphic_console_close(s->con);\n+    qemu_graphic_console_close(s->con);\n }\n \n static const Property bochs_display_properties[] = {\ndiff --git a/hw/display/cg3.c b/hw/display/cg3.c\nindex 963bb3427a6..f9dda1549dd 100644\n--- a/hw/display/cg3.c\n+++ b/hw/display/cg3.c\n@@ -137,7 +137,7 @@ static bool cg3_update_display(void *opaque)\n             }\n         } else {\n             if (y_start >= 0) {\n-                dpy_gfx_update(s->con, 0, y_start, width, y - y_start);\n+                qemu_console_update(s->con, 0, y_start, width, y - y_start);\n                 y_start = -1;\n             }\n             pix += width;\n@@ -146,7 +146,7 @@ static bool cg3_update_display(void *opaque)\n     }\n     s->full_update = 0;\n     if (y_start >= 0) {\n-        dpy_gfx_update(s->con, 0, y_start, width, y - y_start);\n+        qemu_console_update(s->con, 0, y_start, width, y - y_start);\n     }\n     /* vsync interrupt? */\n     if (s->regs[0] & CG3_CR_ENABLE_INTS) {\n@@ -311,7 +311,7 @@ static void cg3_realizefn(DeviceState *dev, Error **errp)\n \n     sysbus_init_irq(sbd, &s->irq);\n \n-    s->con = graphic_console_init(dev, 0, &cg3_ops, s);\n+    s->con = qemu_graphic_console_create(dev, 0, &cg3_ops, s);\n     qemu_console_resize(s->con, s->width, s->height);\n }\n \ndiff --git a/hw/display/cirrus_vga.c b/hw/display/cirrus_vga.c\nindex 48be3c8a932..0a8c74e1374 100644\n--- a/hw/display/cirrus_vga.c\n+++ b/hw/display/cirrus_vga.c\n@@ -779,9 +779,9 @@ static int cirrus_do_copy(CirrusVGAState *s, int dst, int src, int w, int h)\n                       s->cirrus_blt_width, s->cirrus_blt_height);\n \n     if (notify) {\n-        dpy_gfx_update(s->vga.con, dx, dy,\n-                       s->cirrus_blt_width / depth,\n-                       s->cirrus_blt_height);\n+        qemu_console_update(s->vga.con, dx, dy,\n+                            s->cirrus_blt_width / depth,\n+                            s->cirrus_blt_height);\n     }\n \n     /* we don't have to notify the display that this portion has\n@@ -2964,7 +2964,7 @@ static void pci_cirrus_vga_realize(PCIDevice *dev, Error **errp)\n     }\n     cirrus_init_common(s, OBJECT(dev), device_id, 1, pci_address_space(dev),\n                        pci_address_space_io(dev));\n-    s->vga.con = graphic_console_init(DEVICE(dev), 0, s->vga.hw_ops, &s->vga);\n+    s->vga.con = qemu_graphic_console_create(DEVICE(dev), 0, s->vga.hw_ops, &s->vga);\n \n     /* setup PCI */\n     memory_region_init(&s->pci_bar, OBJECT(dev), \"cirrus-pci-bar0\", 0x2000000);\ndiff --git a/hw/display/cirrus_vga_isa.c b/hw/display/cirrus_vga_isa.c\nindex 76034a88605..b8052d1d8ed 100644\n--- a/hw/display/cirrus_vga_isa.c\n+++ b/hw/display/cirrus_vga_isa.c\n@@ -62,7 +62,7 @@ static void isa_cirrus_vga_realizefn(DeviceState *dev, Error **errp)\n     cirrus_init_common(&d->cirrus_vga, OBJECT(dev), CIRRUS_ID_CLGD5430, 0,\n                        isa_address_space(isadev),\n                        isa_address_space_io(isadev));\n-    s->con = graphic_console_init(dev, 0, s->hw_ops, s);\n+    s->con = qemu_graphic_console_create(dev, 0, s->hw_ops, s);\n     rom_add_vga(VGABIOS_CIRRUS_FILENAME);\n     /* XXX ISA-LFB support */\n     /* FIXME not qdev yet */\ndiff --git a/hw/display/dm163.c b/hw/display/dm163.c\nindex 9ea62cb4f76..afade0b98c3 100644\n--- a/hw/display/dm163.c\n+++ b/hw/display/dm163.c\n@@ -277,8 +277,8 @@ static uint32_t *update_display_of_row(DM163State *s, uint32_t *dest,\n         }\n     }\n \n-    dpy_gfx_update(s->console, 0, LED_SQUARE_SIZE * row,\n-                    RGB_MATRIX_NUM_COLS * LED_SQUARE_SIZE, LED_SQUARE_SIZE);\n+    qemu_console_update(s->console, 0, LED_SQUARE_SIZE * row,\n+                        RGB_MATRIX_NUM_COLS * LED_SQUARE_SIZE, LED_SQUARE_SIZE);\n     s->redraw &= ~(1 << row);\n     trace_dm163_redraw(s->redraw);\n \n@@ -322,7 +322,7 @@ static void dm163_realize(DeviceState *dev, Error **errp)\n     qdev_init_gpio_in(dev, dm163_en_b_gpio_handler, 1);\n     qdev_init_gpio_out_named(dev, &s->sout, \"sout\", 1);\n \n-    s->console = graphic_console_init(dev, 0, &dm163_ops, s);\n+    s->console = qemu_graphic_console_create(dev, 0, &dm163_ops, s);\n     qemu_console_resize(s->console, RGB_MATRIX_NUM_COLS * LED_SQUARE_SIZE,\n                         RGB_MATRIX_NUM_ROWS * LED_SQUARE_SIZE);\n }\ndiff --git a/hw/display/exynos4210_fimd.c b/hw/display/exynos4210_fimd.c\nindex a91f04aaf79..5133623ee2e 100644\n--- a/hw/display/exynos4210_fimd.c\n+++ b/hw/display/exynos4210_fimd.c\n@@ -1340,7 +1340,7 @@ static bool exynos4210_fimd_update(void *opaque)\n             fimd_copy_line_toqemu(global_width, s->ifb + global_width * line *\n                     RGBA_SIZE, d + global_width * line * bpp);\n         }\n-        dpy_gfx_update_full(s->console);\n+        qemu_console_update_full(s->console);\n     }\n     s->invalidate = false;\n     s->vidintcon[1] |= FIMD_VIDINT_INTFRMPEND;\n@@ -1964,7 +1964,7 @@ static void exynos4210_fimd_realize(DeviceState *dev, Error **errp)\n         return;\n     }\n \n-    s->console = graphic_console_init(dev, 0, &exynos4210_fimd_ops, s);\n+    s->console = qemu_graphic_console_create(dev, 0, &exynos4210_fimd_ops, s);\n }\n \n static void exynos4210_fimd_class_init(ObjectClass *klass, const void *data)\ndiff --git a/hw/display/g364fb.c b/hw/display/g364fb.c\nindex bd15f6f0acc..af54f1f9005 100644\n--- a/hw/display/g364fb.c\n+++ b/hw/display/g364fb.c\n@@ -191,8 +191,8 @@ static void g364fb_draw_graphic8(G364State *s)\n         } else {\n             int dy;\n             if (xmax || ymax) {\n-                dpy_gfx_update(s->con, xmin, ymin,\n-                               xmax - xmin + 1, ymax - ymin + 1);\n+                qemu_console_update(s->con, xmin, ymin,\n+                                   xmax - xmin + 1, ymax - ymin + 1);\n                 xmin = s->width;\n                 xmax = 0;\n                 ymin = s->height;\n@@ -211,7 +211,7 @@ static void g364fb_draw_graphic8(G364State *s)\n \n done:\n     if (xmax || ymax) {\n-        dpy_gfx_update(s->con, xmin, ymin, xmax - xmin + 1, ymax - ymin + 1);\n+        qemu_console_update(s->con, xmin, ymin, xmax - xmin + 1, ymax - ymin + 1);\n     }\n     g_free(snap);\n }\n@@ -234,7 +234,7 @@ static void g364fb_draw_blank(G364State *s)\n         d += surface_stride(surface);\n     }\n \n-    dpy_gfx_update_full(s->con);\n+    qemu_console_update_full(s->con);\n     s->blanked = 1;\n }\n \n@@ -478,7 +478,7 @@ static const GraphicHwOps g364fb_ops = {\n \n static void g364fb_init(DeviceState *dev, G364State *s)\n {\n-    s->con = graphic_console_init(dev, 0, &g364fb_ops, s);\n+    s->con = qemu_graphic_console_create(dev, 0, &g364fb_ops, s);\n \n     memory_region_init_io(&s->mem_ctrl, OBJECT(dev), &g364fb_ctrl_ops, s,\n                           \"ctrl\", 0x180000);\ndiff --git a/hw/display/jazz_led.c b/hw/display/jazz_led.c\nindex ee9758a94b5..84fe1058406 100644\n--- a/hw/display/jazz_led.c\n+++ b/hw/display/jazz_led.c\n@@ -217,7 +217,7 @@ static bool jazz_led_update_display(void *opaque)\n     }\n \n     s->state = REDRAW_NONE;\n-    dpy_gfx_update_full(s->con);\n+    qemu_console_update_full(s->con);\n \n     return true;\n }\n@@ -233,7 +233,7 @@ static void jazz_led_text_update(void *opaque, uint32_t *chardata)\n     LedState *s = opaque;\n     char buf[3];\n \n-    dpy_text_cursor(s->con, -1, -1);\n+    qemu_console_text_set_cursor(s->con, -1, -1);\n     qemu_console_resize(s->con, 2, 1);\n \n     /* TODO: draw the segments */\n@@ -243,7 +243,7 @@ static void jazz_led_text_update(void *opaque, uint32_t *chardata)\n     *chardata++ = ATTR2CHTYPE(buf[1], QEMU_COLOR_BLUE,\n                               QEMU_COLOR_BLACK, 1);\n \n-    dpy_text_update(s->con, 0, 0, 2, 1);\n+    qemu_console_text_update(s->con, 0, 0, 2, 1);\n }\n \n static int jazz_led_post_load(void *opaque, int version_id)\n@@ -284,7 +284,7 @@ static void jazz_led_realize(DeviceState *dev, Error **errp)\n {\n     LedState *s = JAZZ_LED(dev);\n \n-    s->con = graphic_console_init(dev, 0, &jazz_led_ops, s);\n+    s->con = qemu_graphic_console_create(dev, 0, &jazz_led_ops, s);\n }\n \n static void jazz_led_reset(DeviceState *d)\ndiff --git a/hw/display/macfb.c b/hw/display/macfb.c\nindex 848c3c282bd..f40a7ed9f52 100644\n--- a/hw/display/macfb.c\n+++ b/hw/display/macfb.c\n@@ -320,14 +320,14 @@ static void macfb_draw_graphic(MacfbState *s)\n             }\n         } else {\n             if (ymin >= 0) {\n-                dpy_gfx_update(s->con, 0, ymin, s->width, y - ymin);\n+                qemu_console_update(s->con, 0, ymin, s->width, y - ymin);\n                 ymin = -1;\n             }\n         }\n     }\n \n     if (ymin >= 0) {\n-        dpy_gfx_update(s->con, 0, ymin, s->width, y - ymin);\n+        qemu_console_update(s->con, 0, ymin, s->width, y - ymin);\n     }\n \n     g_free(snap);\n@@ -671,7 +671,7 @@ static bool macfb_common_realize(DeviceState *dev, MacfbState *s, Error **errp)\n     s->regs[DAFB_MODE_CTRL1 >> 2] = s->mode->mode_ctrl1;\n     s->regs[DAFB_MODE_CTRL2 >> 2] = s->mode->mode_ctrl2;\n \n-    s->con = graphic_console_init(dev, 0, &macfb_ops, s);\n+    s->con = qemu_graphic_console_create(dev, 0, &macfb_ops, s);\n     surface = qemu_console_surface(s->con);\n \n     if (surface_bits_per_pixel(surface) != 32) {\ndiff --git a/hw/display/next-fb.c b/hw/display/next-fb.c\nindex e758b223ef7..fa2e0d0da80 100644\n--- a/hw/display/next-fb.c\n+++ b/hw/display/next-fb.c\n@@ -89,7 +89,7 @@ static bool nextfb_update(void *opaque)\n                                src_width, dest_width, 0, 1, nextfb_draw_line,\n                                s, &first, &last);\n \n-    dpy_gfx_update(s->con, 0, 0, s->cols, s->rows);\n+    qemu_console_update(s->con, 0, 0, s->cols, s->rows);\n \n     return true;\n }\n@@ -117,7 +117,7 @@ static void nextfb_realize(DeviceState *dev, Error **errp)\n     s->cols = 1120;\n     s->rows = 832;\n \n-    s->con = graphic_console_init(dev, 0, &nextfb_ops, s);\n+    s->con = qemu_graphic_console_create(dev, 0, &nextfb_ops, s);\n     qemu_console_resize(s->con, s->cols, s->rows);\n }\n \ndiff --git a/hw/display/omap_lcdc.c b/hw/display/omap_lcdc.c\nindex 1e8385ebffb..2a8d5ffdd57 100644\n--- a/hw/display/omap_lcdc.c\n+++ b/hw/display/omap_lcdc.c\n@@ -320,7 +320,7 @@ static bool omap_update_display(void *opaque)\n                                &first, &last);\n \n     if (first >= 0) {\n-        dpy_gfx_update(omap_lcd->con, 0, first, width, last - first + 1);\n+        qemu_console_update(omap_lcd->con, 0, first, width, last - first + 1);\n     }\n     omap_lcd->invalidate = 0;\n \n@@ -504,7 +504,7 @@ struct omap_lcd_panel_s *omap_lcdc_init(MemoryRegion *sysmem,\n     memory_region_init_io(&s->iomem, NULL, &omap_lcdc_ops, s, \"omap.lcdc\", 0x100);\n     memory_region_add_subregion(sysmem, base, &s->iomem);\n \n-    s->con = graphic_console_init(NULL, 0, &omap_ops, s);\n+    s->con = qemu_graphic_console_create(NULL, 0, &omap_ops, s);\n \n     return s;\n }\ndiff --git a/hw/display/pl110.c b/hw/display/pl110.c\nindex e134ac28eb6..4a93cf4cda9 100644\n--- a/hw/display/pl110.c\n+++ b/hw/display/pl110.c\n@@ -303,7 +303,7 @@ static bool pl110_update_display(void *opaque)\n                                &first, &last);\n \n     if (first >= 0) {\n-        dpy_gfx_update(s->con, 0, first, s->cols, last - first + 1);\n+        qemu_console_update(s->con, 0, first, s->cols, last - first + 1);\n     }\n     s->invalidate = 0;\n     return true;\n@@ -557,7 +557,7 @@ static void pl110_realize(DeviceState *dev, Error **errp)\n     s->vblank_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL,\n                                    pl110_vblank_interrupt, s);\n     qdev_init_gpio_in(dev, pl110_mux_ctrl_set, 1);\n-    s->con = graphic_console_init(dev, 0, &pl110_gfx_ops, s);\n+    s->con = qemu_graphic_console_create(dev, 0, &pl110_gfx_ops, s);\n }\n \n static void pl110_init(Object *obj)\ndiff --git a/hw/display/qxl-render.c b/hw/display/qxl-render.c\nindex 5b4f8842011..7b692d5a854 100644\n--- a/hw/display/qxl-render.c\n+++ b/hw/display/qxl-render.c\n@@ -135,7 +135,7 @@ static void qxl_render_update_area_unlocked(PCIQXLDevice *qxl)\n                 (width,\n                  height);\n         }\n-        dpy_gfx_replace_surface(vga->con, surface);\n+        qemu_console_set_surface(vga->con, surface);\n     }\n \n     if (!qxl->guest_primary.data) {\n@@ -154,16 +154,16 @@ static void qxl_render_update_area_unlocked(PCIQXLDevice *qxl)\n             continue;\n         }\n         qxl_blit(qxl, qxl->dirty+i);\n-        dpy_gfx_update(vga->con,\n-                       qxl->dirty[i].left, qxl->dirty[i].top,\n-                       qxl->dirty[i].right - qxl->dirty[i].left,\n-                       qxl->dirty[i].bottom - qxl->dirty[i].top);\n+        qemu_console_update(vga->con,\n+                            qxl->dirty[i].left, qxl->dirty[i].top,\n+                            qxl->dirty[i].right - qxl->dirty[i].left,\n+                            qxl->dirty[i].bottom - qxl->dirty[i].top);\n     }\n     qxl->num_dirty_rects = 0;\n \n end:\n     if (qxl->render_update_cookie_num == 0) {\n-        graphic_hw_update_done(qxl->ssd.dcl.con);\n+        qemu_console_hw_update_done(qxl->ssd.dcl.con);\n     }\n }\n \ndiff --git a/hw/display/qxl.c b/hw/display/qxl.c\nindex 6c3a9b1e879..c4da51e4f4c 100644\n--- a/hw/display/qxl.c\n+++ b/hw/display/qxl.c\n@@ -1153,13 +1153,13 @@ static void qxl_enter_vga_mode(PCIQXLDevice *d)\n     }\n     trace_qxl_enter_vga_mode(d->id);\n     spice_qxl_driver_unload(&d->ssd.qxl);\n-    graphic_console_set_hwops(d->ssd.dcl.con, d->vga.hw_ops, &d->vga);\n-    update_displaychangelistener(&d->ssd.dcl, GUI_REFRESH_INTERVAL_DEFAULT);\n+    qemu_graphic_console_set_hwops(d->ssd.dcl.con, d->vga.hw_ops, &d->vga);\n+    qemu_console_listener_set_refresh(&d->ssd.dcl, GUI_REFRESH_INTERVAL_DEFAULT);\n     qemu_spice_create_host_primary(&d->ssd);\n     d->mode = QXL_MODE_VGA;\n     qemu_spice_display_switch(&d->ssd, d->ssd.ds);\n     vga_dirty_log_start(&d->vga);\n-    graphic_hw_update(d->vga.con);\n+    qemu_console_hw_update(d->vga.con);\n }\n \n static void qxl_exit_vga_mode(PCIQXLDevice *d)\n@@ -1168,8 +1168,8 @@ static void qxl_exit_vga_mode(PCIQXLDevice *d)\n         return;\n     }\n     trace_qxl_exit_vga_mode(d->id);\n-    graphic_console_set_hwops(d->ssd.dcl.con, &qxl_ops, d);\n-    update_displaychangelistener(&d->ssd.dcl, GUI_REFRESH_INTERVAL_IDLE);\n+    qemu_graphic_console_set_hwops(d->ssd.dcl.con, &qxl_ops, d);\n+    qemu_console_listener_set_refresh(&d->ssd.dcl, GUI_REFRESH_INTERVAL_IDLE);\n     vga_dirty_log_stop(&d->vga);\n     qxl_destroy_primary(d, QXL_SYNC);\n }\n@@ -2237,7 +2237,7 @@ static void qxl_realize_primary(PCIDevice *dev, Error **errp)\n     portio_list_add(&qxl->vga_port_list, pci_address_space_io(dev), 0x3b0);\n     qxl->have_vga = true;\n \n-    vga->con = graphic_console_init(DEVICE(dev), 0, &qxl_ops, qxl);\n+    vga->con = qemu_graphic_console_create(DEVICE(dev), 0, &qxl_ops, qxl);\n     qxl->id = qemu_console_get_index(vga->con); /* == channel_id */\n     if (qxl->id != 0) {\n         error_setg(errp, \"primary qxl-vga device must be console 0 \"\n@@ -2262,7 +2262,7 @@ static void qxl_realize_secondary(PCIDevice *dev, Error **errp)\n     memory_region_init_ram(&qxl->vga.vram, OBJECT(dev), \"qxl.vgavram\",\n                            qxl->vga.vram_size, &error_fatal);\n     qxl->vga.vram_ptr = memory_region_get_ram_ptr(&qxl->vga.vram);\n-    qxl->vga.con = graphic_console_init(DEVICE(dev), 0, &qxl_ops, qxl);\n+    qxl->vga.con = qemu_graphic_console_create(DEVICE(dev), 0, &qxl_ops, qxl);\n     qxl->ssd.dcl.con = qxl->vga.con;\n     qxl->id = qemu_console_get_index(qxl->vga.con); /* == channel_id */\n \ndiff --git a/hw/display/ramfb-standalone.c b/hw/display/ramfb-standalone.c\nindex 27f0ba19f90..8e8ba37514a 100644\n--- a/hw/display/ramfb-standalone.c\n+++ b/hw/display/ramfb-standalone.c\n@@ -41,7 +41,7 @@ static void ramfb_realizefn(DeviceState *dev, Error **errp)\n {\n     RAMFBStandaloneState *ramfb = RAMFB(dev);\n \n-    ramfb->con = graphic_console_init(dev, 0, &wrapper_ops, dev);\n+    ramfb->con = qemu_graphic_console_create(dev, 0, &wrapper_ops, dev);\n     ramfb->state = ramfb_setup(ramfb->use_legacy_x86_rom, errp);\n }\n \ndiff --git a/hw/display/ramfb.c b/hw/display/ramfb.c\nindex 50c25706a52..7a88f934e11 100644\n--- a/hw/display/ramfb.c\n+++ b/hw/display/ramfb.c\n@@ -111,12 +111,12 @@ void ramfb_display_update(QemuConsole *con, RAMFBState *s)\n     }\n \n     if (s->ds) {\n-        dpy_gfx_replace_surface(con, s->ds);\n+        qemu_console_set_surface(con, s->ds);\n         s->ds = NULL;\n     }\n \n     /* simple full screen update */\n-    dpy_gfx_update_full(con);\n+    qemu_console_update_full(con);\n }\n \n static int ramfb_post_load(void *opaque, int version_id)\ndiff --git a/hw/display/sm501.c b/hw/display/sm501.c\nindex a3993ceba29..af870048372 100644\n--- a/hw/display/sm501.c\n+++ b/hw/display/sm501.c\n@@ -1822,7 +1822,7 @@ static bool sm501_update_display(void *opaque)\n         } else {\n             if (y_start >= 0) {\n                 /* flush to display */\n-                dpy_gfx_update(s->con, 0, y_start, width, y - y_start);\n+                qemu_console_update(s->con, 0, y_start, width, y - y_start);\n                 y_start = -1;\n             }\n         }\n@@ -1831,7 +1831,7 @@ static bool sm501_update_display(void *opaque)\n \n     /* complete flush to display */\n     if (y_start >= 0) {\n-        dpy_gfx_update(s->con, 0, y_start, width, y - y_start);\n+        qemu_console_update(s->con, 0, y_start, width, y - y_start);\n     }\n \n     return true;\n@@ -1936,7 +1936,7 @@ static void sm501_init(SM501State *s, DeviceState *dev,\n                                 &s->twoD_engine_region);\n \n     /* create qemu graphic console */\n-    s->con = graphic_console_init(dev, 0, &sm501_ops, s);\n+    s->con = qemu_graphic_console_create(dev, 0, &sm501_ops, s);\n }\n \n static const VMStateDescription vmstate_sm501_state = {\ndiff --git a/hw/display/ssd0303.c b/hw/display/ssd0303.c\nindex 229856cc427..4e3dede33f1 100644\n--- a/hw/display/ssd0303.c\n+++ b/hw/display/ssd0303.c\n@@ -268,7 +268,7 @@ static bool ssd0303_update_display(void *opaque)\n         }\n     }\n     s->redraw = 0;\n-    dpy_gfx_update(s->con, 0, 0, 96 * MAGNIFY, 16 * MAGNIFY);\n+    qemu_console_update(s->con, 0, 0, 96 * MAGNIFY, 16 * MAGNIFY);\n \n     return true;\n }\n@@ -309,7 +309,7 @@ static void ssd0303_realize(DeviceState *dev, Error **errp)\n {\n     ssd0303_state *s = SSD0303(dev);\n \n-    s->con = graphic_console_init(dev, 0, &ssd0303_ops, s);\n+    s->con = qemu_graphic_console_create(dev, 0, &ssd0303_ops, s);\n     qemu_console_resize(s->con, 96 * MAGNIFY, 16 * MAGNIFY);\n }\n \ndiff --git a/hw/display/ssd0323.c b/hw/display/ssd0323.c\nindex 67db16086c8..9309d4d10c4 100644\n--- a/hw/display/ssd0323.c\n+++ b/hw/display/ssd0323.c\n@@ -270,7 +270,8 @@ static bool ssd0323_update_display(void *opaque)\n         }\n     }\n     s->redraw = 0;\n-    dpy_gfx_update(s->con, 0, 0, 128 * MAGNIFY, 64 * MAGNIFY);\n+    qemu_console_update(s->con, 0, 0, 128 * MAGNIFY, 64 * MAGNIFY);\n+\n     return true;\n }\n \n@@ -356,7 +357,7 @@ static void ssd0323_realize(SSIPeripheral *d, Error **errp)\n \n     s->col_end = 63;\n     s->row_end = 79;\n-    s->con = graphic_console_init(dev, 0, &ssd0323_ops, s);\n+    s->con = qemu_graphic_console_create(dev, 0, &ssd0323_ops, s);\n     qemu_console_resize(s->con, 128 * MAGNIFY, 64 * MAGNIFY);\n \n     qdev_init_gpio_in(dev, ssd0323_cd, 1);\ndiff --git a/hw/display/tcx.c b/hw/display/tcx.c\nindex cedbf5c7acd..2c33a9c4a32 100644\n--- a/hw/display/tcx.c\n+++ b/hw/display/tcx.c\n@@ -243,8 +243,7 @@ static bool tcx_update_display(void *opaque)\n         } else {\n             if (y_start >= 0) {\n                 /* flush to display */\n-                dpy_gfx_update(ts->con, 0, y_start,\n-                               ts->width, y - y_start);\n+                qemu_console_update(ts->con, 0, y_start, ts->width, y - y_start);\n                 y_start = -1;\n             }\n         }\n@@ -253,8 +252,7 @@ static bool tcx_update_display(void *opaque)\n     }\n     if (y_start >= 0) {\n         /* flush to display */\n-        dpy_gfx_update(ts->con, 0, y_start,\n-                       ts->width, y - y_start);\n+        qemu_console_update(ts->con, 0, y_start, ts->width, y - y_start);\n     }\n     g_free(snap);\n     return true;\n@@ -297,8 +295,7 @@ static bool tcx24_update_display(void *opaque)\n         } else {\n             if (y_start >= 0) {\n                 /* flush to display */\n-                dpy_gfx_update(ts->con, 0, y_start,\n-                               ts->width, y - y_start);\n+                qemu_console_update(ts->con, 0, y_start, ts->width, y - y_start);\n                 y_start = -1;\n             }\n         }\n@@ -309,8 +306,7 @@ static bool tcx24_update_display(void *opaque)\n     }\n     if (y_start >= 0) {\n         /* flush to display */\n-        dpy_gfx_update(ts->con, 0, y_start,\n-                       ts->width, y - y_start);\n+        qemu_console_update(ts->con, 0, y_start, ts->width, y - y_start);\n     }\n     g_free(snap);\n     return true;\n@@ -864,9 +860,9 @@ static void tcx_realize(DeviceState *dev, Error **errp)\n     sysbus_init_irq(sbd, &s->irq);\n \n     if (s->depth == 8) {\n-        s->con = graphic_console_init(dev, 0, &tcx_ops, s);\n+        s->con = qemu_graphic_console_create(dev, 0, &tcx_ops, s);\n     } else {\n-        s->con = graphic_console_init(dev, 0, &tcx24_ops, s);\n+        s->con = qemu_graphic_console_create(dev, 0, &tcx24_ops, s);\n     }\n     s->thcmisc = 0;\n \ndiff --git a/hw/display/vga-isa.c b/hw/display/vga-isa.c\nindex 5f55c884a1b..2cccb0ef12e 100644\n--- a/hw/display/vga-isa.c\n+++ b/hw/display/vga-isa.c\n@@ -79,7 +79,7 @@ static void vga_isa_realizefn(DeviceState *dev, Error **errp)\n                                         0x000a0000,\n                                         vga_io_memory, 1);\n     memory_region_set_coalescing(vga_io_memory);\n-    s->con = graphic_console_init(dev, 0, s->hw_ops, s);\n+    s->con = qemu_graphic_console_create(dev, 0, s->hw_ops, s);\n \n     memory_region_add_subregion(isa_address_space(isadev),\n                                 VBE_DISPI_LFB_PHYSICAL_ADDRESS,\ndiff --git a/hw/display/vga-mmio.c b/hw/display/vga-mmio.c\nindex 1a9608d865f..3cd64951c09 100644\n--- a/hw/display/vga-mmio.c\n+++ b/hw/display/vga-mmio.c\n@@ -108,7 +108,7 @@ static void vga_mmio_realizefn(DeviceState *dev, Error **errp)\n     }\n \n     sysbus_init_mmio(sbd, &s->vga.vram);\n-    s->vga.con = graphic_console_init(dev, 0, s->vga.hw_ops, &s->vga);\n+    s->vga.con = qemu_graphic_console_create(dev, 0, s->vga.hw_ops, &s->vga);\n }\n \n static const Property vga_mmio_properties[] = {\ndiff --git a/hw/display/vga-pci.c b/hw/display/vga-pci.c\nindex 4e68dd57a17..d089847bdae 100644\n--- a/hw/display/vga-pci.c\n+++ b/hw/display/vga-pci.c\n@@ -247,7 +247,7 @@ static void pci_std_vga_realize(PCIDevice *dev, Error **errp)\n     vga_init(s, OBJECT(dev), pci_address_space(dev), pci_address_space_io(dev),\n              true);\n \n-    s->con = graphic_console_init(DEVICE(dev), 0, s->hw_ops, s);\n+    s->con = qemu_graphic_console_create(DEVICE(dev), 0, s->hw_ops, s);\n \n     /* XXX: VGA_RAM_SIZE must be a power of two */\n     pci_register_bar(&d->dev, 0, PCI_BASE_ADDRESS_MEM_PREFETCH, &s->vram);\n@@ -282,7 +282,7 @@ static void pci_secondary_vga_realize(PCIDevice *dev, Error **errp)\n     if (!vga_common_init(s, OBJECT(dev), errp)) {\n         return;\n     }\n-    s->con = graphic_console_init(DEVICE(dev), 0, s->hw_ops, s);\n+    s->con = qemu_graphic_console_create(DEVICE(dev), 0, s->hw_ops, s);\n \n     /* mmio bar */\n     memory_region_init_io(&d->mmio, OBJECT(dev), &unassigned_io_ops, NULL,\n@@ -306,7 +306,7 @@ static void pci_secondary_vga_exit(PCIDevice *dev)\n     PCIVGAState *d = PCI_VGA(dev);\n     VGACommonState *s = &d->vga;\n \n-    graphic_console_close(s->con);\n+    qemu_graphic_console_close(s->con);\n     memory_region_del_subregion(&d->mmio, &d->mrs[0]);\n     memory_region_del_subregion(&d->mmio, &d->mrs[1]);\n     if (d->flags & (1 << PCI_VGA_FLAG_ENABLE_QEXT)) {\ndiff --git a/hw/display/vga.c b/hw/display/vga.c\nindex 409c02272a3..3f456b96608 100644\n--- a/hw/display/vga.c\n+++ b/hw/display/vga.c\n@@ -1246,7 +1246,7 @@ static void vga_draw_text(VGACommonState *s, int full_update)\n         s->last_scr_height = height * cheight;\n         qemu_console_resize(s->con, s->last_scr_width, s->last_scr_height);\n         surface = qemu_console_surface(s->con);\n-        dpy_text_resize(s->con, width, height);\n+        qemu_console_text_resize(s->con, width, height);\n         s->last_depth = 0;\n         s->last_width = width;\n         s->last_height = height;\n@@ -1365,8 +1365,8 @@ static void vga_draw_text(VGACommonState *s, int full_update)\n             ch_attr_ptr++;\n         }\n         if (cx_max != -1) {\n-            dpy_gfx_update(s->con, cx_min * cw, cy * cheight,\n-                           (cx_max - cx_min + 1) * cw, cheight);\n+            qemu_console_update(s->con, cx_min * cw, cy * cheight,\n+                                (cx_max - cx_min + 1) * cw, cheight);\n         }\n         dest += linesize * cheight;\n         line1 = line + cheight;\n@@ -1610,7 +1610,7 @@ static void vga_draw_graphic(VGACommonState *s, int full_update)\n      */\n     format = qemu_default_pixman_format(depth, !byteswap);\n     if (format) {\n-        allocate_surface = !dpy_gfx_check_format(s->con, format)\n+        allocate_surface = !qemu_console_check_format(s->con, format)\n             || s->force_shadow || force_shadow;\n     } else {\n         allocate_surface = true;\n@@ -1647,7 +1647,7 @@ static void vga_draw_graphic(VGACommonState *s, int full_update)\n             surface = qemu_create_displaysurface_from(disp_width,\n                     height, format, s->params.line_offset,\n                     s->vram_ptr + (s->params.start_addr * 4));\n-            dpy_gfx_replace_surface(s->con, surface);\n+            qemu_console_set_surface(s->con, surface);\n         } else {\n             qemu_console_resize(s->con, disp_width, height);\n             surface = qemu_console_surface(s->con);\n@@ -1720,8 +1720,7 @@ static void vga_draw_graphic(VGACommonState *s, int full_update)\n         } else {\n             if (y_start >= 0) {\n                 /* flush to display */\n-                dpy_gfx_update(s->con, 0, y_start,\n-                               disp_width, y - y_start);\n+                qemu_console_update(s->con, 0, y_start, disp_width, y - y_start);\n                 y_start = -1;\n             }\n         }\n@@ -1745,8 +1744,7 @@ static void vga_draw_graphic(VGACommonState *s, int full_update)\n     }\n     if (y_start >= 0) {\n         /* flush to display */\n-        dpy_gfx_update(s->con, 0, y_start,\n-                       disp_width, y - y_start);\n+        qemu_console_update(s->con, 0, y_start, disp_width, y - y_start);\n     }\n     g_free(snap);\n     memset(s->invalidated_y_table, 0, sizeof(s->invalidated_y_table));\n@@ -1767,7 +1765,7 @@ static void vga_draw_blank(VGACommonState *s, int full_update)\n         /* unshare buffer, otherwise the blanking corrupts vga vram */\n         surface = qemu_create_displaysurface(s->last_scr_width,\n                                              s->last_scr_height);\n-        dpy_gfx_replace_surface(s->con, surface);\n+        qemu_console_set_surface(s->con, surface);\n     }\n \n     w = s->last_scr_width * surface_bytes_per_pixel(surface);\n@@ -1776,7 +1774,7 @@ static void vga_draw_blank(VGACommonState *s, int full_update)\n         memset(d, 0, w);\n         d += surface_stride(surface);\n     }\n-    dpy_gfx_update_full(s->con);\n+    qemu_console_update_full(s->con);\n }\n \n #define GMODE_TEXT     0\n@@ -1967,7 +1965,7 @@ static void vga_update_text(void *opaque, uint32_t *chardata)\n             s->last_scr_width = width * cw;\n             s->last_scr_height = height * cheight;\n             qemu_console_resize(s->con, s->last_scr_width, s->last_scr_height);\n-            dpy_text_resize(s->con, width, height);\n+            qemu_console_text_resize(s->con, width, height);\n             s->last_depth = 0;\n             s->last_width = width;\n             s->last_height = height;\n@@ -1992,11 +1990,11 @@ static void vga_update_text(void *opaque, uint32_t *chardata)\n             s->cr[VGA_CRTC_CURSOR_END] != s->cursor_end || full_update) {\n             cursor_visible = !(s->cr[VGA_CRTC_CURSOR_START] & 0x20);\n             if (cursor_visible && cursor_offset < size && cursor_offset >= 0)\n-                dpy_text_cursor(s->con,\n-                                TEXTMODE_X(cursor_offset),\n-                                TEXTMODE_Y(cursor_offset));\n+                qemu_console_text_set_cursor(s->con,\n+                                             TEXTMODE_X(cursor_offset),\n+                                             TEXTMODE_Y(cursor_offset));\n             else\n-                dpy_text_cursor(s->con, -1, -1);\n+                qemu_console_text_set_cursor(s->con, -1, -1);\n             s->cursor_offset = cursor_offset;\n             s->cursor_start = s->cr[VGA_CRTC_CURSOR_START];\n             s->cursor_end = s->cr[VGA_CRTC_CURSOR_END];\n@@ -2009,7 +2007,7 @@ static void vga_update_text(void *opaque, uint32_t *chardata)\n             for (i = 0; i < size; src ++, dst ++, i ++)\n                 *dst = VMEM2CHTYPE(le32_to_cpu(*src));\n \n-            dpy_text_update(s->con, 0, 0, width, height);\n+            qemu_console_text_update(s->con, 0, 0, width, height);\n         } else {\n             c_max = 0;\n \n@@ -2032,7 +2030,7 @@ static void vga_update_text(void *opaque, uint32_t *chardata)\n \n             if (c_min <= c_max) {\n                 i = TEXTMODE_Y(c_min);\n-                dpy_text_update(s->con, 0, i, width, TEXTMODE_Y(c_max) - i + 1);\n+                qemu_console_text_update(s->con, 0, i, width, TEXTMODE_Y(c_max) - i + 1);\n             }\n         }\n \n@@ -2057,8 +2055,8 @@ static void vga_update_text(void *opaque, uint32_t *chardata)\n     /* Display a message */\n     s->last_width = 60;\n     s->last_height = height = 3;\n-    dpy_text_cursor(s->con, -1, -1);\n-    dpy_text_resize(s->con, s->last_width, height);\n+    qemu_console_text_set_cursor(s->con, -1, -1);\n+    qemu_console_text_resize(s->con, s->last_width, height);\n \n     for (dst = chardata, i = 0; i < s->last_width * height; i ++)\n         *dst++ = ' ';\n@@ -2070,7 +2068,7 @@ static void vga_update_text(void *opaque, uint32_t *chardata)\n         *dst++ = ATTR2CHTYPE(msg_buffer[i], QEMU_COLOR_BLUE,\n                              QEMU_COLOR_BLACK, 1);\n \n-    dpy_text_update(s->con, 0, 0, s->last_width, height);\n+    qemu_console_text_update(s->con, 0, 0, s->last_width, height);\n }\n \n static uint64_t vga_mem_read(void *opaque, hwaddr addr,\ndiff --git a/hw/display/vhost-user-gpu.c b/hw/display/vhost-user-gpu.c\nindex 3f6fb7a8033..6e5e6540a46 100644\n--- a/hw/display/vhost-user-gpu.c\n+++ b/hw/display/vhost-user-gpu.c\n@@ -142,11 +142,11 @@ vhost_user_gpu_handle_cursor(VhostUserGPU *g, VhostUserGpuMsg *msg)\n         memcpy(s->current_cursor->data, up->data,\n                64 * 64 * sizeof(uint32_t));\n \n-        dpy_cursor_define(s->con, s->current_cursor);\n+        qemu_console_set_cursor(s->con, s->current_cursor);\n     }\n \n-    dpy_mouse_set(s->con, pos->x, pos->y,\n-                  msg->request != VHOST_USER_GPU_CURSOR_POS_HIDE);\n+    qemu_console_set_mouse(s->con, pos->x, pos->y,\n+                           msg->request != VHOST_USER_GPU_CURSOR_POS_HIDE);\n }\n \n static void\n@@ -238,7 +238,7 @@ vhost_user_gpu_handle_display(VhostUserGPU *g, VhostUserGpuMsg *msg)\n         con = s->con;\n \n         if (m->width == 0) {\n-            dpy_gfx_replace_surface(con, NULL);\n+            qemu_console_set_surface(con, NULL);\n         } else {\n             s->ds = qemu_create_displaysurface(m->width, m->height);\n             /* replace surface on next update */\n@@ -269,12 +269,12 @@ vhost_user_gpu_handle_display(VhostUserGPU *g, VhostUserGpuMsg *msg)\n \n         if (dmabuf) {\n             qemu_dmabuf_close(dmabuf);\n-            dpy_gl_release_dmabuf(con, dmabuf);\n+            qemu_console_gl_release_dmabuf(con, dmabuf);\n             g_clear_pointer(&dmabuf, qemu_dmabuf_free);\n         }\n \n         if (fd == -1) {\n-            dpy_gl_scanout_disable(con);\n+            qemu_console_gl_scanout_disable(con);\n             g->dmabuf[m->scanout_id] = NULL;\n             break;\n         }\n@@ -291,7 +291,7 @@ vhost_user_gpu_handle_display(VhostUserGPU *g, VhostUserGpuMsg *msg)\n                                  &fd, 1, false, m->fd_flags &\n                                  VIRTIO_GPU_RESOURCE_FLAG_Y_0_TOP);\n \n-        dpy_gl_scanout_dmabuf(con, dmabuf);\n+        qemu_console_gl_scanout_dmabuf(con, dmabuf);\n         g->dmabuf[m->scanout_id] = dmabuf;\n         break;\n     }\n@@ -306,13 +306,13 @@ vhost_user_gpu_handle_display(VhostUserGPU *g, VhostUserGpuMsg *msg)\n         }\n \n         con = g->parent_obj.scanout[m->scanout_id].con;\n-        if (!console_has_gl(con)) {\n+        if (!qemu_console_has_gl(con)) {\n             error_report(\"console doesn't support GL!\");\n             vhost_user_gpu_unblock(g);\n             break;\n         }\n         g->backend_blocked = true;\n-        dpy_gl_update(con, m->x, m->y, m->width, m->height);\n+        qemu_console_gl_update(con, m->x, m->y, m->width, m->height);\n         break;\n     }\n #ifdef CONFIG_PIXMAN\n@@ -337,9 +337,9 @@ vhost_user_gpu_handle_display(VhostUserGPU *g, VhostUserGpuMsg *msg)\n \n         pixman_image_unref(image);\n         if (qemu_console_surface(con) != s->ds) {\n-            dpy_gfx_replace_surface(con, s->ds);\n+            qemu_console_set_surface(con, s->ds);\n         } else {\n-            dpy_gfx_update(con, m->x, m->y, m->width, m->height);\n+            qemu_console_update(con, m->x, m->y, m->width, m->height);\n         }\n         break;\n     }\ndiff --git a/hw/display/virtio-gpu-base.c b/hw/display/virtio-gpu-base.c\nindex bdc24492850..a68b1848295 100644\n--- a/hw/display/virtio-gpu-base.c\n+++ b/hw/display/virtio-gpu-base.c\n@@ -253,7 +253,7 @@ virtio_gpu_base_device_realize(DeviceState *qdev,\n     g->hw_ops = &virtio_gpu_ops;\n     for (i = 0; i < g->conf.max_outputs; i++) {\n         g->scanout[i].con =\n-            graphic_console_init(DEVICE(g), i, &virtio_gpu_ops, g);\n+            qemu_graphic_console_create(DEVICE(g), i, &virtio_gpu_ops, g);\n     }\n \n     return true;\ndiff --git a/hw/display/virtio-gpu-rutabaga.c b/hw/display/virtio-gpu-rutabaga.c\nindex ebb6c783fb0..6ff12639012 100644\n--- a/hw/display/virtio-gpu-rutabaga.c\n+++ b/hw/display/virtio-gpu-rutabaga.c\n@@ -282,7 +282,7 @@ rutabaga_cmd_resource_flush(VirtIOGPU *g, struct virtio_gpu_ctrl_command *cmd)\n                                              rf.resource_id, &transfer,\n                                              &transfer_iovec);\n     CHECK(!result, cmd);\n-    dpy_gfx_update_full(scanout->con);\n+    qemu_console_update_full(scanout->con);\n }\n \n static void\n@@ -306,8 +306,8 @@ rutabaga_cmd_set_scanout(VirtIOGPU *g, struct virtio_gpu_ctrl_command *cmd)\n     scanout = &vb->scanout[ss.scanout_id];\n \n     if (ss.resource_id == 0) {\n-        dpy_gfx_replace_surface(scanout->con, NULL);\n-        dpy_gl_scanout_disable(scanout->con);\n+        qemu_console_set_surface(scanout->con, NULL);\n+        qemu_console_gl_scanout_disable(scanout->con);\n         return;\n     }\n \n@@ -331,8 +331,8 @@ rutabaga_cmd_set_scanout(VirtIOGPU *g, struct virtio_gpu_ctrl_command *cmd)\n \n     /* realloc the surface ptr */\n     scanout->ds = qemu_create_displaysurface_pixman(res->image);\n-    dpy_gfx_replace_surface(scanout->con, NULL);\n-    dpy_gfx_replace_surface(scanout->con, scanout->ds);\n+    qemu_console_set_surface(scanout->con, NULL);\n+    qemu_console_set_surface(scanout->con, scanout->ds);\n     res->scanout_bitmask = ss.scanout_id;\n }\n \ndiff --git a/hw/display/virtio-gpu-udmabuf.c b/hw/display/virtio-gpu-udmabuf.c\nindex 74b6a7766af..d5ac1cfca0e 100644\n--- a/hw/display/virtio-gpu-udmabuf.c\n+++ b/hw/display/virtio-gpu-udmabuf.c\n@@ -156,7 +156,7 @@ static void virtio_gpu_free_dmabuf(VirtIOGPU *g, VGPUDMABuf *dmabuf)\n     struct virtio_gpu_scanout *scanout;\n \n     scanout = &g->parent_obj.scanout[dmabuf->scanout_id];\n-    dpy_gl_release_dmabuf(scanout->con, dmabuf->buf);\n+    qemu_console_gl_release_dmabuf(scanout->con, dmabuf->buf);\n     g_clear_pointer(&dmabuf->buf, qemu_dmabuf_free);\n     QTAILQ_REMOVE(&g->dmabuf.bufs, dmabuf, next);\n     g_free(dmabuf);\n@@ -232,7 +232,7 @@ int virtio_gpu_update_dmabuf(VirtIOGPU *g,\n     height = qemu_dmabuf_get_height(new_primary->buf);\n     g->dmabuf.primary[scanout_id] = new_primary;\n     qemu_console_resize(scanout->con, width, height);\n-    dpy_gl_scanout_dmabuf(scanout->con, new_primary->buf);\n+    qemu_console_gl_scanout_dmabuf(scanout->con, new_primary->buf);\n \n     if (old_primary) {\n         virtio_gpu_free_dmabuf(g, old_primary);\ndiff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c\nindex b7a2d160ddd..f8437616779 100644\n--- a/hw/display/virtio-gpu-virgl.c\n+++ b/hw/display/virtio-gpu-virgl.c\n@@ -521,7 +521,7 @@ static void virtio_gpu_rect_update(VirtIOGPU *g, int idx, int x, int y,\n         return;\n     }\n \n-    dpy_gl_update(g->parent_obj.scanout[idx].con, x, y, width, height);\n+    qemu_console_gl_update(g->parent_obj.scanout[idx].con, x, y, width, height);\n }\n \n static void virgl_cmd_resource_flush(VirtIOGPU *g,\n@@ -584,16 +584,15 @@ static void virgl_cmd_set_scanout(VirtIOGPU *g,\n         qemu_console_resize(g->parent_obj.scanout[ss.scanout_id].con,\n                             ss.r.width, ss.r.height);\n         virgl_renderer_force_ctx_0();\n-        dpy_gl_scanout_texture(\n+        qemu_console_gl_scanout_texture(\n             g->parent_obj.scanout[ss.scanout_id].con, info.tex_id,\n             info.flags & VIRTIO_GPU_RESOURCE_FLAG_Y_0_TOP,\n             info.width, info.height,\n             ss.r.x, ss.r.y, ss.r.width, ss.r.height,\n             d3d_tex2d);\n     } else {\n-        dpy_gfx_replace_surface(\n-            g->parent_obj.scanout[ss.scanout_id].con, NULL);\n-        dpy_gl_scanout_disable(g->parent_obj.scanout[ss.scanout_id].con);\n+        qemu_console_set_surface(g->parent_obj.scanout[ss.scanout_id].con, NULL);\n+        qemu_console_gl_scanout_disable(g->parent_obj.scanout[ss.scanout_id].con);\n     }\n     g->parent_obj.scanout[ss.scanout_id].resource_id = ss.resource_id;\n }\n@@ -1315,7 +1314,7 @@ virgl_create_context(void *opaque, int scanout_idx,\n     qparams.major_ver = params->major_ver;\n     qparams.minor_ver = params->minor_ver;\n \n-    ctx = dpy_gl_ctx_create(g->parent_obj.scanout[scanout_idx].con, &qparams);\n+    ctx = qemu_console_gl_ctx_create(g->parent_obj.scanout[scanout_idx].con, &qparams);\n     return (virgl_renderer_gl_context)ctx;\n }\n \n@@ -1324,7 +1323,7 @@ static void virgl_destroy_context(void *opaque, virgl_renderer_gl_context ctx)\n     VirtIOGPU *g = opaque;\n     QEMUGLContext qctx = (QEMUGLContext)ctx;\n \n-    dpy_gl_ctx_destroy(g->parent_obj.scanout[0].con, qctx);\n+    qemu_console_gl_ctx_destroy(g->parent_obj.scanout[0].con, qctx);\n }\n \n static int virgl_make_context_current(void *opaque, int scanout_idx,\n@@ -1333,8 +1332,7 @@ static int virgl_make_context_current(void *opaque, int scanout_idx,\n     VirtIOGPU *g = opaque;\n     QEMUGLContext qctx = (QEMUGLContext)ctx;\n \n-    return dpy_gl_ctx_make_current(g->parent_obj.scanout[scanout_idx].con,\n-                                   qctx);\n+    return qemu_console_gl_ctx_make_current(g->parent_obj.scanout[scanout_idx].con, qctx);\n }\n \n static struct virgl_renderer_callbacks virtio_gpu_3d_cbs = {\n@@ -1399,8 +1397,8 @@ void virtio_gpu_virgl_reset_scanout(VirtIOGPU *g)\n     int i;\n \n     for (i = 0; i < g->parent_obj.conf.max_outputs; i++) {\n-        dpy_gfx_replace_surface(g->parent_obj.scanout[i].con, NULL);\n-        dpy_gl_scanout_disable(g->parent_obj.scanout[i].con);\n+        qemu_console_set_surface(g->parent_obj.scanout[i].con, NULL);\n+        qemu_console_gl_scanout_disable(g->parent_obj.scanout[i].con);\n     }\n }\n \ndiff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c\nindex b998ce8324d..aad45e6fc0f 100644\n--- a/hw/display/virtio-gpu.c\n+++ b/hw/display/virtio-gpu.c\n@@ -103,14 +103,14 @@ static void update_cursor(VirtIOGPU *g, struct virtio_gpu_update_cursor *cursor)\n         if (cursor->resource_id > 0) {\n             vgc->update_cursor_data(g, s, cursor->resource_id);\n         }\n-        dpy_cursor_define(s->con, s->current_cursor);\n+        qemu_console_set_cursor(s->con, s->current_cursor);\n \n         s->cursor = *cursor;\n     } else {\n         s->cursor.pos.x = cursor->pos.x;\n         s->cursor.pos.y = cursor->pos.y;\n     }\n-    dpy_mouse_set(s->con, cursor->pos.x, cursor->pos.y, cursor->resource_id);\n+    qemu_console_set_mouse(s->con, cursor->pos.x, cursor->pos.y, cursor->resource_id);\n }\n \n struct virtio_gpu_simple_resource *\n@@ -390,7 +390,7 @@ void virtio_gpu_disable_scanout(VirtIOGPU *g, int scanout_id)\n         res->scanout_bitmask &= ~(1 << scanout_id);\n     }\n \n-    dpy_gfx_replace_surface(scanout->con, NULL);\n+    qemu_console_set_surface(scanout->con, NULL);\n     scanout->resource_id = 0;\n     scanout->ds = NULL;\n     scanout->width = 0;\n@@ -531,8 +531,8 @@ static void virtio_gpu_resource_flush(VirtIOGPU *g,\n                 rf.r.y + rf.r.height >= scanout->y) {\n                 within_bounds = true;\n \n-                if (console_has_gl(scanout->con)) {\n-                    dpy_gl_update(scanout->con, 0, 0, scanout->width,\n+                if (qemu_console_has_gl(scanout->con)) {\n+                    qemu_console_gl_update(scanout->con, 0, 0, scanout->width,\n                                   scanout->height);\n                     update_submitted = true;\n                 }\n@@ -582,8 +582,8 @@ static void virtio_gpu_resource_flush(VirtIOGPU *g,\n         /* work out the area we need to update for each console */\n         if (qemu_rect_intersect(&flush_rect, &rect, &rect)) {\n             qemu_rect_translate(&rect, -scanout->x, -scanout->y);\n-            dpy_gfx_update(g->parent_obj.scanout[i].con,\n-                           rect.x, rect.y, rect.width, rect.height);\n+            qemu_console_update(g->parent_obj.scanout[i].con,\n+                                rect.x, rect.y, rect.width, rect.height);\n         }\n     }\n }\n@@ -649,7 +649,7 @@ static bool virtio_gpu_do_set_scanout(VirtIOGPU *g,\n     g->parent_obj.enable = 1;\n \n     if (res->blob) {\n-        if (console_has_gl(scanout->con)) {\n+        if (qemu_console_has_gl(scanout->con)) {\n             if (!virtio_gpu_update_dmabuf(g, scanout_id, res, fb, r)) {\n                 virtio_gpu_update_scanout(g, scanout_id, res, fb, r);\n             } else {\n@@ -665,7 +665,7 @@ static bool virtio_gpu_do_set_scanout(VirtIOGPU *g,\n     }\n \n     /* create a surface for this scanout */\n-    if ((res->blob && !console_has_gl(scanout->con)) ||\n+    if ((res->blob && !qemu_console_has_gl(scanout->con)) ||\n         !scanout->ds ||\n         surface_data(scanout->ds) != data + fb->offset ||\n         scanout->width != r->width ||\n@@ -686,7 +686,7 @@ static bool virtio_gpu_do_set_scanout(VirtIOGPU *g,\n         qemu_displaysurface_set_share_handle(scanout->ds, res->share_handle, fb->offset);\n \n         pixman_image_unref(rect);\n-        dpy_gfx_replace_surface(g->parent_obj.scanout[scanout_id].con,\n+        qemu_console_set_surface(g->parent_obj.scanout[scanout_id].con,\n                                 scanout->ds);\n     }\n \n@@ -1483,10 +1483,10 @@ static int virtio_gpu_post_load(void *opaque, int version_id)\n             }\n             scanout->ds = qemu_create_displaysurface_pixman(res->image);\n             qemu_displaysurface_set_share_handle(scanout->ds, res->share_handle, 0);\n-            dpy_gfx_replace_surface(scanout->con, scanout->ds);\n+            qemu_console_set_surface(scanout->con, scanout->ds);\n         }\n \n-        dpy_gfx_update_full(scanout->con);\n+        qemu_console_update_full(scanout->con);\n         if (scanout->cursor.resource_id) {\n             update_cursor(g, &scanout->cursor);\n         }\n@@ -1602,7 +1602,7 @@ static void virtio_gpu_reset_bh(void *opaque)\n     }\n \n     for (i = 0; i < g->parent_obj.conf.max_outputs; i++) {\n-        dpy_gfx_replace_surface(g->parent_obj.scanout[i].con, NULL);\n+        qemu_console_set_surface(g->parent_obj.scanout[i].con, NULL);\n     }\n \n     g->reset_finished = true;\ndiff --git a/hw/display/virtio-vga.c b/hw/display/virtio-vga.c\nindex efd4858f3d0..2ae649c91ae 100644\n--- a/hw/display/virtio-vga.c\n+++ b/hw/display/virtio-vga.c\n@@ -172,7 +172,7 @@ static void virtio_vga_base_realize(VirtIOPCIProxy *vpci_dev, Error **errp)\n                                  vvga->vga_mrs, true, false);\n \n     vga->con = g->scanout[0].con;\n-    graphic_console_set_hwops(vga->con, &virtio_vga_base_ops, vvga);\n+    qemu_graphic_console_set_hwops(vga->con, &virtio_vga_base_ops, vvga);\n \n     for (i = 0; i < g->conf.max_outputs; i++) {\n         object_property_set_link(OBJECT(g->scanout[i].con), \"device\",\ndiff --git a/hw/display/vmware_vga.c b/hw/display/vmware_vga.c\nindex 39606d80be1..f8906776b16 100644\n--- a/hw/display/vmware_vga.c\n+++ b/hw/display/vmware_vga.c\n@@ -378,7 +378,7 @@ static inline void vmsvga_update_rect(struct vmsvga_state_s *s,\n     for (line = h; line > 0; line--, src += bypl, dst += bypl) {\n         memcpy(dst, src, width);\n     }\n-    dpy_gfx_update(s->vga.con, x, y, w, h);\n+    qemu_console_update(s->vga.con, x, y, w, h);\n }\n \n static inline void vmsvga_update_rect_flush(struct vmsvga_state_s *s)\n@@ -554,7 +554,7 @@ static inline void vmsvga_cursor_define(struct vmsvga_state_s *s,\n         qc = cursor_builtin_left_ptr();\n     }\n \n-    dpy_cursor_define(s->vga.con, qc);\n+    qemu_console_set_cursor(s->vga.con, qc);\n     cursor_unref(qc);\n }\n #endif\n@@ -1082,7 +1082,7 @@ static void vmsvga_value_write(void *opaque, uint32_t address, uint32_t value)\n         s->cursor.on &= (value != SVGA_CURSOR_ON_HIDE);\n #ifdef HW_MOUSE_ACCEL\n         if (value <= SVGA_CURSOR_ON_SHOW) {\n-            dpy_mouse_set(s->vga.con, s->cursor.x, s->cursor.y, s->cursor.on);\n+            qemu_console_set_mouse(s->vga.con, s->cursor.x, s->cursor.y, s->cursor.on);\n         }\n #endif\n         break;\n@@ -1130,7 +1130,7 @@ static inline void vmsvga_check_size(struct vmsvga_state_s *s)\n         surface = qemu_create_displaysurface_from(s->new_width, s->new_height,\n                                                   format, stride,\n                                                   s->vga.vram_ptr);\n-        dpy_gfx_replace_surface(s->vga.con, surface);\n+        qemu_console_set_surface(s->vga.con, surface);\n         s->invalidated = 1;\n     }\n }\n@@ -1151,7 +1151,7 @@ static bool vmsvga_update_display(void *opaque)\n \n     if (s->invalidated) {\n         s->invalidated = 0;\n-        dpy_gfx_update_full(s->vga.con);\n+        qemu_console_update_full(s->vga.con);\n     }\n \n     return true;\n@@ -1254,7 +1254,7 @@ static void vmsvga_init(DeviceState *dev, struct vmsvga_state_s *s,\n     s->scratch_size = SVGA_SCRATCH_SIZE;\n     s->scratch = g_malloc(s->scratch_size * 4);\n \n-    s->vga.con = graphic_console_init(dev, 0, &vmsvga_ops, s);\n+    s->vga.con = qemu_graphic_console_create(dev, 0, &vmsvga_ops, s);\n \n     s->fifo_size = SVGA_FIFO_SIZE;\n     memory_region_init_ram(&s->fifo_ram, NULL, \"vmsvga.fifo\", s->fifo_size,\ndiff --git a/hw/display/xenfb.c b/hw/display/xenfb.c\nindex 2e431e27be6..8e9953bda43 100644\n--- a/hw/display/xenfb.c\n+++ b/hw/display/xenfb.c\n@@ -657,7 +657,7 @@ static void xenfb_guest_copy(struct XenFB *xenfb, int x, int y, int w, int h)\n         xen_pv_printf(&xenfb->c.xendev, 0, \"%s: oops: convert %d -> %d bpp?\\n\",\n                       __func__, xenfb->depth, bpp);\n \n-    dpy_gfx_update(xenfb->con, x, y, w, h);\n+    qemu_console_update(xenfb->con, x, y, w, h);\n }\n \n #ifdef XENFB_TYPE_REFRESH_PERIOD\n@@ -743,7 +743,7 @@ static bool xenfb_update(void *opaque)\n             surface = qemu_create_displaysurface(xenfb->width, xenfb->height);\n             break;\n         }\n-        dpy_gfx_replace_surface(xenfb->con, surface);\n+        qemu_console_set_surface(xenfb->con, surface);\n         xen_pv_printf(&xenfb->c.xendev, 1,\n                       \"update: resizing: %dx%d @ %d bpp%s\\n\",\n                       xenfb->width, xenfb->height, xenfb->depth,\n@@ -903,7 +903,7 @@ static int fb_initialise(struct XenLegacyDevice *xendev)\n     if (rc != 0)\n         return rc;\n \n-    fb->con = graphic_console_init(NULL, 0, &xenfb_ops, fb);\n+    fb->con = qemu_graphic_console_create(NULL, 0, &xenfb_ops, fb);\n \n     if (xenstore_read_fe_int(xendev, \"feature-update\", &fb->feature_update) == -1)\n         fb->feature_update = 0;\ndiff --git a/hw/display/xlnx_dp.c b/hw/display/xlnx_dp.c\nindex 50e6ef10984..2486d9e5825 100644\n--- a/hw/display/xlnx_dp.c\n+++ b/hw/display/xlnx_dp.c\n@@ -605,7 +605,7 @@ static void xlnx_dp_recreate_surface(XlnxDPState *s)\n \n     if ((width != 0) && (height != 0)) {\n         /*\n-         * As dpy_gfx_replace_surface calls qemu_free_displaysurface on the\n+         * As qemu_console_replace_surface calls qemu_free_displaysurface on the\n          * surface we need to be careful and don't free the surface associated\n          * to the console or double free will happen.\n          */\n@@ -631,10 +631,10 @@ static void xlnx_dp_recreate_surface(XlnxDPState *s)\n                                                             height,\n                                                             s->g_plane.format,\n                                                             0, NULL);\n-            dpy_gfx_replace_surface(s->console, s->bout_plane.surface);\n+            qemu_console_set_surface(s->console, s->bout_plane.surface);\n         } else {\n             s->bout_plane.surface = NULL;\n-            dpy_gfx_replace_surface(s->console, s->g_plane.surface);\n+            qemu_console_set_surface(s->console, s->g_plane.surface);\n         }\n \n         xlnx_dpdma_set_host_data_location(s->dpdma, DP_GRAPHIC_DMA_CHANNEL,\n@@ -1287,7 +1287,7 @@ static bool xlnx_dp_update_display(void *opaque)\n     /*\n      * XXX: We might want to update only what changed.\n      */\n-    dpy_gfx_update_full(s->console);\n+    qemu_console_update_full(s->console);\n \n     return true;\n }\n@@ -1387,7 +1387,7 @@ static void xlnx_dp_realize(DeviceState *dev, Error **errp)\n     qdev_realize(DEVICE(s->edid), BUS(aux_get_i2c_bus(s->aux_bus)),\n                  &error_fatal);\n \n-    s->console = graphic_console_init(dev, 0, &xlnx_dp_gfx_ops, s);\n+    s->console = qemu_graphic_console_create(dev, 0, &xlnx_dp_gfx_ops, s);\n     surface = qemu_console_surface(s->console);\n     xlnx_dpdma_set_host_data_location(s->dpdma, DP_GRAPHIC_DMA_CHANNEL,\n                                       surface_data(surface));\ndiff --git a/hw/vfio/display.c b/hw/vfio/display.c\nindex 4a9a58036e3..8f91e83da88 100644\n--- a/hw/vfio/display.c\n+++ b/hw/vfio/display.c\n@@ -264,7 +264,7 @@ static void vfio_display_free_one_dmabuf(VFIODisplay *dpy, VFIODMABuf *dmabuf)\n     QTAILQ_REMOVE(&dpy->dmabuf.bufs, dmabuf, next);\n \n     qemu_dmabuf_close(dmabuf->buf);\n-    dpy_gl_release_dmabuf(dpy->con, dmabuf->buf);\n+    qemu_console_gl_release_dmabuf(dpy->con, dmabuf->buf);\n     g_clear_pointer(&dmabuf->buf, qemu_dmabuf_free);\n     g_free(dmabuf);\n }\n@@ -307,7 +307,7 @@ static bool vfio_display_dmabuf_update(void *opaque)\n     if (dpy->dmabuf.primary != primary) {\n         dpy->dmabuf.primary = primary;\n         qemu_console_resize(dpy->con, width, height);\n-        dpy_gl_scanout_dmabuf(dpy->con, primary->buf);\n+        qemu_console_gl_scanout_dmabuf(dpy->con, primary->buf);\n         free_bufs = true;\n     }\n \n@@ -321,21 +321,21 @@ static bool vfio_display_dmabuf_update(void *opaque)\n     if (cursor && (new_cursor || cursor->hot_updates)) {\n         bool have_hot = (cursor->hot_x != 0xffffffff &&\n                          cursor->hot_y != 0xffffffff);\n-        dpy_gl_cursor_dmabuf(dpy->con, cursor->buf, have_hot,\n-                             cursor->hot_x, cursor->hot_y);\n+        qemu_console_gl_cursor_dmabuf(dpy->con, cursor->buf, have_hot,\n+                                      cursor->hot_x, cursor->hot_y);\n         cursor->hot_updates = 0;\n     } else if (!cursor && new_cursor) {\n-        dpy_gl_cursor_dmabuf(dpy->con, NULL, false, 0, 0);\n+        qemu_console_gl_cursor_dmabuf(dpy->con, NULL, false, 0, 0);\n     }\n \n     if (cursor && cursor->pos_updates) {\n-        dpy_gl_cursor_position(dpy->con,\n+        qemu_console_gl_cursor_position(dpy->con,\n                                cursor->pos_x,\n                                cursor->pos_y);\n         cursor->pos_updates = 0;\n     }\n \n-    dpy_gl_update(dpy->con, 0, 0, width, height);\n+    qemu_console_gl_update(dpy->con, 0, 0, width, height);\n \n     if (free_bufs) {\n         vfio_display_free_dmabufs(vdev);\n@@ -363,7 +363,7 @@ static bool vfio_display_dmabuf_init(VFIOPCIDevice *vdev, Error **errp)\n     }\n \n     vdev->dpy = g_new0(VFIODisplay, 1);\n-    vdev->dpy->con = graphic_console_init(DEVICE(vdev), 0,\n+    vdev->dpy->con = qemu_graphic_console_create(DEVICE(vdev), 0,\n                                           &vfio_display_dmabuf_ops,\n                                           vdev);\n     if (vdev->enable_ramfb) {\n@@ -396,9 +396,9 @@ void vfio_display_reset(VFIOPCIDevice *vdev)\n         return;\n     }\n \n-    dpy_gl_scanout_disable(vdev->dpy->con);\n+    qemu_console_gl_scanout_disable(vdev->dpy->con);\n     vfio_display_dmabuf_exit(vdev->dpy);\n-    dpy_gfx_update_full(vdev->dpy->con);\n+    qemu_console_update_full(vdev->dpy->con);\n }\n \n static bool vfio_display_region_update(void *opaque)\n@@ -471,13 +471,13 @@ static bool vfio_display_region_update(void *opaque)\n         dpy->region.surface = qemu_create_displaysurface_from\n             (plane.width, plane.height, format,\n              plane.stride, dpy->region.buffer.mmaps[0].mmap);\n-        dpy_gfx_replace_surface(dpy->con, dpy->region.surface);\n+        qemu_console_set_surface(dpy->con, dpy->region.surface);\n     }\n \n     /* full screen update */\n-    dpy_gfx_update(dpy->con, 0, 0,\n-                   surface_width(dpy->region.surface),\n-                   surface_height(dpy->region.surface));\n+    qemu_console_update(dpy->con, 0, 0,\n+                        surface_width(dpy->region.surface),\n+                        surface_height(dpy->region.surface));\n     return true;\n \n err:\n@@ -493,7 +493,7 @@ static const GraphicHwOps vfio_display_region_ops = {\n static bool vfio_display_region_init(VFIOPCIDevice *vdev, Error **errp)\n {\n     vdev->dpy = g_new0(VFIODisplay, 1);\n-    vdev->dpy->con = graphic_console_init(DEVICE(vdev), 0,\n+    vdev->dpy->con = qemu_graphic_console_create(DEVICE(vdev), 0,\n                                           &vfio_display_region_ops,\n                                           vdev);\n     if (vdev->enable_ramfb) {\n@@ -553,7 +553,7 @@ void vfio_display_finalize(VFIOPCIDevice *vdev)\n         return;\n     }\n \n-    graphic_console_close(vdev->dpy->con);\n+    qemu_graphic_console_close(vdev->dpy->con);\n     vfio_display_dmabuf_exit(vdev->dpy);\n     vfio_display_region_exit(vdev->dpy);\n     vfio_display_edid_exit(vdev->dpy);\ndiff --git a/ui/console-vc.c b/ui/console-vc.c\nindex 6e8f2552e41..ec7106b169a 100644\n--- a/ui/console-vc.c\n+++ b/ui/console-vc.c\n@@ -86,15 +86,15 @@ static void text_console_update(void *opaque, uint32_t *chardata)\n                                           s->vt.cells[src].t_attrib.bgcol,\n                                           s->vt.cells[src].t_attrib.bold);\n             }\n-        dpy_text_update(QEMU_CONSOLE(s), s->vt.text_x[0], s->vt.text_y[0],\n-                        s->vt.text_x[1] - s->vt.text_x[0], i - s->vt.text_y[0]);\n+        qemu_console_text_update(QEMU_CONSOLE(s), s->vt.text_x[0], s->vt.text_y[0],\n+                                 s->vt.text_x[1] - s->vt.text_x[0], i - s->vt.text_y[0]);\n         s->vt.text_x[0] = s->vt.width;\n         s->vt.text_y[0] = s->vt.height;\n         s->vt.text_x[1] = 0;\n         s->vt.text_y[1] = 0;\n     }\n     if (s->vt.cursor_invalidate) {\n-        dpy_text_cursor(QEMU_CONSOLE(s), s->vt.x, s->vt.y);\n+        qemu_console_text_set_cursor(QEMU_CONSOLE(s), s->vt.x, s->vt.y);\n         s->vt.cursor_invalidate = 0;\n     }\n }\n@@ -182,14 +182,14 @@ static void vc_chr_set_echo(Chardev *chr, bool echo)\n \n void qemu_text_console_update_size(QemuTextConsole *c)\n {\n-    dpy_text_resize(QEMU_CONSOLE(c), c->vt.width, c->vt.height);\n+    qemu_console_text_resize(QEMU_CONSOLE(c), c->vt.width, c->vt.height);\n }\n \n static void text_console_image_update(QemuVT100 *vt, int x, int y, int width, int height)\n {\n     QemuTextConsole *console = container_of(vt, QemuTextConsole, vt);\n \n-    dpy_gfx_update(QEMU_CONSOLE(console), x, y, width, height);\n+    qemu_console_update(QEMU_CONSOLE(console), x, y, width, height);\n }\n \n static void text_console_out_flush(QemuVT100 *vt)\n@@ -228,7 +228,7 @@ static bool vc_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n         s = QEMU_TEXT_CONSOLE(object_new(TYPE_QEMU_FIXED_TEXT_CONSOLE));\n     }\n \n-    dpy_gfx_replace_surface(QEMU_CONSOLE(s), qemu_create_displaysurface(width, height));\n+    qemu_console_set_surface(QEMU_CONSOLE(s), qemu_create_displaysurface(width, height));\n     vt100_init(&s->vt, QEMU_CONSOLE(s)->surface->image,\n                text_console_image_update,\n                text_console_out_flush);\ndiff --git a/ui/console.c b/ui/console.c\nindex 6e073cacca0..344bf308b0c 100644\n--- a/ui/console.c\n+++ b/ui/console.c\n@@ -129,26 +129,26 @@ static void gui_setup_refresh(DisplayState *ds)\n     }\n }\n \n-void graphic_hw_update_done(QemuConsole *con)\n+void qemu_console_hw_update_done(QemuConsole *con)\n {\n     if (con) {\n         qemu_co_enter_all(&con->dump_queue, NULL);\n     }\n }\n \n-void graphic_hw_update(QemuConsole *con)\n+void qemu_console_hw_update(QemuConsole *con)\n {\n     if (!con) {\n         return;\n     }\n     if (!con->hw_ops->gfx_update || con->hw_ops->gfx_update(con->hw)) {\n-        graphic_hw_update_done(con);\n+        qemu_console_hw_update_done(con);\n     }\n }\n \n-static void graphic_hw_update_bh(void *con)\n+static void console_hw_update_bh(void *con)\n {\n-    graphic_hw_update(con);\n+    qemu_console_hw_update(con);\n }\n \n void qemu_console_co_wait_update(QemuConsole *con)\n@@ -156,18 +156,18 @@ void qemu_console_co_wait_update(QemuConsole *con)\n     if (qemu_co_queue_empty(&con->dump_queue)) {\n         /* Defer the update, it will restart the pending coroutines */\n         aio_bh_schedule_oneshot(qemu_get_aio_context(),\n-                                graphic_hw_update_bh, con);\n+                                console_hw_update_bh, con);\n     }\n     qemu_co_queue_wait(&con->dump_queue, NULL);\n \n }\n \n-static void graphic_hw_gl_unblock_timer(void *opaque)\n+static void console_hw_gl_unblock_timer(void *opaque)\n {\n     warn_report(\"console: no gl-unblock within one second\");\n }\n \n-void graphic_hw_gl_block(QemuConsole *con, bool block)\n+void qemu_console_hw_gl_block(QemuConsole *con, bool block)\n {\n     uint64_t timeout;\n     assert(con != NULL);\n@@ -205,14 +205,14 @@ void qemu_console_set_window_id(QemuConsole *con, int window_id)\n     con->window_id = window_id;\n }\n \n-void graphic_hw_invalidate(QemuConsole *con)\n+void qemu_console_hw_invalidate(QemuConsole *con)\n {\n     if (con && con->hw_ops->invalidate) {\n         con->hw_ops->invalidate(con->hw);\n     }\n }\n \n-void graphic_hw_text_update(QemuConsole *con, uint32_t *chardata)\n+void qemu_console_hw_text_update(QemuConsole *con, uint32_t *chardata)\n {\n     if (con && con->hw_ops->text_update) {\n         con->hw_ops->text_update(con->hw, chardata);\n@@ -502,7 +502,7 @@ qemu_graphic_console_init(Object *obj)\n {\n }\n \n-bool console_has_gl(QemuConsole *con)\n+bool qemu_console_has_gl(QemuConsole *con)\n {\n     return con->gl != NULL;\n }\n@@ -527,7 +527,7 @@ static bool console_compatible_with(QemuConsole *con,\n \n     flags = con->hw_ops->get_flags ? con->hw_ops->get_flags(con->hw) : 0;\n \n-    if (console_has_gl(con) &&\n+    if (qemu_console_has_gl(con) &&\n         !con->gl->ops->dpy_gl_ctx_is_compatible_dcl(con->gl, dcl)) {\n         error_setg(errp, \"Display %s is incompatible with the GL context\",\n                    dcl->ops->dpy_name);\n@@ -535,7 +535,7 @@ static bool console_compatible_with(QemuConsole *con,\n     }\n \n     if (flags & GRAPHIC_FLAGS_GL &&\n-        !console_has_gl(con)) {\n+        !qemu_console_has_gl(con)) {\n         error_setg(errp, \"The console requires a GL context.\");\n         return false;\n \n@@ -670,8 +670,8 @@ void qemu_console_register_listener(QemuConsole *con,\n     vt100_update_cursor();\n }\n \n-void update_displaychangelistener(DisplayChangeListener *dcl,\n-                                  uint64_t interval)\n+void qemu_console_listener_set_refresh(DisplayChangeListener *dcl,\n+                                       uint64_t interval)\n {\n     DisplayState *ds = dcl->ds;\n \n@@ -710,7 +710,7 @@ static void dpy_set_ui_info_timer(void *opaque)\n     con->hw_ops->ui_info(con->hw, head, &con->ui_info);\n }\n \n-bool dpy_ui_info_supported(const QemuConsole *con)\n+bool qemu_console_ui_info_supported(const QemuConsole *con)\n {\n     if (con == NULL) {\n         return false;\n@@ -719,16 +719,16 @@ bool dpy_ui_info_supported(const QemuConsole *con)\n     return con->hw_ops->ui_info != NULL;\n }\n \n-const QemuUIInfo *dpy_get_ui_info(const QemuConsole *con)\n+const QemuUIInfo *qemu_console_get_ui_info(const QemuConsole *con)\n {\n-    assert(dpy_ui_info_supported(con));\n+    assert(qemu_console_ui_info_supported(con));\n \n     return &con->ui_info;\n }\n \n-int dpy_set_ui_info(QemuConsole *con, QemuUIInfo *info, bool delay)\n+int qemu_console_set_ui_info(QemuConsole *con, QemuUIInfo *info, bool delay)\n {\n-    if (!dpy_ui_info_supported(con)) {\n+    if (!qemu_console_ui_info_supported(con)) {\n         return -1;\n     }\n     if (memcmp(&con->ui_info, info, sizeof(con->ui_info)) == 0) {\n@@ -747,7 +747,7 @@ int dpy_set_ui_info(QemuConsole *con, QemuUIInfo *info, bool delay)\n     return 0;\n }\n \n-void dpy_gfx_update(QemuConsole *con, int x, int y, int w, int h)\n+void qemu_console_update(QemuConsole *con, int x, int y, int w, int h)\n {\n     DisplayState *s = con->ds;\n     DisplayChangeListener *dcl;\n@@ -772,15 +772,15 @@ void dpy_gfx_update(QemuConsole *con, int x, int y, int w, int h)\n     }\n }\n \n-void dpy_gfx_update_full(QemuConsole *con)\n+void qemu_console_update_full(QemuConsole *con)\n {\n     int w = qemu_console_get_width(con, 0);\n     int h = qemu_console_get_height(con, 0);\n \n-    dpy_gfx_update(con, 0, 0, w, h);\n+    qemu_console_update(con, 0, 0, w, h);\n }\n \n-void dpy_gfx_replace_surface(QemuConsole *con,\n+void qemu_console_set_surface(QemuConsole *con,\n                              DisplaySurface *surface)\n {\n     static const char placeholder_msg[] = \"Display output is not active.\";\n@@ -818,8 +818,8 @@ void dpy_gfx_replace_surface(QemuConsole *con,\n     qemu_free_displaysurface(old_surface);\n }\n \n-bool dpy_gfx_check_format(QemuConsole *con,\n-                          pixman_format_code_t format)\n+bool qemu_console_check_format(QemuConsole *con,\n+                               pixman_format_code_t format)\n {\n     DisplayChangeListener *dcl;\n     DisplayState *s = con->ds;\n@@ -854,7 +854,7 @@ static void dpy_refresh(DisplayState *s)\n     }\n }\n \n-void dpy_text_cursor(QemuConsole *con, int x, int y)\n+void qemu_console_text_set_cursor(QemuConsole *con, int x, int y)\n {\n     DisplayState *s = con->ds;\n     DisplayChangeListener *dcl;\n@@ -869,7 +869,7 @@ void dpy_text_cursor(QemuConsole *con, int x, int y)\n     }\n }\n \n-void dpy_text_update(QemuConsole *con, int x, int y, int w, int h)\n+void qemu_console_text_update(QemuConsole *con, int x, int y, int w, int h)\n {\n     DisplayState *s = con->ds;\n     DisplayChangeListener *dcl;\n@@ -884,7 +884,7 @@ void dpy_text_update(QemuConsole *con, int x, int y, int w, int h)\n     }\n }\n \n-void dpy_text_resize(QemuConsole *con, int w, int h)\n+void qemu_console_text_resize(QemuConsole *con, int w, int h)\n {\n     DisplayState *s = con->ds;\n     DisplayChangeListener *dcl;\n@@ -899,7 +899,7 @@ void dpy_text_resize(QemuConsole *con, int w, int h)\n     }\n }\n \n-void dpy_mouse_set(QemuConsole *c, int x, int y, bool on)\n+void qemu_console_set_mouse(QemuConsole *c, int x, int y, bool on)\n {\n     QemuGraphicConsole *con = QEMU_GRAPHIC_CONSOLE(c);\n     DisplayState *s = c->ds;\n@@ -918,7 +918,7 @@ void dpy_mouse_set(QemuConsole *c, int x, int y, bool on)\n     }\n }\n \n-void dpy_cursor_define(QemuConsole *c, QEMUCursor *cursor)\n+void qemu_console_set_cursor(QemuConsole *c, QEMUCursor *cursor)\n {\n     QemuGraphicConsole *con = QEMU_GRAPHIC_CONSOLE(c);\n     DisplayState *s = c->ds;\n@@ -936,26 +936,26 @@ void dpy_cursor_define(QemuConsole *c, QEMUCursor *cursor)\n     }\n }\n \n-QEMUGLContext dpy_gl_ctx_create(QemuConsole *con,\n-                                struct QEMUGLParams *qparams)\n+QEMUGLContext qemu_console_gl_ctx_create(QemuConsole *con,\n+                                         QEMUGLParams *qparams)\n {\n     assert(con->gl);\n     return con->gl->ops->dpy_gl_ctx_create(con->gl, qparams);\n }\n \n-void dpy_gl_ctx_destroy(QemuConsole *con, QEMUGLContext ctx)\n+void qemu_console_gl_ctx_destroy(QemuConsole *con, QEMUGLContext ctx)\n {\n     assert(con->gl);\n     con->gl->ops->dpy_gl_ctx_destroy(con->gl, ctx);\n }\n \n-int dpy_gl_ctx_make_current(QemuConsole *con, QEMUGLContext ctx)\n+int qemu_console_gl_ctx_make_current(QemuConsole *con, QEMUGLContext ctx)\n {\n     assert(con->gl);\n     return con->gl->ops->dpy_gl_ctx_make_current(con->gl, ctx);\n }\n \n-void dpy_gl_scanout_disable(QemuConsole *con)\n+void qemu_console_gl_scanout_disable(QemuConsole *con)\n {\n     DisplayState *s = con->ds;\n     DisplayChangeListener *dcl;\n@@ -973,14 +973,14 @@ void dpy_gl_scanout_disable(QemuConsole *con)\n     }\n }\n \n-void dpy_gl_scanout_texture(QemuConsole *con,\n-                            uint32_t backing_id,\n-                            bool backing_y_0_top,\n-                            uint32_t backing_width,\n-                            uint32_t backing_height,\n-                            uint32_t x, uint32_t y,\n-                            uint32_t width, uint32_t height,\n-                            void *d3d_tex2d)\n+void qemu_console_gl_scanout_texture(QemuConsole *con,\n+                                     uint32_t backing_id,\n+                                     bool backing_y_0_top,\n+                                     uint32_t backing_width,\n+                                     uint32_t backing_height,\n+                                     uint32_t x, uint32_t y,\n+                                     uint32_t width, uint32_t height,\n+                                     void *d3d_tex2d)\n {\n     DisplayState *s = con->ds;\n     DisplayChangeListener *dcl;\n@@ -1004,8 +1004,8 @@ void dpy_gl_scanout_texture(QemuConsole *con,\n     }\n }\n \n-void dpy_gl_scanout_dmabuf(QemuConsole *con,\n-                           QemuDmaBuf *dmabuf)\n+void qemu_console_gl_scanout_dmabuf(QemuConsole *con,\n+                                    QemuDmaBuf *dmabuf)\n {\n     DisplayState *s = con->ds;\n     DisplayChangeListener *dcl;\n@@ -1022,8 +1022,8 @@ void dpy_gl_scanout_dmabuf(QemuConsole *con,\n     }\n }\n \n-void dpy_gl_cursor_dmabuf(QemuConsole *con, QemuDmaBuf *dmabuf,\n-                          bool have_hot, uint32_t hot_x, uint32_t hot_y)\n+void qemu_console_gl_cursor_dmabuf(QemuConsole *con, QemuDmaBuf *dmabuf,\n+                                   bool have_hot, uint32_t hot_x, uint32_t hot_y)\n {\n     DisplayState *s = con->ds;\n     DisplayChangeListener *dcl;\n@@ -1039,8 +1039,8 @@ void dpy_gl_cursor_dmabuf(QemuConsole *con, QemuDmaBuf *dmabuf,\n     }\n }\n \n-void dpy_gl_cursor_position(QemuConsole *con,\n-                            uint32_t pos_x, uint32_t pos_y)\n+void qemu_console_gl_cursor_position(QemuConsole *con,\n+                                     uint32_t pos_x, uint32_t pos_y)\n {\n     DisplayState *s = con->ds;\n     DisplayChangeListener *dcl;\n@@ -1055,8 +1055,8 @@ void dpy_gl_cursor_position(QemuConsole *con,\n     }\n }\n \n-void dpy_gl_release_dmabuf(QemuConsole *con,\n-                          QemuDmaBuf *dmabuf)\n+void qemu_console_gl_release_dmabuf(QemuConsole *con,\n+                                    QemuDmaBuf *dmabuf)\n {\n     DisplayState *s = con->ds;\n     DisplayChangeListener *dcl;\n@@ -1071,15 +1071,15 @@ void dpy_gl_release_dmabuf(QemuConsole *con,\n     }\n }\n \n-void dpy_gl_update(QemuConsole *con,\n-                   uint32_t x, uint32_t y, uint32_t w, uint32_t h)\n+void qemu_console_gl_update(QemuConsole *con,\n+                            uint32_t x, uint32_t y, uint32_t w, uint32_t h)\n {\n     DisplayState *s = con->ds;\n     DisplayChangeListener *dcl;\n \n     assert(con->gl);\n \n-    graphic_hw_gl_block(con, true);\n+    qemu_console_hw_gl_block(con, true);\n     QLIST_FOREACH(dcl, &s->listeners, next) {\n         if (con != dcl->con) {\n             continue;\n@@ -1088,7 +1088,7 @@ void dpy_gl_update(QemuConsole *con,\n             dcl->ops->dpy_gl_update(dcl, x, y, w, h);\n         }\n     }\n-    graphic_hw_gl_block(con, false);\n+    qemu_console_hw_gl_block(con, false);\n }\n \n /***********************************************************/\n@@ -1125,17 +1125,17 @@ DisplayState *init_displaystate(void)\n     return display_state;\n }\n \n-void graphic_console_set_hwops(QemuConsole *con,\n-                               const GraphicHwOps *hw_ops,\n-                               void *opaque)\n+void qemu_graphic_console_set_hwops(QemuConsole *con,\n+                                    const GraphicHwOps *hw_ops,\n+                                    void *opaque)\n {\n     con->hw_ops = hw_ops;\n     con->hw = opaque;\n }\n \n-QemuConsole *graphic_console_init(DeviceState *dev, uint32_t head,\n-                                  const GraphicHwOps *hw_ops,\n-                                  void *opaque)\n+QemuConsole *qemu_graphic_console_create(DeviceState *dev, uint32_t head,\n+                                         const GraphicHwOps *hw_ops,\n+                                         void *opaque)\n {\n     static const char noinit[] =\n         \"Guest has not initialized the display (yet).\";\n@@ -1154,16 +1154,16 @@ QemuConsole *graphic_console_init(DeviceState *dev, uint32_t head,\n         s = (QemuConsole *)object_new(TYPE_QEMU_GRAPHIC_CONSOLE);\n     }\n     QEMU_GRAPHIC_CONSOLE(s)->head = head;\n-    graphic_console_set_hwops(s, hw_ops, opaque);\n+    qemu_graphic_console_set_hwops(s, hw_ops, opaque);\n     if (dev) {\n         object_property_set_link(OBJECT(s), \"device\", OBJECT(dev),\n                                  &error_abort);\n     }\n \n     surface = qemu_create_placeholder_surface(width, height, noinit);\n-    dpy_gfx_replace_surface(s, surface);\n+    qemu_console_set_surface(s, surface);\n     s->gl_unblock_timer = timer_new_ms(QEMU_CLOCK_REALTIME,\n-                                       graphic_hw_gl_unblock_timer, s);\n+                                       console_hw_gl_unblock_timer, s);\n     return s;\n }\n \n@@ -1171,7 +1171,7 @@ static const GraphicHwOps unused_ops = {\n     /* no callbacks */\n };\n \n-void graphic_console_close(QemuConsole *con)\n+void qemu_graphic_console_close(QemuConsole *con)\n {\n     static const char unplugged[] =\n         \"Guest display has been unplugged\";\n@@ -1181,13 +1181,13 @@ void graphic_console_close(QemuConsole *con)\n \n     trace_console_gfx_close(con->index);\n     object_property_set_link(OBJECT(con), \"device\", NULL, &error_abort);\n-    graphic_console_set_hwops(con, &unused_ops, NULL);\n+    qemu_graphic_console_set_hwops(con, &unused_ops, NULL);\n \n     if (con->gl) {\n-        dpy_gl_scanout_disable(con);\n+        qemu_console_gl_scanout_disable(con);\n     }\n     surface = qemu_create_placeholder_surface(width, height, unplugged);\n-    dpy_gfx_replace_surface(con, surface);\n+    qemu_console_set_surface(con, surface);\n }\n \n QemuConsole *qemu_console_lookup_default(void)\n@@ -1373,7 +1373,7 @@ void qemu_console_resize(QemuConsole *s, int width, int height)\n     }\n \n     surface = qemu_create_displaysurface(width, height);\n-    dpy_gfx_replace_surface(s, surface);\n+    qemu_console_set_surface(s, surface);\n }\n \n DisplaySurface *qemu_console_surface(QemuConsole *console)\ndiff --git a/ui/curses.c b/ui/curses.c\nindex 4e2a0b25955..f8d4542768b 100644\n--- a/ui/curses.c\n+++ b/ui/curses.c\n@@ -1,8 +1,8 @@\n /*\n  * QEMU curses/ncurses display driver\n- * \n+ *\n  * Copyright (c) 2005 Andrzej Zaborowski  <balrog@zabor.org>\n- * \n+ *\n  * Permission is hereby granted, free of charge, to any person obtaining a copy\n  * of this software and associated documentation files (the \"Software\"), to deal\n  * in the Software without restriction, including without limitation the rights\n@@ -275,11 +275,11 @@ static void curses_refresh(DisplayChangeListener *dcl)\n         clear();\n         refresh();\n         curses_calc_pad();\n-        graphic_hw_invalidate(dcl->con);\n+        qemu_console_hw_invalidate(dcl->con);\n         invalidate = 0;\n     }\n \n-    graphic_hw_text_update(dcl->con, screen);\n+    qemu_console_hw_text_update(dcl->con, screen);\n \n     while (1) {\n         /* while there are any pending key strokes to process */\ndiff --git a/ui/dbus-console.c b/ui/dbus-console.c\nindex 249760d82aa..88f58e88efb 100644\n--- a/ui/dbus-console.c\n+++ b/ui/dbus-console.c\n@@ -200,7 +200,7 @@ dbus_console_set_ui_info(DBusDisplayConsole *ddc,\n         .height = arg_height,\n     };\n \n-    if (!dpy_ui_info_supported(ddc->dcl.con)) {\n+    if (!qemu_console_ui_info_supported(ddc->dcl.con)) {\n         g_dbus_method_invocation_return_error(invocation,\n                                               DBUS_DISPLAY_ERROR,\n                                               DBUS_DISPLAY_ERROR_UNSUPPORTED,\n@@ -208,7 +208,7 @@ dbus_console_set_ui_info(DBusDisplayConsole *ddc,\n         return DBUS_METHOD_INVOCATION_HANDLED;\n     }\n \n-    dpy_set_ui_info(ddc->dcl.con, &info, false);\n+    qemu_console_set_ui_info(ddc->dcl.con, &info, false);\n     qemu_dbus_display1_console_complete_set_uiinfo(ddc->iface, invocation);\n     return DBUS_METHOD_INVOCATION_HANDLED;\n }\ndiff --git a/ui/dbus-listener.c b/ui/dbus-listener.c\nindex fe58e3ef24d..40287d1c687 100644\n--- a/ui/dbus-listener.c\n+++ b/ui/dbus-listener.c\n@@ -241,7 +241,7 @@ static void dbus_update_gl_cb(GObject *source_object,\n     }\n #endif\n \n-    graphic_hw_gl_block(ddl->dcl.con, false);\n+    qemu_console_hw_gl_block(ddl->dcl.con, false);\n     g_object_unref(ddl);\n }\n #endif\n@@ -257,7 +257,7 @@ static void dbus_call_update_gl(DisplayChangeListener *dcl,\n \n     glFlush();\n #ifdef CONFIG_GBM\n-    graphic_hw_gl_block(ddl->dcl.con, true);\n+    qemu_console_hw_gl_block(ddl->dcl.con, true);\n     qemu_dbus_display1_listener_call_update_dmabuf(ddl->proxy,\n         x, y, w, h,\n         G_DBUS_CALL_FLAGS_NONE,\n@@ -276,7 +276,7 @@ static void dbus_call_update_gl(DisplayChangeListener *dcl,\n         Error *err = NULL;\n         assert(ddl->d3d_texture);\n \n-        graphic_hw_gl_block(ddl->dcl.con, true);\n+        qemu_console_hw_gl_block(ddl->dcl.con, true);\n         if (!d3d_texture2d_release0(ddl->d3d_texture, &err)) {\n             error_report_err(err);\n             return;\n@@ -711,7 +711,7 @@ static void dbus_gl_refresh(DisplayChangeListener *dcl)\n {\n     DBusDisplayListener *ddl = container_of(dcl, DBusDisplayListener, dcl);\n \n-    graphic_hw_update(dcl->con);\n+    qemu_console_hw_update(dcl->con);\n \n     if (!ddl->ds || qemu_console_is_gl_blocked(ddl->dcl.con)) {\n         return;\n@@ -740,7 +740,7 @@ static void dbus_gl_refresh(DisplayChangeListener *dcl)\n \n static void dbus_refresh(DisplayChangeListener *dcl)\n {\n-    graphic_hw_update(dcl->con);\n+    qemu_console_hw_update(dcl->con);\n }\n \n #ifdef CONFIG_OPENGL\ndiff --git a/ui/egl-headless.c b/ui/egl-headless.c\nindex 4f046c975a9..878bfebb40c 100644\n--- a/ui/egl-headless.c\n+++ b/ui/egl-headless.c\n@@ -23,7 +23,7 @@ typedef struct egl_dpy {\n \n static void egl_refresh(DisplayChangeListener *dcl)\n {\n-    graphic_hw_update(dcl->con);\n+    qemu_console_hw_update(dcl->con);\n }\n \n static void egl_gfx_update(DisplayChangeListener *dcl,\n@@ -161,7 +161,7 @@ static void egl_scanout_flush(DisplayChangeListener *dcl,\n     }\n \n     egl_fb_read(edpy->ds, &edpy->blit_fb);\n-    dpy_gfx_update(edpy->dcl.con, x, y, w, h);\n+    qemu_console_update(edpy->dcl.con, x, y, w, h);\n }\n \n static const DisplayChangeListenerOps egl_ops = {\ndiff --git a/ui/gtk-egl.c b/ui/gtk-egl.c\nindex fa8fe8970c1..7c5c9b2428c 100644\n--- a/ui/gtk-egl.c\n+++ b/ui/gtk-egl.c\n@@ -108,7 +108,7 @@ void gd_egl_draw(VirtualConsole *vc)\n                 qemu_set_fd_handler(fence_fd, gd_hw_gl_flushed, NULL, vc);\n                 return;\n             }\n-            graphic_hw_gl_block(vc->gfx.dcl.con, false);\n+            qemu_console_hw_gl_block(vc->gfx.dcl.con, false);\n         }\n #endif\n     } else {\n@@ -176,7 +176,7 @@ void gd_egl_refresh(DisplayChangeListener *dcl)\n         return;\n     }\n \n-    graphic_hw_update(dcl->con);\n+    qemu_console_hw_update(dcl->con);\n \n     if (vc->gfx.glupdates) {\n         vc->gfx.glupdates = 0;\n@@ -405,7 +405,7 @@ void gd_egl_flush(DisplayChangeListener *dcl,\n \n     if (vc->gfx.guest_fb.dmabuf &&\n         !qemu_dmabuf_get_draw_submitted(vc->gfx.guest_fb.dmabuf)) {\n-        graphic_hw_gl_block(vc->gfx.dcl.con, true);\n+        qemu_console_hw_gl_block(vc->gfx.dcl.con, true);\n         qemu_dmabuf_set_draw_submitted(vc->gfx.guest_fb.dmabuf, true);\n         gtk_egl_set_scanout_mode(vc, true);\n         gtk_widget_queue_draw_area(area, x, y, w, h);\ndiff --git a/ui/gtk-gl-area.c b/ui/gtk-gl-area.c\nindex ce49000d3f1..23806b9d01b 100644\n--- a/ui/gtk-gl-area.c\n+++ b/ui/gtk-gl-area.c\n@@ -131,7 +131,7 @@ void gd_gl_area_draw(VirtualConsole *vc)\n                 qemu_set_fd_handler(fence_fd, gd_hw_gl_flushed, NULL, vc);\n                 return;\n             }\n-            graphic_hw_gl_block(vc->gfx.dcl.con, false);\n+            qemu_console_hw_gl_block(vc->gfx.dcl.con, false);\n         }\n #endif\n     } else {\n@@ -195,7 +195,7 @@ void gd_gl_area_refresh(DisplayChangeListener *dcl)\n         }\n     }\n \n-    graphic_hw_update(dcl->con);\n+    qemu_console_hw_update(dcl->con);\n \n     if (vc->gfx.glupdates) {\n         vc->gfx.glupdates = 0;\n@@ -347,7 +347,7 @@ void gd_gl_area_scanout_flush(DisplayChangeListener *dcl,\n \n     if (vc->gfx.guest_fb.dmabuf &&\n         !qemu_dmabuf_get_draw_submitted(vc->gfx.guest_fb.dmabuf)) {\n-        graphic_hw_gl_block(vc->gfx.dcl.con, true);\n+        qemu_console_hw_gl_block(vc->gfx.dcl.con, true);\n         qemu_dmabuf_set_draw_submitted(vc->gfx.guest_fb.dmabuf, true);\n         gtk_gl_area_set_scanout_mode(vc, true);\n     }\ndiff --git a/ui/gtk.c b/ui/gtk.c\nindex 3aaa44ff3e2..bcb67db7ee7 100644\n--- a/ui/gtk.c\n+++ b/ui/gtk.c\n@@ -436,7 +436,7 @@ static void gd_update(DisplayChangeListener *dcl,\n \n static void gd_refresh(DisplayChangeListener *dcl)\n {\n-    graphic_hw_update(dcl->con);\n+    qemu_console_hw_update(dcl->con);\n }\n \n static GdkDevice *gd_get_pointer(GdkDisplay *dpy)\n@@ -602,7 +602,7 @@ void gd_hw_gl_flushed(void *vcon)\n         qemu_set_fd_handler(fence_fd, NULL, NULL, NULL);\n         close(fence_fd);\n         qemu_dmabuf_set_fence_fd(dmabuf, -1);\n-        graphic_hw_gl_block(vc->gfx.dcl.con, false);\n+        qemu_console_hw_gl_block(vc->gfx.dcl.con, false);\n     }\n }\n \n@@ -729,27 +729,27 @@ static void gd_set_ui_refresh_rate(VirtualConsole *vc, int refresh_rate)\n {\n     QemuUIInfo info;\n \n-    if (!dpy_ui_info_supported(vc->gfx.dcl.con)) {\n+    if (!qemu_console_ui_info_supported(vc->gfx.dcl.con)) {\n         return;\n     }\n \n-    info = *dpy_get_ui_info(vc->gfx.dcl.con);\n+    info = *qemu_console_get_ui_info(vc->gfx.dcl.con);\n     info.refresh_rate = refresh_rate;\n-    dpy_set_ui_info(vc->gfx.dcl.con, &info, true);\n+    qemu_console_set_ui_info(vc->gfx.dcl.con, &info, true);\n }\n \n static void gd_set_ui_size(VirtualConsole *vc, gint width, gint height)\n {\n     QemuUIInfo info;\n \n-    if (!dpy_ui_info_supported(vc->gfx.dcl.con)) {\n+    if (!qemu_console_ui_info_supported(vc->gfx.dcl.con)) {\n         return;\n     }\n \n-    info = *dpy_get_ui_info(vc->gfx.dcl.con);\n+    info = *qemu_console_get_ui_info(vc->gfx.dcl.con);\n     info.width = width;\n     info.height = height;\n-    dpy_set_ui_info(vc->gfx.dcl.con, &info, true);\n+    qemu_console_set_ui_info(vc->gfx.dcl.con, &info, true);\n }\n \n #if defined(CONFIG_OPENGL)\n@@ -2333,7 +2333,7 @@ static GSList *gd_vc_gfx_init(GtkDisplayState *s, VirtualConsole *vc,\n     gd_connect_vc_gfx_signals(vc);\n     group = gd_vc_menu_init(s, vc, idx, group, view_menu);\n \n-    if (dpy_ui_info_supported(vc->gfx.dcl.con)) {\n+    if (qemu_console_ui_info_supported(vc->gfx.dcl.con)) {\n         zoom_to_fit = true;\n     }\n     if (s->opts->u.gtk.has_zoom_to_fit) {\ndiff --git a/ui/sdl2-2d.c b/ui/sdl2-2d.c\nindex 73052383c2e..68a3aff7151 100644\n--- a/ui/sdl2-2d.c\n+++ b/ui/sdl2-2d.c\n@@ -129,7 +129,7 @@ void sdl2_2d_refresh(DisplayChangeListener *dcl)\n     struct sdl2_console *scon = container_of(dcl, struct sdl2_console, dcl);\n \n     assert(!scon->opengl);\n-    graphic_hw_update(dcl->con);\n+    qemu_console_hw_update(dcl->con);\n     sdl2_poll_events(scon);\n }\n \ndiff --git a/ui/sdl2-gl.c b/ui/sdl2-gl.c\nindex bb066cdd885..1547ad2f6f8 100644\n--- a/ui/sdl2-gl.c\n+++ b/ui/sdl2-gl.c\n@@ -115,7 +115,7 @@ void sdl2_gl_refresh(DisplayChangeListener *dcl)\n \n     assert(scon->opengl);\n \n-    graphic_hw_update(dcl->con);\n+    qemu_console_hw_update(dcl->con);\n     if (scon->updates && scon->real_window) {\n         scon->updates = 0;\n         sdl2_gl_render_surface(scon);\ndiff --git a/ui/sdl2.c b/ui/sdl2.c\nindex 4f8b05fbd85..0f93a2fec84 100644\n--- a/ui/sdl2.c\n+++ b/ui/sdl2.c\n@@ -604,7 +604,7 @@ static void handle_windowevent(SDL_Event *ev)\n                 .width = ev->window.data1,\n                 .height = ev->window.data2,\n             };\n-            dpy_set_ui_info(scon->dcl.con, &info, true);\n+            qemu_console_set_ui_info(scon->dcl.con, &info, true);\n         }\n         sdl2_redraw(scon);\n         break;\n@@ -632,10 +632,10 @@ static void handle_windowevent(SDL_Event *ev)\n         }\n         break;\n     case SDL_WINDOWEVENT_RESTORED:\n-        update_displaychangelistener(&scon->dcl, GUI_REFRESH_INTERVAL_DEFAULT);\n+        qemu_console_listener_set_refresh(&scon->dcl, GUI_REFRESH_INTERVAL_DEFAULT);\n         break;\n     case SDL_WINDOWEVENT_MINIMIZED:\n-        update_displaychangelistener(&scon->dcl, 500);\n+        qemu_console_listener_set_refresh(&scon->dcl, 500);\n         break;\n     case SDL_WINDOWEVENT_CLOSE:\n         if (qemu_console_is_graphic(scon->dcl.con)) {\ndiff --git a/ui/spice-display.c b/ui/spice-display.c\nindex 56d8140fad8..e3716127203 100644\n--- a/ui/spice-display.c\n+++ b/ui/spice-display.c\n@@ -468,7 +468,7 @@ void qemu_spice_cursor_refresh_bh(void *opaque)\n         assert(ssd->dcl.con);\n         cursor_ref(c);\n         qemu_mutex_unlock(&ssd->lock);\n-        dpy_cursor_define(ssd->dcl.con, c);\n+        qemu_console_set_cursor(ssd->dcl.con, c);\n         qemu_mutex_lock(&ssd->lock);\n         cursor_unref(c);\n     }\n@@ -481,7 +481,7 @@ void qemu_spice_cursor_refresh_bh(void *opaque)\n         ssd->mouse_x = -1;\n         ssd->mouse_y = -1;\n         qemu_mutex_unlock(&ssd->lock);\n-        dpy_mouse_set(ssd->dcl.con, x, y, true);\n+        qemu_console_set_mouse(ssd->dcl.con, x, y, true);\n     } else {\n         qemu_mutex_unlock(&ssd->lock);\n     }\n@@ -489,7 +489,7 @@ void qemu_spice_cursor_refresh_bh(void *opaque)\n \n void qemu_spice_display_refresh(SimpleSpiceDisplay *ssd)\n {\n-    graphic_hw_update(ssd->dcl.con);\n+    qemu_console_hw_update(ssd->dcl.con);\n \n     WITH_QEMU_LOCK_GUARD(&ssd->lock) {\n         if (QTAILQ_EMPTY(&ssd->updates) && ssd->ds) {\n@@ -668,7 +668,7 @@ static int interface_client_monitors_config(QXLInstance *sin,\n     QemuUIInfo info;\n     int head;\n \n-    if (!dpy_ui_info_supported(ssd->dcl.con)) {\n+    if (!qemu_console_ui_info_supported(ssd->dcl.con)) {\n         return 0; /* == not supported by guest */\n     }\n \n@@ -676,7 +676,7 @@ static int interface_client_monitors_config(QXLInstance *sin,\n         return 1;\n     }\n \n-    info = *dpy_get_ui_info(ssd->dcl.con);\n+    info = *qemu_console_get_ui_info(ssd->dcl.con);\n \n     head = qemu_console_get_index(ssd->dcl.con);\n     if (mc->num_of_monitors > head) {\n@@ -690,7 +690,7 @@ static int interface_client_monitors_config(QXLInstance *sin,\n     }\n \n     trace_qemu_spice_ui_info(ssd->qxl.id, info.width, info.height);\n-    dpy_set_ui_info(ssd->dcl.con, &info, false);\n+    qemu_console_set_ui_info(ssd->dcl.con, &info, false);\n     return 1;\n }\n \n@@ -817,7 +817,7 @@ static void qemu_spice_gl_block(SimpleSpiceDisplay *ssd, bool block)\n     } else {\n         timer_del(ssd->gl_unblock_timer);\n     }\n-    graphic_hw_gl_block(ssd->dcl.con, block);\n+    qemu_console_hw_gl_block(ssd->dcl.con, block);\n }\n \n static void qemu_spice_gl_unblock_bh(void *opaque)\n@@ -861,7 +861,7 @@ static void spice_gl_refresh(DisplayChangeListener *dcl)\n         return;\n     }\n \n-    graphic_hw_update(dcl->con);\n+    qemu_console_hw_update(dcl->con);\n     if (ssd->gl_updates && ssd->have_surface) {\n         qemu_spice_gl_block(ssd, true);\n         glFlush();\ndiff --git a/ui/vnc.c b/ui/vnc.c\nindex 21698835084..e1fba53ee57 100644\n--- a/ui/vnc.c\n+++ b/ui/vnc.c\n@@ -2324,8 +2324,8 @@ static void set_pixel_format(VncState *vs, int bits_per_pixel,\n \n     set_pixel_conversion(vs);\n \n-    graphic_hw_invalidate(vs->vd->dcl.con);\n-    graphic_hw_update(vs->vd->dcl.con);\n+    qemu_console_hw_invalidate(vs->vd->dcl.con);\n+    qemu_console_hw_update(vs->vd->dcl.con);\n }\n \n static void pixel_format_message (VncState *vs) {\n@@ -2383,7 +2383,7 @@ static int protocol_client_msg(VncState *vs, uint8_t *data, size_t len)\n     VncDisplay *vd = vs->vd;\n \n     if (data[0] > 3) {\n-        update_displaychangelistener(&vd->dcl, VNC_REFRESH_INTERVAL_BASE);\n+        qemu_console_listener_set_refresh(&vd->dcl, VNC_REFRESH_INTERVAL_BASE);\n     }\n \n     switch (data[0]) {\n@@ -2637,9 +2637,9 @@ static int protocol_client_msg(VncState *vs, uint8_t *data, size_t len)\n         h = read_u16(data, 4);\n \n         trace_vnc_msg_client_set_desktop_size(vs, vs->ioc, w, h, screens);\n-        if (dpy_ui_info_supported(vs->vd->dcl.con)) {\n+        if (qemu_console_ui_info_supported(vs->vd->dcl.con)) {\n             QemuUIInfo info = { .width = w, .height = h };\n-            dpy_set_ui_info(vs->vd->dcl.con, &info, false);\n+            qemu_console_set_ui_info(vs->vd->dcl.con, &info, false);\n             vnc_desktop_resize_ext(vs, 4 /* Request forwarded */);\n         } else {\n             vnc_desktop_resize_ext(vs, 3 /* Invalid screen layout */);\n@@ -3241,14 +3241,14 @@ static void vnc_refresh(DisplayChangeListener *dcl)\n     int has_dirty, rects = 0;\n \n     if (QTAILQ_EMPTY(&vd->clients)) {\n-        update_displaychangelistener(&vd->dcl, VNC_REFRESH_INTERVAL_MAX);\n+        qemu_console_listener_set_refresh(&vd->dcl, VNC_REFRESH_INTERVAL_MAX);\n         return;\n     }\n \n-    graphic_hw_update(vd->dcl.con);\n+    qemu_console_hw_update(vd->dcl.con);\n \n     if (vnc_trylock_display(vd)) {\n-        update_displaychangelistener(&vd->dcl, VNC_REFRESH_INTERVAL_BASE);\n+        qemu_console_listener_set_refresh(&vd->dcl, VNC_REFRESH_INTERVAL_BASE);\n         return;\n     }\n \n@@ -3322,7 +3322,7 @@ static void vnc_connect(VncDisplay *vd, QIOChannelSocket *sioc,\n               sioc, websocket, vs->auth, vs->subauth);\n \n     VNC_DEBUG(\"New client on socket %p\\n\", vs->sioc);\n-    update_displaychangelistener(&vd->dcl, VNC_REFRESH_INTERVAL_BASE);\n+    qemu_console_listener_set_refresh(&vd->dcl, VNC_REFRESH_INTERVAL_BASE);\n     qio_channel_set_blocking(vs->ioc, false, &error_abort);\n     g_clear_handle_id(&vs->ioc_tag, g_source_remove);\n     if (websocket) {\n@@ -3362,7 +3362,7 @@ static void vnc_connect(VncDisplay *vd, QIOChannelSocket *sioc,\n         vnc_update_server_surface(vd);\n     }\n \n-    graphic_hw_update(vd->dcl.con);\n+    qemu_console_hw_update(vd->dcl.con);\n \n     if (!vs->websocket) {\n         vnc_start_protocol(vs);\n@@ -3418,7 +3418,7 @@ static void vmstate_change_handler(void *opaque, bool running, RunState state)\n     if (state != RUN_STATE_RUNNING) {\n         return;\n     }\n-    update_displaychangelistener(&vd->dcl, VNC_REFRESH_INTERVAL_BASE);\n+    qemu_console_listener_set_refresh(&vd->dcl, VNC_REFRESH_INTERVAL_BASE);\n }\n \n static bool vnc_display_open(VncDisplay *vd, Error **errp);\ndiff --git a/hw/display/apple-gfx.m b/hw/display/apple-gfx.m\nindex 77d80fb7cef..be0061b9db2 100644\n--- a/hw/display/apple-gfx.m\n+++ b/hw/display/apple-gfx.m\n@@ -317,8 +317,8 @@ static void apple_gfx_render_frame_completed_bh(void *opaque)\n             copy_mtl_texture_to_surface_mem(s->texture, surface_data(s->surface));\n             if (s->gfx_update_requested) {\n                 s->gfx_update_requested = false;\n-                dpy_gfx_update_full(s->con);\n-                graphic_hw_update_done(s->con);\n+                qemu_console_update_full(s->con);\n+                qemu_console_hw_update_done(s->con);\n                 s->new_frame_ready = false;\n             } else {\n                 s->new_frame_ready = true;\n@@ -337,7 +337,7 @@ static bool apple_gfx_fb_update_display(void *opaque)\n \n     assert(bql_locked());\n     if (s->new_frame_ready) {\n-        dpy_gfx_update_full(s->con);\n+        qemu_console_update_full(s->con);\n         s->new_frame_ready = false;\n     } else if (s->pending_frames > 0) {\n         s->gfx_update_requested = true;\n@@ -380,14 +380,14 @@ static void set_mode(AppleGFXState *s, uint32_t width, uint32_t height)\n             (s->texture.storageMode == MTLStorageModeManaged);\n     }\n \n-    dpy_gfx_replace_surface(s->con, s->surface);\n+    qemu_console_set_surface(s->con, s->surface);\n }\n \n static void update_cursor(AppleGFXState *s)\n {\n     assert(bql_locked());\n-    dpy_mouse_set(s->con, s->pgdisp.cursorPosition.x,\n-                  s->pgdisp.cursorPosition.y, qatomic_read(&s->cursor_show));\n+    qemu_console_set_mouse(s->con, s->pgdisp.cursorPosition.x,\n+                           s->pgdisp.cursorPosition.y, qatomic_read(&s->cursor_show));\n }\n \n static void update_cursor_bh(void *opaque)\n@@ -443,7 +443,7 @@ static void set_cursor_glyph(void *opaque)\n             }\n             px_data += padding_bytes_per_row;\n         }\n-        dpy_cursor_define(s->con, s->cursor);\n+        qemu_console_set_cursor(s->con, s->cursor);\n         update_cursor(s);\n     }\n     [glyph release];\n@@ -792,7 +792,7 @@ bool apple_gfx_common_realize(AppleGFXState *s, DeviceState *dev,\n         apple_gfx_create_display_mode_array(display_modes, num_display_modes);\n     [mode_array release];\n \n-    s->con = graphic_console_init(dev, 0, &apple_gfx_fb_ops, s);\n+    s->con = qemu_graphic_console_create(dev, 0, &apple_gfx_fb_ops, s);\n     return true;\n }\n \ndiff --git a/ui/cocoa.m b/ui/cocoa.m\nindex aaf82421589..98394cdc507 100644\n--- a/ui/cocoa.m\n+++ b/ui/cocoa.m\n@@ -421,7 +421,7 @@ - (void) selectConsoleLocked:(unsigned int)index\n         return;\n     }\n \n-    unregister_displaychangelistener(&dcl);\n+    qemu_console_unregister_listener(&dcl);\n     qkbd_state_switch_console(kbd, con);\n     qemu_console_register_listener(con, &dcl, &dcl_ops);\n     [self notifyMouseModeChange];\n@@ -669,8 +669,8 @@ - (void) updateUIInfoLocked\n             CVTime period = CVDisplayLinkGetNominalOutputVideoRefreshPeriod(displayLink);\n             CVDisplayLinkRelease(displayLink);\n             if (!(period.flags & kCVTimeIsIndefinite)) {\n-                update_displaychangelistener(&dcl,\n-                                             1000 * period.timeValue / period.timeScale);\n+                qemu_console_listener_set_refresh(&dcl,\n+                                                  1000 * period.timeValue / period.timeScale);\n                 info.refresh_rate = (int64_t)1000 * period.timeScale / period.timeValue;\n             }\n         }\n@@ -688,7 +688,7 @@ - (void) updateUIInfoLocked\n     info.width = frameSize.width * [[self window] backingScaleFactor];\n     info.height = frameSize.height * [[self window] backingScaleFactor];\n \n-    dpy_set_ui_info(dcl.con, &info, TRUE);\n+    qemu_console_set_ui_info(dcl.con, &info, TRUE);\n }\n \n #pragma clang diagnostic pop\n@@ -2056,7 +2056,7 @@ static void cocoa_refresh(DisplayChangeListener *dcl)\n     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];\n \n     COCOA_DEBUG(\"qemu_cocoa: cocoa_refresh\\n\");\n-    graphic_hw_update(dcl->con);\n+    qemu_console_hw_update(dcl->con);\n \n     if (cbchangecount != [[NSPasteboard generalPasteboard] changeCount]) {\n         qemu_clipboard_info_unref(cbinfo);\n",
    "prefixes": [
        "v2",
        "60/67"
    ]
}