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

📄 xf86vmode.c

📁 MPEG-4编解码的实现(包括MPEG4视音频编解码)
💻 C
📖 第 1 页 / 共 3 页
字号:
		if (xmdline.privsize > 0) {
		    if (!(modelines[i]->private =
			    Xcalloc(xmdline.privsize, sizeof(INT32)))) {
			_XEatData(dpy, (xmdline.privsize) * sizeof(INT32));
			Xfree(modelines[i]->private);
		    } else {
			_XRead(dpy, (char*)modelines[i]->private,
			     xmdline.privsize * sizeof(INT32));
		    }
		} else {
		    modelines[i]->private = NULL;
		}
	    }
	}
    }
    *modelinesPtr = modelines;
    UnlockDisplay(dpy);
    SyncHandle();
    return True;
}

/*
 * GetReq replacement for use with VidMode protocols earlier than 2.0
 */
#if !defined(UNIXCPP) || defined(ANSICPP)
#define GetOldReq(name, oldname, req) \
        WORD64ALIGN\
	if ((dpy->bufptr + SIZEOF(x##oldname##Req)) > dpy->bufmax)\
		_XFlush(dpy);\
	req = (x##oldname##Req *)(dpy->last_req = dpy->bufptr);\
	req->reqType = X_##name;\
	req->length = (SIZEOF(x##oldname##Req))>>2;\
	dpy->bufptr += SIZEOF(x##oldname##Req);\
	dpy->request++

#else  /* non-ANSI C uses empty comment instead of "##" for token concatenation */
#define GetOldReq(name, oldname, req) \
        WORD64ALIGN\
	if ((dpy->bufptr + SIZEOF(x/**/oldname/**/Req)) > dpy->bufmax)\
		_XFlush(dpy);\
	req = (x/**/oldname/**/Req *)(dpy->last_req = dpy->bufptr);\
	req->reqType = X_/**/name;\
	req->length = (SIZEOF(x/**/oldname/**/Req))>>2;\
	dpy->bufptr += SIZEOF(x/**/oldname/**/Req);\
	dpy->request++
#endif

Bool
SDL_NAME(XF86VidModeAddModeLine) (dpy, screen, newmodeline, aftermodeline)
    Display *dpy;
    int screen;
    SDL_NAME(XF86VidModeModeInfo)* newmodeline;
    SDL_NAME(XF86VidModeModeInfo)* aftermodeline;
{
    XExtDisplayInfo *info = find_display (dpy);
    xXF86VidModeAddModeLineReq *req;
    xXF86OldVidModeAddModeLineReq *oldreq;
    int majorVersion, minorVersion;

    XF86VidModeCheckExtension (dpy, info, False);
    SDL_NAME(XF86VidModeQueryVersion)(dpy, &majorVersion, &minorVersion);

    LockDisplay(dpy);
    if (majorVersion < 2) {
	GetOldReq(XF86VidModeAddModeLine, XF86OldVidModeAddModeLine, oldreq);
	oldreq->reqType = info->codes->major_opcode;
	oldreq->xf86vidmodeReqType = X_XF86VidModeAddModeLine;
	oldreq->screen = screen;
	oldreq->dotclock =	newmodeline->dotclock;
	oldreq->hdisplay =	newmodeline->hdisplay;
	oldreq->hsyncstart =	newmodeline->hsyncstart;
	oldreq->hsyncend =	newmodeline->hsyncend;
	oldreq->htotal =	newmodeline->htotal;
	oldreq->vdisplay =	newmodeline->vdisplay;
	oldreq->vsyncstart =	newmodeline->vsyncstart;
	oldreq->vsyncend =	newmodeline->vsyncend;
	oldreq->vtotal =	newmodeline->vtotal;
	oldreq->flags =		newmodeline->flags;
	oldreq->privsize =	newmodeline->privsize;
	if (aftermodeline != NULL) {
	    oldreq->after_dotclock =	aftermodeline->dotclock;
	    oldreq->after_hdisplay =	aftermodeline->hdisplay;
	    oldreq->after_hsyncstart =	aftermodeline->hsyncstart;
	    oldreq->after_hsyncend =	aftermodeline->hsyncend;
	    oldreq->after_htotal =	aftermodeline->htotal;
	    oldreq->after_vdisplay =	aftermodeline->vdisplay;
	    oldreq->after_vsyncstart =	aftermodeline->vsyncstart;
	    oldreq->after_vsyncend =	aftermodeline->vsyncend;
	    oldreq->after_vtotal =	aftermodeline->vtotal;
	    oldreq->after_flags =	aftermodeline->flags;
	} else {
	    oldreq->after_dotclock =	0;
	    oldreq->after_hdisplay =	0;
	    oldreq->after_hsyncstart =	0;
	    oldreq->after_hsyncend =	0;
	    oldreq->after_htotal =	0;
	    oldreq->after_vdisplay =	0;
	    oldreq->after_vsyncstart =	0;
	    oldreq->after_vsyncend =	0;
	    oldreq->after_vtotal =	0;
	    oldreq->after_flags =	0;
	}
	if (newmodeline->privsize) {
	    oldreq->length += newmodeline->privsize;
	    Data32(dpy, (long *) newmodeline->private,
	       newmodeline->privsize * sizeof(INT32));
	}
    } else {
	GetReq(XF86VidModeAddModeLine, req);
	req->reqType = info->codes->major_opcode;
	req->xf86vidmodeReqType = X_XF86VidModeAddModeLine;
	req->screen = screen;
	req->dotclock =		newmodeline->dotclock;
	req->hdisplay =		newmodeline->hdisplay;
	req->hsyncstart =	newmodeline->hsyncstart;
	req->hsyncend =		newmodeline->hsyncend;
	req->htotal =		newmodeline->htotal;
	req->hskew =		newmodeline->hskew;
	req->vdisplay =		newmodeline->vdisplay;
	req->vsyncstart =	newmodeline->vsyncstart;
	req->vsyncend =		newmodeline->vsyncend;
	req->vtotal =		newmodeline->vtotal;
	req->flags =		newmodeline->flags;
	req->privsize =		newmodeline->privsize;
	if (aftermodeline != NULL) {
	    req->after_dotclock =	aftermodeline->dotclock;
	    req->after_hdisplay =	aftermodeline->hdisplay;
	    req->after_hsyncstart =	aftermodeline->hsyncstart;
	    req->after_hsyncend =	aftermodeline->hsyncend;
	    req->after_htotal =		aftermodeline->htotal;
	    req->after_hskew =		aftermodeline->hskew;
	    req->after_vdisplay =	aftermodeline->vdisplay;
	    req->after_vsyncstart =	aftermodeline->vsyncstart;
	    req->after_vsyncend =	aftermodeline->vsyncend;
	    req->after_vtotal =		aftermodeline->vtotal;
	    req->after_flags =		aftermodeline->flags;
	} else {
	    req->after_dotclock =	0;
	    req->after_hdisplay =	0;
	    req->after_hsyncstart =	0;
	    req->after_hsyncend =	0;
	    req->after_htotal =		0;
	    req->after_hskew =		0;
	    req->after_vdisplay =	0;
	    req->after_vsyncstart =	0;
	    req->after_vsyncend =	0;
	    req->after_vtotal =		0;
	    req->after_flags =		0;
	}
	if (newmodeline->privsize) {
	    req->length += newmodeline->privsize;
	    Data32(dpy, (long *) newmodeline->private,
	       newmodeline->privsize * sizeof(INT32));
	}
    }
    UnlockDisplay(dpy);
    SyncHandle();
    return True;
}

Bool
SDL_NAME(XF86VidModeDeleteModeLine) (dpy, screen, modeline)
    Display *dpy;
    int screen;
    SDL_NAME(XF86VidModeModeInfo)* modeline;
{
    XExtDisplayInfo *info = find_display (dpy);
    xXF86VidModeDeleteModeLineReq *req;
    xXF86OldVidModeDeleteModeLineReq *oldreq;
    int majorVersion, minorVersion;

    XF86VidModeCheckExtension (dpy, info, 0);
    SDL_NAME(XF86VidModeQueryVersion)(dpy, &majorVersion, &minorVersion);

    LockDisplay(dpy);
    if (majorVersion < 2) {
	GetOldReq(XF86VidModeDeleteModeLine, XF86OldVidModeDeleteModeLine, oldreq);
	oldreq->reqType = info->codes->major_opcode;
	oldreq->xf86vidmodeReqType = X_XF86VidModeDeleteModeLine;
	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;
	oldreq->privsize =	modeline->privsize;
	if (modeline->privsize) {
	    oldreq->length += modeline->privsize;
	    Data32(dpy, (long *) modeline->private,
	       modeline->privsize * sizeof(INT32));
	}
    } else {
	GetReq(XF86VidModeDeleteModeLine, req);
	req->reqType = info->codes->major_opcode;
	req->xf86vidmodeReqType = X_XF86VidModeDeleteModeLine;
	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;
	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(XF86VidModeModModeLine) (dpy, screen, modeline)
    Display *dpy;
    int screen;
    SDL_NAME(XF86VidModeModeLine)* modeline;
{
    XExtDisplayInfo *info = find_display (dpy);
    xXF86VidModeModModeLineReq *req;
    xXF86OldVidModeModModeLineReq *oldreq;
    int majorVersion, minorVersion;

    XF86VidModeCheckExtension (dpy, info, 0);
    SDL_NAME(XF86VidModeQueryVersion)(dpy, &majorVersion, &minorVersion);

    LockDisplay(dpy);
    if (majorVersion < 2) {
	GetOldReq(XF86VidModeModModeLine, XF86OldVidModeModModeLine, oldreq);
	oldreq->reqType = info->codes->major_opcode;
	oldreq->xf86vidmodeReqType = X_XF86VidModeModModeLine;
	oldreq->screen = screen;
	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;
	oldreq->privsize =	modeline->privsize;
	if (modeline->privsize) {
	    oldreq->length += modeline->privsize;
	    Data32(dpy, (long *) modeline->private,
	       modeline->privsize * sizeof(INT32));
	}
    } else {
	GetReq(XF86VidModeModModeLine, req);
	req->reqType = info->codes->major_opcode;
	req->xf86vidmodeReqType = X_XF86VidModeModModeLine;
	req->screen = screen;
	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;
	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;
}

Status
SDL_NAME(XF86VidModeValidateModeLine) (dpy, screen, modeline)
    Display *dpy;
    int screen;
    SDL_NAME(XF86VidModeModeInfo)* modeline;
{
    XExtDisplayInfo *info = find_display (dpy);
    xXF86VidModeValidateModeLineReq *req;
    xXF86OldVidModeValidateModeLineReq *oldreq;
    xXF86VidModeValidateModeLineReply rep;
    int majorVersion, minorVersion;

    XF86VidModeCheckExtension (dpy, info, 0);
    SDL_NAME(XF86VidModeQueryVersion)(dpy, &majorVersion, &minorVersion);

    LockDisplay(dpy);

    if (majorVersion < 2) {
	GetOldReq(XF86VidModeValidateModeLine, XF86OldVidModeValidateModeLine, oldreq);
	oldreq->reqType = info->codes->major_opcode;
	oldreq->xf86vidmodeReqType = X_XF86VidModeValidateModeLine;
	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;
	oldreq->privsize =	modeline->privsize;
	if (modeline->privsize) {
	    oldreq->length += modeline->privsize;
	    Data32(dpy, (long *) modeline->private,
	       modeline->privsize * sizeof(INT32));
	}
    } else {
	GetReq(XF86VidModeValidateModeLine, req);
	req->reqType = info->codes->major_opcode;
	req->xf86vidmodeReqType = X_XF86VidModeValidateModeLine;
	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;
	req->privsize =		modeline->privsize;
	if (modeline->privsize) {
	    req->length += modeline->privsize;
	    Data32(dpy, (long *) modeline->private,
	       modeline->privsize * sizeof(INT32));
	}
    }
    if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
	UnlockDisplay(dpy);
	SyncHandle();
	return MODE_BAD;
    }
    UnlockDisplay(dpy);
    SyncHandle();
    return rep.status;
}

Bool
SDL_NAME(XF86VidModeSwitchMode)(dpy, screen, zoom)
    Display* dpy;
    int screen;
    int zoom;
{
    XExtDisplayInfo *info = find_display (dpy);
    xXF86VidModeSwitchModeReq *req;

    XF86VidModeCheckExtension (dpy, info, False);

    LockDisplay(dpy);
    GetReq(XF86VidModeSwitchMode, req);
    req->reqType = info->codes->major_opcode;
    req->xf86vidmodeReqType = X_XF86VidModeSwitchMode;
    req->screen = screen;
    req->zoom = zoom;
    UnlockDisplay(dpy);
    SyncHandle();
    return True;
}
    
Bool
SDL_NAME(XF86VidModeSwitchToMode)(dpy, screen, modeline)
    Display* dpy;
    int screen;
    SDL_NAME(XF86VidModeModeInfo)* modeline;
{
    XExtDisplayInfo *info = find_display (dpy);
    xXF86VidModeSwitchToModeReq *req;
    xXF86OldVidModeSwitchToModeReq *oldreq;
    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 (the .private field wasn't expected to be sent over
     * the wire).  Check the server's version, and accept the old format
     * if appropriate.
     */

    SDL_NAME(XF86VidModeQueryVersion)(dpy, &majorVersion, &minorVersion);
    if (majorVersion == 0 && minorVersion < 8) {
	protocolBug = True;
#ifdef DEBUG

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -