Mercurial > sdl-ios-xcode
comparison src/video/Xext/Xxf86dga/XF86DGA2.c @ 1575:3ba88cb7eb1b
Updated dynamic X11 code. See details in Bugzilla #170.
author | Ryan C. Gordon <icculus@icculus.org> |
---|---|
date | Wed, 22 Mar 2006 05:00:59 +0000 |
parents | 6fd39b50dd91 |
children | ecba4bbaf9c2 |
comparison
equal
deleted
inserted
replaced
1574:0fd72308659e | 1575:3ba88cb7eb1b |
---|---|
105 | 105 |
106 switch((wire->u.u.type & 0x7f) - info->codes->first_event) { | 106 switch((wire->u.u.type & 0x7f) - info->codes->first_event) { |
107 case MotionNotify: | 107 case MotionNotify: |
108 mevent = (SDL_NAME(XDGAMotionEvent)*)event; | 108 mevent = (SDL_NAME(XDGAMotionEvent)*)event; |
109 mevent->type = wire->u.u.type & 0x7F; | 109 mevent->type = wire->u.u.type & 0x7F; |
110 mevent->serial = p_XSetLastRequestRead(dpy, (xGenericReply *)wire); | 110 mevent->serial = _XSetLastRequestRead(dpy, (xGenericReply *)wire); |
111 mevent->display = dpy; | 111 mevent->display = dpy; |
112 mevent->screen = wire->u.event.screen; | 112 mevent->screen = wire->u.event.screen; |
113 mevent->time = wire->u.event.time; | 113 mevent->time = wire->u.event.time; |
114 mevent->state = wire->u.event.state; | 114 mevent->state = wire->u.event.state; |
115 mevent->dx = wire->u.event.dx; | 115 mevent->dx = wire->u.event.dx; |
117 return True; | 117 return True; |
118 case ButtonPress: | 118 case ButtonPress: |
119 case ButtonRelease: | 119 case ButtonRelease: |
120 bevent = (SDL_NAME(XDGAButtonEvent)*)event; | 120 bevent = (SDL_NAME(XDGAButtonEvent)*)event; |
121 bevent->type = wire->u.u.type & 0x7F; | 121 bevent->type = wire->u.u.type & 0x7F; |
122 bevent->serial = p_XSetLastRequestRead(dpy, (xGenericReply *)wire); | 122 bevent->serial = _XSetLastRequestRead(dpy, (xGenericReply *)wire); |
123 bevent->display = dpy; | 123 bevent->display = dpy; |
124 bevent->screen = wire->u.event.screen; | 124 bevent->screen = wire->u.event.screen; |
125 bevent->time = wire->u.event.time; | 125 bevent->time = wire->u.event.time; |
126 bevent->state = wire->u.event.state; | 126 bevent->state = wire->u.event.state; |
127 bevent->button = wire->u.u.detail; | 127 bevent->button = wire->u.u.detail; |
128 return True; | 128 return True; |
129 case KeyPress: | 129 case KeyPress: |
130 case KeyRelease: | 130 case KeyRelease: |
131 kevent = (SDL_NAME(XDGAKeyEvent)*)event; | 131 kevent = (SDL_NAME(XDGAKeyEvent)*)event; |
132 kevent->type = wire->u.u.type & 0x7F; | 132 kevent->type = wire->u.u.type & 0x7F; |
133 kevent->serial = p_XSetLastRequestRead(dpy, (xGenericReply *)wire); | 133 kevent->serial = _XSetLastRequestRead(dpy, (xGenericReply *)wire); |
134 kevent->display = dpy; | 134 kevent->display = dpy; |
135 kevent->screen = wire->u.event.screen; | 135 kevent->screen = wire->u.event.screen; |
136 kevent->time = wire->u.event.time; | 136 kevent->time = wire->u.event.time; |
137 kevent->state = wire->u.event.state; | 137 kevent->state = wire->u.event.state; |
138 kevent->keycode = wire->u.u.detail; | 138 kevent->keycode = wire->u.u.detail; |
173 | 173 |
174 LockDisplay(dpy); | 174 LockDisplay(dpy); |
175 GetReq(XDGAQueryVersion, req); | 175 GetReq(XDGAQueryVersion, req); |
176 req->reqType = info->codes->major_opcode; | 176 req->reqType = info->codes->major_opcode; |
177 req->dgaReqType = X_XDGAQueryVersion; | 177 req->dgaReqType = X_XDGAQueryVersion; |
178 if (!p_XReply(dpy, (xReply *)&rep, 0, xFalse)) { | 178 if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { |
179 UnlockDisplay(dpy); | 179 UnlockDisplay(dpy); |
180 SyncHandle(); | 180 SyncHandle(); |
181 return False; | 181 return False; |
182 } | 182 } |
183 *majorVersion = rep.majorVersion; | 183 *majorVersion = rep.majorVersion; |
190 | 190 |
191 for (i = 0, j = info->codes->first_event; | 191 for (i = 0, j = info->codes->first_event; |
192 i < XF86DGANumberEvents; | 192 i < XF86DGANumberEvents; |
193 i++, j++) | 193 i++, j++) |
194 { | 194 { |
195 pXESetWireToEvent(dpy, j, xdga_wire_to_event); | 195 XESetWireToEvent(dpy, j, xdga_wire_to_event); |
196 pXESetEventToWire(dpy, j, xdga_event_to_wire); | 196 XESetEventToWire(dpy, j, xdga_event_to_wire); |
197 } | 197 } |
198 SDL_NAME(XDGASetClientVersion)(dpy); | 198 SDL_NAME(XDGASetClientVersion)(dpy); |
199 } | 199 } |
200 return True; | 200 return True; |
201 } | 201 } |
234 LockDisplay(dpy); | 234 LockDisplay(dpy); |
235 GetReq(XDGAOpenFramebuffer, req); | 235 GetReq(XDGAOpenFramebuffer, req); |
236 req->reqType = info->codes->major_opcode; | 236 req->reqType = info->codes->major_opcode; |
237 req->dgaReqType = X_XDGAOpenFramebuffer; | 237 req->dgaReqType = X_XDGAOpenFramebuffer; |
238 req->screen = screen; | 238 req->screen = screen; |
239 if (!p_XReply(dpy, (xReply *)&rep, 0, xFalse)) { | 239 if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { |
240 UnlockDisplay(dpy); | 240 UnlockDisplay(dpy); |
241 SyncHandle(); | 241 SyncHandle(); |
242 return False; | 242 return False; |
243 } | 243 } |
244 | 244 |
245 if(rep.length) { | 245 if(rep.length) { |
246 deviceName = Xmalloc(rep.length << 2); | 246 deviceName = Xmalloc(rep.length << 2); |
247 p_XRead(dpy, deviceName, rep.length << 2); | 247 _XRead(dpy, deviceName, rep.length << 2); |
248 } | 248 } |
249 | 249 |
250 ret = SDL_NAME(XDGAMapFramebuffer)(screen, deviceName, | 250 ret = SDL_NAME(XDGAMapFramebuffer)(screen, deviceName, |
251 (unsigned char*)(long)rep.mem1, | 251 (unsigned char*)(long)rep.mem1, |
252 rep.size, rep.offset, rep.extra); | 252 rep.size, rep.offset, rep.extra); |
299 GetReq(XDGAQueryModes, req); | 299 GetReq(XDGAQueryModes, req); |
300 req->reqType = dinfo->codes->major_opcode; | 300 req->reqType = dinfo->codes->major_opcode; |
301 req->dgaReqType = X_XDGAQueryModes; | 301 req->dgaReqType = X_XDGAQueryModes; |
302 req->screen = screen; | 302 req->screen = screen; |
303 | 303 |
304 if (p_XReply(dpy, (xReply *)&rep, 0, xFalse)) { | 304 if (_XReply(dpy, (xReply *)&rep, 0, xFalse)) { |
305 if(rep.length) { | 305 if(rep.length) { |
306 xXDGAModeInfo info; | 306 xXDGAModeInfo info; |
307 int i, size; | 307 int i, size; |
308 char *offset; | 308 char *offset; |
309 | 309 |
313 offset = (char*)(&modes[rep.number]); /* start of text */ | 313 offset = (char*)(&modes[rep.number]); /* start of text */ |
314 | 314 |
315 | 315 |
316 if(modes) { | 316 if(modes) { |
317 for(i = 0; i < rep.number; i++) { | 317 for(i = 0; i < rep.number; i++) { |
318 p_XRead(dpy, (char*)(&info), sz_xXDGAModeInfo); | 318 _XRead(dpy, (char*)(&info), sz_xXDGAModeInfo); |
319 | 319 |
320 modes[i].num = info.num; | 320 modes[i].num = info.num; |
321 modes[i].verticalRefresh = | 321 modes[i].verticalRefresh = |
322 (float)info.vsync_num / (float)info.vsync_den; | 322 (float)info.vsync_num / (float)info.vsync_den; |
323 modes[i].flags = info.flags; | 323 modes[i].flags = info.flags; |
341 modes[i].maxViewportY = info.viewport_ymax; | 341 modes[i].maxViewportY = info.viewport_ymax; |
342 modes[i].viewportFlags = info.viewport_flags; | 342 modes[i].viewportFlags = info.viewport_flags; |
343 modes[i].reserved1 = info.reserved1; | 343 modes[i].reserved1 = info.reserved1; |
344 modes[i].reserved2 = info.reserved2; | 344 modes[i].reserved2 = info.reserved2; |
345 | 345 |
346 p_XRead(dpy, offset, info.name_size); | 346 _XRead(dpy, offset, info.name_size); |
347 modes[i].name = offset; | 347 modes[i].name = offset; |
348 offset += info.name_size; | 348 offset += info.name_size; |
349 } | 349 } |
350 *num = rep.number; | 350 *num = rep.number; |
351 } else | 351 } else |
352 p_XEatData(dpy, rep.length << 2); | 352 _XEatData(dpy, rep.length << 2); |
353 } | 353 } |
354 } | 354 } |
355 | 355 |
356 UnlockDisplay(dpy); | 356 UnlockDisplay(dpy); |
357 SyncHandle(); | 357 SyncHandle(); |
380 req->dgaReqType = X_XDGASetMode; | 380 req->dgaReqType = X_XDGASetMode; |
381 req->screen = screen; | 381 req->screen = screen; |
382 req->mode = mode; | 382 req->mode = mode; |
383 req->pid = pid = XAllocID(dpy); | 383 req->pid = pid = XAllocID(dpy); |
384 | 384 |
385 if (p_XReply(dpy, (xReply *)&rep, 0, xFalse)) { | 385 if (_XReply(dpy, (xReply *)&rep, 0, xFalse)) { |
386 if(rep.length) { | 386 if(rep.length) { |
387 xXDGAModeInfo info; | 387 xXDGAModeInfo info; |
388 int size; | 388 int size; |
389 | 389 |
390 size = rep.length << 2; | 390 size = rep.length << 2; |
391 size -= sz_xXDGAModeInfo; /* get text size */ | 391 size -= sz_xXDGAModeInfo; /* get text size */ |
392 | 392 |
393 dev = (SDL_NAME(XDGADevice)*)Xmalloc(sizeof(SDL_NAME(XDGADevice)) + size); | 393 dev = (SDL_NAME(XDGADevice)*)Xmalloc(sizeof(SDL_NAME(XDGADevice)) + size); |
394 | 394 |
395 if(dev) { | 395 if(dev) { |
396 p_XRead(dpy, (char*)(&info), sz_xXDGAModeInfo); | 396 _XRead(dpy, (char*)(&info), sz_xXDGAModeInfo); |
397 | 397 |
398 dev->mode.num = info.num; | 398 dev->mode.num = info.num; |
399 dev->mode.verticalRefresh = | 399 dev->mode.verticalRefresh = |
400 (float)info.vsync_num / (float)info.vsync_den; | 400 (float)info.vsync_num / (float)info.vsync_den; |
401 dev->mode.flags = info.flags; | 401 dev->mode.flags = info.flags; |
420 dev->mode.viewportFlags = info.viewport_flags; | 420 dev->mode.viewportFlags = info.viewport_flags; |
421 dev->mode.reserved1 = info.reserved1; | 421 dev->mode.reserved1 = info.reserved1; |
422 dev->mode.reserved2 = info.reserved2; | 422 dev->mode.reserved2 = info.reserved2; |
423 | 423 |
424 dev->mode.name = (char*)(&dev[1]); | 424 dev->mode.name = (char*)(&dev[1]); |
425 p_XRead(dpy, dev->mode.name, info.name_size); | 425 _XRead(dpy, dev->mode.name, info.name_size); |
426 | 426 |
427 dev->pixmap = (rep.flags & XDGAPixmap) ? pid : 0; | 427 dev->pixmap = (rep.flags & XDGAPixmap) ? pid : 0; |
428 dev->data = SDL_NAME(XDGAGetMappedMemory)(screen); | 428 dev->data = SDL_NAME(XDGAGetMappedMemory)(screen); |
429 | 429 |
430 if(dev->data) | 430 if(dev->data) |
611 LockDisplay(dpy); | 611 LockDisplay(dpy); |
612 GetReq(XDGAGetViewportStatus, req); | 612 GetReq(XDGAGetViewportStatus, req); |
613 req->reqType = info->codes->major_opcode; | 613 req->reqType = info->codes->major_opcode; |
614 req->dgaReqType = X_XDGAGetViewportStatus; | 614 req->dgaReqType = X_XDGAGetViewportStatus; |
615 req->screen = screen; | 615 req->screen = screen; |
616 if (!p_XReply(dpy, (xReply *)&rep, 0, xFalse)) | 616 if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) |
617 status = rep.status; | 617 status = rep.status; |
618 UnlockDisplay(dpy); | 618 UnlockDisplay(dpy); |
619 SyncHandle(); | 619 SyncHandle(); |
620 return status; | 620 return status; |
621 } | 621 } |
633 LockDisplay(dpy); | 633 LockDisplay(dpy); |
634 GetReq(XDGASync, req); | 634 GetReq(XDGASync, req); |
635 req->reqType = info->codes->major_opcode; | 635 req->reqType = info->codes->major_opcode; |
636 req->dgaReqType = X_XDGASync; | 636 req->dgaReqType = X_XDGASync; |
637 req->screen = screen; | 637 req->screen = screen; |
638 p_XReply(dpy, (xReply *)&rep, 0, xFalse); | 638 _XReply(dpy, (xReply *)&rep, 0, xFalse); |
639 UnlockDisplay(dpy); | 639 UnlockDisplay(dpy); |
640 SyncHandle(); | 640 SyncHandle(); |
641 } | 641 } |
642 | 642 |
643 | 643 |
660 req->dgaReqType = X_XDGAChangePixmapMode; | 660 req->dgaReqType = X_XDGAChangePixmapMode; |
661 req->screen = screen; | 661 req->screen = screen; |
662 req->x = *x; | 662 req->x = *x; |
663 req->y = *y; | 663 req->y = *y; |
664 req->flags = mode; | 664 req->flags = mode; |
665 p_XReply(dpy, (xReply *)&rep, 0, xFalse); | 665 _XReply(dpy, (xReply *)&rep, 0, xFalse); |
666 *x = rep.x; | 666 *x = rep.x; |
667 *y = rep.y; | 667 *y = rep.y; |
668 UnlockDisplay(dpy); | 668 UnlockDisplay(dpy); |
669 SyncHandle(); | 669 SyncHandle(); |
670 } | 670 } |