a3e2226031
With that patch applied you'll actually see the guests screen in the spice client. This does *not* bring qxl and full spice support though. This is basically the qxl vga mode made more generic, so it plays together with any qemu-emulated gfx card. You can display stdvga or cirrus via spice client. You can have both vnc and spice enabled and clients connected at the same time.
70 lines
2.1 KiB
C
70 lines
2.1 KiB
C
/*
|
|
* Copyright (C) 2010 Red Hat, Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2 or
|
|
* (at your option) version 3 of the License.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include <spice/ipc_ring.h>
|
|
#include <spice/enums.h>
|
|
#include <spice/qxl_dev.h>
|
|
|
|
#include "pflib.h"
|
|
|
|
#define NUM_MEMSLOTS 8
|
|
#define MEMSLOT_GENERATION_BITS 8
|
|
#define MEMSLOT_SLOT_BITS 8
|
|
|
|
#define MEMSLOT_GROUP_HOST 0
|
|
#define MEMSLOT_GROUP_GUEST 1
|
|
#define NUM_MEMSLOTS_GROUPS 2
|
|
|
|
#define NUM_SURFACES 1024
|
|
|
|
typedef struct SimpleSpiceDisplay {
|
|
DisplayState *ds;
|
|
void *buf;
|
|
int bufsize;
|
|
QXLWorker *worker;
|
|
QXLInstance qxl;
|
|
uint32_t unique;
|
|
QemuPfConv *conv;
|
|
|
|
pthread_mutex_t lock;
|
|
QXLRect dirty;
|
|
int notify;
|
|
int running;
|
|
} SimpleSpiceDisplay;
|
|
|
|
typedef struct SimpleSpiceUpdate {
|
|
QXLDrawable drawable;
|
|
QXLImage image;
|
|
QXLCommandExt ext;
|
|
uint8_t *bitmap;
|
|
} SimpleSpiceUpdate;
|
|
|
|
int qemu_spice_rect_is_empty(const QXLRect* r);
|
|
void qemu_spice_rect_union(QXLRect *dest, const QXLRect *r);
|
|
|
|
SimpleSpiceUpdate *qemu_spice_create_update(SimpleSpiceDisplay *sdpy);
|
|
void qemu_spice_destroy_update(SimpleSpiceDisplay *sdpy, SimpleSpiceUpdate *update);
|
|
void qemu_spice_create_host_memslot(SimpleSpiceDisplay *ssd);
|
|
void qemu_spice_create_host_primary(SimpleSpiceDisplay *ssd);
|
|
void qemu_spice_destroy_host_primary(SimpleSpiceDisplay *ssd);
|
|
void qemu_spice_vm_change_state_handler(void *opaque, int running, int reason);
|
|
|
|
void qemu_spice_display_update(SimpleSpiceDisplay *ssd,
|
|
int x, int y, int w, int h);
|
|
void qemu_spice_display_resize(SimpleSpiceDisplay *ssd);
|
|
void qemu_spice_display_refresh(SimpleSpiceDisplay *ssd);
|