mirror of https://gitee.com/openkylin/qemu.git
ui/gtk-clipboard: use qemu_clipboard_info helper
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20210805135715.857938-16-marcandre.lureau@redhat.com> Acked-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
3d3f0bc3f7
commit
b702c863bf
|
@ -143,7 +143,6 @@ struct GtkDisplayState {
|
|||
bool external_pause_update;
|
||||
|
||||
QemuClipboardPeer cbpeer;
|
||||
QemuClipboardInfo *cbinfo[QEMU_CLIPBOARD_SELECTION__COUNT];
|
||||
uint32_t cbpending[QEMU_CLIPBOARD_SELECTION__COUNT];
|
||||
GtkClipboard *gtkcb[QEMU_CLIPBOARD_SELECTION__COUNT];
|
||||
bool cbowner[QEMU_CLIPBOARD_SELECTION__COUNT];
|
||||
|
|
|
@ -45,24 +45,24 @@ static void gd_clipboard_get_data(GtkClipboard *clipboard,
|
|||
GtkDisplayState *gd = data;
|
||||
QemuClipboardSelection s = gd_find_selection(gd, clipboard);
|
||||
QemuClipboardType type = QEMU_CLIPBOARD_TYPE_TEXT;
|
||||
QemuClipboardInfo *info = qemu_clipboard_info_ref(gd->cbinfo[s]);
|
||||
g_autoptr(QemuClipboardInfo) info = NULL;
|
||||
|
||||
info = qemu_clipboard_info_ref(qemu_clipboard_info(s));
|
||||
|
||||
qemu_clipboard_request(info, type);
|
||||
while (info == gd->cbinfo[s] &&
|
||||
while (info == qemu_clipboard_info(s) &&
|
||||
info->types[type].available &&
|
||||
info->types[type].data == NULL) {
|
||||
main_loop_wait(false);
|
||||
}
|
||||
|
||||
if (info == gd->cbinfo[s] && gd->cbowner[s]) {
|
||||
if (info == qemu_clipboard_info(s) && gd->cbowner[s]) {
|
||||
gtk_selection_data_set_text(selection_data,
|
||||
info->types[type].data,
|
||||
info->types[type].size);
|
||||
} else {
|
||||
/* clipboard owner changed while waiting for the data */
|
||||
}
|
||||
|
||||
qemu_clipboard_info_unref(info);
|
||||
}
|
||||
|
||||
static void gd_clipboard_clear(GtkClipboard *clipboard,
|
||||
|
@ -81,9 +81,7 @@ static void gd_clipboard_notify(Notifier *notifier, void *data)
|
|||
QemuClipboardSelection s = info->selection;
|
||||
bool self_update = info->owner == &gd->cbpeer;
|
||||
|
||||
if (info != gd->cbinfo[s]) {
|
||||
qemu_clipboard_info_unref(gd->cbinfo[s]);
|
||||
gd->cbinfo[s] = qemu_clipboard_info_ref(info);
|
||||
if (info != qemu_clipboard_info(s)) {
|
||||
gd->cbpending[s] = 0;
|
||||
if (!self_update) {
|
||||
GtkTargetList *list;
|
||||
|
|
Loading…
Reference in New Issue