📄 xf86vmode.c
字号:
fprintf(stderr, "XF86VidModeSwitchToMode: Warning: Xserver is" "running an old version (%d.%d)\n", majorVersion, minorVersion);#endif } LockDisplay(dpy); if (majorVersion < 2) { GetOldReq(XF86VidModeSwitchToMode, XF86OldVidModeSwitchToMode, oldreq); oldreq->reqType = info->codes->major_opcode; oldreq->xf86vidmodeReqType = X_XF86VidModeSwitchToMode; oldreq->screen = screen; oldreq->dotclock = modeline->dotclock; oldreq->hdisplay = modeline->hdisplay; oldreq->hsyncstart = modeline->hsyncstart; oldreq->hsyncend = modeline->hsyncend; oldreq->htotal = modeline->htotal; oldreq->vdisplay = modeline->vdisplay; oldreq->vsyncstart = modeline->vsyncstart; oldreq->vsyncend = modeline->vsyncend; oldreq->vtotal = modeline->vtotal; oldreq->flags = modeline->flags; if (protocolBug) { oldreq->privsize = 0; } else { oldreq->privsize = modeline->privsize; if (modeline->privsize) { oldreq->length += modeline->privsize; Data32(dpy, (long *) modeline->private, modeline->privsize * sizeof(INT32)); } } } else { GetReq(XF86VidModeSwitchToMode, req); req->reqType = info->codes->major_opcode; req->xf86vidmodeReqType = X_XF86VidModeSwitchToMode; req->screen = screen; req->dotclock = modeline->dotclock; req->hdisplay = modeline->hdisplay; req->hsyncstart = modeline->hsyncstart; req->hsyncend = modeline->hsyncend; req->htotal = modeline->htotal; req->hskew = modeline->hskew; req->vdisplay = modeline->vdisplay; req->vsyncstart = modeline->vsyncstart; req->vsyncend = modeline->vsyncend; req->vtotal = modeline->vtotal; req->flags = modeline->flags; if (protocolBug) { req->privsize = 0; } else { req->privsize = modeline->privsize; if (modeline->privsize) { req->length += modeline->privsize; Data32(dpy, (long *) modeline->private, modeline->privsize * sizeof(INT32)); } } } UnlockDisplay(dpy); SyncHandle(); return True;} BoolSDL_NAME(XF86VidModeLockModeSwitch)(dpy, screen, lock) Display* dpy; int screen; int lock;{ XExtDisplayInfo *info = find_display (dpy); xXF86VidModeLockModeSwitchReq *req; XF86VidModeCheckExtension (dpy, info, False); LockDisplay(dpy); GetReq(XF86VidModeLockModeSwitch, req); req->reqType = info->codes->major_opcode; req->xf86vidmodeReqType = X_XF86VidModeLockModeSwitch; req->screen = screen; req->lock = lock; UnlockDisplay(dpy); SyncHandle(); return True;} BoolSDL_NAME(XF86VidModeGetMonitor)(dpy, screen, monitor) Display* dpy; int screen; SDL_NAME(XF86VidModeMonitor)* monitor;{ XExtDisplayInfo *info = find_display (dpy); xXF86VidModeGetMonitorReply rep; xXF86VidModeGetMonitorReq *req; CARD32 syncrange; int i; XF86VidModeCheckExtension (dpy, info, False); LockDisplay(dpy); GetReq(XF86VidModeGetMonitor, req); req->reqType = info->codes->major_opcode; req->xf86vidmodeReqType = X_XF86VidModeGetMonitor; req->screen = screen; if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { UnlockDisplay(dpy); SyncHandle(); return False; } monitor->nhsync = rep.nhsync; monitor->nvsync = rep.nvsync;#if 0 monitor->bandwidth = (float)rep.bandwidth / 1e6;#endif if (rep.vendorLength) { if (!(monitor->vendor = (char *)Xcalloc(rep.vendorLength + 1, 1))) { _XEatData(dpy, (rep.nhsync + rep.nvsync) * 4 + ((rep.vendorLength+3) & ~3) + ((rep.modelLength+3) & ~3)); return False; } } else { monitor->vendor = NULL; } if (rep.modelLength) { if (!(monitor->model = Xcalloc(rep.modelLength + 1, 1))) { _XEatData(dpy, (rep.nhsync + rep.nvsync) * 4 + ((rep.vendorLength+3) & ~3) + ((rep.modelLength+3) & ~3)); if (monitor->vendor) Xfree(monitor->vendor); return False; } } else { monitor->model = NULL; } if (!(monitor->hsync = Xcalloc(rep.nhsync, sizeof(SDL_NAME(XF86VidModeSyncRange))))) { _XEatData(dpy, (rep.nhsync + rep.nvsync) * 4 + ((rep.vendorLength+3) & ~3) + ((rep.modelLength+3) & ~3)); if (monitor->vendor) Xfree(monitor->vendor); if (monitor->model) Xfree(monitor->model); return False; } if (!(monitor->vsync = Xcalloc(rep.nvsync, sizeof(SDL_NAME(XF86VidModeSyncRange))))) { _XEatData(dpy, (rep.nhsync + rep.nvsync) * 4 + ((rep.vendorLength+3) & ~3) + ((rep.modelLength+3) & ~3)); if (monitor->vendor) Xfree(monitor->vendor); if (monitor->model) Xfree(monitor->model); Xfree(monitor->hsync); return False; } for (i = 0; i < rep.nhsync; i++) { _XRead(dpy, (char *)&syncrange, 4); monitor->hsync[i].lo = (float)(syncrange & 0xFFFF) / 100.0; monitor->hsync[i].hi = (float)(syncrange >> 16) / 100.0; } for (i = 0; i < rep.nvsync; i++) { _XRead(dpy, (char *)&syncrange, 4); monitor->vsync[i].lo = (float)(syncrange & 0xFFFF) / 100.0; monitor->vsync[i].hi = (float)(syncrange >> 16) / 100.0; } if (rep.vendorLength) _XReadPad(dpy, monitor->vendor, rep.vendorLength); else monitor->vendor = ""; if (rep.modelLength) _XReadPad(dpy, monitor->model, rep.modelLength); else monitor->model = ""; UnlockDisplay(dpy); SyncHandle(); return True;}BoolSDL_NAME(XF86VidModeGetViewPort)(dpy, screen, x, y) Display* dpy; int screen; int *x, *y;{ XExtDisplayInfo *info = find_display (dpy); xXF86VidModeGetViewPortReply rep; xXF86VidModeGetViewPortReq *req; int majorVersion, minorVersion; Bool protocolBug = False; XF86VidModeCheckExtension (dpy, info, False); /* * Note: There was a bug in the protocol implementation in versions * 0.x with x < 8 (no reply was sent, so the client would hang) * Check the server's version, and don't wait for a reply with older * versions. */ SDL_NAME(XF86VidModeQueryVersion)(dpy, &majorVersion, &minorVersion); if (majorVersion == 0 && minorVersion < 8) { protocolBug = True;#ifdef DEBUG fprintf(stderr, "XF86VidModeGetViewPort: Warning: Xserver is" "running an old version (%d.%d)\n", majorVersion, minorVersion);#endif } LockDisplay(dpy); GetReq(XF86VidModeGetViewPort, req); req->reqType = info->codes->major_opcode; req->xf86vidmodeReqType = X_XF86VidModeGetViewPort; req->screen = screen; if (protocolBug) { *x = 0; *y = 0; } else { if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { UnlockDisplay(dpy); SyncHandle(); return False; } *x = rep.x; *y = rep.y; } UnlockDisplay(dpy); SyncHandle(); return True;}BoolSDL_NAME(XF86VidModeSetViewPort)(dpy, screen, x, y) Display* dpy; int screen; int x, y;{ XExtDisplayInfo *info = find_display (dpy); xXF86VidModeSetViewPortReq *req; XF86VidModeCheckExtension (dpy, info, False); LockDisplay(dpy); GetReq(XF86VidModeSetViewPort, req); req->reqType = info->codes->major_opcode; req->xf86vidmodeReqType = X_XF86VidModeSetViewPort; req->screen = screen; req->x = x; req->y = y; UnlockDisplay(dpy); SyncHandle(); return True;}BoolSDL_NAME(XF86VidModeGetDotClocks)(dpy, screen, flagsPtr, numclocksPtr, maxclocksPtr, clocksPtr) Display* dpy; int screen; int *flagsPtr, *numclocksPtr, *maxclocksPtr, *clocksPtr[]; { XExtDisplayInfo *info = find_display (dpy); xXF86VidModeGetDotClocksReply rep; xXF86VidModeGetDotClocksReq *req; int i, *dotclocks; CARD32 dotclk; XF86VidModeCheckExtension (dpy, info, False); LockDisplay(dpy); GetReq(XF86VidModeGetDotClocks, req); req->reqType = info->codes->major_opcode; req->xf86vidmodeReqType = X_XF86VidModeGetDotClocks; req->screen = screen; if (!_XReply(dpy, (xReply *)&rep, (SIZEOF(xXF86VidModeGetDotClocksReply) - SIZEOF(xReply)) >> 2, xFalse)) { UnlockDisplay(dpy); SyncHandle(); return False; } *numclocksPtr = rep.clocks; *maxclocksPtr = rep.maxclocks; *flagsPtr = rep.flags; if (!(dotclocks = (int*) Xcalloc(rep.clocks, sizeof(int)))) { _XEatData(dpy, (rep.clocks) * 4); Xfree(dotclocks); return False; } for (i = 0; i < rep.clocks; i++) { _XRead(dpy, (char*)&dotclk, 4); dotclocks[i] = dotclk; } *clocksPtr = dotclocks; UnlockDisplay(dpy); SyncHandle(); return True;}BoolSDL_NAME(XF86VidModeSetGammaRamp) ( Display *dpy, int screen, int size, unsigned short *red, unsigned short *green, unsigned short *blue){ int length = (size + 1) & ~1; XExtDisplayInfo *info = find_display (dpy); xXF86VidModeSetGammaRampReq *req; XF86VidModeCheckExtension (dpy, info, False); LockDisplay(dpy); GetReq(XF86VidModeSetGammaRamp, req); req->reqType = info->codes->major_opcode; req->xf86vidmodeReqType = X_XF86VidModeSetGammaRamp; req->screen = screen; req->length += (length >> 1) * 3; req->size = size; _XSend(dpy, (char*)red, size * 2); _XSend(dpy, (char*)green, size * 2); _XSend(dpy, (char*)blue, size * 2); UnlockDisplay(dpy); SyncHandle(); return True;}BoolSDL_NAME(XF86VidModeGetGammaRamp) ( Display *dpy, int screen, int size, unsigned short *red, unsigned short *green, unsigned short *blue){ XExtDisplayInfo *info = find_display (dpy); xXF86VidModeGetGammaRampReq *req; xXF86VidModeGetGammaRampReply rep; XF86VidModeCheckExtension (dpy, info, False); LockDisplay(dpy); GetReq(XF86VidModeGetGammaRamp, req); req->reqType = info->codes->major_opcode; req->xf86vidmodeReqType = X_XF86VidModeGetGammaRamp; req->screen = screen; req->size = size; if (!_XReply (dpy, (xReply *) &rep, 0, xFalse)) { UnlockDisplay (dpy); SyncHandle (); return False; } if(rep.size) { _XRead(dpy, (char*)red, rep.size << 1); _XRead(dpy, (char*)green, rep.size << 1); _XRead(dpy, (char*)blue, rep.size << 1); } UnlockDisplay(dpy); SyncHandle(); return True;}Bool SDL_NAME(XF86VidModeGetGammaRampSize)( Display *dpy, int screen, int *size){ XExtDisplayInfo *info = find_display (dpy); xXF86VidModeGetGammaRampSizeReq *req; xXF86VidModeGetGammaRampSizeReply rep; *size = 0; XF86VidModeCheckExtension (dpy, info, False); LockDisplay(dpy); GetReq(XF86VidModeGetGammaRampSize, req); req->reqType = info->codes->major_opcode; req->xf86vidmodeReqType = X_XF86VidModeGetGammaRampSize; req->screen = screen; if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { UnlockDisplay (dpy); SyncHandle (); return False; } *size = rep.size; UnlockDisplay(dpy); SyncHandle(); return True;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -