From 685b4e8f2b440102dfe3cfb14d337f56ab73c8dd Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Fri, 28 Feb 2025 12:04:21 +0100 Subject: [PATCH] HACK --- Xext/meson.build | 6 - Xext/vidmode.c | 2128 ---------------------------- dix/protocol.txt | 29 - hw/xfree86/common/meson.build | 1 - hw/xfree86/common/xf86.h | 4 - hw/xfree86/common/xf86Config.c | 14 - hw/xfree86/common/xf86Extensions.c | 12 - hw/xfree86/common/xf86Extensions.h | 6 - hw/xfree86/common/xf86Globals.c | 5 - hw/xfree86/common/xf86Helper.c | 12 - hw/xfree86/common/xf86Init.c | 15 - hw/xfree86/common/xf86Priv.h | 4 - hw/xfree86/common/xf86VidMode.c | 463 ------ hw/xfree86/man/Xorg.man | 8 - hw/xfree86/meson.build | 1 - hw/xwayland/meson.build | 3 - hw/xwayland/xwayland-vidmode.c | 508 ------- hw/xwayland/xwayland-vidmode.h | 37 - hw/xwayland/xwayland.c | 9 - include/meson.build | 1 - include/protocol-versions.h | 4 - include/vidmodestr.h | 6 - include/xorg-server.h.meson.in | 3 - meson.build | 2 - 24 files changed, 3281 deletions(-) delete mode 100644 Xext/vidmode.c delete mode 100644 hw/xfree86/common/xf86VidMode.c delete mode 100644 hw/xwayland/xwayland-vidmode.c delete mode 100644 hw/xwayland/xwayland-vidmode.h diff --git a/Xext/meson.build b/Xext/meson.build index 9913cc30e..891cab30c 100644 --- a/Xext/meson.build +++ b/Xext/meson.build @@ -65,12 +65,6 @@ libxserver_xext = static_library('libxserver_xext', dependencies: common_dep, ) -libxserver_xext_vidmode = static_library('libxserver_xext_vidmode', - 'vidmode.c', - include_directories: inc, - dependencies: common_dep, -) - if build_xorg install_data(hdrs_xext, install_dir: xorgsdkdir) endif diff --git a/Xext/vidmode.c b/Xext/vidmode.c deleted file mode 100644 index 06b710288..000000000 --- a/Xext/vidmode.c +++ /dev/null @@ -1,2128 +0,0 @@ -/* - -Copyright 1995 Kaleb S. KEITHLEY - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL Kaleb S. KEITHLEY BE LIABLE FOR ANY CLAIM, DAMAGES -OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of Kaleb S. KEITHLEY -shall not be used in advertising or otherwise to promote the sale, use -or other dealings in this Software without prior written authorization -from Kaleb S. KEITHLEY - -*/ -/* THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION */ - -#include - -#ifdef XF86VIDMODE - -#include -#include -#include -#include "misc.h" -#include "dixstruct.h" -#include "extnsionst.h" -#include "scrnintstr.h" -#include "servermd.h" -#include "swaprep.h" -#include "vidmodestr.h" -#include "globals.h" -#include "protocol-versions.h" - -static int VidModeErrorBase; -static int VidModeAllowNonLocal; - -static DevPrivateKeyRec VidModeClientPrivateKeyRec; -#define VidModeClientPrivateKey (&VidModeClientPrivateKeyRec) - -static DevPrivateKeyRec VidModePrivateKeyRec; -#define VidModePrivateKey (&VidModePrivateKeyRec) - -/* This holds the client's version information */ -typedef struct { - int major; - int minor; -} VidModePrivRec, *VidModePrivPtr; - -#define VM_GETPRIV(c) ((VidModePrivPtr) \ - dixLookupPrivate(&(c)->devPrivates, VidModeClientPrivateKey)) -#define VM_SETPRIV(c,p) \ - dixSetPrivate(&(c)->devPrivates, VidModeClientPrivateKey, p) - -#ifdef DEBUG -#define DEBUG_P(x) DebugF(x"\n") -#else -#define DEBUG_P(x) /**/ -#endif - -static DisplayModePtr -VidModeCreateMode(void) -{ - DisplayModePtr mode; - - mode = malloc(sizeof(DisplayModeRec)); - if (mode != NULL) { - mode->name = ""; - mode->VScan = 1; /* divides refresh rate. default = 1 */ - mode->Private = NULL; - mode->next = mode; - mode->prev = mode; - } - return mode; -} - -static void -VidModeCopyMode(DisplayModePtr modefrom, DisplayModePtr modeto) -{ - memcpy(modeto, modefrom, sizeof(DisplayModeRec)); -} - -static int -VidModeGetModeValue(DisplayModePtr mode, int valtyp) -{ - int ret = 0; - - switch (valtyp) { - case VIDMODE_H_DISPLAY: - ret = mode->HDisplay; - break; - case VIDMODE_H_SYNCSTART: - ret = mode->HSyncStart; - break; - case VIDMODE_H_SYNCEND: - ret = mode->HSyncEnd; - break; - case VIDMODE_H_TOTAL: - ret = mode->HTotal; - break; - case VIDMODE_H_SKEW: - ret = mode->HSkew; - break; - case VIDMODE_V_DISPLAY: - ret = mode->VDisplay; - break; - case VIDMODE_V_SYNCSTART: - ret = mode->VSyncStart; - break; - case VIDMODE_V_SYNCEND: - ret = mode->VSyncEnd; - break; - case VIDMODE_V_TOTAL: - ret = mode->VTotal; - break; - case VIDMODE_FLAGS: - ret = mode->Flags; - break; - case VIDMODE_CLOCK: - ret = mode->Clock; - break; - } - return ret; -} - -static void -VidModeSetModeValue(DisplayModePtr mode, int valtyp, int val) -{ - switch (valtyp) { - case VIDMODE_H_DISPLAY: - mode->HDisplay = val; - break; - case VIDMODE_H_SYNCSTART: - mode->HSyncStart = val; - break; - case VIDMODE_H_SYNCEND: - mode->HSyncEnd = val; - break; - case VIDMODE_H_TOTAL: - mode->HTotal = val; - break; - case VIDMODE_H_SKEW: - mode->HSkew = val; - break; - case VIDMODE_V_DISPLAY: - mode->VDisplay = val; - break; - case VIDMODE_V_SYNCSTART: - mode->VSyncStart = val; - break; - case VIDMODE_V_SYNCEND: - mode->VSyncEnd = val; - break; - case VIDMODE_V_TOTAL: - mode->VTotal = val; - break; - case VIDMODE_FLAGS: - mode->Flags = val; - break; - case VIDMODE_CLOCK: - mode->Clock = val; - break; - } - return; -} - -static int -ClientMajorVersion(ClientPtr client) -{ - VidModePrivPtr pPriv; - - pPriv = VM_GETPRIV(client); - if (!pPriv) - return 0; - else - return pPriv->major; -} - -static int -ProcVidModeQueryVersion(ClientPtr client) -{ - xXF86VidModeQueryVersionReply rep = { - .type = X_Reply, - .sequenceNumber = client->sequence, - .length = 0, - .majorVersion = SERVER_XF86VIDMODE_MAJOR_VERSION, - .minorVersion = SERVER_XF86VIDMODE_MINOR_VERSION - }; - - DEBUG_P("XF86VidModeQueryVersion"); - - REQUEST_SIZE_MATCH(xXF86VidModeQueryVersionReq); - - if (client->swapped) { - swaps(&rep.sequenceNumber); - swapl(&rep.length); - swaps(&rep.majorVersion); - swaps(&rep.minorVersion); - } - WriteToClient(client, sizeof(xXF86VidModeQueryVersionReply), &rep); - return Success; -} - -static int -ProcVidModeGetModeLine(ClientPtr client) -{ - REQUEST(xXF86VidModeGetModeLineReq); - xXF86VidModeGetModeLineReply rep = { - .type = X_Reply, - .sequenceNumber = client->sequence - }; - ScreenPtr pScreen; - VidModePtr pVidMode; - DisplayModePtr mode; - int dotClock; - int ver; - - DEBUG_P("XF86VidModeGetModeline"); - - ver = ClientMajorVersion(client); - REQUEST_SIZE_MATCH(xXF86VidModeGetModeLineReq); - - if (ver < 2) { - rep.length = bytes_to_int32(SIZEOF(xXF86OldVidModeGetModeLineReply) - - SIZEOF(xGenericReply)); - } - else { - rep.length = bytes_to_int32(SIZEOF(xXF86VidModeGetModeLineReply) - - SIZEOF(xGenericReply)); - } - - if (stuff->screen >= screenInfo.numScreens) - return BadValue; - pScreen = screenInfo.screens[stuff->screen]; - pVidMode = VidModeGetPtr(pScreen); - if (pVidMode == NULL) - return BadImplementation; - - if (!pVidMode->GetCurrentModeline(pScreen, &mode, &dotClock)) - return BadValue; - - rep.dotclock = dotClock; - rep.hdisplay = VidModeGetModeValue(mode, VIDMODE_H_DISPLAY); - rep.hsyncstart = VidModeGetModeValue(mode, VIDMODE_H_SYNCSTART); - rep.hsyncend = VidModeGetModeValue(mode, VIDMODE_H_SYNCEND); - rep.htotal = VidModeGetModeValue(mode, VIDMODE_H_TOTAL); - rep.hskew = VidModeGetModeValue(mode, VIDMODE_H_SKEW); - rep.vdisplay = VidModeGetModeValue(mode, VIDMODE_V_DISPLAY); - rep.vsyncstart = VidModeGetModeValue(mode, VIDMODE_V_SYNCSTART); - rep.vsyncend = VidModeGetModeValue(mode, VIDMODE_V_SYNCEND); - rep.vtotal = VidModeGetModeValue(mode, VIDMODE_V_TOTAL); - rep.flags = VidModeGetModeValue(mode, VIDMODE_FLAGS); - - DebugF("GetModeLine - scrn: %d clock: %ld\n", - stuff->screen, (unsigned long) rep.dotclock); - DebugF("GetModeLine - hdsp: %d hbeg: %d hend: %d httl: %d\n", - rep.hdisplay, rep.hsyncstart, rep.hsyncend, rep.htotal); - DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n", - rep.vdisplay, rep.vsyncstart, rep.vsyncend, - rep.vtotal, (unsigned long) rep.flags); - - /* - * Older servers sometimes had server privates that the VidMode - * extension made available. So to be compatible pretend that - * there are no server privates to pass to the client. - */ - rep.privsize = 0; - - if (client->swapped) { - swaps(&rep.sequenceNumber); - swapl(&rep.length); - swapl(&rep.dotclock); - swaps(&rep.hdisplay); - swaps(&rep.hsyncstart); - swaps(&rep.hsyncend); - swaps(&rep.htotal); - swaps(&rep.hskew); - swaps(&rep.vdisplay); - swaps(&rep.vsyncstart); - swaps(&rep.vsyncend); - swaps(&rep.vtotal); - swapl(&rep.flags); - swapl(&rep.privsize); - } - if (ver < 2) { - xXF86OldVidModeGetModeLineReply oldrep = { - .type = rep.type, - .sequenceNumber = rep.sequenceNumber, - .length = rep.length, - .dotclock = rep.dotclock, - .hdisplay = rep.hdisplay, - .hsyncstart = rep.hsyncstart, - .hsyncend = rep.hsyncend, - .htotal = rep.htotal, - .vdisplay = rep.vdisplay, - .vsyncstart = rep.vsyncstart, - .vsyncend = rep.vsyncend, - .vtotal = rep.vtotal, - .flags = rep.flags, - .privsize = rep.privsize - }; - WriteToClient(client, sizeof(xXF86OldVidModeGetModeLineReply), &oldrep); - } - else { - WriteToClient(client, sizeof(xXF86VidModeGetModeLineReply), &rep); - } - return Success; -} - -static int -ProcVidModeGetAllModeLines(ClientPtr client) -{ - REQUEST(xXF86VidModeGetAllModeLinesReq); - xXF86VidModeGetAllModeLinesReply rep; - ScreenPtr pScreen; - VidModePtr pVidMode; - DisplayModePtr mode; - int modecount, dotClock; - int ver; - - DEBUG_P("XF86VidModeGetAllModelines"); - - REQUEST_SIZE_MATCH(xXF86VidModeGetAllModeLinesReq); - - if (stuff->screen >= screenInfo.numScreens) - return BadValue; - pScreen = screenInfo.screens[stuff->screen]; - ver = ClientMajorVersion(client); - pVidMode = VidModeGetPtr(pScreen); - if (pVidMode == NULL) - return BadImplementation; - - modecount = pVidMode->GetNumOfModes(pScreen); - if (modecount < 1) - return VidModeErrorBase + XF86VidModeExtensionDisabled; - - if (!pVidMode->GetFirstModeline(pScreen, &mode, &dotClock)) - return BadValue; - - rep = (xXF86VidModeGetAllModeLinesReply) { - .type = X_Reply, - .length = SIZEOF(xXF86VidModeGetAllModeLinesReply) - - SIZEOF(xGenericReply), - .sequenceNumber = client->sequence, - .modecount = modecount - }; - if (ver < 2) - rep.length += modecount * sizeof(xXF86OldVidModeModeInfo); - else - rep.length += modecount * sizeof(xXF86VidModeModeInfo); - rep.length >>= 2; - if (client->swapped) { - swaps(&rep.sequenceNumber); - swapl(&rep.length); - swapl(&rep.modecount); - } - WriteToClient(client, sizeof(xXF86VidModeGetAllModeLinesReply), &rep); - - do { - xXF86VidModeModeInfo mdinf = { - .dotclock = dotClock, - .hdisplay = VidModeGetModeValue(mode, VIDMODE_H_DISPLAY), - .hsyncstart = VidModeGetModeValue(mode, VIDMODE_H_SYNCSTART), - .hsyncend = VidModeGetModeValue(mode, VIDMODE_H_SYNCEND), - .htotal = VidModeGetModeValue(mode, VIDMODE_H_TOTAL), - .hskew = VidModeGetModeValue(mode, VIDMODE_H_SKEW), - .vdisplay = VidModeGetModeValue(mode, VIDMODE_V_DISPLAY), - .vsyncstart = VidModeGetModeValue(mode, VIDMODE_V_SYNCSTART), - .vsyncend = VidModeGetModeValue(mode, VIDMODE_V_SYNCEND), - .vtotal = VidModeGetModeValue(mode, VIDMODE_V_TOTAL), - .flags = VidModeGetModeValue(mode, VIDMODE_FLAGS), - .privsize = 0 - }; - if (client->swapped) { - swapl(&mdinf.dotclock); - swaps(&mdinf.hdisplay); - swaps(&mdinf.hsyncstart); - swaps(&mdinf.hsyncend); - swaps(&mdinf.htotal); - swapl(&mdinf.hskew); - swaps(&mdinf.vdisplay); - swaps(&mdinf.vsyncstart); - swaps(&mdinf.vsyncend); - swaps(&mdinf.vtotal); - swapl(&mdinf.flags); - swapl(&mdinf.privsize); - } - if (ver < 2) { - xXF86OldVidModeModeInfo oldmdinf = { - .dotclock = mdinf.dotclock, - .hdisplay = mdinf.hdisplay, - .hsyncstart = mdinf.hsyncstart, - .hsyncend = mdinf.hsyncend, - .htotal = mdinf.htotal, - .vdisplay = mdinf.vdisplay, - .vsyncstart = mdinf.vsyncstart, - .vsyncend = mdinf.vsyncend, - .vtotal = mdinf.vtotal, - .flags = mdinf.flags, - .privsize = mdinf.privsize - }; - WriteToClient(client, sizeof(xXF86OldVidModeModeInfo), &oldmdinf); - } - else { - WriteToClient(client, sizeof(xXF86VidModeModeInfo), &mdinf); - } - - } while (pVidMode->GetNextModeline(pScreen, &mode, &dotClock)); - - return Success; -} - -#define MODEMATCH(mode,stuff) \ - (VidModeGetModeValue(mode, VIDMODE_H_DISPLAY) == stuff->hdisplay \ - && VidModeGetModeValue(mode, VIDMODE_H_SYNCSTART) == stuff->hsyncstart \ - && VidModeGetModeValue(mode, VIDMODE_H_SYNCEND) == stuff->hsyncend \ - && VidModeGetModeValue(mode, VIDMODE_H_TOTAL) == stuff->htotal \ - && VidModeGetModeValue(mode, VIDMODE_V_DISPLAY) == stuff->vdisplay \ - && VidModeGetModeValue(mode, VIDMODE_V_SYNCSTART) == stuff->vsyncstart \ - && VidModeGetModeValue(mode, VIDMODE_V_SYNCEND) == stuff->vsyncend \ - && VidModeGetModeValue(mode, VIDMODE_V_TOTAL) == stuff->vtotal \ - && VidModeGetModeValue(mode, VIDMODE_FLAGS) == stuff->flags ) - -static int -ProcVidModeAddModeLine(ClientPtr client) -{ - REQUEST(xXF86VidModeAddModeLineReq); - xXF86OldVidModeAddModeLineReq *oldstuff = - (xXF86OldVidModeAddModeLineReq *) client->requestBuffer; - xXF86VidModeAddModeLineReq newstuff; - ScreenPtr pScreen; - VidModePtr pVidMode; - DisplayModePtr mode; - int len; - int dotClock; - int ver; - - DEBUG_P("XF86VidModeAddModeline"); - - ver = ClientMajorVersion(client); - - if (ver < 2) { - REQUEST_AT_LEAST_SIZE(xXF86OldVidModeAddModeLineReq); - len = - client->req_len - - bytes_to_int32(sizeof(xXF86OldVidModeAddModeLineReq)); - } - else { - REQUEST_AT_LEAST_SIZE(xXF86VidModeAddModeLineReq); - len = - client->req_len - - bytes_to_int32(sizeof(xXF86VidModeAddModeLineReq)); - } - - if (ver < 2) { - /* convert from old format */ - stuff = &newstuff; - stuff->length = client->req_len; - stuff->screen = oldstuff->screen; - stuff->dotclock = oldstuff->dotclock; - stuff->hdisplay = oldstuff->hdisplay; - stuff->hsyncstart = oldstuff->hsyncstart; - stuff->hsyncend = oldstuff->hsyncend; - stuff->htotal = oldstuff->htotal; - stuff->hskew = 0; - stuff->vdisplay = oldstuff->vdisplay; - stuff->vsyncstart = oldstuff->vsyncstart; - stuff->vsyncend = oldstuff->vsyncend; - stuff->vtotal = oldstuff->vtotal; - stuff->flags = oldstuff->flags; - stuff->privsize = oldstuff->privsize; - stuff->after_dotclock = oldstuff->after_dotclock; - stuff->after_hdisplay = oldstuff->after_hdisplay; - stuff->after_hsyncstart = oldstuff->after_hsyncstart; - stuff->after_hsyncend = oldstuff->after_hsyncend; - stuff->after_htotal = oldstuff->after_htotal; - stuff->after_hskew = 0; - stuff->after_vdisplay = oldstuff->after_vdisplay; - stuff->after_vsyncstart = oldstuff->after_vsyncstart; - stuff->after_vsyncend = oldstuff->after_vsyncend; - stuff->after_vtotal = oldstuff->after_vtotal; - stuff->after_flags = oldstuff->after_flags; - } - DebugF("AddModeLine - scrn: %d clock: %ld\n", - (int) stuff->screen, (unsigned long) stuff->dotclock); - DebugF("AddModeLine - hdsp: %d hbeg: %d hend: %d httl: %d\n", - stuff->hdisplay, stuff->hsyncstart, - stuff->hsyncend, stuff->htotal); - DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n", - stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, - stuff->vtotal, (unsigned long) stuff->flags); - DebugF(" after - scrn: %d clock: %ld\n", - (int) stuff->screen, (unsigned long) stuff->after_dotclock); - DebugF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", - stuff->after_hdisplay, stuff->after_hsyncstart, - stuff->after_hsyncend, stuff->after_htotal); - DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n", - stuff->after_vdisplay, stuff->after_vsyncstart, - stuff->after_vsyncend, stuff->after_vtotal, - (unsigned long) stuff->after_flags); - - if (len != stuff->privsize) - return BadLength; - - if (stuff->screen >= screenInfo.numScreens) - return BadValue; - pScreen = screenInfo.screens[stuff->screen]; - - 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; - - if (stuff->after_hsyncstart < stuff->after_hdisplay || - stuff->after_hsyncend < stuff->after_hsyncstart || - stuff->after_htotal < stuff->after_hsyncend || - stuff->after_vsyncstart < stuff->after_vdisplay || - stuff->after_vsyncend < stuff->after_vsyncstart || - stuff->after_vtotal < stuff->after_vsyncend) - return BadValue; - - pVidMode = VidModeGetPtr(pScreen); - if (pVidMode == NULL) - return BadImplementation; - - if (stuff->after_htotal != 0 || stuff->after_vtotal != 0) { - Bool found = FALSE; - - if (pVidMode->GetFirstModeline(pScreen, &mode, &dotClock)) { - do { - if ((pVidMode->GetDotClock(pScreen, stuff->dotclock) - == dotClock) && MODEMATCH(mode, stuff)) { - found = TRUE; - break; - } - } while (pVidMode->GetNextModeline(pScreen, &mode, &dotClock)); - } - if (!found) - return BadValue; - } - - mode = VidModeCreateMode(); - if (mode == NULL) - return BadValue; - - VidModeSetModeValue(mode, VIDMODE_CLOCK, stuff->dotclock); - VidModeSetModeValue(mode, VIDMODE_H_DISPLAY, stuff->hdisplay); - VidModeSetModeValue(mode, VIDMODE_H_SYNCSTART, stuff->hsyncstart); - VidModeSetModeValue(mode, VIDMODE_H_SYNCEND, stuff->hsyncend); - VidModeSetModeValue(mode, VIDMODE_H_TOTAL, stuff->htotal); - VidModeSetModeValue(mode, VIDMODE_H_SKEW, stuff->hskew); - VidModeSetModeValue(mode, VIDMODE_V_DISPLAY, stuff->vdisplay); - VidModeSetModeValue(mode, VIDMODE_V_SYNCSTART, stuff->vsyncstart); - VidModeSetModeValue(mode, VIDMODE_V_SYNCEND, stuff->vsyncend); - VidModeSetModeValue(mode, VIDMODE_V_TOTAL, stuff->vtotal); - VidModeSetModeValue(mode, VIDMODE_FLAGS, stuff->flags); - - if (stuff->privsize) - DebugF("AddModeLine - Privates in request have been ignored\n"); - - /* Check that the mode is consistent with the monitor specs */ - switch (pVidMode->CheckModeForMonitor(pScreen, mode)) { - case MODE_OK: - break; - case MODE_HSYNC: - case MODE_H_ILLEGAL: - free(mode); - return VidModeErrorBase + XF86VidModeBadHTimings; - case MODE_VSYNC: - case MODE_V_ILLEGAL: - free(mode); - return VidModeErrorBase + XF86VidModeBadVTimings; - default: - free(mode); - return VidModeErrorBase + XF86VidModeModeUnsuitable; - } - - /* Check that the driver is happy with the mode */ - if (pVidMode->CheckModeForDriver(pScreen, mode) != MODE_OK) { - free(mode); - return VidModeErrorBase + XF86VidModeModeUnsuitable; - } - - pVidMode->SetCrtcForMode(pScreen, mode); - - pVidMode->AddModeline(pScreen, mode); - - DebugF("AddModeLine - Succeeded\n"); - - return Success; -} - -static int -ProcVidModeDeleteModeLine(ClientPtr client) -{ - REQUEST(xXF86VidModeDeleteModeLineReq); - xXF86OldVidModeDeleteModeLineReq *oldstuff = - (xXF86OldVidModeDeleteModeLineReq *) client->requestBuffer; - xXF86VidModeDeleteModeLineReq newstuff; - ScreenPtr pScreen; - VidModePtr pVidMode; - DisplayModePtr mode; - int len, dotClock; - int ver; - - DEBUG_P("XF86VidModeDeleteModeline"); - - ver = ClientMajorVersion(client); - - if (ver < 2) { - REQUEST_AT_LEAST_SIZE(xXF86OldVidModeDeleteModeLineReq); - len = - client->req_len - - bytes_to_int32(sizeof(xXF86OldVidModeDeleteModeLineReq)); - } - else { - REQUEST_AT_LEAST_SIZE(xXF86VidModeDeleteModeLineReq); - len = - client->req_len - - bytes_to_int32(sizeof(xXF86VidModeDeleteModeLineReq)); - } - - if (ver < 2) { - /* convert from old format */ - stuff = &newstuff; - stuff->length = client->req_len; - stuff->screen = oldstuff->screen; - stuff->dotclock = oldstuff->dotclock; - stuff->hdisplay = oldstuff->hdisplay; - stuff->hsyncstart = oldstuff->hsyncstart; - stuff->hsyncend = oldstuff->hsyncend; - stuff->htotal = oldstuff->htotal; - stuff->hskew = 0; - stuff->vdisplay = oldstuff->vdisplay; - stuff->vsyncstart = oldstuff->vsyncstart; - stuff->vsyncend = oldstuff->vsyncend; - stuff->vtotal = oldstuff->vtotal; - stuff->flags = oldstuff->flags; - stuff->privsize = oldstuff->privsize; - } - DebugF("DeleteModeLine - scrn: %d clock: %ld\n", - (int) stuff->screen, (unsigned long) stuff->dotclock); - DebugF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", - stuff->hdisplay, stuff->hsyncstart, - stuff->hsyncend, stuff->htotal); - DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n", - stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, stuff->vtotal, - (unsigned long) stuff->flags); - - if (len != stuff->privsize) { - DebugF("req_len = %ld, sizeof(Req) = %d, privsize = %ld, " - "len = %d, length = %d\n", - (unsigned long) client->req_len, - (int) sizeof(xXF86VidModeDeleteModeLineReq) >> 2, - (unsigned long) stuff->privsize, len, client->req_len); - return BadLength; - } - - if (stuff->screen >= screenInfo.numScreens) - return BadValue; - pScreen = screenInfo.screens[stuff->screen]; - - pVidMode = VidModeGetPtr(pScreen); - if (pVidMode == NULL) - return BadImplementation; - - if (!pVidMode->GetCurrentModeline(pScreen, &mode, &dotClock)) - return BadValue; - - DebugF("Checking against clock: %d (%d)\n", - VidModeGetModeValue(mode, VIDMODE_CLOCK), dotClock); - DebugF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", - VidModeGetModeValue(mode, VIDMODE_H_DISPLAY), - VidModeGetModeValue(mode, VIDMODE_H_SYNCSTART), - VidModeGetModeValue(mode, VIDMODE_H_SYNCEND), - VidModeGetModeValue(mode, VIDMODE_H_TOTAL)); - DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n", - VidModeGetModeValue(mode, VIDMODE_V_DISPLAY), - VidModeGetModeValue(mode, VIDMODE_V_SYNCSTART), - VidModeGetModeValue(mode, VIDMODE_V_SYNCEND), - VidModeGetModeValue(mode, VIDMODE_V_TOTAL), - VidModeGetModeValue(mode, VIDMODE_FLAGS)); - - if ((pVidMode->GetDotClock(pScreen, stuff->dotclock) == dotClock) && - MODEMATCH(mode, stuff)) - return BadValue; - - if (!pVidMode->GetFirstModeline(pScreen, &mode, &dotClock)) - return BadValue; - - do { - DebugF("Checking against clock: %d (%d)\n", - VidModeGetModeValue(mode, VIDMODE_CLOCK), dotClock); - DebugF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", - VidModeGetModeValue(mode, VIDMODE_H_DISPLAY), - VidModeGetModeValue(mode, VIDMODE_H_SYNCSTART), - VidModeGetModeValue(mode, VIDMODE_H_SYNCEND), - VidModeGetModeValue(mode, VIDMODE_H_TOTAL)); - DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n", - VidModeGetModeValue(mode, VIDMODE_V_DISPLAY), - VidModeGetModeValue(mode, VIDMODE_V_SYNCSTART), - VidModeGetModeValue(mode, VIDMODE_V_SYNCEND), - VidModeGetModeValue(mode, VIDMODE_V_TOTAL), - VidModeGetModeValue(mode, VIDMODE_FLAGS)); - - if ((pVidMode->GetDotClock(pScreen, stuff->dotclock) == dotClock) && - MODEMATCH(mode, stuff)) { - pVidMode->DeleteModeline(pScreen, mode); - DebugF("DeleteModeLine - Succeeded\n"); - return Success; - } - } while (pVidMode->GetNextModeline(pScreen, &mode, &dotClock)); - - return BadValue; -} - -static int -ProcVidModeModModeLine(ClientPtr client) -{ - REQUEST(xXF86VidModeModModeLineReq); - xXF86OldVidModeModModeLineReq *oldstuff = - (xXF86OldVidModeModModeLineReq *) client->requestBuffer; - xXF86VidModeModModeLineReq newstuff; - ScreenPtr pScreen; - VidModePtr pVidMode; - DisplayModePtr mode, modetmp; - int len, dotClock; - int ver; - - DEBUG_P("XF86VidModeModModeline"); - - ver = ClientMajorVersion(client); - - if (ver < 2) { - REQUEST_AT_LEAST_SIZE(xXF86OldVidModeModModeLineReq); - len = - client->req_len - - bytes_to_int32(sizeof(xXF86OldVidModeModModeLineReq)); - } - else { - REQUEST_AT_LEAST_SIZE(xXF86VidModeModModeLineReq); - len = - client->req_len - - bytes_to_int32(sizeof(xXF86VidModeModModeLineReq)); - } - - if (ver < 2) { - /* convert from old format */ - stuff = &newstuff; - stuff->length = client->req_len; - stuff->screen = oldstuff->screen; - stuff->hdisplay = oldstuff->hdisplay; - stuff->hsyncstart = oldstuff->hsyncstart; - stuff->hsyncend = oldstuff->hsyncend; - stuff->htotal = oldstuff->htotal; - stuff->hskew = 0; - stuff->vdisplay = oldstuff->vdisplay; - stuff->vsyncstart = oldstuff->vsyncstart; - stuff->vsyncend = oldstuff->vsyncend; - stuff->vtotal = oldstuff->vtotal; - stuff->flags = oldstuff->flags; - stuff->privsize = oldstuff->privsize; - } - DebugF("ModModeLine - scrn: %d hdsp: %d hbeg: %d hend: %d httl: %d\n", - (int) stuff->screen, stuff->hdisplay, stuff->hsyncstart, - stuff->hsyncend, stuff->htotal); - DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n", - stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, - stuff->vtotal, (unsigned long) stuff->flags); - - 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; - - if (stuff->screen >= screenInfo.numScreens) - return BadValue; - pScreen = screenInfo.screens[stuff->screen]; - - pVidMode = VidModeGetPtr(pScreen); - if (pVidMode == NULL) - return BadImplementation; - - if (!pVidMode->GetCurrentModeline(pScreen, &mode, &dotClock)) - return BadValue; - - modetmp = VidModeCreateMode(); - VidModeCopyMode(mode, modetmp); - - VidModeSetModeValue(modetmp, VIDMODE_H_DISPLAY, stuff->hdisplay); - VidModeSetModeValue(modetmp, VIDMODE_H_SYNCSTART, stuff->hsyncstart); - VidModeSetModeValue(modetmp, VIDMODE_H_SYNCEND, stuff->hsyncend); - VidModeSetModeValue(modetmp, VIDMODE_H_TOTAL, stuff->htotal); - VidModeSetModeValue(modetmp, VIDMODE_H_SKEW, stuff->hskew); - VidModeSetModeValue(modetmp, VIDMODE_V_DISPLAY, stuff->vdisplay); - VidModeSetModeValue(modetmp, VIDMODE_V_SYNCSTART, stuff->vsyncstart); - VidModeSetModeValue(modetmp, VIDMODE_V_SYNCEND, stuff->vsyncend); - VidModeSetModeValue(modetmp, VIDMODE_V_TOTAL, stuff->vtotal); - VidModeSetModeValue(modetmp, VIDMODE_FLAGS, stuff->flags); - - if (stuff->privsize) - DebugF("ModModeLine - Privates in request have been ignored\n"); - - /* Check that the mode is consistent with the monitor specs */ - switch (pVidMode->CheckModeForMonitor(pScreen, modetmp)) { - case MODE_OK: - break; - case MODE_HSYNC: - case MODE_H_ILLEGAL: - free(modetmp); - return VidModeErrorBase + XF86VidModeBadHTimings; - case MODE_VSYNC: - case MODE_V_ILLEGAL: - free(modetmp); - return VidModeErrorBase + XF86VidModeBadVTimings; - default: - free(modetmp); - return VidModeErrorBase + XF86VidModeModeUnsuitable; - } - - /* Check that the driver is happy with the mode */ - if (pVidMode->CheckModeForDriver(pScreen, modetmp) != MODE_OK) { - free(modetmp); - return VidModeErrorBase + XF86VidModeModeUnsuitable; - } - free(modetmp); - - VidModeSetModeValue(mode, VIDMODE_H_DISPLAY, stuff->hdisplay); - VidModeSetModeValue(mode, VIDMODE_H_SYNCSTART, stuff->hsyncstart); - VidModeSetModeValue(mode, VIDMODE_H_SYNCEND, stuff->hsyncend); - VidModeSetModeValue(mode, VIDMODE_H_TOTAL, stuff->htotal); - VidModeSetModeValue(mode, VIDMODE_H_SKEW, stuff->hskew); - VidModeSetModeValue(mode, VIDMODE_V_DISPLAY, stuff->vdisplay); - VidModeSetModeValue(mode, VIDMODE_V_SYNCSTART, stuff->vsyncstart); - VidModeSetModeValue(mode, VIDMODE_V_SYNCEND, stuff->vsyncend); - VidModeSetModeValue(mode, VIDMODE_V_TOTAL, stuff->vtotal); - VidModeSetModeValue(mode, VIDMODE_FLAGS, stuff->flags); - - pVidMode->SetCrtcForMode(pScreen, mode); - pVidMode->SwitchMode(pScreen, mode); - - DebugF("ModModeLine - Succeeded\n"); - return Success; -} - -static int -ProcVidModeValidateModeLine(ClientPtr client) -{ - REQUEST(xXF86VidModeValidateModeLineReq); - xXF86OldVidModeValidateModeLineReq *oldstuff = - (xXF86OldVidModeValidateModeLineReq *) client->requestBuffer; - xXF86VidModeValidateModeLineReq newstuff; - xXF86VidModeValidateModeLineReply rep; - ScreenPtr pScreen; - VidModePtr pVidMode; - DisplayModePtr mode, modetmp = NULL; - int len, status, dotClock; - int ver; - - DEBUG_P("XF86VidModeValidateModeline"); - - ver = ClientMajorVersion(client); - - if (ver < 2) { - REQUEST_AT_LEAST_SIZE(xXF86OldVidModeValidateModeLineReq); - len = client->req_len - - bytes_to_int32(sizeof(xXF86OldVidModeValidateModeLineReq)); - } - else { - REQUEST_AT_LEAST_SIZE(xXF86VidModeValidateModeLineReq); - len = - client->req_len - - bytes_to_int32(sizeof(xXF86VidModeValidateModeLineReq)); - } - - if (ver < 2) { - /* convert from old format */ - stuff = &newstuff; - stuff->length = client->req_len; - stuff->screen = oldstuff->screen; - stuff->dotclock = oldstuff->dotclock; - stuff->hdisplay = oldstuff->hdisplay; - stuff->hsyncstart = oldstuff->hsyncstart; - stuff->hsyncend = oldstuff->hsyncend; - stuff->htotal = oldstuff->htotal; - stuff->hskew = 0; - stuff->vdisplay = oldstuff->vdisplay; - stuff->vsyncstart = oldstuff->vsyncstart; - stuff->vsyncend = oldstuff->vsyncend; - stuff->vtotal = oldstuff->vtotal; - stuff->flags = oldstuff->flags; - stuff->privsize = oldstuff->privsize; - } - - DebugF("ValidateModeLine - scrn: %d clock: %ld\n", - (int) stuff->screen, (unsigned long) stuff->dotclock); - DebugF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", - stuff->hdisplay, stuff->hsyncstart, - stuff->hsyncend, stuff->htotal); - DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n", - stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, stuff->vtotal, - (unsigned long) stuff->flags); - - if (len != stuff->privsize) - return BadLength; - - if (stuff->screen >= screenInfo.numScreens) - return BadValue; - pScreen = screenInfo.screens[stuff->screen]; - - status = MODE_OK; - - 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; - } - - pVidMode = VidModeGetPtr(pScreen); - if (pVidMode == NULL) - return BadImplementation; - - if (!pVidMode->GetCurrentModeline(pScreen, &mode, &dotClock)) - return BadValue; - - modetmp = VidModeCreateMode(); - VidModeCopyMode(mode, modetmp); - - VidModeSetModeValue(modetmp, VIDMODE_H_DISPLAY, stuff->hdisplay); - VidModeSetModeValue(modetmp, VIDMODE_H_SYNCSTART, stuff->hsyncstart); - VidModeSetModeValue(modetmp, VIDMODE_H_SYNCEND, stuff->hsyncend); - VidModeSetModeValue(modetmp, VIDMODE_H_TOTAL, stuff->htotal); - VidModeSetModeValue(modetmp, VIDMODE_H_SKEW, stuff->hskew); - VidModeSetModeValue(modetmp, VIDMODE_V_DISPLAY, stuff->vdisplay); - VidModeSetModeValue(modetmp, VIDMODE_V_SYNCSTART, stuff->vsyncstart); - VidModeSetModeValue(modetmp, VIDMODE_V_SYNCEND, stuff->vsyncend); - VidModeSetModeValue(modetmp, VIDMODE_V_TOTAL, stuff->vtotal); - VidModeSetModeValue(modetmp, VIDMODE_FLAGS, stuff->flags); - if (stuff->privsize) - DebugF("ValidateModeLine - Privates in request have been ignored\n"); - - /* Check that the mode is consistent with the monitor specs */ - if ((status = - pVidMode->CheckModeForMonitor(pScreen, modetmp)) != MODE_OK) - goto status_reply; - - /* Check that the driver is happy with the mode */ - status = pVidMode->CheckModeForDriver(pScreen, modetmp); - - status_reply: - free(modetmp); - - rep = (xXF86VidModeValidateModeLineReply) { - .type = X_Reply, - .sequenceNumber = client->sequence, - .length = bytes_to_int32(SIZEOF(xXF86VidModeValidateModeLineReply) - - SIZEOF(xGenericReply)), - .status = status - }; - if (client->swapped) { - swaps(&rep.sequenceNumber); - swapl(&rep.length); - swapl(&rep.status); - } - WriteToClient(client, sizeof(xXF86VidModeValidateModeLineReply), &rep); - DebugF("ValidateModeLine - Succeeded (status = %d)\n", status); - - return Success; -} - -static int -ProcVidModeSwitchMode(ClientPtr client) -{ - REQUEST(xXF86VidModeSwitchModeReq); - ScreenPtr pScreen; - VidModePtr pVidMode; - - DEBUG_P("XF86VidModeSwitchMode"); - - REQUEST_SIZE_MATCH(xXF86VidModeSwitchModeReq); - - if (stuff->screen >= screenInfo.numScreens) - return BadValue; - pScreen = screenInfo.screens[stuff->screen]; - - pVidMode = VidModeGetPtr(pScreen); - if (pVidMode == NULL) - return BadImplementation; - - pVidMode->ZoomViewport(pScreen, (short) stuff->zoom); - - return Success; -} - -static int -ProcVidModeSwitchToMode(ClientPtr client) -{ - REQUEST(xXF86VidModeSwitchToModeReq); - xXF86OldVidModeSwitchToModeReq *oldstuff = - (xXF86OldVidModeSwitchToModeReq *) client->requestBuffer; - xXF86VidModeSwitchToModeReq newstuff; - ScreenPtr pScreen; - VidModePtr pVidMode; - DisplayModePtr mode; - int len, dotClock; - int ver; - - DEBUG_P("XF86VidModeSwitchToMode"); - - ver = ClientMajorVersion(client); - - if (ver < 2) { - REQUEST_AT_LEAST_SIZE(xXF86OldVidModeSwitchToModeReq); - len = - client->req_len - - bytes_to_int32(sizeof(xXF86OldVidModeSwitchToModeReq)); - } - else { - REQUEST_AT_LEAST_SIZE(xXF86VidModeSwitchToModeReq); - len = - client->req_len - - bytes_to_int32(sizeof(xXF86VidModeSwitchToModeReq)); - } - - if (ver < 2) { - /* convert from old format */ - stuff = &newstuff; - stuff->length = client->req_len; - stuff->screen = oldstuff->screen; - stuff->dotclock = oldstuff->dotclock; - stuff->hdisplay = oldstuff->hdisplay; - stuff->hsyncstart = oldstuff->hsyncstart; - stuff->hsyncend = oldstuff->hsyncend; - stuff->htotal = oldstuff->htotal; - stuff->hskew = 0; - stuff->vdisplay = oldstuff->vdisplay; - stuff->vsyncstart = oldstuff->vsyncstart; - stuff->vsyncend = oldstuff->vsyncend; - stuff->vtotal = oldstuff->vtotal; - stuff->flags = oldstuff->flags; - stuff->privsize = oldstuff->privsize; - } - - DebugF("SwitchToMode - scrn: %d clock: %ld\n", - (int) stuff->screen, (unsigned long) stuff->dotclock); - DebugF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", - stuff->hdisplay, stuff->hsyncstart, - stuff->hsyncend, stuff->htotal); - DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n", - stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, stuff->vtotal, - (unsigned long) stuff->flags); - - if (len != stuff->privsize) - return BadLength; - - if (stuff->screen >= screenInfo.numScreens) - return BadValue; - pScreen = screenInfo.screens[stuff->screen]; - - pVidMode = VidModeGetPtr(pScreen); - if (pVidMode == NULL) - return BadImplementation; - - if (!pVidMode->GetCurrentModeline(pScreen, &mode, &dotClock)) - return BadValue; - - if ((pVidMode->GetDotClock(pScreen, stuff->dotclock) == dotClock) - && MODEMATCH(mode, stuff)) - return Success; - - if (!pVidMode->GetFirstModeline(pScreen, &mode, &dotClock)) - return BadValue; - - do { - DebugF("Checking against clock: %d (%d)\n", - VidModeGetModeValue(mode, VIDMODE_CLOCK), dotClock); - DebugF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", - VidModeGetModeValue(mode, VIDMODE_H_DISPLAY), - VidModeGetModeValue(mode, VIDMODE_H_SYNCSTART), - VidModeGetModeValue(mode, VIDMODE_H_SYNCEND), - VidModeGetModeValue(mode, VIDMODE_H_TOTAL)); - DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n", - VidModeGetModeValue(mode, VIDMODE_V_DISPLAY), - VidModeGetModeValue(mode, VIDMODE_V_SYNCSTART), - VidModeGetModeValue(mode, VIDMODE_V_SYNCEND), - VidModeGetModeValue(mode, VIDMODE_V_TOTAL), - VidModeGetModeValue(mode, VIDMODE_FLAGS)); - - if ((pVidMode->GetDotClock(pScreen, stuff->dotclock) == dotClock) && - MODEMATCH(mode, stuff)) { - - if (!pVidMode->SwitchMode(pScreen, mode)) - return BadValue; - - DebugF("SwitchToMode - Succeeded\n"); - return Success; - } - } while (pVidMode->GetNextModeline(pScreen, &mode, &dotClock)); - - return BadValue; -} - -static int -ProcVidModeLockModeSwitch(ClientPtr client) -{ - REQUEST(xXF86VidModeLockModeSwitchReq); - ScreenPtr pScreen; - VidModePtr pVidMode; - - REQUEST_SIZE_MATCH(xXF86VidModeLockModeSwitchReq); - - DEBUG_P("XF86VidModeLockModeSwitch"); - - if (stuff->screen >= screenInfo.numScreens) - return BadValue; - pScreen = screenInfo.screens[stuff->screen]; - - pVidMode = VidModeGetPtr(pScreen); - if (pVidMode == NULL) - return BadImplementation; - - if (!pVidMode->LockZoom(pScreen, (short) stuff->lock)) - return VidModeErrorBase + XF86VidModeZoomLocked; - - return Success; -} - -static int -ProcVidModeGetMonitor(ClientPtr client) -{ - REQUEST(xXF86VidModeGetMonitorReq); - xXF86VidModeGetMonitorReply rep = { - .type = X_Reply, - .sequenceNumber = client->sequence - }; - CARD32 *hsyncdata, *vsyncdata; - ScreenPtr pScreen; - VidModePtr pVidMode; - int i, nHsync, nVrefresh; - - DEBUG_P("XF86VidModeGetMonitor"); - - REQUEST_SIZE_MATCH(xXF86VidModeGetMonitorReq); - - if (stuff->screen >= screenInfo.numScreens) - return BadValue; - pScreen = screenInfo.screens[stuff->screen]; - - pVidMode = VidModeGetPtr(pScreen); - if (pVidMode == NULL) - return BadImplementation; - - nHsync = pVidMode->GetMonitorValue(pScreen, VIDMODE_MON_NHSYNC, 0).i; - nVrefresh = pVidMode->GetMonitorValue(pScreen, VIDMODE_MON_NVREFRESH, 0).i; - - if ((char *) (pVidMode->GetMonitorValue(pScreen, VIDMODE_MON_VENDOR, 0)).ptr) - rep.vendorLength = strlen((char *) (pVidMode->GetMonitorValue(pScreen, - VIDMODE_MON_VENDOR, - 0)).ptr); - else - rep.vendorLength = 0; - if ((char *) (pVidMode->GetMonitorValue(pScreen, VIDMODE_MON_MODEL, 0)).ptr) - rep.modelLength = strlen((char *) (pVidMode->GetMonitorValue(pScreen, - VIDMODE_MON_MODEL, - 0)).ptr); - else - rep.modelLength = 0; - rep.length = - bytes_to_int32(SIZEOF(xXF86VidModeGetMonitorReply) - - SIZEOF(xGenericReply) + (nHsync + - nVrefresh) * sizeof(CARD32) + - pad_to_int32(rep.vendorLength) + - pad_to_int32(rep.modelLength)); - rep.nhsync = nHsync; - rep.nvsync = nVrefresh; - hsyncdata = xallocarray(nHsync, sizeof(CARD32)); - if (!hsyncdata) { - return BadAlloc; - } - vsyncdata = xallocarray(nVrefresh, sizeof(CARD32)); - - if (!vsyncdata) { - free(hsyncdata); - return BadAlloc; - } - - for (i = 0; i < nHsync; i++) { - hsyncdata[i] = (unsigned short) (pVidMode->GetMonitorValue(pScreen, - VIDMODE_MON_HSYNC_LO, - i)).f | - (unsigned - short) (pVidMode->GetMonitorValue(pScreen, VIDMODE_MON_HSYNC_HI, - i)).f << 16; - } - for (i = 0; i < nVrefresh; i++) { - vsyncdata[i] = (unsigned short) (pVidMode->GetMonitorValue(pScreen, - VIDMODE_MON_VREFRESH_LO, - i)).f | - (unsigned - short) (pVidMode->GetMonitorValue(pScreen, VIDMODE_MON_VREFRESH_HI, - i)).f << 16; - } - - if (client->swapped) { - swaps(&rep.sequenceNumber); - swapl(&rep.length); - } - WriteToClient(client, SIZEOF(xXF86VidModeGetMonitorReply), &rep); - client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write; - WriteSwappedDataToClient(client, nHsync * sizeof(CARD32), hsyncdata); - WriteSwappedDataToClient(client, nVrefresh * sizeof(CARD32), vsyncdata); - if (rep.vendorLength) - WriteToClient(client, rep.vendorLength, - (pVidMode->GetMonitorValue(pScreen, VIDMODE_MON_VENDOR, 0)).ptr); - if (rep.modelLength) - WriteToClient(client, rep.modelLength, - (pVidMode->GetMonitorValue(pScreen, VIDMODE_MON_MODEL, 0)).ptr); - - free(hsyncdata); - free(vsyncdata); - - return Success; -} - -static int -ProcVidModeGetViewPort(ClientPtr client) -{ - REQUEST(xXF86VidModeGetViewPortReq); - xXF86VidModeGetViewPortReply rep; - ScreenPtr pScreen; - VidModePtr pVidMode; - int x, y; - - DEBUG_P("XF86VidModeGetViewPort"); - - REQUEST_SIZE_MATCH(xXF86VidModeGetViewPortReq); - - if (stuff->screen >= screenInfo.numScreens) - return BadValue; - pScreen = screenInfo.screens[stuff->screen]; - - pVidMode = VidModeGetPtr(pScreen); - if (pVidMode == NULL) - return BadImplementation; - - pVidMode->GetViewPort(pScreen, &x, &y); - - rep = (xXF86VidModeGetViewPortReply) { - .type = X_Reply, - .sequenceNumber = client->sequence, - .length = 0, - .x = x, - .y = y - }; - - if (client->swapped) { - swaps(&rep.sequenceNumber); - swapl(&rep.length); - swapl(&rep.x); - swapl(&rep.y); - } - WriteToClient(client, SIZEOF(xXF86VidModeGetViewPortReply), &rep); - return Success; -} - -static int -ProcVidModeSetViewPort(ClientPtr client) -{ - REQUEST(xXF86VidModeSetViewPortReq); - ScreenPtr pScreen; - VidModePtr pVidMode; - - DEBUG_P("XF86VidModeSetViewPort"); - - REQUEST_SIZE_MATCH(xXF86VidModeSetViewPortReq); - - if (stuff->screen >= screenInfo.numScreens) - return BadValue; - pScreen = screenInfo.screens[stuff->screen]; - - pVidMode = VidModeGetPtr(pScreen); - if (pVidMode == NULL) - return BadImplementation; - - if (!pVidMode->SetViewPort(pScreen, stuff->x, stuff->y)) - return BadValue; - - return Success; -} - -static int -ProcVidModeGetDotClocks(ClientPtr client) -{ - REQUEST(xXF86VidModeGetDotClocksReq); - xXF86VidModeGetDotClocksReply rep; - ScreenPtr pScreen; - VidModePtr pVidMode; - int n; - int numClocks; - CARD32 dotclock; - int *Clocks = NULL; - Bool ClockProg; - - DEBUG_P("XF86VidModeGetDotClocks"); - - REQUEST_SIZE_MATCH(xXF86VidModeGetDotClocksReq); - - if (stuff->screen >= screenInfo.numScreens) - return BadValue; - pScreen = screenInfo.screens[stuff->screen]; - - pVidMode = VidModeGetPtr(pScreen); - if (pVidMode == NULL) - return BadImplementation; - - numClocks = pVidMode->GetNumOfClocks(pScreen, &ClockProg); - - rep = (xXF86VidModeGetDotClocksReply) { - .type = X_Reply, - .sequenceNumber = client->sequence, - .length = bytes_to_int32(SIZEOF(xXF86VidModeGetDotClocksReply) - - SIZEOF(xGenericReply) + numClocks), - .clocks = numClocks, - .maxclocks = MAXCLOCKS, - .flags = 0 - }; - - if (!ClockProg) { - Clocks = calloc(numClocks, sizeof(int)); - if (!Clocks) - return BadValue; - if (!pVidMode->GetClocks(pScreen, Clocks)) { - free(Clocks); - return BadValue; - } - } - if (ClockProg) { - rep.flags |= CLKFLAG_PROGRAMABLE; - } - if (client->swapped) { - swaps(&rep.sequenceNumber); - swapl(&rep.length); - swapl(&rep.clocks); - swapl(&rep.maxclocks); - swapl(&rep.flags); - } - WriteToClient(client, sizeof(xXF86VidModeGetDotClocksReply), &rep); - if (!ClockProg) { - for (n = 0; n < numClocks; n++) { - dotclock = Clocks[n]; - if (client->swapped) { - WriteSwappedDataToClient(client, 4, (char *) &dotclock); - } - else { - WriteToClient(client, 4, &dotclock); - } - } - } - - free(Clocks); - return Success; -} - -static int -ProcVidModeSetGamma(ClientPtr client) -{ - REQUEST(xXF86VidModeSetGammaReq); - ScreenPtr pScreen; - VidModePtr pVidMode; - - DEBUG_P("XF86VidModeSetGamma"); - - REQUEST_SIZE_MATCH(xXF86VidModeSetGammaReq); - - if (stuff->screen >= screenInfo.numScreens) - return BadValue; - pScreen = screenInfo.screens[stuff->screen]; - - pVidMode = VidModeGetPtr(pScreen); - if (pVidMode == NULL) - return BadImplementation; - - if (!pVidMode->SetGamma(pScreen, ((float) stuff->red) / 10000., - ((float) stuff->green) / 10000., - ((float) stuff->blue) / 10000.)) - return BadValue; - - return Success; -} - -static int -ProcVidModeGetGamma(ClientPtr client) -{ - REQUEST(xXF86VidModeGetGammaReq); - xXF86VidModeGetGammaReply rep; - ScreenPtr pScreen; - VidModePtr pVidMode; - float red, green, blue; - - DEBUG_P("XF86VidModeGetGamma"); - - REQUEST_SIZE_MATCH(xXF86VidModeGetGammaReq); - - if (stuff->screen >= screenInfo.numScreens) - return BadValue; - pScreen = screenInfo.screens[stuff->screen]; - - pVidMode = VidModeGetPtr(pScreen); - if (pVidMode == NULL) - return BadImplementation; - - if (!pVidMode->GetGamma(pScreen, &red, &green, &blue)) - return BadValue; - rep = (xXF86VidModeGetGammaReply) { - .type = X_Reply, - .sequenceNumber = client->sequence, - .length = 0, - .red = (CARD32) (red * 10000.), - .green = (CARD32) (green * 10000.), - .blue = (CARD32) (blue * 10000.) - }; - if (client->swapped) { - swaps(&rep.sequenceNumber); - swapl(&rep.length); - swapl(&rep.red); - swapl(&rep.green); - swapl(&rep.blue); - } - WriteToClient(client, sizeof(xXF86VidModeGetGammaReply), &rep); - - return Success; -} - -static int -ProcVidModeSetGammaRamp(ClientPtr client) -{ - CARD16 *r, *g, *b; - int length; - ScreenPtr pScreen; - VidModePtr pVidMode; - - REQUEST(xXF86VidModeSetGammaRampReq); - REQUEST_AT_LEAST_SIZE(xXF86VidModeSetGammaRampReq); - - if (stuff->screen >= screenInfo.numScreens) - return BadValue; - pScreen = screenInfo.screens[stuff->screen]; - - pVidMode = VidModeGetPtr(pScreen); - if (pVidMode == NULL) - return BadImplementation; - - if (stuff->size != pVidMode->GetGammaRampSize(pScreen)) - return BadValue; - - length = (stuff->size + 1) & ~1; - - REQUEST_FIXED_SIZE(xXF86VidModeSetGammaRampReq, length * 6); - - r = (CARD16 *) &stuff[1]; - g = r + length; - b = g + length; - - if (!pVidMode->SetGammaRamp(pScreen, stuff->size, r, g, b)) - return BadValue; - - return Success; -} - -static int -ProcVidModeGetGammaRamp(ClientPtr client) -{ - CARD16 *ramp = NULL; - int length; - size_t ramplen = 0; - xXF86VidModeGetGammaRampReply rep; - ScreenPtr pScreen; - VidModePtr pVidMode; - - REQUEST(xXF86VidModeGetGammaRampReq); - - REQUEST_SIZE_MATCH(xXF86VidModeGetGammaRampReq); - - if (stuff->screen >= screenInfo.numScreens) - return BadValue; - pScreen = screenInfo.screens[stuff->screen]; - - pVidMode = VidModeGetPtr(pScreen); - if (pVidMode == NULL) - return BadImplementation; - - if (stuff->size != pVidMode->GetGammaRampSize(pScreen)) - return BadValue; - - length = (stuff->size + 1) & ~1; - - if (stuff->size) { - if (!(ramp = xallocarray(length, 3 * sizeof(CARD16)))) - return BadAlloc; - ramplen = length * 3 * sizeof(CARD16); - - if (!pVidMode->GetGammaRamp(pScreen, stuff->size, - ramp, ramp + length, ramp + (length * 2))) { - free(ramp); - return BadValue; - } - } - rep = (xXF86VidModeGetGammaRampReply) { - .type = X_Reply, - .sequenceNumber = client->sequence, - .length = (length >> 1) * 3, - .size = stuff->size - }; - if (client->swapped) { - swaps(&rep.sequenceNumber); - swapl(&rep.length); - swaps(&rep.size); - SwapShorts((short *) ramp, length * 3); - } - WriteToClient(client, sizeof(xXF86VidModeGetGammaRampReply), &rep); - - if (stuff->size) { - WriteToClient(client, ramplen, ramp); - free(ramp); - } - - return Success; -} - - -static int -ProcVidModeGetGammaRampSize(ClientPtr client) -{ - xXF86VidModeGetGammaRampSizeReply rep; - ScreenPtr pScreen; - VidModePtr pVidMode; - - REQUEST(xXF86VidModeGetGammaRampSizeReq); - - REQUEST_SIZE_MATCH(xXF86VidModeGetGammaRampSizeReq); - - if (stuff->screen >= screenInfo.numScreens) - return BadValue; - pScreen = screenInfo.screens[stuff->screen]; - - pVidMode = VidModeGetPtr(pScreen); - if (pVidMode == NULL) - return BadImplementation; - - rep = (xXF86VidModeGetGammaRampSizeReply) { - .type = X_Reply, - .sequenceNumber = client->sequence, - .length = 0, - .size = pVidMode->GetGammaRampSize(pScreen) - }; - if (client->swapped) { - swaps(&rep.sequenceNumber); - swapl(&rep.length); - swaps(&rep.size); - } - WriteToClient(client, sizeof(xXF86VidModeGetGammaRampSizeReply), &rep); - - return Success; -} - -static int -ProcVidModeGetPermissions(ClientPtr client) -{ - xXF86VidModeGetPermissionsReply rep = { - .type = X_Reply, - .sequenceNumber = client->sequence, - .length = 0, - .permissions = XF86VM_READ_PERMISSION - }; - - REQUEST(xXF86VidModeGetPermissionsReq); - - REQUEST_SIZE_MATCH(xXF86VidModeGetPermissionsReq); - - if (stuff->screen >= screenInfo.numScreens) - return BadValue; - - if (VidModeAllowNonLocal || client->local) { - rep.permissions |= XF86VM_WRITE_PERMISSION; - } - if (client->swapped) { - swaps(&rep.sequenceNumber); - swapl(&rep.length); - swapl(&rep.permissions); - } - WriteToClient(client, sizeof(xXF86VidModeGetPermissionsReply), &rep); - - return Success; -} - -static int -ProcVidModeSetClientVersion(ClientPtr client) -{ - REQUEST(xXF86VidModeSetClientVersionReq); - - VidModePrivPtr pPriv; - - DEBUG_P("XF86VidModeSetClientVersion"); - - REQUEST_SIZE_MATCH(xXF86VidModeSetClientVersionReq); - - if ((pPriv = VM_GETPRIV(client)) == NULL) { - pPriv = malloc(sizeof(VidModePrivRec)); - if (!pPriv) - return BadAlloc; - VM_SETPRIV(client, pPriv); - } - pPriv->major = stuff->major; - - pPriv->minor = stuff->minor; - - return Success; -} - -static int -ProcVidModeDispatch(ClientPtr client) -{ - REQUEST(xReq); - switch (stuff->data) { - case X_XF86VidModeQueryVersion: - return ProcVidModeQueryVersion(client); - case X_XF86VidModeGetModeLine: - return ProcVidModeGetModeLine(client); - case X_XF86VidModeGetMonitor: - return ProcVidModeGetMonitor(client); - case X_XF86VidModeGetAllModeLines: - return ProcVidModeGetAllModeLines(client); - case X_XF86VidModeValidateModeLine: - return ProcVidModeValidateModeLine(client); - case X_XF86VidModeGetViewPort: - return ProcVidModeGetViewPort(client); - case X_XF86VidModeGetDotClocks: - return ProcVidModeGetDotClocks(client); - case X_XF86VidModeSetClientVersion: - return ProcVidModeSetClientVersion(client); - case X_XF86VidModeGetGamma: - return ProcVidModeGetGamma(client); - case X_XF86VidModeGetGammaRamp: - return ProcVidModeGetGammaRamp(client); - case X_XF86VidModeGetGammaRampSize: - return ProcVidModeGetGammaRampSize(client); - case X_XF86VidModeGetPermissions: - return ProcVidModeGetPermissions(client); - default: - if (VidModeAllowNonLocal || client->local) { - switch (stuff->data) { - case X_XF86VidModeAddModeLine: - return ProcVidModeAddModeLine(client); - case X_XF86VidModeDeleteModeLine: - return ProcVidModeDeleteModeLine(client); - case X_XF86VidModeModModeLine: - return ProcVidModeModModeLine(client); - case X_XF86VidModeSwitchMode: - return ProcVidModeSwitchMode(client); - case X_XF86VidModeSwitchToMode: - return ProcVidModeSwitchToMode(client); - case X_XF86VidModeLockModeSwitch: - return ProcVidModeLockModeSwitch(client); - case X_XF86VidModeSetViewPort: - return ProcVidModeSetViewPort(client); - case X_XF86VidModeSetGamma: - return ProcVidModeSetGamma(client); - case X_XF86VidModeSetGammaRamp: - return ProcVidModeSetGammaRamp(client); - default: - return BadRequest; - } - } - else - return VidModeErrorBase + XF86VidModeClientNotLocal; - } -} - -static int _X_COLD -SProcVidModeGetModeLine(ClientPtr client) -{ - REQUEST(xXF86VidModeGetModeLineReq); - REQUEST_SIZE_MATCH(xXF86VidModeGetModeLineReq); - swaps(&stuff->screen); - return ProcVidModeGetModeLine(client); -} - -static int _X_COLD -SProcVidModeGetAllModeLines(ClientPtr client) -{ - REQUEST(xXF86VidModeGetAllModeLinesReq); - REQUEST_SIZE_MATCH(xXF86VidModeGetAllModeLinesReq); - swaps(&stuff->screen); - return ProcVidModeGetAllModeLines(client); -} - -static int _X_COLD -SProcVidModeAddModeLine(ClientPtr client) -{ - xXF86OldVidModeAddModeLineReq *oldstuff = - (xXF86OldVidModeAddModeLineReq *) client->requestBuffer; - int ver; - - REQUEST(xXF86VidModeAddModeLineReq); - ver = ClientMajorVersion(client); - if (ver < 2) { - REQUEST_AT_LEAST_SIZE(xXF86OldVidModeAddModeLineReq); - swapl(&oldstuff->screen); - swaps(&oldstuff->hdisplay); - swaps(&oldstuff->hsyncstart); - swaps(&oldstuff->hsyncend); - swaps(&oldstuff->htotal); - swaps(&oldstuff->vdisplay); - swaps(&oldstuff->vsyncstart); - swaps(&oldstuff->vsyncend); - swaps(&oldstuff->vtotal); - swapl(&oldstuff->flags); - swapl(&oldstuff->privsize); - SwapRestL(oldstuff); - } - else { - REQUEST_AT_LEAST_SIZE(xXF86VidModeAddModeLineReq); - swapl(&stuff->screen); - swaps(&stuff->hdisplay); - swaps(&stuff->hsyncstart); - swaps(&stuff->hsyncend); - swaps(&stuff->htotal); - swaps(&stuff->hskew); - swaps(&stuff->vdisplay); - swaps(&stuff->vsyncstart); - swaps(&stuff->vsyncend); - swaps(&stuff->vtotal); - swapl(&stuff->flags); - swapl(&stuff->privsize); - SwapRestL(stuff); - } - return ProcVidModeAddModeLine(client); -} - -static int _X_COLD -SProcVidModeDeleteModeLine(ClientPtr client) -{ - xXF86OldVidModeDeleteModeLineReq *oldstuff = - (xXF86OldVidModeDeleteModeLineReq *) client->requestBuffer; - int ver; - - REQUEST(xXF86VidModeDeleteModeLineReq); - ver = ClientMajorVersion(client); - if (ver < 2) { - REQUEST_AT_LEAST_SIZE(xXF86OldVidModeDeleteModeLineReq); - swapl(&oldstuff->screen); - swaps(&oldstuff->hdisplay); - swaps(&oldstuff->hsyncstart); - swaps(&oldstuff->hsyncend); - swaps(&oldstuff->htotal); - swaps(&oldstuff->vdisplay); - swaps(&oldstuff->vsyncstart); - swaps(&oldstuff->vsyncend); - swaps(&oldstuff->vtotal); - swapl(&oldstuff->flags); - swapl(&oldstuff->privsize); - SwapRestL(oldstuff); - } - else { - REQUEST_AT_LEAST_SIZE(xXF86VidModeDeleteModeLineReq); - swapl(&stuff->screen); - swaps(&stuff->hdisplay); - swaps(&stuff->hsyncstart); - swaps(&stuff->hsyncend); - swaps(&stuff->htotal); - swaps(&stuff->hskew); - swaps(&stuff->vdisplay); - swaps(&stuff->vsyncstart); - swaps(&stuff->vsyncend); - swaps(&stuff->vtotal); - swapl(&stuff->flags); - swapl(&stuff->privsize); - SwapRestL(stuff); - } - return ProcVidModeDeleteModeLine(client); -} - -static int _X_COLD -SProcVidModeModModeLine(ClientPtr client) -{ - xXF86OldVidModeModModeLineReq *oldstuff = - (xXF86OldVidModeModModeLineReq *) client->requestBuffer; - int ver; - - REQUEST(xXF86VidModeModModeLineReq); - ver = ClientMajorVersion(client); - if (ver < 2) { - REQUEST_AT_LEAST_SIZE(xXF86OldVidModeModModeLineReq); - swapl(&oldstuff->screen); - swaps(&oldstuff->hdisplay); - swaps(&oldstuff->hsyncstart); - swaps(&oldstuff->hsyncend); - swaps(&oldstuff->htotal); - swaps(&oldstuff->vdisplay); - swaps(&oldstuff->vsyncstart); - swaps(&oldstuff->vsyncend); - swaps(&oldstuff->vtotal); - swapl(&oldstuff->flags); - swapl(&oldstuff->privsize); - SwapRestL(oldstuff); - } - else { - REQUEST_AT_LEAST_SIZE(xXF86VidModeModModeLineReq); - swapl(&stuff->screen); - swaps(&stuff->hdisplay); - swaps(&stuff->hsyncstart); - swaps(&stuff->hsyncend); - swaps(&stuff->htotal); - swaps(&stuff->hskew); - swaps(&stuff->vdisplay); - swaps(&stuff->vsyncstart); - swaps(&stuff->vsyncend); - swaps(&stuff->vtotal); - swapl(&stuff->flags); - swapl(&stuff->privsize); - SwapRestL(stuff); - } - return ProcVidModeModModeLine(client); -} - -static int _X_COLD -SProcVidModeValidateModeLine(ClientPtr client) -{ - xXF86OldVidModeValidateModeLineReq *oldstuff = - (xXF86OldVidModeValidateModeLineReq *) client->requestBuffer; - int ver; - - REQUEST(xXF86VidModeValidateModeLineReq); - ver = ClientMajorVersion(client); - if (ver < 2) { - REQUEST_AT_LEAST_SIZE(xXF86OldVidModeValidateModeLineReq); - swapl(&oldstuff->screen); - swaps(&oldstuff->hdisplay); - swaps(&oldstuff->hsyncstart); - swaps(&oldstuff->hsyncend); - swaps(&oldstuff->htotal); - swaps(&oldstuff->vdisplay); - swaps(&oldstuff->vsyncstart); - swaps(&oldstuff->vsyncend); - swaps(&oldstuff->vtotal); - swapl(&oldstuff->flags); - swapl(&oldstuff->privsize); - SwapRestL(oldstuff); - } - else { - REQUEST_AT_LEAST_SIZE(xXF86VidModeValidateModeLineReq); - swapl(&stuff->screen); - swaps(&stuff->hdisplay); - swaps(&stuff->hsyncstart); - swaps(&stuff->hsyncend); - swaps(&stuff->htotal); - swaps(&stuff->hskew); - swaps(&stuff->vdisplay); - swaps(&stuff->vsyncstart); - swaps(&stuff->vsyncend); - swaps(&stuff->vtotal); - swapl(&stuff->flags); - swapl(&stuff->privsize); - SwapRestL(stuff); - } - return ProcVidModeValidateModeLine(client); -} - -static int _X_COLD -SProcVidModeSwitchMode(ClientPtr client) -{ - REQUEST(xXF86VidModeSwitchModeReq); - REQUEST_SIZE_MATCH(xXF86VidModeSwitchModeReq); - swaps(&stuff->screen); - swaps(&stuff->zoom); - return ProcVidModeSwitchMode(client); -} - -static int _X_COLD -SProcVidModeSwitchToMode(ClientPtr client) -{ - REQUEST(xXF86VidModeSwitchToModeReq); - REQUEST_SIZE_MATCH(xXF86VidModeSwitchToModeReq); - swapl(&stuff->screen); - return ProcVidModeSwitchToMode(client); -} - -static int _X_COLD -SProcVidModeLockModeSwitch(ClientPtr client) -{ - REQUEST(xXF86VidModeLockModeSwitchReq); - REQUEST_SIZE_MATCH(xXF86VidModeLockModeSwitchReq); - swaps(&stuff->screen); - swaps(&stuff->lock); - return ProcVidModeLockModeSwitch(client); -} - -static int _X_COLD -SProcVidModeGetMonitor(ClientPtr client) -{ - REQUEST(xXF86VidModeGetMonitorReq); - REQUEST_SIZE_MATCH(xXF86VidModeGetMonitorReq); - swaps(&stuff->screen); - return ProcVidModeGetMonitor(client); -} - -static int _X_COLD -SProcVidModeGetViewPort(ClientPtr client) -{ - REQUEST(xXF86VidModeGetViewPortReq); - REQUEST_SIZE_MATCH(xXF86VidModeGetViewPortReq); - swaps(&stuff->screen); - return ProcVidModeGetViewPort(client); -} - -static int _X_COLD -SProcVidModeSetViewPort(ClientPtr client) -{ - REQUEST(xXF86VidModeSetViewPortReq); - REQUEST_SIZE_MATCH(xXF86VidModeSetViewPortReq); - swaps(&stuff->screen); - swapl(&stuff->x); - swapl(&stuff->y); - return ProcVidModeSetViewPort(client); -} - -static int _X_COLD -SProcVidModeGetDotClocks(ClientPtr client) -{ - REQUEST(xXF86VidModeGetDotClocksReq); - REQUEST_SIZE_MATCH(xXF86VidModeGetDotClocksReq); - swaps(&stuff->screen); - return ProcVidModeGetDotClocks(client); -} - -static int _X_COLD -SProcVidModeSetClientVersion(ClientPtr client) -{ - REQUEST(xXF86VidModeSetClientVersionReq); - REQUEST_SIZE_MATCH(xXF86VidModeSetClientVersionReq); - swaps(&stuff->major); - swaps(&stuff->minor); - return ProcVidModeSetClientVersion(client); -} - -static int _X_COLD -SProcVidModeSetGamma(ClientPtr client) -{ - REQUEST(xXF86VidModeSetGammaReq); - REQUEST_SIZE_MATCH(xXF86VidModeSetGammaReq); - swaps(&stuff->screen); - swapl(&stuff->red); - swapl(&stuff->green); - swapl(&stuff->blue); - return ProcVidModeSetGamma(client); -} - -static int _X_COLD -SProcVidModeGetGamma(ClientPtr client) -{ - REQUEST(xXF86VidModeGetGammaReq); - REQUEST_SIZE_MATCH(xXF86VidModeGetGammaReq); - swaps(&stuff->screen); - return ProcVidModeGetGamma(client); -} - -static int _X_COLD -SProcVidModeSetGammaRamp(ClientPtr client) -{ - int length; - - REQUEST(xXF86VidModeSetGammaRampReq); - REQUEST_AT_LEAST_SIZE(xXF86VidModeSetGammaRampReq); - swaps(&stuff->size); - swaps(&stuff->screen); - length = ((stuff->size + 1) & ~1) * 6; - REQUEST_FIXED_SIZE(xXF86VidModeSetGammaRampReq, length); - SwapRestS(stuff); - return ProcVidModeSetGammaRamp(client); -} - -static int _X_COLD -SProcVidModeGetGammaRamp(ClientPtr client) -{ - REQUEST(xXF86VidModeGetGammaRampReq); - REQUEST_SIZE_MATCH(xXF86VidModeGetGammaRampReq); - swaps(&stuff->size); - swaps(&stuff->screen); - return ProcVidModeGetGammaRamp(client); -} - -static int _X_COLD -SProcVidModeGetGammaRampSize(ClientPtr client) -{ - REQUEST(xXF86VidModeGetGammaRampSizeReq); - REQUEST_SIZE_MATCH(xXF86VidModeGetGammaRampSizeReq); - swaps(&stuff->screen); - return ProcVidModeGetGammaRampSize(client); -} - -static int _X_COLD -SProcVidModeGetPermissions(ClientPtr client) -{ - REQUEST(xXF86VidModeGetPermissionsReq); - REQUEST_SIZE_MATCH(xXF86VidModeGetPermissionsReq); - swaps(&stuff->screen); - return ProcVidModeGetPermissions(client); -} - -static int _X_COLD -SProcVidModeDispatch(ClientPtr client) -{ - REQUEST(xReq); - switch (stuff->data) { - case X_XF86VidModeQueryVersion: - return ProcVidModeQueryVersion(client); - case X_XF86VidModeGetModeLine: - return SProcVidModeGetModeLine(client); - case X_XF86VidModeGetMonitor: - return SProcVidModeGetMonitor(client); - case X_XF86VidModeGetAllModeLines: - return SProcVidModeGetAllModeLines(client); - case X_XF86VidModeGetViewPort: - return SProcVidModeGetViewPort(client); - case X_XF86VidModeValidateModeLine: - return SProcVidModeValidateModeLine(client); - case X_XF86VidModeGetDotClocks: - return SProcVidModeGetDotClocks(client); - case X_XF86VidModeSetClientVersion: - return SProcVidModeSetClientVersion(client); - case X_XF86VidModeGetGamma: - return SProcVidModeGetGamma(client); - case X_XF86VidModeGetGammaRamp: - return SProcVidModeGetGammaRamp(client); - case X_XF86VidModeGetGammaRampSize: - return SProcVidModeGetGammaRampSize(client); - case X_XF86VidModeGetPermissions: - return SProcVidModeGetPermissions(client); - default: - if (VidModeAllowNonLocal || client->local) { - switch (stuff->data) { - case X_XF86VidModeAddModeLine: - return SProcVidModeAddModeLine(client); - case X_XF86VidModeDeleteModeLine: - return SProcVidModeDeleteModeLine(client); - case X_XF86VidModeModModeLine: - return SProcVidModeModModeLine(client); - case X_XF86VidModeSwitchMode: - return SProcVidModeSwitchMode(client); - case X_XF86VidModeSwitchToMode: - return SProcVidModeSwitchToMode(client); - case X_XF86VidModeLockModeSwitch: - return SProcVidModeLockModeSwitch(client); - case X_XF86VidModeSetViewPort: - return SProcVidModeSetViewPort(client); - case X_XF86VidModeSetGamma: - return SProcVidModeSetGamma(client); - case X_XF86VidModeSetGammaRamp: - return SProcVidModeSetGammaRamp(client); - default: - return BadRequest; - } - } - else - return VidModeErrorBase + XF86VidModeClientNotLocal; - } -} - -void -VidModeAddExtension(Bool allow_non_local) -{ - ExtensionEntry *extEntry; - - DEBUG_P("VidModeAddExtension"); - - if (!dixRegisterPrivateKey(VidModeClientPrivateKey, PRIVATE_CLIENT, 0)) - return; - - if ((extEntry = AddExtension(XF86VIDMODENAME, - XF86VidModeNumberEvents, - XF86VidModeNumberErrors, - ProcVidModeDispatch, - SProcVidModeDispatch, - NULL, StandardMinorOpcode))) { - VidModeErrorBase = extEntry->errorBase; - VidModeAllowNonLocal = allow_non_local; - } -} - -VidModePtr VidModeGetPtr(ScreenPtr pScreen) -{ - return (VidModePtr) (dixLookupPrivate(&pScreen->devPrivates, VidModePrivateKey)); -} - -VidModePtr VidModeInit(ScreenPtr pScreen) -{ - if (!dixRegisterPrivateKey(VidModePrivateKey, PRIVATE_SCREEN, sizeof(VidModeRec))) - return NULL; - - return VidModeGetPtr(pScreen); -} - -#endif /* XF86VIDMODE */ diff --git a/dix/protocol.txt b/dix/protocol.txt index 189ad5d40..5acd61e3e 100644 --- a/dix/protocol.txt +++ b/dix/protocol.txt @@ -697,35 +697,6 @@ E004 XFree86-Misc:BadKbdType E005 XFree86-Misc:ModInDevDisabled E006 XFree86-Misc:ModInDevClientNotLocal E007 XFree86-Misc:NoModule -R000 XFree86-VidModeExtension:QueryVersion -R001 XFree86-VidModeExtension:GetModeLine -R002 XFree86-VidModeExtension:ModModeLine -R003 XFree86-VidModeExtension:SwitchMode -R004 XFree86-VidModeExtension:GetMonitor -R005 XFree86-VidModeExtension:LockModeSwitch -R006 XFree86-VidModeExtension:GetAllModeLines -R007 XFree86-VidModeExtension:AddModeLine -R008 XFree86-VidModeExtension:DeleteModeLine -R009 XFree86-VidModeExtension:ValidateModeLine -R010 XFree86-VidModeExtension:SwitchToMode -R011 XFree86-VidModeExtension:GetViewPort -R012 XFree86-VidModeExtension:SetViewPort -R013 XFree86-VidModeExtension:GetDotClocks -R014 XFree86-VidModeExtension:SetClientVersion -R015 XFree86-VidModeExtension:SetGamma -R016 XFree86-VidModeExtension:GetGamma -R017 XFree86-VidModeExtension:GetGammaRamp -R018 XFree86-VidModeExtension:SetGammaRamp -R019 XFree86-VidModeExtension:GetGammaRampSize -R020 XFree86-VidModeExtension:GetPermissions -V000 XFree86-VidModeExtension:Notify -E000 XFree86-VidModeExtension:BadClock -E001 XFree86-VidModeExtension:BadHTimings -E002 XFree86-VidModeExtension:BadVTimings -E003 XFree86-VidModeExtension:ModeUnsuitable -E004 XFree86-VidModeExtension:ExtensionDisabled -E005 XFree86-VidModeExtension:ClientNotLocal -E006 XFree86-VidModeExtension:ZoomLocked R000 XINERAMA:QueryVersion R001 XINERAMA:GetState R002 XINERAMA:GetScreenCount diff --git a/hw/xfree86/common/meson.build b/hw/xfree86/common/meson.build index 5cdb832e8..b7e8e4d77 100644 --- a/hw/xfree86/common/meson.build +++ b/hw/xfree86/common/meson.build @@ -11,7 +11,6 @@ srcs_xorg_common = [ 'xf86AutoConfig.c', 'xf86Option.c', 'xf86Init.c', - 'xf86VidMode.c', 'xf86fbman.c', 'xf86cmap.c', 'xf86Helper.c', diff --git a/hw/xfree86/common/xf86.h b/hw/xfree86/common/xf86.h index dae11fb9f..59e524352 100644 --- a/hw/xfree86/common/xf86.h +++ b/hw/xfree86/common/xf86.h @@ -282,10 +282,6 @@ xf86ServerIsResetting(void); extern _X_EXPORT Bool xf86ServerIsOnlyDetecting(void); extern _X_EXPORT Bool -xf86GetVidModeAllowNonLocal(void); -extern _X_EXPORT Bool -xf86GetVidModeEnabled(void); -extern _X_EXPORT Bool xf86GetModInDevAllowNonLocal(void); extern _X_EXPORT Bool xf86GetModInDevEnabled(void); diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c index ba5ab72d5..0218ee42d 100644 --- a/hw/xfree86/common/xf86Config.c +++ b/hw/xfree86/common/xf86Config.c @@ -811,13 +811,6 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts) * settings may be overridden later when the command line options are * checked. */ -#ifdef XF86VIDMODE - if (xf86GetOptValBool(FlagOptions, FLAG_DISABLEVIDMODE, &value)) - xf86Info.vidModeEnabled = !value; - if (xf86GetOptValBool(FlagOptions, FLAG_ALLOWNONLOCAL, &value)) - xf86Info.vidModeAllowNonLocal = value; -#endif - if (xf86GetOptValBool(FlagOptions, FLAG_ALLOWMOUSEOPENFAIL, &value)) xf86Info.allowMouseOpenFail = value; @@ -2464,13 +2457,6 @@ xf86HandleConfigFile(Bool autoconfig) * Handle some command line options that can override some of the * ServerFlags settings. */ -#ifdef XF86VIDMODE - if (xf86VidModeDisabled) - xf86Info.vidModeEnabled = FALSE; - if (xf86VidModeAllowNonLocal) - xf86Info.vidModeAllowNonLocal = TRUE; -#endif - if (xf86AllowMouseOpenFail) xf86Info.allowMouseOpenFail = TRUE; diff --git a/hw/xfree86/common/xf86Extensions.c b/hw/xfree86/common/xf86Extensions.c index 1e6ff7f65..61a50829d 100644 --- a/hw/xfree86/common/xf86Extensions.c +++ b/hw/xfree86/common/xf86Extensions.c @@ -46,11 +46,6 @@ #include #endif -#ifdef XF86VIDMODE -#include -#include "vidmodestr.h" -#endif - Bool noXFree86VidModeExtension = FALSE; Bool noXFree86DGAExtension = FALSE; Bool noXFree86DRIExtension = FALSE; @@ -60,13 +55,6 @@ Bool noDRI2Extension = FALSE; * DDX-specific extensions. */ static const ExtensionModule extensionModules[] = { -#ifdef XF86VIDMODE - { - XFree86VidModeExtensionInit, - XF86VIDMODENAME, - &noXFree86VidModeExtension - }, -#endif #ifdef XFreeXDGA { XFree86DGAExtensionInit, diff --git a/hw/xfree86/common/xf86Extensions.h b/hw/xfree86/common/xf86Extensions.h index cad86c881..721ff999b 100644 --- a/hw/xfree86/common/xf86Extensions.h +++ b/hw/xfree86/common/xf86Extensions.h @@ -39,12 +39,6 @@ extern _X_EXPORT Bool noDRI2Extension; extern void DRI2ExtensionInit(void); #endif -#ifdef XF86VIDMODE -#include -extern _X_EXPORT Bool noXFree86VidModeExtension; -extern void XFree86VidModeExtensionInit(void); -#endif - #ifdef XFreeXDGA #include extern _X_EXPORT Bool noXFree86DGAExtension; diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c index b48b7aada..a654f2ada 100644 --- a/hw/xfree86/common/xf86Globals.c +++ b/hw/xfree86/common/xf86Globals.c @@ -193,9 +193,4 @@ Gamma xf86Gamma = { 0.0, 0.0, 0.0 }; Bool xf86AllowMouseOpenFail = FALSE; Bool xf86AutoBindGPUDisabled = FALSE; - -#ifdef XF86VIDMODE -Bool xf86VidModeDisabled = FALSE; -Bool xf86VidModeAllowNonLocal = FALSE; -#endif Bool xorgHWAccess = FALSE; diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c index cb4a60f87..d4f7db9cb 100644 --- a/hw/xfree86/common/xf86Helper.c +++ b/hw/xfree86/common/xf86Helper.c @@ -1409,18 +1409,6 @@ xf86ServerIsOnlyDetecting(void) return xf86DoConfigure; } -Bool -xf86GetVidModeAllowNonLocal(void) -{ - return xf86Info.vidModeAllowNonLocal; -} - -Bool -xf86GetVidModeEnabled(void) -{ - return xf86Info.vidModeEnabled; -} - Bool xf86GetModInDevAllowNonLocal(void) { diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c index 2f85c7941..c69a25383 100644 --- a/hw/xfree86/common/xf86Init.c +++ b/hw/xfree86/common/xf86Init.c @@ -949,16 +949,6 @@ ddxProcessArgument(int argc, char **argv, int i) xf86FlipPixels = TRUE; return 1; } -#ifdef XF86VIDMODE - if (!strcmp(argv[i], "-disableVidMode")) { - xf86VidModeDisabled = TRUE; - return 1; - } - if (!strcmp(argv[i], "-allowNonLocalXvidtune")) { - xf86VidModeAllowNonLocal = TRUE; - return 1; - } -#endif if (!strcmp(argv[i], "-allowMouseOpenFail")) { xf86AllowMouseOpenFail = TRUE; return 1; @@ -1229,11 +1219,6 @@ ddxUseMsg(void) ("-pointer name specify the core pointer InputDevice name\n"); ErrorF("-nosilk disable Silken Mouse\n"); ErrorF("-flipPixels swap default black/white Pixel values\n"); -#ifdef XF86VIDMODE - ErrorF("-disableVidMode disable mode adjustments with xvidtune\n"); - ErrorF - ("-allowNonLocalXvidtune allow xvidtune to be run as a non-local client\n"); -#endif ErrorF ("-allowMouseOpenFail start server even if the mouse can't be initialized\n"); ErrorF("-ignoreABI make module ABI mismatches non-fatal\n"); diff --git a/hw/xfree86/common/xf86Priv.h b/hw/xfree86/common/xf86Priv.h index 4f3add769..709b4fa31 100644 --- a/hw/xfree86/common/xf86Priv.h +++ b/hw/xfree86/common/xf86Priv.h @@ -48,10 +48,6 @@ extern _X_EXPORT const char *xf86ConfigDir; extern _X_EXPORT Bool xf86AllowMouseOpenFail; extern _X_EXPORT Bool xf86AutoBindGPUDisabled; -#ifdef XF86VIDMODE -extern _X_EXPORT Bool xf86VidModeDisabled; -extern _X_EXPORT Bool xf86VidModeAllowNonLocal; -#endif extern _X_EXPORT Bool xf86fpFlag; extern _X_EXPORT Bool xf86sFlag; extern _X_EXPORT Bool xf86bsEnableFlag; diff --git a/hw/xfree86/common/xf86VidMode.c b/hw/xfree86/common/xf86VidMode.c deleted file mode 100644 index 7e12ea2cc..000000000 --- a/hw/xfree86/common/xf86VidMode.c +++ /dev/null @@ -1,463 +0,0 @@ -/* - * Copyright (c) 1999-2003 by The XFree86 Project, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of the copyright holder(s) - * and author(s) shall not be used in advertising or otherwise to promote - * the sale, use or other dealings in this Software without prior written - * authorization from the copyright holder(s) and author(s). - */ - -/* - * This file contains the VidMode functions required by the extension. - * These have been added to avoid the need for the higher level extension - * code to access the private XFree86 data structures directly. Wherever - * possible this code uses the functions in xf86Mode.c to do the work, - * so that two version of code that do similar things don't have to be - * maintained. - */ - -#ifdef HAVE_XORG_CONFIG_H -#include -#endif - -#include -#include "os.h" -#include "xf86.h" -#include "xf86Priv.h" -#include "extinit.h" - -#ifdef XF86VIDMODE -#include "vidmodestr.h" -#include "xf86Privstr.h" -#include "xf86Extensions.h" -#include "xf86cmap.h" - -static vidMonitorValue -xf86VidModeGetMonitorValue(ScreenPtr pScreen, int valtyp, int indx) -{ - vidMonitorValue ret = { NULL, }; - MonPtr monitor; - ScrnInfoPtr pScrn; - - pScrn = xf86ScreenToScrn(pScreen); - monitor = pScrn->monitor; - - switch (valtyp) { - case VIDMODE_MON_VENDOR: - ret.ptr = monitor->vendor; - break; - case VIDMODE_MON_MODEL: - ret.ptr = monitor->model; - break; - case VIDMODE_MON_NHSYNC: - ret.i = monitor->nHsync; - break; - case VIDMODE_MON_NVREFRESH: - ret.i = monitor->nVrefresh; - break; - case VIDMODE_MON_HSYNC_LO: - ret.f = (100.0 * monitor->hsync[indx].lo); - break; - case VIDMODE_MON_HSYNC_HI: - ret.f = (100.0 * monitor->hsync[indx].hi); - break; - case VIDMODE_MON_VREFRESH_LO: - ret.f = (100.0 * monitor->vrefresh[indx].lo); - break; - case VIDMODE_MON_VREFRESH_HI: - ret.f = (100.0 * monitor->vrefresh[indx].hi); - break; - } - return ret; -} - -static Bool -xf86VidModeGetCurrentModeline(ScreenPtr pScreen, DisplayModePtr *mode, int *dotClock) -{ - ScrnInfoPtr pScrn; - - pScrn = xf86ScreenToScrn(pScreen); - - if (pScrn->currentMode) { - *mode = pScrn->currentMode; - *dotClock = pScrn->currentMode->Clock; - - return TRUE; - } - return FALSE; -} - -static int -xf86VidModeGetDotClock(ScreenPtr pScreen, int Clock) -{ - ScrnInfoPtr pScrn; - - pScrn = xf86ScreenToScrn(pScreen); - if ((pScrn->progClock) || (Clock >= MAXCLOCKS)) - return Clock; - else - return pScrn->clock[Clock]; -} - -static int -xf86VidModeGetNumOfClocks(ScreenPtr pScreen, Bool *progClock) -{ - ScrnInfoPtr pScrn; - - pScrn = xf86ScreenToScrn(pScreen); - if (pScrn->progClock) { - *progClock = TRUE; - return 0; - } - else { - *progClock = FALSE; - return pScrn->numClocks; - } -} - -static Bool -xf86VidModeGetClocks(ScreenPtr pScreen, int *Clocks) -{ - ScrnInfoPtr pScrn; - int i; - - pScrn = xf86ScreenToScrn(pScreen); - - if (pScrn->progClock) - return FALSE; - - for (i = 0; i < pScrn->numClocks; i++) - *Clocks++ = pScrn->clock[i]; - - return TRUE; -} - -static Bool -xf86VidModeGetNextModeline(ScreenPtr pScreen, DisplayModePtr *mode, int *dotClock) -{ - VidModePtr pVidMode; - DisplayModePtr p; - - pVidMode = VidModeGetPtr(pScreen); - - for (p = pVidMode->Next; p != NULL && p != pVidMode->First; p = p->next) { - if (p->status == MODE_OK) { - pVidMode->Next = p->next; - *mode = p; - *dotClock = xf86VidModeGetDotClock(pScreen, p->Clock); - return TRUE; - } - } - - return FALSE; -} - -static Bool -xf86VidModeGetFirstModeline(ScreenPtr pScreen, DisplayModePtr *mode, int *dotClock) -{ - ScrnInfoPtr pScrn; - VidModePtr pVidMode; - - pScrn = xf86ScreenToScrn(pScreen); - if (pScrn->modes == NULL) - return FALSE; - - pVidMode = VidModeGetPtr(pScreen); - pVidMode->First = pScrn->modes; - pVidMode->Next = pVidMode->First->next; - - if (pVidMode->First->status == MODE_OK) { - *mode = pVidMode->First; - *dotClock = xf86VidModeGetDotClock(pScreen, pVidMode->First->Clock); - return TRUE; - } - - return xf86VidModeGetNextModeline(pScreen, mode, dotClock); -} - -static Bool -xf86VidModeDeleteModeline(ScreenPtr pScreen, DisplayModePtr mode) -{ - ScrnInfoPtr pScrn; - - if (mode == NULL) - return FALSE; - - pScrn = xf86ScreenToScrn(pScreen); - xf86DeleteMode(&(pScrn->modes), mode); - return TRUE; -} - -static Bool -xf86VidModeZoomViewport(ScreenPtr pScreen, int zoom) -{ - xf86ZoomViewport(pScreen, zoom); - return TRUE; -} - -static Bool -xf86VidModeSetViewPort(ScreenPtr pScreen, int x, int y) -{ - ScrnInfoPtr pScrn; - - pScrn = xf86ScreenToScrn(pScreen); - pScrn->frameX0 = min(max(x, 0), - pScrn->virtualX - pScrn->currentMode->HDisplay); - pScrn->frameX1 = pScrn->frameX0 + pScrn->currentMode->HDisplay - 1; - pScrn->frameY0 = min(max(y, 0), - pScrn->virtualY - pScrn->currentMode->VDisplay); - pScrn->frameY1 = pScrn->frameY0 + pScrn->currentMode->VDisplay - 1; - if (pScrn->AdjustFrame != NULL) - (pScrn->AdjustFrame) (pScrn, pScrn->frameX0, pScrn->frameY0); - - return TRUE; -} - -static Bool -xf86VidModeGetViewPort(ScreenPtr pScreen, int *x, int *y) -{ - ScrnInfoPtr pScrn; - - pScrn = xf86ScreenToScrn(pScreen); - *x = pScrn->frameX0; - *y = pScrn->frameY0; - return TRUE; -} - -static Bool -xf86VidModeSwitchMode(ScreenPtr pScreen, DisplayModePtr mode) -{ - ScrnInfoPtr pScrn; - DisplayModePtr pTmpMode; - Bool retval; - - pScrn = xf86ScreenToScrn(pScreen); - /* save in case we fail */ - pTmpMode = pScrn->currentMode; - /* Force a mode switch */ - pScrn->currentMode = NULL; - retval = xf86SwitchMode(pScrn->pScreen, mode); - /* we failed: restore it */ - if (retval == FALSE) - pScrn->currentMode = pTmpMode; - return retval; -} - -static Bool -xf86VidModeLockZoom(ScreenPtr pScreen, Bool lock) -{ - if (xf86Info.dontZoom) - return FALSE; - - xf86LockZoom(pScreen, lock); - return TRUE; -} - -static ModeStatus -xf86VidModeCheckModeForMonitor(ScreenPtr pScreen, DisplayModePtr mode) -{ - ScrnInfoPtr pScrn; - - if (mode == NULL) - return MODE_ERROR; - - pScrn = xf86ScreenToScrn(pScreen); - - return xf86CheckModeForMonitor(mode, pScrn->monitor); -} - -static ModeStatus -xf86VidModeCheckModeForDriver(ScreenPtr pScreen, DisplayModePtr mode) -{ - ScrnInfoPtr pScrn; - - if (mode == NULL) - return MODE_ERROR; - - pScrn = xf86ScreenToScrn(pScreen); - - return xf86CheckModeForDriver(pScrn, mode, 0); -} - -static void -xf86VidModeSetCrtcForMode(ScreenPtr pScreen, DisplayModePtr mode) -{ - ScrnInfoPtr pScrn; - DisplayModePtr ScreenModes; - - if (mode == NULL) - return; - - /* Ugly hack so that the xf86Mode.c function can be used without change */ - pScrn = xf86ScreenToScrn(pScreen); - ScreenModes = pScrn->modes; - pScrn->modes = mode; - - xf86SetCrtcForModes(pScrn, pScrn->adjustFlags); - pScrn->modes = ScreenModes; - return; -} - -static Bool -xf86VidModeAddModeline(ScreenPtr pScreen, DisplayModePtr mode) -{ - ScrnInfoPtr pScrn; - - if (mode == NULL) - return FALSE; - - pScrn = xf86ScreenToScrn(pScreen); - - mode->name = strdup(""); /* freed by deletemode */ - mode->status = MODE_OK; - mode->next = pScrn->modes->next; - mode->prev = pScrn->modes; - pScrn->modes->next = mode; - if (mode->next != NULL) - mode->next->prev = mode; - - return TRUE; -} - -static int -xf86VidModeGetNumOfModes(ScreenPtr pScreen) -{ - DisplayModePtr mode = NULL; - int dotClock = 0, nummodes = 0; - - if (!xf86VidModeGetFirstModeline(pScreen, &mode, &dotClock)) - return nummodes; - - do { - nummodes++; - if (!xf86VidModeGetNextModeline(pScreen, &mode, &dotClock)) - return nummodes; - } while (TRUE); -} - -static Bool -xf86VidModeSetGamma(ScreenPtr pScreen, float red, float green, float blue) -{ - Gamma gamma; - - gamma.red = red; - gamma.green = green; - gamma.blue = blue; - if (xf86ChangeGamma(pScreen, gamma) != Success) - return FALSE; - else - return TRUE; -} - -static Bool -xf86VidModeGetGamma(ScreenPtr pScreen, float *red, float *green, float *blue) -{ - ScrnInfoPtr pScrn; - - pScrn = xf86ScreenToScrn(pScreen); - *red = pScrn->gamma.red; - *green = pScrn->gamma.green; - *blue = pScrn->gamma.blue; - return TRUE; -} - -static Bool -xf86VidModeSetGammaRamp(ScreenPtr pScreen, int size, CARD16 *r, CARD16 *g, CARD16 *b) -{ - xf86ChangeGammaRamp(pScreen, size, r, g, b); - return TRUE; -} - -static Bool -xf86VidModeGetGammaRamp(ScreenPtr pScreen, int size, CARD16 *r, CARD16 *g, CARD16 *b) -{ - xf86GetGammaRamp(pScreen, size, r, g, b); - return TRUE; -} - -static Bool -xf86VidModeInit(ScreenPtr pScreen) -{ - VidModePtr pVidMode; - - if (!xf86GetVidModeEnabled()) { - DebugF("!xf86GetVidModeEnabled()\n"); - return FALSE; - } - - pVidMode = VidModeInit(pScreen); - if (!pVidMode) - return FALSE; - - pVidMode->Flags = 0; - pVidMode->Next = NULL; - - pVidMode->GetMonitorValue = xf86VidModeGetMonitorValue; - pVidMode->GetCurrentModeline = xf86VidModeGetCurrentModeline; - pVidMode->GetFirstModeline = xf86VidModeGetFirstModeline; - pVidMode->GetNextModeline = xf86VidModeGetNextModeline; - pVidMode->DeleteModeline = xf86VidModeDeleteModeline; - pVidMode->ZoomViewport = xf86VidModeZoomViewport; - pVidMode->GetViewPort = xf86VidModeGetViewPort; - pVidMode->SetViewPort = xf86VidModeSetViewPort; - pVidMode->SwitchMode = xf86VidModeSwitchMode; - pVidMode->LockZoom = xf86VidModeLockZoom; - pVidMode->GetNumOfClocks = xf86VidModeGetNumOfClocks; - pVidMode->GetClocks = xf86VidModeGetClocks; - pVidMode->CheckModeForMonitor = xf86VidModeCheckModeForMonitor; - pVidMode->CheckModeForDriver = xf86VidModeCheckModeForDriver; - pVidMode->SetCrtcForMode = xf86VidModeSetCrtcForMode; - pVidMode->AddModeline = xf86VidModeAddModeline; - pVidMode->GetDotClock = xf86VidModeGetDotClock; - pVidMode->GetNumOfModes = xf86VidModeGetNumOfModes; - pVidMode->SetGamma = xf86VidModeSetGamma; - pVidMode->GetGamma = xf86VidModeGetGamma; - pVidMode->SetGammaRamp = xf86VidModeSetGammaRamp; - pVidMode->GetGammaRamp = xf86VidModeGetGammaRamp; - pVidMode->GetGammaRampSize = xf86GetGammaRampSize; /* use xf86cmap API directly */ - - return TRUE; -} - -void -XFree86VidModeExtensionInit(void) -{ - int i; - Bool enabled = FALSE; - - DebugF("XFree86VidModeExtensionInit"); - - /* This means that the DDX doesn't want the vidmode extension enabled */ - if (!xf86GetVidModeEnabled()) - return; - - for (i = 0; i < screenInfo.numScreens; i++) { - if (xf86VidModeInit (screenInfo.screens[i])) - enabled = TRUE; - } - /* This means that the DDX doesn't want the vidmode extension enabled */ - if (!enabled) - return; - - VidModeAddExtension(xf86GetVidModeAllowNonLocal()); -} - -#endif /* XF86VIDMODE */ diff --git a/hw/xfree86/man/Xorg.man b/hw/xfree86/man/Xorg.man index 2084653f8..8786d198e 100644 --- a/hw/xfree86/man/Xorg.man +++ b/hw/xfree86/man/Xorg.man @@ -94,14 +94,6 @@ or initialised. This is equivalent to the .B AllowMouseOpenFail xorg.conf(@filemansuffix@) file option. .TP 8 -.B \-allowNonLocalXvidtune -Make the VidMode extension available to remote clients. This allows -the xvidtune client to connect from another host. This is equivalent -to the -.B AllowNonLocalXvidtune -xorg.conf(@filemansuffix@) file option. By default non-local -connections are not allowed. -.TP 8 .BI \-bgamma " value" Set the blue gamma correction. .I value diff --git a/hw/xfree86/meson.build b/hw/xfree86/meson.build index c4db85cdb..a9b833895 100644 --- a/hw/xfree86/meson.build +++ b/hw/xfree86/meson.build @@ -62,7 +62,6 @@ xorg_link = [ xorg_parser, xorg_ramdac, libxserver_fb, - libxserver_xext_vidmode, libxserver_main, libxserver_config, ] diff --git a/hw/xwayland/meson.build b/hw/xwayland/meson.build index 9616aae01..24479251f 100644 --- a/hw/xwayland/meson.build +++ b/hw/xwayland/meson.build @@ -20,8 +20,6 @@ srcs = [ 'xwayland-output.h', 'xwayland-cvt.c', 'xwayland-cvt.h', - 'xwayland-vidmode.c', - 'xwayland-vidmode.h', 'xwayland-window.c', 'xwayland-window.h', 'xwayland-window-buffers.c', @@ -150,7 +148,6 @@ xwayland_server = executable( xwayland_glamor, libxserver_fb, libxserver, - libxserver_xext_vidmode, libxserver_xkb_stubs, libxserver_xi_stubs, libxserver_glx, diff --git a/hw/xwayland/xwayland-vidmode.c b/hw/xwayland/xwayland-vidmode.c deleted file mode 100644 index a4ca0eaf1..000000000 --- a/hw/xwayland/xwayland-vidmode.c +++ /dev/null @@ -1,508 +0,0 @@ -/* - * Copyright (c) 1999-2003 by The XFree86 Project, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of the copyright holder(s) - * and author(s) shall not be used in advertising or otherwise to promote - * the sale, use or other dealings in this Software without prior written - * authorization from the copyright holder(s) and author(s). - */ - -#include - -#include - -#include "dix/dix_priv.h" - -#include "misc.h" -#include "os.h" -#include "extinit.h" - -#ifdef XF86VIDMODE - -#include "randrstr.h" -#include "vidmodestr.h" - -#include "xwayland-screen.h" -#include "xwayland-vidmode.h" - -static DevPrivateKeyRec xwlVidModePrivateKeyRec; -#define xwlVidModePrivateKey (&xwlVidModePrivateKeyRec) - -/* Taken from xrandr, h sync frequency in KHz */ -static double -mode_hsync(const xRRModeInfo *mode_info) -{ - double rate; - - if (mode_info->hTotal) - rate = (double) mode_info->dotClock / (double) mode_info->hTotal; - else - rate = 0.0; - - return rate / 1000.0; -} - -/* Taken from xrandr, v refresh frequency in Hz */ -static double -mode_refresh(const xRRModeInfo *mode_info) -{ - double rate; - double vTotal = mode_info->vTotal; - - if (mode_info->modeFlags & RR_DoubleScan) - vTotal *= 2.0; - - if (mode_info->modeFlags & RR_Interlace) - vTotal /= 2.0; - - if (mode_info->hTotal > 0.0 && vTotal > 0.0) - rate = ((double) mode_info->dotClock / - ((double) mode_info->hTotal * (double) vTotal)); - else - rate = 0.0; - - return rate; -} - -static void -xwlRRModeToDisplayMode(RRModePtr rrmode, DisplayModePtr mode) -{ - const xRRModeInfo *mode_info = &rrmode->mode; - - mode->next = mode; - mode->prev = mode; - mode->name = ""; - mode->VScan = 1; - mode->Private = NULL; - mode->HDisplay = mode_info->width; - mode->HSyncStart = mode_info->hSyncStart; - mode->HSyncEnd = mode_info->hSyncEnd; - mode->HTotal = mode_info->hTotal; - mode->HSkew = mode_info->hSkew; - mode->VDisplay = mode_info->height; - mode->VSyncStart = mode_info->vSyncStart; - mode->VSyncEnd = mode_info->vSyncEnd; - mode->VTotal = mode_info->vTotal; - mode->Flags = mode_info->modeFlags; - mode->Clock = mode_info->dotClock / 1000.0; - mode->VRefresh = mode_refresh(mode_info); /* Or RRVerticalRefresh() */ - mode->HSync = mode_hsync(mode_info); -} - -static RRModePtr -xwlVidModeGetRRMode(ScreenPtr pScreen, int32_t width, int32_t height) -{ - struct xwl_screen *xwl_screen = xwl_screen_get(pScreen); - struct xwl_output *xwl_output; - - xwl_output = xwl_screen_get_fixed_or_first_output(xwl_screen); - if (!xwl_output) - return NULL; - - return xwl_output_find_mode(xwl_output, width, height); -} - -static RRModePtr -xwlVidModeGetCurrentRRMode(ScreenPtr pScreen) -{ - struct xwl_screen *xwl_screen = xwl_screen_get(pScreen); - struct xwl_emulated_mode *emulated_mode; - struct xwl_output *xwl_output; - - xwl_output = xwl_screen_get_fixed_or_first_output(xwl_screen); - if (!xwl_output) - return NULL; - - emulated_mode = - xwl_output_get_emulated_mode_for_client(xwl_output, GetCurrentClient()); - - if (emulated_mode) { - return xwl_output_find_mode(xwl_output, - emulated_mode->width, - emulated_mode->height); - } else { - return xwl_output_find_mode(xwl_output, -1, -1); - } -} - -static Bool -xwlVidModeGetCurrentModeline(ScreenPtr pScreen, DisplayModePtr *mode, int *dotClock) -{ - DisplayModePtr pMod; - RRModePtr rrmode; - - pMod = dixLookupPrivate(&pScreen->devPrivates, xwlVidModePrivateKey); - if (pMod == NULL) - return FALSE; - - rrmode = xwlVidModeGetCurrentRRMode(pScreen); - if (rrmode == NULL) - return FALSE; - - xwlRRModeToDisplayMode(rrmode, pMod); - - *mode = pMod; - if (dotClock != NULL) - *dotClock = pMod->Clock; - - return TRUE; -} - -static vidMonitorValue -xwlVidModeGetMonitorValue(ScreenPtr pScreen, int valtyp, int indx) -{ - vidMonitorValue ret = { NULL, }; - RRModePtr rrmode; - - rrmode = xwlVidModeGetCurrentRRMode(pScreen); - if (rrmode == NULL) - return ret; - - switch (valtyp) { - case VIDMODE_MON_VENDOR: - ret.ptr = XVENDORNAME; - break; - case VIDMODE_MON_MODEL: - ret.ptr = "XWAYLAND"; - break; - case VIDMODE_MON_NHSYNC: - ret.i = 1; - break; - case VIDMODE_MON_NVREFRESH: - ret.i = 1; - break; - case VIDMODE_MON_HSYNC_LO: - case VIDMODE_MON_HSYNC_HI: - ret.f = mode_hsync(&rrmode->mode) * 100.0; - break; - case VIDMODE_MON_VREFRESH_LO: - case VIDMODE_MON_VREFRESH_HI: - ret.f = mode_refresh(&rrmode->mode) * 100.0; - break; - } - return ret; -} - -static int -xwlVidModeGetDotClock(ScreenPtr pScreen, int Clock) -{ - return Clock; -} - -static int -xwlVidModeGetNumOfClocks(ScreenPtr pScreen, Bool *progClock) -{ - /* We emulate a programmable clock, rather then a fixed set of clocks */ - *progClock = TRUE; - return 0; -} - -static Bool -xwlVidModeGetClocks(ScreenPtr pScreen, int *Clocks) -{ - return FALSE; /* Programmable clock, no clock list */ -} - -/* GetFirstModeline and GetNextModeline are used from Xext/vidmode.c like this: - * if (pVidMode->GetFirstModeline(pScreen, &mode, &dotClock)) { - * do { - * ... - * if (...) - * break; - * } while (pVidMode->GetNextModeline(pScreen, &mode, &dotClock)); - * } - * IOW our caller basically always loops over all the modes. There never is a - * return to the mainloop between GetFirstModeline and NextModeline calls where - * other parts of the server may change our state so we do not need to worry - * about xwl_output->randr_output->modes changing underneath us. - * Thus we can simply implement these two callbacks by storing the enumeration - * index in pVidMode->Next. - */ - -static Bool -xwlVidModeGetNextModeline(ScreenPtr pScreen, DisplayModePtr *mode, int *dotClock) -{ - struct xwl_screen *xwl_screen = xwl_screen_get(pScreen); - struct xwl_output *xwl_output; - VidModePtr pVidMode; - DisplayModePtr pMod; - intptr_t index; - - xwl_output = xwl_screen_get_fixed_or_first_output(xwl_screen); - if (xwl_output == NULL) - return FALSE; - - pMod = dixLookupPrivate(&pScreen->devPrivates, xwlVidModePrivateKey); - pVidMode = VidModeGetPtr(pScreen); - if (pMod == NULL || pVidMode == NULL) - return FALSE; - - index = (intptr_t)pVidMode->Next; - if (index >= xwl_output->randr_output->numModes) - return FALSE; - xwlRRModeToDisplayMode(xwl_output->randr_output->modes[index], pMod); - index++; - pVidMode->Next = (void *)index; - - *mode = pMod; - if (dotClock != NULL) - *dotClock = pMod->Clock; - - return TRUE; -} - -static Bool -xwlVidModeGetFirstModeline(ScreenPtr pScreen, DisplayModePtr *mode, int *dotClock) -{ - VidModePtr pVidMode; - intptr_t index = 0; - - pVidMode = VidModeGetPtr(pScreen); - if (pVidMode == NULL) - return FALSE; - - pVidMode->Next = (void *)index; /* 0 */ - return xwlVidModeGetNextModeline(pScreen, mode, dotClock); -} - -static Bool -xwlVidModeDeleteModeline(ScreenPtr pScreen, DisplayModePtr mode) -{ - /* Unsupported */ - return FALSE; -} - -static Bool -xwlVidModeZoomViewport(ScreenPtr pScreen, int zoom) -{ - /* Support only no zoom */ - return (zoom == 1); -} - -static Bool -xwlVidModeSetViewPort(ScreenPtr pScreen, int x, int y) -{ - struct xwl_screen *xwl_screen = xwl_screen_get(pScreen); - struct xwl_output *xwl_output; - - xwl_output = xwl_screen_get_fixed_or_first_output(xwl_screen); - if (xwl_output == NULL) - return FALSE; - - /* Support only default viewport */ - return (x == xwl_output->x && y == xwl_output->y); -} - -static Bool -xwlVidModeGetViewPort(ScreenPtr pScreen, int *x, int *y) -{ - struct xwl_screen *xwl_screen = xwl_screen_get(pScreen); - struct xwl_output *xwl_output; - - xwl_output = xwl_screen_get_fixed_or_first_output(xwl_screen); - if (xwl_output == NULL) - return FALSE; - - *x = xwl_output->x; - *y = xwl_output->y; - - return TRUE; -} - -static Bool -xwlVidModeSwitchMode(ScreenPtr pScreen, DisplayModePtr mode) -{ - struct xwl_screen *xwl_screen = xwl_screen_get(pScreen); - struct xwl_output *xwl_output; - RRModePtr rrmode; - - xwl_output = xwl_screen_get_fixed_or_first_output(xwl_screen); - if (xwl_output == NULL) - return FALSE; - - rrmode = xwl_output_find_mode(xwl_output, mode->HDisplay, mode->VDisplay); - if (rrmode == NULL) - return FALSE; - - if (xwl_screen->rootless) - xwl_output_set_emulated_mode(xwl_output, GetCurrentClient(), rrmode, TRUE); - else if (xwl_screen->fixed_output) - xwl_output_set_mode_fixed(xwl_screen->fixed_output, rrmode); - - return TRUE; -} - -static Bool -xwlVidModeLockZoom(ScreenPtr pScreen, Bool lock) -{ - /* Unsupported for now, but pretend it works */ - return TRUE; -} - -static ModeStatus -xwlVidModeCheckModeForMonitor(ScreenPtr pScreen, DisplayModePtr mode) -{ - RRModePtr rrmode; - - rrmode = xwlVidModeGetRRMode(pScreen, mode->HDisplay, mode->VDisplay); - if (rrmode == NULL) - return MODE_ERROR; - - /* Only support mode with the same HSync/VRefresh as we advertise */ - if (mode->HSync == mode_hsync(&rrmode->mode) && - mode->VRefresh == mode_refresh(&rrmode->mode)) - return MODE_OK; - - /* All the rest is unsupported - If we want to succeed, return MODE_OK instead */ - return MODE_ONE_SIZE; -} - -static ModeStatus -xwlVidModeCheckModeForDriver(ScreenPtr pScreen, DisplayModePtr mode) -{ - RRModePtr rrmode; - - rrmode = xwlVidModeGetRRMode(pScreen, mode->HDisplay, mode->VDisplay); - return rrmode ? MODE_OK : MODE_ERROR; -} - -static void -xwlVidModeSetCrtcForMode(ScreenPtr pScreen, DisplayModePtr mode) -{ - /* Unsupported */ - return; -} - -static Bool -xwlVidModeAddModeline(ScreenPtr pScreen, DisplayModePtr mode) -{ - /* Unsupported */ - return FALSE; -} - -static int -xwlVidModeGetNumOfModes(ScreenPtr pScreen) -{ - struct xwl_screen *xwl_screen = xwl_screen_get(pScreen); - struct xwl_output *xwl_output; - - xwl_output = xwl_screen_get_fixed_or_first_output(xwl_screen); - - return xwl_output ? xwl_output->randr_output->numModes : 0; -} - -static Bool -xwlVidModeSetGamma(ScreenPtr pScreen, float red, float green, float blue) -{ - /* Unsupported for now, but pretend it works */ - return TRUE; -} - -static Bool -xwlVidModeGetGamma(ScreenPtr pScreen, float *red, float *green, float *blue) -{ - /* Unsupported for now, but pretend it works */ - *red = *green = *blue = 1.0f; - return TRUE; -} - -static Bool -xwlVidModeSetGammaRamp(ScreenPtr pScreen, int size, CARD16 *r, CARD16 *g, CARD16 *b) -{ - /* Unsupported for now */ - return FALSE; -} - -static Bool -xwlVidModeGetGammaRamp(ScreenPtr pScreen, int size, CARD16 *r, CARD16 *g, CARD16 *b) -{ - /* Unsupported for now */ - return FALSE; -} - -static int -xwlVidModeGetGammaRampSize(ScreenPtr pScreen) -{ - /* Unsupported for now */ - return 0; -} - -static Bool -xwlVidModeInit(ScreenPtr pScreen) -{ - VidModePtr pVidMode = NULL; - - pVidMode = VidModeInit(pScreen); - if (!pVidMode) - return FALSE; - - pVidMode->Flags = 0; - pVidMode->Next = NULL; - - pVidMode->GetMonitorValue = xwlVidModeGetMonitorValue; - pVidMode->GetCurrentModeline = xwlVidModeGetCurrentModeline; - pVidMode->GetFirstModeline = xwlVidModeGetFirstModeline; - pVidMode->GetNextModeline = xwlVidModeGetNextModeline; - pVidMode->DeleteModeline = xwlVidModeDeleteModeline; - pVidMode->ZoomViewport = xwlVidModeZoomViewport; - pVidMode->GetViewPort = xwlVidModeGetViewPort; - pVidMode->SetViewPort = xwlVidModeSetViewPort; - pVidMode->SwitchMode = xwlVidModeSwitchMode; - pVidMode->LockZoom = xwlVidModeLockZoom; - pVidMode->GetNumOfClocks = xwlVidModeGetNumOfClocks; - pVidMode->GetClocks = xwlVidModeGetClocks; - pVidMode->CheckModeForMonitor = xwlVidModeCheckModeForMonitor; - pVidMode->CheckModeForDriver = xwlVidModeCheckModeForDriver; - pVidMode->SetCrtcForMode = xwlVidModeSetCrtcForMode; - pVidMode->AddModeline = xwlVidModeAddModeline; - pVidMode->GetDotClock = xwlVidModeGetDotClock; - pVidMode->GetNumOfModes = xwlVidModeGetNumOfModes; - pVidMode->SetGamma = xwlVidModeSetGamma; - pVidMode->GetGamma = xwlVidModeGetGamma; - pVidMode->SetGammaRamp = xwlVidModeSetGammaRamp; - pVidMode->GetGammaRamp = xwlVidModeGetGammaRamp; - pVidMode->GetGammaRampSize = xwlVidModeGetGammaRampSize; - - return TRUE; -} - -void -xwlVidModeExtensionInit(void) -{ - int i; - Bool enabled = FALSE; - - for (i = 0; i < screenInfo.numScreens; i++) { - if (xwlVidModeInit (screenInfo.screens[i])) - enabled = TRUE; - } - /* This means that the DDX doesn't want the vidmode extension enabled */ - if (!enabled) - return; - - if (!dixRegisterPrivateKey(xwlVidModePrivateKey, PRIVATE_SCREEN, - sizeof(DisplayModeRec))) - return; - - VidModeAddExtension(FALSE); -} - -#endif /* XF86VIDMODE */ diff --git a/hw/xwayland/xwayland-vidmode.h b/hw/xwayland/xwayland-vidmode.h deleted file mode 100644 index 4e3236eb1..000000000 --- a/hw/xwayland/xwayland-vidmode.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 1999-2003 by The XFree86 Project, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of the copyright holder(s) - * and author(s) shall not be used in advertising or otherwise to promote - * the sale, use or other dealings in this Software without prior written - * authorization from the copyright holder(s) and author(s). - */ - -#ifndef XWAYLAND_VIDMODE_H -#define XWAYLAND_VIDMODE_H - -#include - -#ifdef XF86VIDMODE -void xwlVidModeExtensionInit(void); -#endif - -#endif /* XWAYLAND_VIDMODE_H */ diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c index 6540ba8cb..25dda3f0c 100644 --- a/hw/xwayland/xwayland.c +++ b/hw/xwayland/xwayland.c @@ -59,12 +59,6 @@ #include "os/auth.h" #include "xwayland-screen.h" -#include "xwayland-vidmode.h" - -#ifdef XF86VIDMODE -#include -Bool noXFree86VidModeExtension; -#endif void ddxGiveUp(enum ExitCode error) @@ -424,9 +418,6 @@ xwlExtensionInit(void) #endif static const ExtensionModule xwayland_extensions[] = { -#ifdef XF86VIDMODE - { xwlVidModeExtensionInit, XF86VIDMODENAME, &noXFree86VidModeExtension }, -#endif #ifdef XWL_HAS_XWAYLAND_EXTENSION { xwlExtensionInit, XWAYLAND_EXTENSION_NAME, &noXwaylandExtension }, #endif diff --git a/include/meson.build b/include/meson.build index c9c137634..e17847bf0 100644 --- a/include/meson.build +++ b/include/meson.build @@ -232,7 +232,6 @@ conf_data.set('XCSECURITY', build_xsecurity ? '1' : false) conf_data.set('XDMCP', xdmcp_dep.found() ? '1' : false) conf_data.set('XF86BIGFONT', build_xf86bigfont ? '1' : false) conf_data.set('XF86DRI', build_dri1 ? '1' : false) -conf_data.set('XF86VIDMODE', 1) conf_data.set('XFIXES', '1') conf_data.set('XFreeXDGA', build_dga ? '1' : false) conf_data.set('XINERAMA', build_xinerama ? '1' : false) diff --git a/include/protocol-versions.h b/include/protocol-versions.h index 7c52473cc..f86f35fb0 100644 --- a/include/protocol-versions.h +++ b/include/protocol-versions.h @@ -137,10 +137,6 @@ #define SERVER_XF86DRI_MINOR_VERSION 1 #define SERVER_XF86DRI_PATCH_VERSION 20040604 -/* Vidmode */ -#define SERVER_XF86VIDMODE_MAJOR_VERSION 2 -#define SERVER_XF86VIDMODE_MINOR_VERSION 2 - /* Fixes */ #define SERVER_XFIXES_MAJOR_VERSION 6 #define SERVER_XFIXES_MINOR_VERSION 0 diff --git a/include/vidmodestr.h b/include/vidmodestr.h index b47daa779..e5adfd2d6 100644 --- a/include/vidmodestr.h +++ b/include/vidmodestr.h @@ -133,10 +133,4 @@ typedef struct { VidModeGetGammaRampSizeProcPtr GetGammaRampSize; } VidModeRec, *VidModePtr; -#ifdef XF86VIDMODE -void VidModeAddExtension(Bool allow_non_local); -VidModePtr VidModeGetPtr(ScreenPtr pScreen); -VidModePtr VidModeInit(ScreenPtr pScreen); -#endif /* XF86VIDMODE */ - #endif diff --git a/include/xorg-server.h.meson.in b/include/xorg-server.h.meson.in index d0572c9d4..a3ddb92c7 100644 --- a/include/xorg-server.h.meson.in +++ b/include/xorg-server.h.meson.in @@ -105,9 +105,6 @@ /* Build XFree86 BigFont extension */ #mesondefine XF86BIGFONT -/* Support XFree86 Video Mode extension */ -#mesondefine XF86VIDMODE - /* Build XDGA support */ #mesondefine XFreeXDGA diff --git a/meson.build b/meson.build index 67abb482d..db85005a6 100644 --- a/meson.build +++ b/meson.build @@ -97,7 +97,6 @@ dri2proto_dep = dependency('dri2proto', version: '>= 2.8', fallback: ['xorgproto dri3proto_dep = dependency('dri3proto', version: '>= 1.4', fallback: ['xorgproto', 'ext_xorgproto'], required: get_option('dri3') == 'true') xineramaproto_dep = dependency('xineramaproto', fallback: ['xorgproto', 'ext_xorgproto']) xf86bigfontproto_dep = dependency('xf86bigfontproto', version: '>= 1.2.0', fallback: ['xorgproto', 'ext_xorgproto'], required: get_option('xf86bigfont')) -xf86vidmodeproto_dep = dependency('xf86vidmodeproto', version: '>= 2.2.99.1', fallback: ['xorgproto', 'ext_xorgproto']) applewmproto_dep = dependency('applewmproto', version: '>= 1.4', fallback: ['xorgproto', 'ext_xorgproto'], required: false) xshmfence_dep = dependency('xshmfence', version: xshmfence_req, required: false) xwaylandproto_dep = dependency('xwaylandproto', version: '>= 1.0', fallback: ['xorgproto', 'ext_xorgproto'], required: false) @@ -642,7 +641,6 @@ common_dep = [ xineramaproto_dep, xf86bigfontproto_dep, xf86dgaproto_dep, - xf86vidmodeproto_dep, applewmproto_dep, dpmsproto_dep,