⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xf86vmode.c

📁 MPEG-4编解码的实现(包括MPEG4视音频编解码)
💻 C
📖 第 1 页 / 共 3 页
字号:
	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;
}
    
Bool
SDL_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;
}
    
Bool
SDL_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;
}

Bool
SDL_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;
}

Bool
SDL_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;
}

Bool
SDL_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;
}

Bool
SDL_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;
}


Bool
SDL_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 + -