Statistics
| Branch: | Revision:

root / ui / spice-display.h @ e0c64d08

History | View | Annotate | Download (2.4 kB)

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 "qemu-thread.h"
23
#include "pflib.h"
24

    
25
#define NUM_MEMSLOTS 8
26
#define MEMSLOT_GENERATION_BITS 8
27
#define MEMSLOT_SLOT_BITS 8
28

    
29
#define MEMSLOT_GROUP_HOST  0
30
#define MEMSLOT_GROUP_GUEST 1
31
#define NUM_MEMSLOTS_GROUPS 2
32

    
33
#define NUM_SURFACES 1024
34

    
35
typedef struct SimpleSpiceDisplay SimpleSpiceDisplay;
36
typedef struct SimpleSpiceUpdate SimpleSpiceUpdate;
37

    
38
struct SimpleSpiceDisplay {
39
    DisplayState *ds;
40
    void *buf;
41
    int bufsize;
42
    QXLWorker *worker;
43
    QXLInstance qxl;
44
    uint32_t unique;
45
    QemuPfConv *conv;
46

    
47
    QXLRect dirty;
48
    int notify;
49
    int running;
50

    
51
    /*
52
     * All struct members below this comment can be accessed from
53
     * both spice server and qemu (iothread) context and any access
54
     * to them must be protected by the lock.
55
     */
56
    QemuMutex lock;
57
    SimpleSpiceUpdate *update;
58
};
59

    
60
struct SimpleSpiceUpdate {
61
    QXLDrawable drawable;
62
    QXLImage image;
63
    QXLCommandExt ext;
64
    uint8_t *bitmap;
65
};
66

    
67
int qemu_spice_rect_is_empty(const QXLRect* r);
68
void qemu_spice_rect_union(QXLRect *dest, const QXLRect *r);
69

    
70
void qemu_spice_destroy_update(SimpleSpiceDisplay *sdpy, SimpleSpiceUpdate *update);
71
void qemu_spice_create_host_memslot(SimpleSpiceDisplay *ssd);
72
void qemu_spice_create_host_primary(SimpleSpiceDisplay *ssd);
73
void qemu_spice_destroy_host_primary(SimpleSpiceDisplay *ssd);
74
void qemu_spice_vm_change_state_handler(void *opaque, int running, int reason);
75

    
76
void qemu_spice_display_update(SimpleSpiceDisplay *ssd,
77
                               int x, int y, int w, int h);
78
void qemu_spice_display_resize(SimpleSpiceDisplay *ssd);
79
void qemu_spice_display_refresh(SimpleSpiceDisplay *ssd);