Skip to content

Commit

Permalink
replay: Use new QAPI cloning
Browse files Browse the repository at this point in the history
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 <eblake@redhat.com>
Message-Id: <1465490926-28625-16-git-send-email-eblake@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
  • Loading branch information
ebblake authored and Markus Armbruster committed Jul 6, 2016
1 parent 37f9e0a commit b695471
Showing 1 changed file with 3 additions and 27 deletions.
30 changes: 3 additions & 27 deletions replay/replay-input.c
Expand Up @@ -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)
{
Expand Down Expand Up @@ -139,15 +115,15 @@ 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)
{
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);
}
Expand Down

0 comments on commit b695471

Please sign in to comment.