From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45142) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b3FmK-0002jD-Tr for qemu-devel@nongnu.org; Thu, 19 May 2016 00:41:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b3FmE-000585-Qe for qemu-devel@nongnu.org; Thu, 19 May 2016 00:41:44 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40413) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b3FmE-00057z-Ln for qemu-devel@nongnu.org; Thu, 19 May 2016 00:41:38 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 3FF80C04B31E for ; Thu, 19 May 2016 04:41:38 +0000 (UTC) From: Eric Blake Date: Wed, 18 May 2016 22:41:01 -0600 Message-Id: <1463632874-28559-16-git-send-email-eblake@redhat.com> In-Reply-To: <1463632874-28559-1-git-send-email-eblake@redhat.com> References: <1463632874-28559-1-git-send-email-eblake@redhat.com> Subject: [Qemu-devel] [PATCH v4 15/28] replay: Use new QAPI cloning List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: armbru@redhat.com Rather than rolling our own clone via an expensive conversion in and back out of QObject, use the new clone visitor. Signed-off-by: Eric Blake --- v4: rebase to earlier changes v3: new patch --- replay/replay-input.c | 30 +++--------------------------- 1 file changed, 3 insertions(+), 27 deletions(-) diff --git a/replay/replay-input.c b/replay/replay-input.c index 296399c..bd93554 100644 --- a/replay/replay-input.c +++ b/replay/replay-input.c @@ -16,31 +16,7 @@ #include "replay-internal.h" #include "qemu/notify.h" #include "ui/input.h" -#include "qapi/qmp-output-visitor.h" -#include "qapi/qmp-input-visitor.h" -#include "qapi-visit.h" - -static InputEvent *qapi_clone_InputEvent(InputEvent *src) -{ - Visitor *ov, *iv; - QObject *obj; - InputEvent *dst = NULL; - - ov = qmp_output_visitor_new(&obj); - visit_type_InputEvent(ov, NULL, &src, &error_abort); - visit_complete(ov, &obj); - visit_free(ov); - if (!obj) { - return NULL; - } - - iv = qmp_input_visitor_new(obj, true); - visit_type_InputEvent(iv, NULL, &dst, &error_abort); - visit_free(iv); - qobject_decref(obj); - - return dst; -} +#include "qapi/clone-visitor.h" void replay_save_input_event(InputEvent *evt) { @@ -139,7 +115,7 @@ InputEvent *replay_read_input_event(void) break; } - return qapi_clone_InputEvent(&evt); + return QAPI_CLONE(InputEvent, &evt); } void replay_input_event(QemuConsole *src, InputEvent *evt) @@ -147,7 +123,7 @@ void replay_input_event(QemuConsole *src, InputEvent *evt) if (replay_mode == REPLAY_MODE_PLAY) { /* Nothing */ } else if (replay_mode == REPLAY_MODE_RECORD) { - replay_add_input_event(qapi_clone_InputEvent(evt)); + replay_add_input_event(QAPI_CLONE(InputEvent, evt)); } else { qemu_input_event_send_impl(src, evt); } -- 2.5.5