[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 37/41] gtk: overwrite the console.c char driver
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 37/41] gtk: overwrite the console.c char driver |
Date: |
Fri, 27 Jan 2017 14:45:45 +0100 |
From: Marc-André Lureau <address@hidden>
Instead of registering a vc handler to allocate the Gtk VC Chardev,
overwrite the console.c char driver.
A later patch, when switching to QOM, will register a default console vc
QOM class if none has been registered before.
Signed-off-by: Marc-André Lureau <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
include/sysemu/char.h | 4 +---
ui/console.c | 24 +++++++-----------------
ui/gtk.c | 30 +++++++++++++++++++++---------
3 files changed, 29 insertions(+), 29 deletions(-)
diff --git a/include/sysemu/char.h b/include/sysemu/char.h
index 3a82d80..baa9e8f 100644
--- a/include/sysemu/char.h
+++ b/include/sysemu/char.h
@@ -507,9 +507,7 @@ void register_char_driver(const CharDriver *driver);
extern int term_escape_char;
-
/* console.c */
-typedef Chardev *(VcHandler)(ChardevVC *vc, Error **errp);
-void register_vc_handler(VcHandler *handler);
+void qemu_chr_parse_vc(QemuOpts *opts, ChardevBackend *backend, Error **errp);
#endif
diff --git a/ui/console.c b/ui/console.c
index 7420f28..d8bc8a6 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -2058,8 +2058,12 @@ static void text_console_do_init(Chardev *chr,
DisplayState *ds)
static const CharDriver vc_driver;
-static Chardev *text_console_init(ChardevVC *vc, Error **errp)
+static Chardev *vc_init(const CharDriver *driver,
+ const char *id, ChardevBackend *backend,
+ ChardevReturn *ret, bool *be_opened,
+ Error **errp)
{
+ ChardevVC *vc = backend->u.vc.data;
ChardevCommon *common = qapi_ChardevVC_base(vc);
Chardev *chr;
VCChardev *drv;
@@ -2105,26 +2109,13 @@ static Chardev *text_console_init(ChardevVC *vc, Error
**errp)
if (display_state) {
text_console_do_init(chr, display_state);
}
- return chr;
-}
-static VcHandler *vc_handler = text_console_init;
-
-static Chardev *vc_init(const CharDriver *driver,
- const char *id, ChardevBackend *backend,
- ChardevReturn *ret, bool *be_opened,
- Error **errp)
-{
/* console/chardev init sometimes completes elsewhere in a 2nd
* stage, so defer OPENED events until they are fully initialized
*/
*be_opened = false;
- return vc_handler(backend->u.vc.data, errp);
-}
-void register_vc_handler(VcHandler *handler)
-{
- vc_handler = handler;
+ return chr;
}
void qemu_console_resize(QemuConsole *s, int width, int height)
@@ -2162,8 +2153,7 @@ PixelFormat qemu_default_pixelformat(int bpp)
return pf;
}
-static void qemu_chr_parse_vc(QemuOpts *opts, ChardevBackend *backend,
- Error **errp)
+void qemu_chr_parse_vc(QemuOpts *opts, ChardevBackend *backend, Error **errp)
{
int val;
ChardevVC *vc;
diff --git a/ui/gtk.c b/ui/gtk.c
index 175871a..04df0ad 100644
--- a/ui/gtk.c
+++ b/ui/gtk.c
@@ -1712,16 +1712,14 @@ static void gd_vc_chr_set_echo(Chardev *chr, bool echo)
static int nb_vcs;
static Chardev *vcs[MAX_VCS];
+static const CharDriver gd_vc_driver;
-static Chardev *gd_vc_handler(ChardevVC *vc, Error **errp)
+static Chardev *vc_init(const CharDriver *driver,
+ const char *id, ChardevBackend *backend,
+ ChardevReturn *ret, bool *be_opened,
+ Error **errp)
{
- static const CharDriver gd_vc_driver = {
- .instance_size = sizeof(VCChardev),
- .kind = CHARDEV_BACKEND_KIND_VC,
- .chr_write = gd_vc_chr_write,
- .chr_set_echo = gd_vc_chr_set_echo,
- };
-
+ ChardevVC *vc = backend->u.vc.data;
ChardevCommon *common = qapi_ChardevVC_base(vc);
Chardev *chr;
@@ -1737,9 +1735,22 @@ static Chardev *gd_vc_handler(ChardevVC *vc, Error
**errp)
vcs[nb_vcs++] = chr;
+ /* console/chardev init sometimes completes elsewhere in a 2nd
+ * stage, so defer OPENED events until they are fully initialized
+ */
+ *be_opened = false;
+
return chr;
}
+static const CharDriver gd_vc_driver = {
+ .instance_size = sizeof(VCChardev),
+ .kind = CHARDEV_BACKEND_KIND_VC,
+ .parse = qemu_chr_parse_vc, .create = vc_init,
+ .chr_write = gd_vc_chr_write,
+ .chr_set_echo = gd_vc_chr_set_echo,
+};
+
static gboolean gd_vc_in(VteTerminal *terminal, gchar *text, guint size,
gpointer user_data)
{
@@ -2336,6 +2347,7 @@ void early_gtk_display_init(int opengl)
}
#if defined(CONFIG_VTE)
- register_vc_handler(gd_vc_handler);
+ /* overwrite the console.c vc driver */
+ register_char_driver(&gd_vc_driver);
#endif
}
--
1.8.3.1
- [Qemu-devel] [PULL 21/41] tests: fix linking test-char on win32, (continued)
- [Qemu-devel] [PULL 21/41] tests: fix linking test-char on win32, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 26/41] char: use a static array for backends, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 25/41] char: use a const CharDriver, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 22/41] qemu-options: stdio is available on win32, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 28/41] char: fold single-user functions in caller, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 30/41] char: use a feature bit for replay, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 29/41] char: introduce generic qemu_chr_get_kind(), Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 32/41] bt: use qemu_chr_alloc(), Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 27/41] char: move callbacks in CharDriver, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 35/41] spice-char: improve error reporting, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 37/41] gtk: overwrite the console.c char driver,
Paolo Bonzini <=
- [Qemu-devel] [PULL 34/41] char: rename TCPChardev and NetChardev, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 38/41] baum: use a common prefix for chr callbacks, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 36/41] char: use error_report(), Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 31/41] char: allocate CharDriverState as a single object, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 39/41] vc: use a common prefix for chr callbacks, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 41/41] memory: don't sign-extend 32-bit writes, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 33/41] char: rename CharDriverState Chardev, Paolo Bonzini, 2017/01/27
- [Qemu-devel] [PULL 40/41] chardev: qom-ify, Paolo Bonzini, 2017/01/27
- Re: [Qemu-devel] [PULL 00/41] Misc changes for 2017-01-27, Peter Maydell, 2017/01/27