1*61046927SAndroid Build Coastguard Worker /* $XFree86: xc/lib/GL/dri/XF86dri.c,v 1.12 2001/08/27 17:40:57 dawes Exp $ */
2*61046927SAndroid Build Coastguard Worker /**************************************************************************
3*61046927SAndroid Build Coastguard Worker
4*61046927SAndroid Build Coastguard Worker Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
5*61046927SAndroid Build Coastguard Worker Copyright 2000 VA Linux Systems, Inc.
6*61046927SAndroid Build Coastguard Worker Copyright (c) 2002, 2008 Apple Computer, Inc.
7*61046927SAndroid Build Coastguard Worker All Rights Reserved.
8*61046927SAndroid Build Coastguard Worker
9*61046927SAndroid Build Coastguard Worker Permission is hereby granted, free of charge, to any person obtaining a
10*61046927SAndroid Build Coastguard Worker copy of this software and associated documentation files (the
11*61046927SAndroid Build Coastguard Worker "Software"), to deal in the Software without restriction, including
12*61046927SAndroid Build Coastguard Worker without limitation the rights to use, copy, modify, merge, publish,
13*61046927SAndroid Build Coastguard Worker distribute, sub license, and/or sell copies of the Software, and to
14*61046927SAndroid Build Coastguard Worker permit persons to whom the Software is furnished to do so, subject to
15*61046927SAndroid Build Coastguard Worker the following conditions:
16*61046927SAndroid Build Coastguard Worker
17*61046927SAndroid Build Coastguard Worker The above copyright notice and this permission notice (including the
18*61046927SAndroid Build Coastguard Worker next paragraph) shall be included in all copies or substantial portions
19*61046927SAndroid Build Coastguard Worker of the Software.
20*61046927SAndroid Build Coastguard Worker
21*61046927SAndroid Build Coastguard Worker THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22*61046927SAndroid Build Coastguard Worker OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23*61046927SAndroid Build Coastguard Worker MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
24*61046927SAndroid Build Coastguard Worker IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
25*61046927SAndroid Build Coastguard Worker ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
26*61046927SAndroid Build Coastguard Worker TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
27*61046927SAndroid Build Coastguard Worker SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28*61046927SAndroid Build Coastguard Worker
29*61046927SAndroid Build Coastguard Worker **************************************************************************/
30*61046927SAndroid Build Coastguard Worker
31*61046927SAndroid Build Coastguard Worker /*
32*61046927SAndroid Build Coastguard Worker * Authors:
33*61046927SAndroid Build Coastguard Worker * Kevin E. Martin <[email protected]>
34*61046927SAndroid Build Coastguard Worker * Jens Owen <[email protected]>
35*61046927SAndroid Build Coastguard Worker * Rickard E. (Rik) Faith <[email protected]>
36*61046927SAndroid Build Coastguard Worker *
37*61046927SAndroid Build Coastguard Worker */
38*61046927SAndroid Build Coastguard Worker
39*61046927SAndroid Build Coastguard Worker /* THIS IS NOT AN X CONSORTIUM STANDARD */
40*61046927SAndroid Build Coastguard Worker
41*61046927SAndroid Build Coastguard Worker #include <X11/Xlibint.h>
42*61046927SAndroid Build Coastguard Worker #include "appledristr.h"
43*61046927SAndroid Build Coastguard Worker #include <X11/extensions/Xext.h>
44*61046927SAndroid Build Coastguard Worker #include <X11/extensions/extutil.h>
45*61046927SAndroid Build Coastguard Worker #include <stdio.h>
46*61046927SAndroid Build Coastguard Worker
47*61046927SAndroid Build Coastguard Worker static XExtensionInfo _appledri_info_data;
48*61046927SAndroid Build Coastguard Worker static XExtensionInfo *appledri_info = &_appledri_info_data;
49*61046927SAndroid Build Coastguard Worker static char *appledri_extension_name = APPLEDRINAME;
50*61046927SAndroid Build Coastguard Worker
51*61046927SAndroid Build Coastguard Worker #define AppleDRICheckExtension(dpy,i,val) \
52*61046927SAndroid Build Coastguard Worker XextCheckExtension (dpy, i, appledri_extension_name, val)
53*61046927SAndroid Build Coastguard Worker
54*61046927SAndroid Build Coastguard Worker /*****************************************************************************
55*61046927SAndroid Build Coastguard Worker * *
56*61046927SAndroid Build Coastguard Worker * private utility routines *
57*61046927SAndroid Build Coastguard Worker * *
58*61046927SAndroid Build Coastguard Worker *****************************************************************************/
59*61046927SAndroid Build Coastguard Worker
60*61046927SAndroid Build Coastguard Worker static int close_display(Display * dpy, XExtCodes * extCodes);
61*61046927SAndroid Build Coastguard Worker static Bool wire_to_event(Display * dpy, XEvent * re, xEvent * event);
62*61046927SAndroid Build Coastguard Worker
63*61046927SAndroid Build Coastguard Worker static /* const */ XExtensionHooks appledri_extension_hooks = {
64*61046927SAndroid Build Coastguard Worker NULL, /* create_gc */
65*61046927SAndroid Build Coastguard Worker NULL, /* copy_gc */
66*61046927SAndroid Build Coastguard Worker NULL, /* flush_gc */
67*61046927SAndroid Build Coastguard Worker NULL, /* free_gc */
68*61046927SAndroid Build Coastguard Worker NULL, /* create_font */
69*61046927SAndroid Build Coastguard Worker NULL, /* free_font */
70*61046927SAndroid Build Coastguard Worker close_display, /* close_display */
71*61046927SAndroid Build Coastguard Worker wire_to_event, /* wire_to_event */
72*61046927SAndroid Build Coastguard Worker NULL, /* event_to_wire */
73*61046927SAndroid Build Coastguard Worker NULL, /* error */
74*61046927SAndroid Build Coastguard Worker NULL, /* error_string */
75*61046927SAndroid Build Coastguard Worker };
76*61046927SAndroid Build Coastguard Worker
77*61046927SAndroid Build Coastguard Worker static
78*61046927SAndroid Build Coastguard Worker XEXT_GENERATE_FIND_DISPLAY(find_display, appledri_info,
79*61046927SAndroid Build Coastguard Worker appledri_extension_name,
80*61046927SAndroid Build Coastguard Worker &appledri_extension_hooks,
81*61046927SAndroid Build Coastguard Worker AppleDRINumberEvents, NULL)
82*61046927SAndroid Build Coastguard Worker
83*61046927SAndroid Build Coastguard Worker static XEXT_GENERATE_CLOSE_DISPLAY(close_display, appledri_info)
84*61046927SAndroid Build Coastguard Worker
85*61046927SAndroid Build Coastguard Worker static void (*surface_notify_handler) ();
86*61046927SAndroid Build Coastguard Worker
XAppleDRISetSurfaceNotifyHandler(void (* fun)())87*61046927SAndroid Build Coastguard Worker void *XAppleDRISetSurfaceNotifyHandler(void (*fun) ())
88*61046927SAndroid Build Coastguard Worker {
89*61046927SAndroid Build Coastguard Worker void *old = surface_notify_handler;
90*61046927SAndroid Build Coastguard Worker surface_notify_handler = fun;
91*61046927SAndroid Build Coastguard Worker return old;
92*61046927SAndroid Build Coastguard Worker }
93*61046927SAndroid Build Coastguard Worker
94*61046927SAndroid Build Coastguard Worker static Bool
wire_to_event(Display * dpy,XEvent * re,xEvent * event)95*61046927SAndroid Build Coastguard Worker wire_to_event(Display *dpy, XEvent *re, xEvent *event)
96*61046927SAndroid Build Coastguard Worker {
97*61046927SAndroid Build Coastguard Worker XExtDisplayInfo *info = find_display(dpy);
98*61046927SAndroid Build Coastguard Worker xAppleDRINotifyEvent *sevent;
99*61046927SAndroid Build Coastguard Worker
100*61046927SAndroid Build Coastguard Worker AppleDRICheckExtension(dpy, info, False);
101*61046927SAndroid Build Coastguard Worker
102*61046927SAndroid Build Coastguard Worker switch ((event->u.u.type & 0x7f) - info->codes->first_event) {
103*61046927SAndroid Build Coastguard Worker case AppleDRISurfaceNotify:
104*61046927SAndroid Build Coastguard Worker sevent = (xAppleDRINotifyEvent *) event;
105*61046927SAndroid Build Coastguard Worker if (surface_notify_handler != NULL) {
106*61046927SAndroid Build Coastguard Worker (*surface_notify_handler) (dpy, (unsigned int) sevent->arg,
107*61046927SAndroid Build Coastguard Worker (int) sevent->kind);
108*61046927SAndroid Build Coastguard Worker }
109*61046927SAndroid Build Coastguard Worker return False;
110*61046927SAndroid Build Coastguard Worker }
111*61046927SAndroid Build Coastguard Worker return False;
112*61046927SAndroid Build Coastguard Worker }
113*61046927SAndroid Build Coastguard Worker
114*61046927SAndroid Build Coastguard Worker /*****************************************************************************
115*61046927SAndroid Build Coastguard Worker * *
116*61046927SAndroid Build Coastguard Worker * public Apple-DRI Extension routines *
117*61046927SAndroid Build Coastguard Worker * *
118*61046927SAndroid Build Coastguard Worker *****************************************************************************/
119*61046927SAndroid Build Coastguard Worker
120*61046927SAndroid Build Coastguard Worker #if 0
121*61046927SAndroid Build Coastguard Worker #include <stdio.h>
122*61046927SAndroid Build Coastguard Worker #define TRACE(msg) fprintf(stderr, "AppleDRI%s\n", msg);
123*61046927SAndroid Build Coastguard Worker #else
124*61046927SAndroid Build Coastguard Worker #define TRACE(msg)
125*61046927SAndroid Build Coastguard Worker #endif
126*61046927SAndroid Build Coastguard Worker
127*61046927SAndroid Build Coastguard Worker
128*61046927SAndroid Build Coastguard Worker Bool
XAppleDRIQueryExtension(dpy,event_basep,error_basep)129*61046927SAndroid Build Coastguard Worker XAppleDRIQueryExtension(dpy, event_basep, error_basep)
130*61046927SAndroid Build Coastguard Worker Display *dpy;
131*61046927SAndroid Build Coastguard Worker int *event_basep, *error_basep;
132*61046927SAndroid Build Coastguard Worker {
133*61046927SAndroid Build Coastguard Worker XExtDisplayInfo *info = find_display(dpy);
134*61046927SAndroid Build Coastguard Worker
135*61046927SAndroid Build Coastguard Worker TRACE("QueryExtension...");
136*61046927SAndroid Build Coastguard Worker if (XextHasExtension(info)) {
137*61046927SAndroid Build Coastguard Worker *event_basep = info->codes->first_event;
138*61046927SAndroid Build Coastguard Worker *error_basep = info->codes->first_error;
139*61046927SAndroid Build Coastguard Worker TRACE("QueryExtension... return True");
140*61046927SAndroid Build Coastguard Worker return True;
141*61046927SAndroid Build Coastguard Worker }
142*61046927SAndroid Build Coastguard Worker else {
143*61046927SAndroid Build Coastguard Worker TRACE("QueryExtension... return False");
144*61046927SAndroid Build Coastguard Worker return False;
145*61046927SAndroid Build Coastguard Worker }
146*61046927SAndroid Build Coastguard Worker }
147*61046927SAndroid Build Coastguard Worker
148*61046927SAndroid Build Coastguard Worker Bool
XAppleDRIQueryVersion(dpy,majorVersion,minorVersion,patchVersion)149*61046927SAndroid Build Coastguard Worker XAppleDRIQueryVersion(dpy, majorVersion, minorVersion, patchVersion)
150*61046927SAndroid Build Coastguard Worker Display *dpy;
151*61046927SAndroid Build Coastguard Worker int *majorVersion;
152*61046927SAndroid Build Coastguard Worker int *minorVersion;
153*61046927SAndroid Build Coastguard Worker int *patchVersion;
154*61046927SAndroid Build Coastguard Worker {
155*61046927SAndroid Build Coastguard Worker XExtDisplayInfo *info = find_display(dpy);
156*61046927SAndroid Build Coastguard Worker xAppleDRIQueryVersionReply rep;
157*61046927SAndroid Build Coastguard Worker xAppleDRIQueryVersionReq *req;
158*61046927SAndroid Build Coastguard Worker
159*61046927SAndroid Build Coastguard Worker TRACE("QueryVersion...");
160*61046927SAndroid Build Coastguard Worker AppleDRICheckExtension(dpy, info, False);
161*61046927SAndroid Build Coastguard Worker
162*61046927SAndroid Build Coastguard Worker LockDisplay(dpy);
163*61046927SAndroid Build Coastguard Worker GetReq(AppleDRIQueryVersion, req);
164*61046927SAndroid Build Coastguard Worker req->reqType = info->codes->major_opcode;
165*61046927SAndroid Build Coastguard Worker req->driReqType = X_AppleDRIQueryVersion;
166*61046927SAndroid Build Coastguard Worker if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
167*61046927SAndroid Build Coastguard Worker UnlockDisplay(dpy);
168*61046927SAndroid Build Coastguard Worker SyncHandle();
169*61046927SAndroid Build Coastguard Worker TRACE("QueryVersion... return False");
170*61046927SAndroid Build Coastguard Worker return False;
171*61046927SAndroid Build Coastguard Worker }
172*61046927SAndroid Build Coastguard Worker *majorVersion = rep.majorVersion;
173*61046927SAndroid Build Coastguard Worker *minorVersion = rep.minorVersion;
174*61046927SAndroid Build Coastguard Worker *patchVersion = rep.patchVersion;
175*61046927SAndroid Build Coastguard Worker UnlockDisplay(dpy);
176*61046927SAndroid Build Coastguard Worker SyncHandle();
177*61046927SAndroid Build Coastguard Worker TRACE("QueryVersion... return True");
178*61046927SAndroid Build Coastguard Worker return True;
179*61046927SAndroid Build Coastguard Worker }
180*61046927SAndroid Build Coastguard Worker
181*61046927SAndroid Build Coastguard Worker Bool
XAppleDRIQueryDirectRenderingCapable(dpy,screen,isCapable)182*61046927SAndroid Build Coastguard Worker XAppleDRIQueryDirectRenderingCapable(dpy, screen, isCapable)
183*61046927SAndroid Build Coastguard Worker Display *dpy;
184*61046927SAndroid Build Coastguard Worker int screen;
185*61046927SAndroid Build Coastguard Worker Bool *isCapable;
186*61046927SAndroid Build Coastguard Worker {
187*61046927SAndroid Build Coastguard Worker XExtDisplayInfo *info = find_display(dpy);
188*61046927SAndroid Build Coastguard Worker xAppleDRIQueryDirectRenderingCapableReply rep;
189*61046927SAndroid Build Coastguard Worker xAppleDRIQueryDirectRenderingCapableReq *req;
190*61046927SAndroid Build Coastguard Worker
191*61046927SAndroid Build Coastguard Worker TRACE("QueryDirectRenderingCapable...");
192*61046927SAndroid Build Coastguard Worker AppleDRICheckExtension(dpy, info, False);
193*61046927SAndroid Build Coastguard Worker
194*61046927SAndroid Build Coastguard Worker LockDisplay(dpy);
195*61046927SAndroid Build Coastguard Worker GetReq(AppleDRIQueryDirectRenderingCapable, req);
196*61046927SAndroid Build Coastguard Worker req->reqType = info->codes->major_opcode;
197*61046927SAndroid Build Coastguard Worker req->driReqType = X_AppleDRIQueryDirectRenderingCapable;
198*61046927SAndroid Build Coastguard Worker req->screen = screen;
199*61046927SAndroid Build Coastguard Worker if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
200*61046927SAndroid Build Coastguard Worker UnlockDisplay(dpy);
201*61046927SAndroid Build Coastguard Worker SyncHandle();
202*61046927SAndroid Build Coastguard Worker TRACE("QueryDirectRenderingCapable... return False");
203*61046927SAndroid Build Coastguard Worker return False;
204*61046927SAndroid Build Coastguard Worker }
205*61046927SAndroid Build Coastguard Worker *isCapable = rep.isCapable;
206*61046927SAndroid Build Coastguard Worker UnlockDisplay(dpy);
207*61046927SAndroid Build Coastguard Worker SyncHandle();
208*61046927SAndroid Build Coastguard Worker TRACE("QueryDirectRenderingCapable... return True");
209*61046927SAndroid Build Coastguard Worker return True;
210*61046927SAndroid Build Coastguard Worker }
211*61046927SAndroid Build Coastguard Worker
212*61046927SAndroid Build Coastguard Worker Bool
XAppleDRIAuthConnection(dpy,screen,magic)213*61046927SAndroid Build Coastguard Worker XAppleDRIAuthConnection(dpy, screen, magic)
214*61046927SAndroid Build Coastguard Worker Display *dpy;
215*61046927SAndroid Build Coastguard Worker int screen;
216*61046927SAndroid Build Coastguard Worker unsigned int magic;
217*61046927SAndroid Build Coastguard Worker {
218*61046927SAndroid Build Coastguard Worker XExtDisplayInfo *info = find_display(dpy);
219*61046927SAndroid Build Coastguard Worker xAppleDRIAuthConnectionReq *req;
220*61046927SAndroid Build Coastguard Worker xAppleDRIAuthConnectionReply rep;
221*61046927SAndroid Build Coastguard Worker
222*61046927SAndroid Build Coastguard Worker TRACE("AuthConnection...");
223*61046927SAndroid Build Coastguard Worker AppleDRICheckExtension(dpy, info, False);
224*61046927SAndroid Build Coastguard Worker
225*61046927SAndroid Build Coastguard Worker LockDisplay(dpy);
226*61046927SAndroid Build Coastguard Worker GetReq(AppleDRIAuthConnection, req);
227*61046927SAndroid Build Coastguard Worker req->reqType = info->codes->major_opcode;
228*61046927SAndroid Build Coastguard Worker req->driReqType = X_AppleDRIAuthConnection;
229*61046927SAndroid Build Coastguard Worker req->screen = screen;
230*61046927SAndroid Build Coastguard Worker req->magic = magic;
231*61046927SAndroid Build Coastguard Worker rep.authenticated = 0;
232*61046927SAndroid Build Coastguard Worker if (!_XReply(dpy, (xReply *) & rep, 0, xFalse) || !rep.authenticated) {
233*61046927SAndroid Build Coastguard Worker UnlockDisplay(dpy);
234*61046927SAndroid Build Coastguard Worker SyncHandle();
235*61046927SAndroid Build Coastguard Worker TRACE("AuthConnection... return False");
236*61046927SAndroid Build Coastguard Worker return False;
237*61046927SAndroid Build Coastguard Worker }
238*61046927SAndroid Build Coastguard Worker UnlockDisplay(dpy);
239*61046927SAndroid Build Coastguard Worker SyncHandle();
240*61046927SAndroid Build Coastguard Worker TRACE("AuthConnection... return True");
241*61046927SAndroid Build Coastguard Worker return True;
242*61046927SAndroid Build Coastguard Worker }
243*61046927SAndroid Build Coastguard Worker
244*61046927SAndroid Build Coastguard Worker Bool
XAppleDRICreateSurface(dpy,screen,drawable,client_id,key,uid)245*61046927SAndroid Build Coastguard Worker XAppleDRICreateSurface(dpy, screen, drawable, client_id, key, uid)
246*61046927SAndroid Build Coastguard Worker Display *dpy;
247*61046927SAndroid Build Coastguard Worker int screen;
248*61046927SAndroid Build Coastguard Worker Drawable drawable;
249*61046927SAndroid Build Coastguard Worker unsigned int client_id;
250*61046927SAndroid Build Coastguard Worker unsigned int *key;
251*61046927SAndroid Build Coastguard Worker unsigned int *uid;
252*61046927SAndroid Build Coastguard Worker {
253*61046927SAndroid Build Coastguard Worker XExtDisplayInfo *info = find_display(dpy);
254*61046927SAndroid Build Coastguard Worker xAppleDRICreateSurfaceReply rep;
255*61046927SAndroid Build Coastguard Worker xAppleDRICreateSurfaceReq *req;
256*61046927SAndroid Build Coastguard Worker
257*61046927SAndroid Build Coastguard Worker TRACE("CreateSurface...");
258*61046927SAndroid Build Coastguard Worker AppleDRICheckExtension(dpy, info, False);
259*61046927SAndroid Build Coastguard Worker
260*61046927SAndroid Build Coastguard Worker LockDisplay(dpy);
261*61046927SAndroid Build Coastguard Worker GetReq(AppleDRICreateSurface, req);
262*61046927SAndroid Build Coastguard Worker req->reqType = info->codes->major_opcode;
263*61046927SAndroid Build Coastguard Worker req->driReqType = X_AppleDRICreateSurface;
264*61046927SAndroid Build Coastguard Worker req->screen = screen;
265*61046927SAndroid Build Coastguard Worker req->drawable = drawable;
266*61046927SAndroid Build Coastguard Worker req->client_id = client_id;
267*61046927SAndroid Build Coastguard Worker rep.key_0 = rep.key_1 = rep.uid = 0;
268*61046927SAndroid Build Coastguard Worker if (!_XReply(dpy, (xReply *) & rep, 0, xFalse) || !rep.key_0) {
269*61046927SAndroid Build Coastguard Worker UnlockDisplay(dpy);
270*61046927SAndroid Build Coastguard Worker SyncHandle();
271*61046927SAndroid Build Coastguard Worker TRACE("CreateSurface... return False");
272*61046927SAndroid Build Coastguard Worker return False;
273*61046927SAndroid Build Coastguard Worker }
274*61046927SAndroid Build Coastguard Worker key[0] = rep.key_0;
275*61046927SAndroid Build Coastguard Worker key[1] = rep.key_1;
276*61046927SAndroid Build Coastguard Worker *uid = rep.uid;
277*61046927SAndroid Build Coastguard Worker UnlockDisplay(dpy);
278*61046927SAndroid Build Coastguard Worker SyncHandle();
279*61046927SAndroid Build Coastguard Worker TRACE("CreateSurface... return True");
280*61046927SAndroid Build Coastguard Worker return True;
281*61046927SAndroid Build Coastguard Worker }
282*61046927SAndroid Build Coastguard Worker
283*61046927SAndroid Build Coastguard Worker Bool
XAppleDRIDestroySurface(dpy,screen,drawable)284*61046927SAndroid Build Coastguard Worker XAppleDRIDestroySurface(dpy, screen, drawable)
285*61046927SAndroid Build Coastguard Worker Display *dpy;
286*61046927SAndroid Build Coastguard Worker int screen;
287*61046927SAndroid Build Coastguard Worker Drawable drawable;
288*61046927SAndroid Build Coastguard Worker {
289*61046927SAndroid Build Coastguard Worker XExtDisplayInfo *info = find_display(dpy);
290*61046927SAndroid Build Coastguard Worker xAppleDRIDestroySurfaceReq *req;
291*61046927SAndroid Build Coastguard Worker
292*61046927SAndroid Build Coastguard Worker TRACE("DestroySurface...");
293*61046927SAndroid Build Coastguard Worker AppleDRICheckExtension(dpy, info, False);
294*61046927SAndroid Build Coastguard Worker
295*61046927SAndroid Build Coastguard Worker LockDisplay(dpy);
296*61046927SAndroid Build Coastguard Worker GetReq(AppleDRIDestroySurface, req);
297*61046927SAndroid Build Coastguard Worker req->reqType = info->codes->major_opcode;
298*61046927SAndroid Build Coastguard Worker req->driReqType = X_AppleDRIDestroySurface;
299*61046927SAndroid Build Coastguard Worker req->screen = screen;
300*61046927SAndroid Build Coastguard Worker req->drawable = drawable;
301*61046927SAndroid Build Coastguard Worker UnlockDisplay(dpy);
302*61046927SAndroid Build Coastguard Worker SyncHandle();
303*61046927SAndroid Build Coastguard Worker TRACE("DestroySurface... return True");
304*61046927SAndroid Build Coastguard Worker return True;
305*61046927SAndroid Build Coastguard Worker }
306*61046927SAndroid Build Coastguard Worker
307*61046927SAndroid Build Coastguard Worker Bool
XAppleDRICreateSharedBuffer(Display * dpy,int screen,Drawable drawable,Bool doubleSwap,char * path,size_t pathlen,int * width,int * height)308*61046927SAndroid Build Coastguard Worker XAppleDRICreateSharedBuffer(Display * dpy, int screen, Drawable drawable,
309*61046927SAndroid Build Coastguard Worker Bool doubleSwap, char *path, size_t pathlen,
310*61046927SAndroid Build Coastguard Worker int *width, int *height)
311*61046927SAndroid Build Coastguard Worker {
312*61046927SAndroid Build Coastguard Worker XExtDisplayInfo *info = find_display(dpy);
313*61046927SAndroid Build Coastguard Worker xAppleDRICreateSharedBufferReq *req;
314*61046927SAndroid Build Coastguard Worker xAppleDRICreateSharedBufferReply rep;
315*61046927SAndroid Build Coastguard Worker
316*61046927SAndroid Build Coastguard Worker AppleDRICheckExtension(dpy, info, False);
317*61046927SAndroid Build Coastguard Worker
318*61046927SAndroid Build Coastguard Worker LockDisplay(dpy);
319*61046927SAndroid Build Coastguard Worker GetReq(AppleDRICreateSharedBuffer, req);
320*61046927SAndroid Build Coastguard Worker req->reqType = info->codes->major_opcode;
321*61046927SAndroid Build Coastguard Worker req->driReqType = X_AppleDRICreateSharedBuffer;
322*61046927SAndroid Build Coastguard Worker req->screen = screen;
323*61046927SAndroid Build Coastguard Worker req->drawable = drawable;
324*61046927SAndroid Build Coastguard Worker req->doubleSwap = doubleSwap;
325*61046927SAndroid Build Coastguard Worker
326*61046927SAndroid Build Coastguard Worker
327*61046927SAndroid Build Coastguard Worker if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
328*61046927SAndroid Build Coastguard Worker puts("REPLY ERROR");
329*61046927SAndroid Build Coastguard Worker
330*61046927SAndroid Build Coastguard Worker UnlockDisplay(dpy);
331*61046927SAndroid Build Coastguard Worker SyncHandle();
332*61046927SAndroid Build Coastguard Worker return False;
333*61046927SAndroid Build Coastguard Worker }
334*61046927SAndroid Build Coastguard Worker
335*61046927SAndroid Build Coastguard Worker /* printf("rep.stringLength %d\n", (int) rep.stringLength); */
336*61046927SAndroid Build Coastguard Worker
337*61046927SAndroid Build Coastguard Worker if (rep.stringLength > 0 && rep.stringLength <= pathlen) {
338*61046927SAndroid Build Coastguard Worker _XReadPad(dpy, path, rep.stringLength);
339*61046927SAndroid Build Coastguard Worker
340*61046927SAndroid Build Coastguard Worker /* printf("path: %s\n", path); */
341*61046927SAndroid Build Coastguard Worker
342*61046927SAndroid Build Coastguard Worker *width = rep.width;
343*61046927SAndroid Build Coastguard Worker *height = rep.height;
344*61046927SAndroid Build Coastguard Worker
345*61046927SAndroid Build Coastguard Worker UnlockDisplay(dpy);
346*61046927SAndroid Build Coastguard Worker SyncHandle();
347*61046927SAndroid Build Coastguard Worker return True;
348*61046927SAndroid Build Coastguard Worker }
349*61046927SAndroid Build Coastguard Worker
350*61046927SAndroid Build Coastguard Worker UnlockDisplay(dpy);
351*61046927SAndroid Build Coastguard Worker SyncHandle();
352*61046927SAndroid Build Coastguard Worker
353*61046927SAndroid Build Coastguard Worker return False;
354*61046927SAndroid Build Coastguard Worker }
355*61046927SAndroid Build Coastguard Worker
356*61046927SAndroid Build Coastguard Worker Bool
XAppleDRISwapBuffers(Display * dpy,int screen,Drawable drawable)357*61046927SAndroid Build Coastguard Worker XAppleDRISwapBuffers(Display * dpy, int screen, Drawable drawable)
358*61046927SAndroid Build Coastguard Worker {
359*61046927SAndroid Build Coastguard Worker XExtDisplayInfo *info = find_display(dpy);
360*61046927SAndroid Build Coastguard Worker xAppleDRISwapBuffersReq *req;
361*61046927SAndroid Build Coastguard Worker
362*61046927SAndroid Build Coastguard Worker AppleDRICheckExtension(dpy, info, False);
363*61046927SAndroid Build Coastguard Worker
364*61046927SAndroid Build Coastguard Worker LockDisplay(dpy);
365*61046927SAndroid Build Coastguard Worker GetReq(AppleDRISwapBuffers, req);
366*61046927SAndroid Build Coastguard Worker req->reqType = info->codes->major_opcode;
367*61046927SAndroid Build Coastguard Worker req->driReqType = X_AppleDRISwapBuffers;
368*61046927SAndroid Build Coastguard Worker req->screen = screen;
369*61046927SAndroid Build Coastguard Worker req->drawable = drawable;
370*61046927SAndroid Build Coastguard Worker UnlockDisplay(dpy);
371*61046927SAndroid Build Coastguard Worker SyncHandle();
372*61046927SAndroid Build Coastguard Worker
373*61046927SAndroid Build Coastguard Worker return True;
374*61046927SAndroid Build Coastguard Worker }
375*61046927SAndroid Build Coastguard Worker
376*61046927SAndroid Build Coastguard Worker Bool
XAppleDRICreatePixmap(Display * dpy,int screen,Drawable drawable,int * width,int * height,int * pitch,int * bpp,size_t * size,char * bufname,size_t bufnamesize)377*61046927SAndroid Build Coastguard Worker XAppleDRICreatePixmap(Display * dpy, int screen, Drawable drawable,
378*61046927SAndroid Build Coastguard Worker int *width, int *height, int *pitch, int *bpp,
379*61046927SAndroid Build Coastguard Worker size_t * size, char *bufname, size_t bufnamesize)
380*61046927SAndroid Build Coastguard Worker {
381*61046927SAndroid Build Coastguard Worker XExtDisplayInfo *info = find_display(dpy);
382*61046927SAndroid Build Coastguard Worker xAppleDRICreatePixmapReq *req;
383*61046927SAndroid Build Coastguard Worker xAppleDRICreatePixmapReply rep;
384*61046927SAndroid Build Coastguard Worker
385*61046927SAndroid Build Coastguard Worker AppleDRICheckExtension(dpy, info, False);
386*61046927SAndroid Build Coastguard Worker
387*61046927SAndroid Build Coastguard Worker LockDisplay(dpy);
388*61046927SAndroid Build Coastguard Worker GetReq(AppleDRICreatePixmap, req);
389*61046927SAndroid Build Coastguard Worker req->reqType = info->codes->major_opcode;
390*61046927SAndroid Build Coastguard Worker req->driReqType = X_AppleDRICreatePixmap;
391*61046927SAndroid Build Coastguard Worker req->screen = screen;
392*61046927SAndroid Build Coastguard Worker req->drawable = drawable;
393*61046927SAndroid Build Coastguard Worker
394*61046927SAndroid Build Coastguard Worker if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
395*61046927SAndroid Build Coastguard Worker UnlockDisplay(dpy);
396*61046927SAndroid Build Coastguard Worker SyncHandle();
397*61046927SAndroid Build Coastguard Worker return False;
398*61046927SAndroid Build Coastguard Worker }
399*61046927SAndroid Build Coastguard Worker
400*61046927SAndroid Build Coastguard Worker /*
401*61046927SAndroid Build Coastguard Worker printf("rep.stringLength %d\n", (int) rep.stringLength);
402*61046927SAndroid Build Coastguard Worker */
403*61046927SAndroid Build Coastguard Worker
404*61046927SAndroid Build Coastguard Worker if (rep.stringLength > 0 && rep.stringLength <= bufnamesize) {
405*61046927SAndroid Build Coastguard Worker _XReadPad(dpy, bufname, rep.stringLength);
406*61046927SAndroid Build Coastguard Worker
407*61046927SAndroid Build Coastguard Worker /* printf("path: %s\n", bufname); */
408*61046927SAndroid Build Coastguard Worker
409*61046927SAndroid Build Coastguard Worker *width = rep.width;
410*61046927SAndroid Build Coastguard Worker *height = rep.height;
411*61046927SAndroid Build Coastguard Worker *pitch = rep.pitch;
412*61046927SAndroid Build Coastguard Worker *bpp = rep.bpp;
413*61046927SAndroid Build Coastguard Worker *size = rep.size;
414*61046927SAndroid Build Coastguard Worker
415*61046927SAndroid Build Coastguard Worker UnlockDisplay(dpy);
416*61046927SAndroid Build Coastguard Worker SyncHandle();
417*61046927SAndroid Build Coastguard Worker return True;
418*61046927SAndroid Build Coastguard Worker }
419*61046927SAndroid Build Coastguard Worker else if (rep.stringLength > 0) {
420*61046927SAndroid Build Coastguard Worker _XEatData(dpy, rep.stringLength);
421*61046927SAndroid Build Coastguard Worker }
422*61046927SAndroid Build Coastguard Worker
423*61046927SAndroid Build Coastguard Worker UnlockDisplay(dpy);
424*61046927SAndroid Build Coastguard Worker SyncHandle();
425*61046927SAndroid Build Coastguard Worker
426*61046927SAndroid Build Coastguard Worker return True;
427*61046927SAndroid Build Coastguard Worker }
428*61046927SAndroid Build Coastguard Worker
429*61046927SAndroid Build Coastguard Worker /*
430*61046927SAndroid Build Coastguard Worker * Call it a drawable, because we really don't know what it is
431*61046927SAndroid Build Coastguard Worker * until it reaches the server, and we should keep that in mind.
432*61046927SAndroid Build Coastguard Worker */
433*61046927SAndroid Build Coastguard Worker Bool
XAppleDRIDestroyPixmap(Display * dpy,Pixmap drawable)434*61046927SAndroid Build Coastguard Worker XAppleDRIDestroyPixmap(Display * dpy, Pixmap drawable)
435*61046927SAndroid Build Coastguard Worker {
436*61046927SAndroid Build Coastguard Worker XExtDisplayInfo *info = find_display(dpy);
437*61046927SAndroid Build Coastguard Worker xAppleDRIDestroyPixmapReq *req;
438*61046927SAndroid Build Coastguard Worker
439*61046927SAndroid Build Coastguard Worker AppleDRICheckExtension(dpy, info, False);
440*61046927SAndroid Build Coastguard Worker
441*61046927SAndroid Build Coastguard Worker LockDisplay(dpy);
442*61046927SAndroid Build Coastguard Worker GetReq(AppleDRIDestroyPixmap, req);
443*61046927SAndroid Build Coastguard Worker req->reqType = info->codes->major_opcode;
444*61046927SAndroid Build Coastguard Worker req->driReqType = X_AppleDRIDestroyPixmap;
445*61046927SAndroid Build Coastguard Worker req->drawable = drawable;
446*61046927SAndroid Build Coastguard Worker UnlockDisplay(dpy);
447*61046927SAndroid Build Coastguard Worker SyncHandle();
448*61046927SAndroid Build Coastguard Worker
449*61046927SAndroid Build Coastguard Worker return True;
450*61046927SAndroid Build Coastguard Worker }
451