5.1 KB、206行 生 Blame 履歴
1/*
2 * Copyright © 2013 Keith Packard
3 *
4 * Permission to use, copy, modify, distribute, and sell this software and its
5 * documentation for any purpose is hereby granted without fee, provided that
6 * the above copyright notice appear in all copies and that both that copyright
7 * notice and this permission notice appear in supporting documentation, and
8 * that the name of the copyright holders not be used in advertising or
9 * publicity pertaining to distribution of the software without specific,
10 * written prior permission. The copyright holders make no representations
11 * about the suitability of this software for any purpose. It is provided "as
12 * is" without express or implied warranty.
13 *
14 * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
16 * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
18 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
20 * OF THIS SOFTWARE.
21 */
22
23#ifndef _XPRESENT_H_
24#define _XPRESENT_H_
25
26#include <stdint.h>
27#include <X11/extensions/presenttokens.h>
28
29#include <X11/Xfuncproto.h>
30#include <X11/Xlib.h>
31#include <X11/extensions/Xfixes.h>
32#include <X11/extensions/Xrandr.h>
33#include <X11/extensions/sync.h>
34
35/*
36 * This revision number also appears in configure.ac, they have
37 * to be manually synchronized
38 */
39#define PRESENT_REVISION 0
40#define PRESENT_VERSION ((PRESENT_MAJOR * 10000) + (PRESENT_MINOR * 100) + (PRESENT_REVISION))
41
42/**
43 * Generic Present event. All Present events have the same header.
44 */
45
46typedef struct {
47 Window window;
48 uint32_t serial;
49} XPresentNotify;
50
51typedef struct {
52 int type; /* event base */
53 unsigned long serial;
54 Bool send_event;
55 Display *display;
56 int extension;
57 int evtype;
58} XPresentEvent;
59
60typedef struct {
61 int type; /* event base */
62 unsigned long serial;
63 Bool send_event;
64 Display *display;
65 int extension;
66 int evtype;
67
68 uint32_t eid;
69 Window window;
70 int x,y;
71 unsigned width, height;
72 int off_x, off_y;
73 int pixmap_width, pixmap_height;
74 long pixmap_flags;
75} XPresentConfigureNotifyEvent;
76
77typedef struct {
78 int type; /* event base */
79 unsigned long serial;
80 Bool send_event;
81 Display *display;
82 int extension;
83 int evtype;
84
85 uint32_t eid;
86 Window window;
87 uint32_t serial_number;
88 uint64_t ust;
89 uint64_t msc;
90 uint8_t kind;
91 uint8_t mode;
92} XPresentCompleteNotifyEvent;
93
94typedef struct {
95 int type; /* event base */
96 unsigned long serial;
97 Bool send_event;
98 Display *display;
99 int extension;
100 int evtype;
101
102 uint32_t eid;
103 Window window;
104 uint32_t serial_number;
105 Pixmap pixmap;
106 XSyncFence idle_fence;
107} XPresentIdleNotifyEvent;
108
109#if PRESENT_FUTURE_VERSION
110
111typedef struct {
112 int type; /* event base */
113 unsigned long serial;
114 Bool send_event;
115 Display *display;
116 int extension;
117 int evtype;
118
119 uint32_t eid;
120 Window event_window;
121
122 Window window;
123 Pixmap pixmap;
124 uint32_t serial_number;
125
126 XserverRegion valid_region;
127 XserverRegion update_region;
128
129 XRectangle valid_rect;
130 XRectangle update_rect;
131
132 int x_off, y_off;
133
134 RRCrtc target_crtc;
135
136 XSyncFence wait_fence;
137 XSyncFence idle_fence;
138
139 uint32_t options;
140
141 uint64_t target_msc;
142 uint64_t divisor;
143 uint64_t remainder;
144 XPresentNotify *notifies;
145 int nnotifies;
146} XPresentRedirectNotifyEvent;
147
148#endif
149
150_XFUNCPROTOBEGIN
151
152Bool XPresentQueryExtension (Display *dpy,
153 int *major_opcode_return,
154 int *event_base_return,
155 int *error_base_return);
156
157Status XPresentQueryVersion (Display *dpy,
158 int *major_version_return,
159 int *minor_version_return);
160
161int XPresentVersion (void);
162
163void
164XPresentPixmap(Display *dpy,
165 Window window,
166 Pixmap pixmap,
167 uint32_t serial,
168 XserverRegion valid,
169 XserverRegion update,
170 int x_off,
171 int y_off,
172 RRCrtc target_crtc,
173 XSyncFence wait_fence,
174 XSyncFence idle_fence,
175 uint32_t options,
176 uint64_t target_msc,
177 uint64_t divisor,
178 uint64_t remainder,
179 XPresentNotify *notifies,
180 int nnotifies);
181
182void
183XPresentNotifyMSC(Display *dpy,
184 Window window,
185 uint32_t serial,
186 uint64_t target_msc,
187 uint64_t divisor,
188 uint64_t remainder);
189
190XID
191XPresentSelectInput(Display *dpy,
192 Window window,
193 unsigned event_mask);
194
195void
196XPresentFreeInput(Display *dpy,
197 Window window,
198 XID event_id);
199
200uint32_t
201XPresentQueryCapabilities(Display *dpy,
202 XID target);
203
204_XFUNCPROTOEND
205
206#endif /* _XPRESENT_H_ */