qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PULL 35/50] char: fold qemu_chr_set_handlers in qemu_chr_f


From: Paolo Bonzini
Subject: [Qemu-devel] [PULL 35/50] char: fold qemu_chr_set_handlers in qemu_chr_fe_set_handlers
Date: Mon, 24 Oct 2016 15:47:20 +0200

From: Marc-André Lureau <address@hidden>

qemu_chr_add_handlers*() have been removed in previous change, so the
common qemu_chr_set_handlers() is no longer needed.

Signed-off-by: Marc-André Lureau <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
 include/sysemu/char.h |  3 +-
 qemu-char.c           | 78 ++++++++++++++++++++++-----------------------------
 2 files changed, 35 insertions(+), 46 deletions(-)

diff --git a/include/sysemu/char.h b/include/sysemu/char.h
index 816c536..f2b3999 100644
--- a/include/sysemu/char.h
+++ b/include/sysemu/char.h
@@ -460,7 +460,8 @@ CharDriverState *qemu_chr_fe_get_driver(CharBackend *be);
  * @opaque: an opaque pointer for the callbacks
  * @context: a main loop context or NULL for the default
  *
- * Set the front end char handlers.
+ * Set the front end char handlers. The front end takes the focus if
+ * any of the handler is non-NULL.
  */
 void qemu_chr_fe_set_handlers(CharBackend *b,
                               IOCanReadHandler *fd_can_read,
diff --git a/qemu-char.c b/qemu-char.c
index dce86ca..115909f 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -467,46 +467,6 @@ void qemu_chr_fe_printf(CharBackend *be, const char *fmt, 
...)
 }
 
 static void remove_fd_in_watch(CharDriverState *chr);
-
-static void
-qemu_chr_set_handlers(CharBackend *be,
-                      IOCanReadHandler *fd_can_read,
-                      IOReadHandler *fd_read,
-                      IOEventHandler *fd_event,
-                      void *opaque,
-                      GMainContext *context)
-{
-    CharDriverState *s = be->chr;
-    int fe_open;
-
-    if (!opaque && !fd_can_read && !fd_read && !fd_event) {
-        fe_open = 0;
-        remove_fd_in_watch(s);
-    } else {
-        fe_open = 1;
-    }
-    s->chr_can_read = fd_can_read;
-    s->chr_read = fd_read;
-    s->chr_event = fd_event;
-    s->handler_opaque = opaque;
-    if (s->chr_update_read_handler) {
-        s->chr_update_read_handler(s, context, be->tag);
-    }
-
-    if (!s->explicit_fe_open) {
-        qemu_chr_fe_set_open(be, fe_open);
-    }
-
-    /* We're connecting to an already opened device, so let's make sure we
-       also get the open event */
-    if (fe_open) {
-        qemu_chr_fe_take_focus(be);
-        if (s->be_open) {
-            qemu_chr_be_generic_open(s);
-        }
-    }
-}
-
 static int mux_chr_new_handler_tag(CharDriverState *chr, Error **errp);
 static void mux_chr_set_handlers(CharDriverState *chr, GMainContext *context);
 static void mux_set_focus(MuxDriver *d, int focus);
@@ -931,15 +891,43 @@ void qemu_chr_fe_set_handlers(CharBackend *b,
                               void *opaque,
                               GMainContext *context)
 {
-    if (!b->chr) {
+    CharDriverState *s;
+    int fe_open;
+
+    s = b->chr;
+    if (!s) {
         return;
     }
 
-    qemu_chr_set_handlers(b, fd_can_read, fd_read,
-                          fd_event, opaque, context);
+    if (!opaque && !fd_can_read && !fd_read && !fd_event) {
+        fe_open = 0;
+        remove_fd_in_watch(s);
+    } else {
+        fe_open = 1;
+    }
+    s->chr_can_read = fd_can_read;
+    s->chr_read = fd_read;
+    s->chr_event = fd_event;
+    s->handler_opaque = opaque;
+    if (s->chr_update_read_handler) {
+        s->chr_update_read_handler(s, context, b->tag);
+    }
+
+    if (!s->explicit_fe_open) {
+        qemu_chr_fe_set_open(b, fe_open);
+    }
 
-    if (b->chr->is_mux) {
-        mux_chr_set_handlers(b->chr, context);
+    if (fe_open) {
+        qemu_chr_fe_take_focus(b);
+        /* We're connecting to an already opened device, so let's make sure we
+           also get the open event */
+        if (s->be_open) {
+            qemu_chr_be_generic_open(s);
+        }
+    }
+
+    if (s->is_mux) {
+        mux_chr_set_handlers(s, context);
     }
 }
 
-- 
1.8.3.1





reply via email to

[Prev in Thread] Current Thread [Next in Thread]