mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-07-09 04:27:12 +00:00
replay: Use new QAPI cloning
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>
This commit is contained in:
parent
37f9e0a2b6
commit
b6954712ab
|
@ -16,31 +16,7 @@
|
||||||
#include "replay-internal.h"
|
#include "replay-internal.h"
|
||||||
#include "qemu/notify.h"
|
#include "qemu/notify.h"
|
||||||
#include "ui/input.h"
|
#include "ui/input.h"
|
||||||
#include "qapi/qmp-output-visitor.h"
|
#include "qapi/clone-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;
|
|
||||||
}
|
|
||||||
|
|
||||||
void replay_save_input_event(InputEvent *evt)
|
void replay_save_input_event(InputEvent *evt)
|
||||||
{
|
{
|
||||||
|
@ -139,7 +115,7 @@ InputEvent *replay_read_input_event(void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return qapi_clone_InputEvent(&evt);
|
return QAPI_CLONE(InputEvent, &evt);
|
||||||
}
|
}
|
||||||
|
|
||||||
void replay_input_event(QemuConsole *src, 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) {
|
if (replay_mode == REPLAY_MODE_PLAY) {
|
||||||
/* Nothing */
|
/* Nothing */
|
||||||
} else if (replay_mode == REPLAY_MODE_RECORD) {
|
} else if (replay_mode == REPLAY_MODE_RECORD) {
|
||||||
replay_add_input_event(qapi_clone_InputEvent(evt));
|
replay_add_input_event(QAPI_CLONE(InputEvent, evt));
|
||||||
} else {
|
} else {
|
||||||
qemu_input_event_send_impl(src, evt);
|
qemu_input_event_send_impl(src, evt);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user