1/* 2 * Copyright (C) 2010 Red Hat, Inc. 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public License as 6 * published by the Free Software Foundation; either version 2 or 7 * (at your option) version 3 of the License. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, see <http://www.gnu.org/licenses/>. 16 */ 17 18#include <spice/ipc_ring.h> 19#include <spice/enums.h> 20#include <spice/qxl_dev.h> 21 22#include "pflib.h" 23 24#define NUM_MEMSLOTS 8 25#define MEMSLOT_GENERATION_BITS 8 26#define MEMSLOT_SLOT_BITS 8 27 28#define MEMSLOT_GROUP_HOST 0 29#define MEMSLOT_GROUP_GUEST 1 30#define NUM_MEMSLOTS_GROUPS 2 31 32#define NUM_SURFACES 1024 33 34typedef struct SimpleSpiceDisplay { 35 DisplayState *ds; 36 void *buf; 37 int bufsize; 38 QXLWorker *worker; 39 QXLInstance qxl; 40 uint32_t unique; 41 QemuPfConv *conv; 42 43 QXLRect dirty; 44 int notify; 45 int running; 46} SimpleSpiceDisplay; 47 48typedef struct SimpleSpiceUpdate { 49 QXLDrawable drawable; 50 QXLImage image; 51 QXLCommandExt ext; 52 uint8_t *bitmap; 53} SimpleSpiceUpdate; 54 55int qemu_spice_rect_is_empty(const QXLRect* r); 56void qemu_spice_rect_union(QXLRect *dest, const QXLRect *r); 57 58SimpleSpiceUpdate *qemu_spice_create_update(SimpleSpiceDisplay *sdpy); 59void qemu_spice_destroy_update(SimpleSpiceDisplay *sdpy, SimpleSpiceUpdate *update); 60void qemu_spice_create_host_memslot(SimpleSpiceDisplay *ssd); 61void qemu_spice_create_host_primary(SimpleSpiceDisplay *ssd); 62void qemu_spice_destroy_host_primary(SimpleSpiceDisplay *ssd); 63void qemu_spice_vm_change_state_handler(void *opaque, int running, int reason); 64 65void qemu_spice_display_update(SimpleSpiceDisplay *ssd, 66 int x, int y, int w, int h); 67void qemu_spice_display_resize(SimpleSpiceDisplay *ssd); 68void qemu_spice_display_refresh(SimpleSpiceDisplay *ssd); 69