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

📄 xf86vmode.c

📁 远程桌面连接工具
💻 C
📖 第 1 页 / 共 4 页
字号:
	    ErrorF("                 hdsp: %d hbeg: %d hend: %d httl: %d\n",		    mptr->HDisplay, mptr->HSyncStart,		    mptr->HSyncEnd, mptr->HTotal);	    ErrorF("                 vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n",		    mptr->VDisplay, mptr->VSyncStart, mptr->VSyncEnd,		    mptr->VTotal, mptr->Flags);	}	if (MODEMATCH(mptr, stuff, vptr)) {	    mptr->prev->next = mptr->next;	    mptr->next->prev = mptr->prev;	    xfree(mptr->name);	    xfree(mptr->Private);	    xfree(mptr);	    if (xf86Verbose)		ErrorF("DeleteModeLine - Succeeded\n");	    return(client->noClientException);	}    }    return BadValue;}static intProcXF86VidModeModModeLine(client)    register ClientPtr client;{    REQUEST(xXF86VidModeModModeLineReq);    ScrnInfoPtr vptr;    DisplayModePtr mptr;    DisplayModeRec modetmp;    int len;    if (xf86Verbose > 1) {	ErrorF("ModModeLine - scrn: %d hdsp: %d hbeg: %d hend: %d httl: %d\n",		stuff->screen, stuff->hdisplay, stuff->hsyncstart,		stuff->hsyncend, stuff->htotal);	ErrorF("              vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n",		stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend,		stuff->vtotal, stuff->flags);    }    if (stuff->screen > screenInfo.numScreens)	return BadValue;    vptr = (ScrnInfoPtr) screenInfo.screens[stuff->screen]->devPrivates[xf86ScreenIndex].ptr;    mptr = vptr->modes;    REQUEST_AT_LEAST_SIZE(xXF86VidModeModModeLineReq);    len = client->req_len - (sizeof(xXF86VidModeModModeLineReq) >> 2);    if (len != stuff->privsize)	return BadLength;    if (stuff->hsyncstart < stuff->hdisplay   ||	stuff->hsyncend   < stuff->hsyncstart ||	stuff->htotal     < stuff->hsyncend   ||	stuff->vsyncstart < stuff->vdisplay   ||	stuff->vsyncend   < stuff->vsyncstart ||	stuff->vtotal     < stuff->vsyncend)	return BadValue;    memcpy(&modetmp, mptr, sizeof(DisplayModeRec));    modetmp.HDisplay   = stuff->hdisplay;    modetmp.HSyncStart = stuff->hsyncstart;    modetmp.HSyncEnd   = stuff->hsyncend;    modetmp.HTotal     = stuff->htotal;    modetmp.VDisplay   = stuff->vdisplay;    modetmp.VSyncStart = stuff->vsyncstart;    modetmp.VSyncEnd   = stuff->vsyncend;    modetmp.VTotal     = stuff->vtotal;    modetmp.Flags      = stuff->flags;    if (mptr->PrivSize && stuff->privsize) {	if (mptr->PrivSize != stuff->privsize)	    return BadValue;    }    if (mptr->PrivSize && mptr->Private) {	modetmp.Private =		(INT32 *)ALLOCATE_LOCAL(mptr->PrivSize * sizeof(INT32));	if (stuff->privsize) {	    if (xf86Verbose > 1)		ErrorF("ModModeLine - Request includes privates\n");	    memcpy(modetmp.Private, &stuff[1], mptr->PrivSize * sizeof(INT32));	} else	    memcpy(modetmp.Private, mptr->Private,		   mptr->PrivSize * sizeof(INT32));    }    /* Check that the mode is consistent with the monitor specs */    switch (xf86CheckMode(vptr, &modetmp, vptr->monitor, FALSE)) {	case MODE_HSYNC:	    DEALLOCATE_LOCAL(modetmp.Private);	    return vidmodeErrorBase + XF86VidModeBadHTimings;	case MODE_VSYNC:	    DEALLOCATE_LOCAL(modetmp.Private);	    return vidmodeErrorBase + XF86VidModeBadVTimings;    }    /* Check that the driver is happy with the mode */    if (vptr->ValidMode(&modetmp, xf86Verbose, MODE_VID) != MODE_OK) {	DEALLOCATE_LOCAL(modetmp.Private);	return vidmodeErrorBase + XF86VidModeModeUnsuitable;    }    DEALLOCATE_LOCAL(modetmp.Private);    mptr->HDisplay   = stuff->hdisplay;    mptr->HSyncStart = stuff->hsyncstart;    mptr->HSyncEnd   = stuff->hsyncend;    mptr->HTotal     = stuff->htotal;    mptr->VDisplay   = stuff->vdisplay;    mptr->VSyncStart = stuff->vsyncstart;    mptr->VSyncEnd   = stuff->vsyncend;    mptr->VTotal     = stuff->vtotal;    mptr->Flags      = stuff->flags;    mptr->CrtcHDisplay   = stuff->hdisplay;    mptr->CrtcHSyncStart = stuff->hsyncstart;    mptr->CrtcHSyncEnd   = stuff->hsyncend;    mptr->CrtcHTotal     = stuff->htotal;    mptr->CrtcVDisplay   = stuff->vdisplay;    mptr->CrtcVSyncStart = stuff->vsyncstart;    mptr->CrtcVSyncEnd   = stuff->vsyncend;    mptr->CrtcVTotal     = stuff->vtotal;    mptr->CrtcVAdjusted = FALSE;    mptr->CrtcHAdjusted = FALSE;    if (mptr->Flags & V_DBLSCAN)    {	mptr->CrtcVDisplay *= 2;	mptr->CrtcVSyncStart *= 2;	mptr->CrtcVSyncEnd *= 2;	mptr->CrtcVTotal *= 2;	mptr->CrtcVAdjusted = TRUE;    }    if (mptr->PrivSize && stuff->privsize) {	memcpy(mptr->Private, &stuff[1], mptr->PrivSize * sizeof(INT32));    }    (vptr->SwitchMode)(mptr);    (vptr->AdjustFrame)(vptr->frameX0, vptr->frameY0);    if (xf86Verbose > 1)	ErrorF("ModModeLine - Succeeded\n");    return(client->noClientException);}static intProcXF86VidModeValidateModeLine(client)    register ClientPtr client;{    REQUEST(xXF86VidModeValidateModeLineReq);    xXF86VidModeValidateModeLineReply rep;    ScrnInfoPtr vptr;    DisplayModePtr mptr;    DisplayModeRec modetmp;    int len, status;    if (xf86Verbose > 1) {	ErrorF("ValidateModeLine - scrn: %d clock: %d\n",		stuff->screen, stuff->dotclock);	ErrorF("                   hdsp: %d hbeg: %d hend: %d httl: %d\n",		stuff->hdisplay, stuff->hsyncstart,		stuff->hsyncend, stuff->htotal);	ErrorF("                   vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n",		stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend,		stuff->vtotal, stuff->flags);    }    if (stuff->screen > screenInfo.numScreens)	return BadValue;    vptr = (ScrnInfoPtr) screenInfo.screens[stuff->screen]->devPrivates[xf86ScreenIndex].ptr;    mptr = vptr->modes;    REQUEST_AT_LEAST_SIZE(xXF86VidModeValidateModeLineReq);    len = client->req_len - (sizeof(xXF86VidModeValidateModeLineReq) >> 2);    if (len != stuff->privsize)	return BadLength;    status = MODE_OK;    modetmp.Private = NULL;    if (stuff->hsyncstart < stuff->hdisplay   ||	stuff->hsyncend   < stuff->hsyncstart ||	stuff->htotal     < stuff->hsyncend   ||	stuff->vsyncstart < stuff->vdisplay   ||	stuff->vsyncend   < stuff->vsyncstart ||	stuff->vtotal     < stuff->vsyncend)    {	status = MODE_BAD;	goto status_reply;    }    memcpy(&modetmp, mptr, sizeof(DisplayModeRec));    modetmp.HDisplay   = stuff->hdisplay;    modetmp.HSyncStart = stuff->hsyncstart;    modetmp.HSyncEnd   = stuff->hsyncend;    modetmp.HTotal     = stuff->htotal;    modetmp.VDisplay   = stuff->vdisplay;    modetmp.VSyncStart = stuff->vsyncstart;    modetmp.VSyncEnd   = stuff->vsyncend;    modetmp.VTotal     = stuff->vtotal;    modetmp.Flags      = stuff->flags;    modetmp.Private    = NULL;    if (mptr->PrivSize && stuff->privsize) {	if (mptr->PrivSize != stuff->privsize) {	    status = MODE_BAD;	    goto status_reply;	}    }    if (mptr->PrivSize && mptr->Private) {	modetmp.Private =		(INT32 *)ALLOCATE_LOCAL(mptr->PrivSize * sizeof(INT32));	if (stuff->privsize) {	    if (xf86Verbose)		ErrorF("ValidateModeLine - Request includes privates\n");	    memcpy(modetmp.Private, &stuff[1], mptr->PrivSize * sizeof(INT32));	} else	    memcpy(modetmp.Private, mptr->Private,		   mptr->PrivSize * sizeof(INT32));    }    /* Check that the mode is consistent with the monitor specs */    if ((status = xf86CheckMode(vptr, &modetmp, vptr->monitor, FALSE)) != MODE_OK)	goto status_reply;    /* Check that the driver is happy with the mode */    status = vptr->ValidMode(&modetmp, xf86Verbose, MODE_VID);status_reply:    if (modetmp.Private)	DEALLOCATE_LOCAL(modetmp.Private);    rep.type = X_Reply;    rep.length = (SIZEOF(xXF86VidModeValidateModeLineReply)   			 - SIZEOF(xGenericReply)) >> 2;    rep.sequenceNumber = client->sequence;    rep.status = status;    if (client->swapped) {        register int n;    	swaps(&rep.sequenceNumber, n);    	swapl(&rep.length, n);	swapl(&rep.status, n);    }    WriteToClient(client, sizeof(xXF86VidModeValidateModeLineReply), (char *)&rep);    if (xf86Verbose > 1)	ErrorF("ValidateModeLine - Succeeded\n");    return(client->noClientException);}static intProcXF86VidModeSwitchMode(client)    register ClientPtr client;{    REQUEST(xXF86VidModeSwitchModeReq);    ScreenPtr vptr;    if (stuff->screen > screenInfo.numScreens)	return BadValue;    vptr = screenInfo.screens[stuff->screen];    if (xf86Info.dontZoom)	return vidmodeErrorBase + XF86VidModeZoomLocked;    REQUEST_SIZE_MATCH(xXF86VidModeSwitchModeReq);    xf86ZoomViewport(vptr, (short)stuff->zoom);    return (client->noClientException);}static intProcXF86VidModeSwitchToMode(client)    register ClientPtr client;{    REQUEST(xXF86VidModeSwitchToModeReq);    ScrnInfoPtr vptr;    DisplayModePtr curmptr, mptr;    int len;    if (xf86Verbose > 1) {	ErrorF("SwitchToMode - scrn: %d clock: %d\n",		stuff->screen, stuff->dotclock);	ErrorF("               hdsp: %d hbeg: %d hend: %d httl: %d\n",		stuff->hdisplay, stuff->hsyncstart,		stuff->hsyncend, stuff->htotal);	ErrorF("               vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n",		stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend,		stuff->vtotal, stuff->flags);    }    if (stuff->screen > screenInfo.numScreens)	return BadValue;    if (xf86Info.dontZoom)	return vidmodeErrorBase + XF86VidModeZoomLocked;    vptr = (ScrnInfoPtr) screenInfo.screens[stuff->screen]->devPrivates[xf86ScreenIndex].ptr;    curmptr = mptr = vptr->modes;    REQUEST_AT_LEAST_SIZE(xXF86VidModeSwitchToModeReq);    len = client->req_len - (sizeof(xXF86VidModeSwitchToModeReq) >> 2);    if (len != stuff->privsize)	return BadLength;    if (MODEMATCH(mptr, stuff, vptr))	return (client->noClientException);    while ((mptr = mptr->next) != curmptr) {	if (xf86Verbose > 1) {	    ErrorF("Checking against clock: %d (%d)\n",		    mptr->Clock, CLOCKSPD(mptr->Clock, vptr));	    ErrorF("                 hdsp: %d hbeg: %d hend: %d httl: %d\n",		    mptr->HDisplay, mptr->HSyncStart,		    mptr->HSyncEnd, mptr->HTotal);	    ErrorF("                 vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n",		    mptr->VDisplay, mptr->VSyncStart, mptr->VSyncEnd,		    mptr->VTotal, mptr->Flags);	}	if (MODEMATCH(mptr, stuff, vptr)) {	    if ((vptr->SwitchMode)(mptr)) {		vptr->modes = mptr;		vptr->frameX0 = (vptr->frameX1 +vptr->frameX0 -mptr->HDisplay)/2;		vptr->frameX1 = vptr->frameX0 + mptr->HDisplay -1;		if (vptr->frameX0 < 0) {		    vptr->frameX0 = 0;		    vptr->frameX1 = mptr->HDisplay -1;		} else if (vptr->frameX1 >= vptr->virtualX) {		    vptr->frameX0 = vptr->virtualX - mptr->HDisplay;		    vptr->frameX1 = vptr->frameX0 + mptr->HDisplay -1;		}		vptr->frameY0 = (vptr->frameY1 +vptr->frameY0 -mptr->VDisplay)/2;		vptr->frameY1 = vptr->frameY0 + mptr->VDisplay -1;		if (vptr->frameY0 < 0) {		    vptr->frameY0 = 0;		    vptr->frameY1 = mptr->VDisplay -1;		} else if (vptr->frameY1 >= vptr->virtualY) {		    vptr->frameY0 = vptr->virtualY - mptr->VDisplay;		    vptr->frameY1 = vptr->frameY0 + mptr->VDisplay -1;		}	    }	    (vptr->AdjustFrame)(vptr->frameX0, vptr->frameY0);	    if (xf86Verbose > 1)		ErrorF("SwitchToMode - Succeeded\n");	    return(client->noClientException);	}    }    return BadValue;}static intProcXF86VidModeLockModeSwitch(client)    register ClientPtr client;{    REQUEST(xXF86VidModeLockModeSwitchReq);    ScreenPtr vptr;    if (stuff->screen > screenInfo.numScreens)	return BadValue;    vptr = screenInfo.screens[stuff->screen];    if (xf86Info.dontZoom)	return vidmodeErrorBase + XF86VidModeZoomLocked;    REQUEST_SIZE_MATCH(xXF86VidModeLockModeSwitchReq);    xf86LockZoom(vptr, (short)stuff->lock);    return (client->noClientException);}static intProcXF86VidModeGetMonitor(client)    register ClientPtr client;{    REQUEST(xXF86VidModeGetMonitorReq);    xXF86VidModeGetMonitorReply rep;    register int n;    ScrnInfoPtr vptr;    MonPtr mptr;    CARD32 *hsyncdata, *vsyncdata;    int i;    if (stuff->screen > screenInfo.numScreens)	return BadValue;    vptr = (ScrnInfoPtr) screenInfo.screens[stuff->screen]->devPrivates[xf86ScreenIndex].ptr;    mptr = vptr->monitor;    REQUEST_SIZE_MATCH(xXF86VidModeGetMonitorReq);    rep.type = X_Reply;    if (mptr->vendor)	rep.vendorLength = strlen(mptr->vendor);    else	rep.vendorLength = 0;    if (mptr->model)	rep.modelLength = strlen(mptr->model);    else	rep.modelLength = 0;    rep.length = (SIZEOF(xXF86VidModeGetMonitorReply) - SIZEOF(xGenericReply) +		  (mptr->n_hsync + mptr->n_vrefresh) * sizeof(CARD32) +	          ((rep.vendorLength + 3) & ~3) +		  ((rep.modelLength + 3) & ~3)) >> 2;    rep.sequenceNumber = client->sequence;    rep.nhsync = mptr->n_hsync;    rep.nvsync = mptr->n_vrefresh;#if 0    rep.bandwidth = (unsigned long)(mptr->bandwidth * 1e6);#endif    hsyncdata = ALLOCATE_LOCAL(mptr->n_hsync * sizeof(CARD32));    if (!hsyncdata) {

⌨️ 快捷键说明

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