[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 13/41] char-win: do not override chr_free
From: |
Marc-André Lureau |
Subject: |
[Qemu-devel] [PATCH v2 13/41] char-win: do not override chr_free |
Date: |
Mon, 30 Jan 2017 17:39:26 +0400 |
For some unclear reason to me, char-file does not have chr_free on
win32. Since we want to switch to instance finalizer instead of class
chr_free, we should be able to run the base WinChardev class finalizer
in any case. Use a boolean to skip free to ease the transition to
instance finalizer.
Signed-off-by: Marc-André Lureau <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
---
qemu-char.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/qemu-char.c b/qemu-char.c
index d92642735e..83636d76c0 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -2122,6 +2122,8 @@ typedef struct {
/* Protected by the Chardev chr_write_lock. */
OVERLAPPED osend;
+ /* FIXME: file/console do not finalize */
+ bool skip_free;
} WinChardev;
#define TYPE_CHARDEV_WIN "chardev-win"
@@ -2152,6 +2154,10 @@ static void win_chr_free(Chardev *chr)
{
WinChardev *s = WIN_CHARDEV(chr);
+ if (s->skip_free) {
+ return;
+ }
+
if (s->hsend) {
CloseHandle(s->hsend);
s->hsend = NULL;
@@ -2432,6 +2438,7 @@ static void qemu_chr_open_win_file(Chardev *chr, HANDLE
fd_out)
{
WinChardev *s = WIN_CHARDEV(chr);
+ s->skip_free = true;
s->hcom = fd_out;
}
@@ -2468,7 +2475,6 @@ static void char_console_class_init(ObjectClass *oc, void
*data)
ChardevClass *cc = CHARDEV_CLASS(oc);
cc->open = qemu_chr_open_win_con;
- cc->chr_free = NULL;
}
static const TypeInfo char_console_type_info = {
@@ -4731,10 +4737,6 @@ static void char_file_class_init(ObjectClass *oc, void
*data)
ChardevClass *cc = CHARDEV_CLASS(oc);
cc->open = qmp_chardev_open_file;
-#ifdef _WIN32
- /* FIXME: no chr_free */
- cc->chr_free = NULL;
-#endif
}
static const TypeInfo char_file_type_info = {
--
2.11.0.295.gd7dffce1c.dirty
- [Qemu-devel] [PATCH v2 03/41] baum: convert to finalize, (continued)
- [Qemu-devel] [PATCH v2 03/41] baum: convert to finalize, Marc-André Lureau, 2017/01/30
- [Qemu-devel] [PATCH v2 04/41] msmouse: convert to finalize, Marc-André Lureau, 2017/01/30
- [Qemu-devel] [PATCH v2 05/41] mux: convert to finalize, Marc-André Lureau, 2017/01/30
- [Qemu-devel] [PATCH v2 06/41] char-udp: convert to finalize, Marc-André Lureau, 2017/01/30
- [Qemu-devel] [PATCH v2 07/41] char-socket: convert to finalize, Marc-André Lureau, 2017/01/30
- [Qemu-devel] [PATCH v2 08/41] char-pty: convert to finalize, Marc-André Lureau, 2017/01/30
- [Qemu-devel] [PATCH v2 09/41] char-ringbuf: convert to finalize, Marc-André Lureau, 2017/01/30
- [Qemu-devel] [PATCH v2 10/41] char-parallel: convert parallel to finalize, Marc-André Lureau, 2017/01/30
- [Qemu-devel] [PATCH v2 11/41] char-stdio: convert to finalize, Marc-André Lureau, 2017/01/30
- [Qemu-devel] [PATCH v2 12/41] char-win-stdio: convert to finalize, Marc-André Lureau, 2017/01/30
- [Qemu-devel] [PATCH v2 13/41] char-win: do not override chr_free,
Marc-André Lureau <=
- [Qemu-devel] [PATCH v2 14/41] char-win: convert to finalize, Marc-André Lureau, 2017/01/30
- [Qemu-devel] [PATCH v2 15/41] char-fd: convert to finalize, Marc-André Lureau, 2017/01/30
- [Qemu-devel] [PATCH v2 16/41] char: remove chr_free, Marc-André Lureau, 2017/01/30
- [Qemu-devel] [PATCH v2 17/41] char: get rid of CharDriver, Marc-André Lureau, 2017/01/30
- [Qemu-devel] [PATCH v2 18/41] char: rename remaining CharDriver to Chardev, Marc-André Lureau, 2017/01/30
- [Qemu-devel] [PATCH v2 20/41] char: move to chardev/, Marc-André Lureau, 2017/01/30
- [Qemu-devel] [PATCH v2 19/41] char: remove class kind field, Marc-André Lureau, 2017/01/30