diff --git a/GL/glx/glxcmdsswap.c b/GL/glx/glxcmdsswap.c index d59dfdb4c..1857bc1eb 100644 --- a/GL/glx/glxcmdsswap.c +++ b/GL/glx/glxcmdsswap.c @@ -496,11 +496,11 @@ int __glXDispSwap_CopySubBufferMESA(__GLXclientState *cl, GLbyte *pc) GLXDrawable *drawId; int *buffer; + __GLX_DECLARE_SWAP_VARIABLES; + (void) drawId; (void) buffer; - __GLX_DECLARE_SWAP_VARIABLES; - pc += __GLX_VENDPRIV_HDR_SIZE; __GLX_SWAP_SHORT(&req->length); diff --git a/Xext/shm.c b/Xext/shm.c index 7cfaa6808..ac587bef7 100644 --- a/Xext/shm.c +++ b/Xext/shm.c @@ -119,9 +119,7 @@ static int pixmapFormat; static int shmPixFormat[MAXSCREENS]; static ShmFuncsPtr shmFuncs[MAXSCREENS]; static DestroyPixmapProcPtr destroyPixmap[MAXSCREENS]; -#ifdef PIXPRIV static int shmPixmapPrivate; -#endif static ShmFuncs miFuncs = {NULL, miShmPutImage}; static ShmFuncs fbFuncs = {fbShmCreatePixmap, fbShmPutImage}; @@ -237,7 +235,6 @@ ShmExtensionInit(INITARGS) destroyPixmap[i] = screenInfo.screens[i]->DestroyPixmap; screenInfo.screens[i]->DestroyPixmap = ShmDestroyPixmap; } -#ifdef PIXPRIV shmPixmapPrivate = AllocatePixmapPrivateIndex(); for (i = 0; i < screenInfo.numScreens; i++) { @@ -245,7 +242,6 @@ ShmExtensionInit(INITARGS) shmPixmapPrivate, 0)) return; } -#endif } } ShmSegType = CreateNewResourceType(ShmDetachSegment); @@ -299,22 +295,7 @@ ShmDestroyPixmap (PixmapPtr pPixmap) if (pPixmap->refcnt == 1) { ShmDescPtr shmdesc; -#ifdef PIXPRIV shmdesc = (ShmDescPtr) pPixmap->devPrivates[shmPixmapPrivate].ptr; -#else - char *base = (char *) pPixmap->devPrivate.ptr; - - if (base != (pointer) (pPixmap + 1)) - { - for (shmdesc = Shmsegs; shmdesc; shmdesc = shmdesc->next) - { - if (shmdesc->addr <= base && base <= shmdesc->addr + shmdesc->size) - break; - } - } - else - shmdesc = 0; -#endif if (shmdesc) ShmDetachSegment ((pointer) shmdesc, pPixmap->drawable.id); } @@ -781,9 +762,7 @@ CreatePmap: shmdesc->addr + stuff->offset); if (pMap) { -#ifdef PIXPRIV pMap->devPrivates[shmPixmapPrivate].ptr = (pointer) shmdesc; -#endif shmdesc->refcnt++; pMap->drawable.serialNumber = NEXT_SERIAL_NUMBER; pMap->drawable.id = newPix->info[j].id; @@ -1097,9 +1076,7 @@ CreatePmap: shmdesc->addr + stuff->offset); if (pMap) { -#ifdef PIXPRIV pMap->devPrivates[shmPixmapPrivate].ptr = (pointer) shmdesc; -#endif shmdesc->refcnt++; pMap->drawable.serialNumber = NEXT_SERIAL_NUMBER; pMap->drawable.id = stuff->pid; diff --git a/afb/afbpixmap.c b/afb/afbpixmap.c index 6801960c6..6a3a48518 100644 --- a/afb/afbpixmap.c +++ b/afb/afbpixmap.c @@ -102,12 +102,8 @@ afbCreatePixmap(pScreen, width, height, depth) pPixmap->drawable.height = height; pPixmap->devKind = paddedWidth; pPixmap->refcnt = 1; -#ifdef PIXPRIV pPixmap->devPrivate.ptr = datasize ? (pointer)((char *)pPixmap + pScreen->totalPixmapSize) : NULL; -#else - pPixmap->devPrivate.ptr = (pointer)(pPixmap + 1); -#endif return(pPixmap); } diff --git a/cfb/cfbpixmap.c b/cfb/cfbpixmap.c index d51c5187c..6fdf3eae6 100644 --- a/cfb/cfbpixmap.c +++ b/cfb/cfbpixmap.c @@ -96,12 +96,8 @@ cfbCreatePixmap (pScreen, width, height, depth) pPixmap->drawable.height = height; pPixmap->devKind = paddedWidth; pPixmap->refcnt = 1; -#ifdef PIXPRIV pPixmap->devPrivate.ptr = datasize ? (pointer)((char *)pPixmap + pScreen->totalPixmapSize) : NULL; -#else - pPixmap->devPrivate.ptr = (pointer)(pPixmap + 1); -#endif return pPixmap; } diff --git a/dix/main.c b/dix/main.c index ed5e358c4..eb75cf548 100644 --- a/dix/main.c +++ b/dix/main.c @@ -364,9 +364,7 @@ main(int argc, char *argv[], char *envp[]) ResetScreenPrivates(); ResetWindowPrivates(); ResetGCPrivates(); -#ifdef PIXPRIV ResetPixmapPrivates(); -#endif ResetColormapPrivates(); ResetFontPrivateIndex(); ResetDevicePrivateIndex(); @@ -734,11 +732,9 @@ AddScreen( pScreen->GCPrivateSizes = (unsigned *)NULL; pScreen->totalGCSize = ((sizeof(GC) + sizeof(long) - 1) / sizeof(long)) * sizeof(long); -#ifdef PIXPRIV pScreen->PixmapPrivateLen = 0; pScreen->PixmapPrivateSizes = (unsigned *)NULL; pScreen->totalPixmapSize = BitmapBytePad(sizeof(PixmapRec)*8); -#endif pScreen->ClipNotify = 0; /* for R4 ddx compatibility */ pScreen->CreateScreenResources = 0; @@ -802,9 +798,7 @@ FreeScreen(ScreenPtr pScreen) { xfree(pScreen->WindowPrivateSizes); xfree(pScreen->GCPrivateSizes); -#ifdef PIXPRIV xfree(pScreen->PixmapPrivateSizes); -#endif xfree(pScreen->devPrivates); xfree(pScreen); } diff --git a/dix/pixmap.c b/dix/pixmap.c index a5b7b064d..c280a3b94 100644 --- a/dix/pixmap.c +++ b/dix/pixmap.c @@ -109,7 +109,6 @@ _X_EXPORT PixmapPtr AllocatePixmap(ScreenPtr pScreen, int pixDataSize) { PixmapPtr pPixmap; -#ifdef PIXPRIV char *ptr; DevUnion *ppriv; unsigned *sizes; @@ -136,9 +135,6 @@ AllocatePixmap(ScreenPtr pScreen, int pixDataSize) else ppriv->ptr = (pointer)NULL; } -#else - pPixmap = (PixmapPtr)xalloc(sizeof(PixmapRec) + pixDataSize); -#endif #ifdef _XSERVER64 if (pPixmap) { diff --git a/dix/privates.c b/dix/privates.c index a12c8bfcb..0722d9f29 100644 --- a/dix/privates.c +++ b/dix/privates.c @@ -574,7 +574,6 @@ AllocateGCPrivate(register ScreenPtr pScreen, int index2, unsigned amount) /* * pixmap private machinery */ -#ifdef PIXPRIV static int pixmapPrivateCount; void @@ -620,7 +619,6 @@ AllocatePixmapPrivate(register ScreenPtr pScreen, int index2, unsigned amount) pScreen->totalPixmapSize = BitmapBytePad(pScreen->totalPixmapSize * 8); return TRUE; } -#endif /* diff --git a/fb/fbpixmap.c b/fb/fbpixmap.c index c2ddcb0e9..18c120440 100644 --- a/fb/fbpixmap.c +++ b/fb/fbpixmap.c @@ -43,11 +43,7 @@ fbCreatePixmapBpp (ScreenPtr pScreen, int width, int height, int depth, int bpp) if (paddedWidth / 4 > 32767 || height > 32767) return NullPixmap; datasize = height * paddedWidth; -#ifdef PIXPRIV base = pScreen->totalPixmapSize; -#else - base = sizeof (PixmapRec); -#endif adjust = 0; if (base & 7) adjust = 8 - (base & 7); diff --git a/hw/darwin/Makefile.am b/hw/darwin/Makefile.am index 75d028ea5..3e28d3212 100644 --- a/hw/darwin/Makefile.am +++ b/hw/darwin/Makefile.am @@ -112,7 +112,7 @@ macos_PROGRAMS = XDarwinApp macos_SCRIPTS = x11app x11app: - cd apple && xcodebuild + cd apple && xcodebuild CFLAGS="$(XSERVERCFLAGS_CFLAGS)" LDFLAGS="$(XSERVERCFLAGS_LIBS)" XDarwinApp_SOURCES = \ $(top_srcdir)/fb/fbcmap.c \ @@ -275,7 +275,7 @@ install-data-hook: $(HOOK_TARGETS) xquartz-install-hook: mv $(DESTDIR)$(macosdir)/XDarwinApp $(DESTDIR)$(macosdir)/XDarwin - cd apple && xcodebuild CFLAGS="$(XSERVERCFLAGS_CFLAGS)" LDFLAGS="$(XSERVERCFLAGS_LIBS)" + cd apple && xcodebuild install EXTRA_DIST = \ darwin.c \ diff --git a/hw/darwin/README.apple b/hw/darwin/README.apple index 68bc692c9..229ab17ad 100644 --- a/hw/darwin/README.apple +++ b/hw/darwin/README.apple @@ -22,20 +22,14 @@ The server builds 4 targets: Known issues: * AGL and CGL support for 3D indirect acceleration does not work; - indirect.c needs to be rewritten. + indirect.c has been rewritten, but not yet integrated into this source tree. * Fullscreen mode does not work; I don't know why. -* The keyboard and mouse do not work at all; they worked in X11R7.1, - and I believe that they were broken by the events changes in dix/. - * Some features in X11.app are not yet implemented; these are marked with #ifdef DARWIN_DDX_MISSING in the code. * The build system code could probably be cleaned up slightly. -* Most testing of this code has occurred under 10.5, but it should - also work under 10.4. - Any patches or code contributions would be most welcome and may be sent to me at bbyer@apple.com. diff --git a/hw/darwin/apple/X11Application.m b/hw/darwin/apple/X11Application.m index cfc975037..57795f452 100644 --- a/hw/darwin/apple/X11Application.m +++ b/hw/darwin/apple/X11Application.m @@ -855,48 +855,6 @@ convert_flags (unsigned int nsflags) { return xflags; } -/* Sends a null byte down darwinEventWriteFD, which will cause the - Dispatch() event loop to check out event queue */ -void DarwinPokeEQ(void) { - char nullbyte=0; - input_check_flag++; - // bushing: oh, i ... er ... christ. - write(darwinEventWriteFD, &nullbyte, 1); -} - -void DarwinSendPointerEvents(int ev_type, int ev_button, int pointer_x, int pointer_y) { - int i; - int valuators[2] = {pointer_x, pointer_y}; - int num_events = GetPointerEvents(darwinEvents, darwinPointer, ev_type, ev_button, - POINTER_ABSOLUTE, 0, 2, valuators); - - for(i=0; i 0.0f ? 4 : 5; - int valuators[2] = {pointer_x, pointer_y}; - - for (count = fabs(count); count > 0.0; count = count - 1.0f) { - int num_events = GetPointerEvents(darwinEvents, darwinPointer, ButtonPress, ev_button, - POINTER_ABSOLUTE, 0, 2, valuators); - for(i=0; iu.u.detail = keycode + MIN_KEYCODE; - (*darwinEventQueue.pKbd->processInputProc)(xe, - (DeviceIntPtr)darwinEventQueue.pKbd, 1); - } + if (keycode != 0) + DarwinSendKeyboardEvents(pressed, keycode); } } @@ -125,28 +124,26 @@ static void DarwinPressModifierMask( * Send events to update the modifier state. */ static void DarwinUpdateModifiers( - xEvent *xe, // event template with time and mouse position set int pressed, // KeyPress or KeyRelease int flags ) // modifier flags that have changed { - xe->u.u.type = pressed; if (flags & NX_ALPHASHIFTMASK) { - DarwinPressModifierMask(xe, NX_ALPHASHIFTMASK); + DarwinPressModifierMask(pressed, NX_ALPHASHIFTMASK); } if (flags & NX_COMMANDMASK) { - DarwinPressModifierMask(xe, COMMAND_MASK(flags)); + DarwinPressModifierMask(pressed, COMMAND_MASK(flags)); } if (flags & NX_CONTROLMASK) { - DarwinPressModifierMask(xe, CONTROL_MASK(flags)); + DarwinPressModifierMask(pressed, CONTROL_MASK(flags)); } if (flags & NX_ALTERNATEMASK) { - DarwinPressModifierMask(xe, ALTERNATE_MASK(flags)); + DarwinPressModifierMask(pressed, ALTERNATE_MASK(flags)); } if (flags & NX_SHIFTMASK) { - DarwinPressModifierMask(xe, SHIFT_MASK(flags)); + DarwinPressModifierMask(pressed, SHIFT_MASK(flags)); } if (flags & NX_SECONDARYFNMASK) { - DarwinPressModifierMask(xe, NX_SECONDARYFNMASK); + DarwinPressModifierMask(pressed, NX_SECONDARYFNMASK); } } @@ -163,19 +160,20 @@ static void DarwinUpdateModifiers( * simulate a button 2 press instead of Command-button 2. */ static void DarwinSimulateMouseClick( - xEvent *xe, // event template with time and - // mouse position filled in + int pointer_x, + int pointer_y, int whichButton, // mouse button to be pressed int modifierMask) // modifiers used for the fake click { // first fool X into forgetting about the keys - DarwinUpdateModifiers(xe, KeyRelease, modifierMask); + DarwinUpdateModifiers(KeyRelease, modifierMask); // push the mouse button - xe->u.u.type = ButtonPress; - xe->u.u.detail = whichButton; - (*darwinEventQueue.pPtr->processInputProc) - (xe, (DeviceIntPtr)darwinEventQueue.pPtr, 1); + DarwinSendPointerEvents(ButtonPress, whichButton, pointer_x, pointer_y); + DarwinSendPointerEvents(ButtonRelease, whichButton, pointer_x, pointer_y); + + // restore old modifiers + DarwinUpdateModifiers(KeyPress, modifierMask); } @@ -234,7 +232,7 @@ void DarwinEQEnqueue(const xEvent *e) { darwinEventQueue.tail = newtail; // Signal there is an event ready to handle - write(darwinEventWriteFD, &byte, 1); + DarwinPokeEQ(); } @@ -265,8 +263,6 @@ void ProcessInputEvents(void) { xEvent xe; static int old_flags = 0; // last known modifier state // button number and modifier mask of currently pressed fake button - static int darwinFakeMouseButtonDown = 0; - static int darwinFakeMouseButtonMask = 0; input_check_flag=0; // ErrorF("calling mieqProcessInputEvents\n"); @@ -318,155 +314,35 @@ void ProcessInputEvents(void) { darwinEventQueue.head = 0; else ++darwinEventQueue.head; - switch (xe.u.u.type) - { + switch (xe.u.u.type) { case KeyPress: - if (old_flags == 0 - && darwinSyncKeymap && darwinKeymapFile == NULL) - { - /* See if keymap has changed. */ - - static unsigned int last_seed; - unsigned int this_seed; - - this_seed = DarwinModeSystemKeymapSeed(); - if (this_seed != last_seed) - { - last_seed = this_seed; - DarwinKeyboardReload(darwinKeyboard); - } - } - /* fall through */ - case KeyRelease: - xe.u.u.detail += MIN_KEYCODE; - (*darwinEventQueue.pKbd->processInputProc) - (&xe, (DeviceIntPtr)darwinEventQueue.pKbd, 1); - break; + ErrorF("Unexpected Keyboard event in DarwinProcessInputEvents\n"); + break; case ButtonPress: - miPointerAbsoluteCursor(xe.u.keyButtonPointer.rootX, - xe.u.keyButtonPointer.rootY, - xe.u.keyButtonPointer.time); - if (darwinFakeButtons && xe.u.u.detail == 1) { - // Mimic multi-button mouse with modifier-clicks - // If both sets of modifiers are pressed, - // button 2 is clicked. - if ((old_flags & darwinFakeMouse2Mask) == - darwinFakeMouse2Mask) - { - DarwinSimulateMouseClick(&xe, 2, darwinFakeMouse2Mask); - darwinFakeMouseButtonDown = 2; - darwinFakeMouseButtonMask = darwinFakeMouse2Mask; - break; - } - else if ((old_flags & darwinFakeMouse3Mask) == - darwinFakeMouse3Mask) - { - DarwinSimulateMouseClick(&xe, 3, darwinFakeMouse3Mask); - darwinFakeMouseButtonDown = 3; - darwinFakeMouseButtonMask = darwinFakeMouse3Mask; - break; - } - } - (*darwinEventQueue.pPtr->processInputProc) - (&xe, (DeviceIntPtr)darwinEventQueue.pPtr, 1); + ErrorF("Unexpected ButtonPress event in DarwinProcessInputEvents\n"); break; case ButtonRelease: - miPointerAbsoluteCursor(xe.u.keyButtonPointer.rootX, - xe.u.keyButtonPointer.rootY, - xe.u.keyButtonPointer.time); - if (darwinFakeButtons && xe.u.u.detail == 1 && - darwinFakeMouseButtonDown) - { - // If last mousedown was a fake click, don't check for - // mouse modifiers here. The user may have released the - // modifiers before the mouse button. - xe.u.u.detail = darwinFakeMouseButtonDown; - darwinFakeMouseButtonDown = 0; - (*darwinEventQueue.pPtr->processInputProc) - (&xe, (DeviceIntPtr)darwinEventQueue.pPtr, 1); - - // Bring modifiers back up to date - DarwinUpdateModifiers(&xe, KeyPress, - darwinFakeMouseButtonMask & old_flags); - darwinFakeMouseButtonMask = 0; - } else { - (*darwinEventQueue.pPtr->processInputProc) - (&xe, (DeviceIntPtr)darwinEventQueue.pPtr, 1); - } + ErrorF("Unexpected ButtonRelease event in DarwinProcessInputEvents\n"); break; case MotionNotify: - miPointerAbsoluteCursor(xe.u.keyButtonPointer.rootX, - xe.u.keyButtonPointer.rootY, - xe.u.keyButtonPointer.time); + ErrorF("Unexpected ButtonRelease event in DarwinProcessInputEvents\n"); break; case kXDarwinUpdateModifiers: - { - // Update modifier state. - // Any amount of modifiers may have changed. - int flags = xe.u.clientMessage.u.l.longs0; - DarwinUpdateModifiers(&xe, KeyRelease, - old_flags & ~flags); - DarwinUpdateModifiers(&xe, KeyPress, - ~old_flags & flags); - old_flags = flags; - break; - } + ErrorF("Unexpected ButtonRelease event in DarwinProcessInputEvents\n"); + break; case kXDarwinUpdateButtons: - { - long hwDelta = xe.u.clientMessage.u.l.longs0; - long hwButtons = xe.u.clientMessage.u.l.longs1; - int i; + ErrorF("Unexpected XDarwinScrollWheel event in DarwinProcessInputEvents\n"); + break; - for (i = 1; i < 5; i++) { - if (hwDelta & (1 << i)) { - // IOKit and X have different numbering for the - // middle and right mouse buttons. - if (i == 1) { - xe.u.u.detail = 3; - } else if (i == 2) { - xe.u.u.detail = 2; - } else { - xe.u.u.detail = i + 1; - } - if (hwButtons & (1 << i)) { - xe.u.u.type = ButtonPress; - } else { - xe.u.u.type = ButtonRelease; - } - (*darwinEventQueue.pPtr->processInputProc) - (&xe, (DeviceIntPtr)darwinEventQueue.pPtr, 1); - } - } - break; - } - - case kXDarwinScrollWheel: - { - short count = xe.u.clientMessage.u.s.shorts0; - - if (count > 0) { - xe.u.u.detail = SCROLLWHEELUPFAKE; - } else { - xe.u.u.detail = SCROLLWHEELDOWNFAKE; - count = -count; - } - - for (; count; --count) { - xe.u.u.type = ButtonPress; - (*darwinEventQueue.pPtr->processInputProc) - (&xe, (DeviceIntPtr)darwinEventQueue.pPtr, 1); - xe.u.u.type = ButtonRelease; - (*darwinEventQueue.pPtr->processInputProc) - (&xe, (DeviceIntPtr)darwinEventQueue.pPtr, 1); - } - break; - } + case kXDarwinScrollWheel: + ErrorF("Unexpected XDarwinScrollWheel event in DarwinProcessInputEvents\n"); + break; default: // Check for mode specific event @@ -475,5 +351,96 @@ void ProcessInputEvents(void) { } } - miPointerUpdate(); + // miPointerUpdate(); +} + +/* Sends a null byte down darwinEventWriteFD, which will cause the + Dispatch() event loop to check out event queue */ +void DarwinPokeEQ(void) { + char nullbyte=0; + input_check_flag++; + // bushing: oh, i ... er ... christ. + write(darwinEventWriteFD, &nullbyte, 1); +} + +void DarwinSendPointerEvents(int ev_type, int ev_button, int pointer_x, int pointer_y) { + static int darwinFakeMouseButtonDown = 0; + static int darwinFakeMouseButtonMask = 0; + int i, num_events; + int valuators[2] = {pointer_x, pointer_y}; + if (ev_type == ButtonPress && darwinFakeButtons && ev_button == 1) { + // Mimic multi-button mouse with modifier-clicks + // If both sets of modifiers are pressed, + // button 2 is clicked. + if ((old_flags & darwinFakeMouse2Mask) == darwinFakeMouse2Mask) { + DarwinSimulateMouseClick(pointer_x, pointer_y, 2, darwinFakeMouse2Mask); + darwinFakeMouseButtonDown = 2; + darwinFakeMouseButtonMask = darwinFakeMouse2Mask; + } else if ((old_flags & darwinFakeMouse3Mask) == darwinFakeMouse3Mask) { + DarwinSimulateMouseClick(pointer_x, pointer_y, 3, darwinFakeMouse3Mask); + darwinFakeMouseButtonDown = 3; + darwinFakeMouseButtonMask = darwinFakeMouse3Mask; + } + } + if (ev_type == ButtonRelease && darwinFakeButtons && darwinFakeMouseButtonDown) { + // If last mousedown was a fake click, don't check for + // mouse modifiers here. The user may have released the + // modifiers before the mouse button. + ev_button = darwinFakeMouseButtonDown; + darwinFakeMouseButtonDown = 0; + // Bring modifiers back up to date + DarwinUpdateModifiers(KeyPress, darwinFakeMouseButtonMask & old_flags); + darwinFakeMouseButtonMask = 0; + } + + num_events = GetPointerEvents(darwinEvents, darwinPointer, ev_type, ev_button, + POINTER_ABSOLUTE, 0, 2, valuators); + + for(i=0; i 0.0f ? 4 : 5; + int valuators[2] = {pointer_x, pointer_y}; + + for (count = fabs(count); count > 0.0; count = count - 1.0f) { + int num_events = GetPointerEvents(darwinEvents, darwinPointer, ButtonPress, ev_button, + POINTER_ABSOLUTE, 0, 2, valuators); + for(i=0; isize = h * w; linear->offset = (pitch * area->box.y1) + area->box.x1; if (gran > 1) - linear->offset += ((linear->offset + gran - 1) / gran) * gran; + linear->offset = ((linear->offset + gran - 1) / gran) * gran; linear->granularity = gran; linear->MoveLinearCallback = moveCB; linear->RemoveLinearCallback = removeCB; diff --git a/hw/xfree86/doc/README.modes b/hw/xfree86/doc/README.modes new file mode 100644 index 000000000..894e21313 --- /dev/null +++ b/hw/xfree86/doc/README.modes @@ -0,0 +1,474 @@ + Multi-monitor Mode Setting APIs + Keith Packard, SaveScreen and the core X screen saver will be +implemented by disabling outputs and crtcs using their dpms functions. + + void + xf86DPMSSet(ScrnInfoPtr scrn, int mode, int flags) + +Pass this function to xf86DPMSInit and all DPMS mode switching will be +managed by using the dpms functions provided by the Outputs and CRTCs. + + Bool + xf86CrtcScreenInit (ScreenPtr screen) + +This function completes the screen initialization process for the crtc and +output objects. Call it near the end of the ScreenInit function, after the +frame buffer and acceleration layers have been added. + +3.3 EnterVT functions + +Functions used during EnterVT, or whenever the current configuration needs +to be applied to the hardware. + + Bool + xf86SetDesiredModes (ScrnInfoPtr scrn) + +xf86InitialConfiguration selects the desired configuration at PreInit time; +when the server finally hits ScreenInit, xf86SetDesiredModes is used by the +driver to take that configuration and apply it to the hardware. In addition, +successful mode selection at other times updates the configuration that will +be used by this function, so LeaveVT/EnterVT pairs can simply invoke this +and return to the previous configuration. + +3.4 SwitchMode functions + +Functions called from the pScrn->SwitchMode hook, which is used by the +XFree86-VidModeExtension and the keypad mode switch commands. + + Bool + xf86SetSingleMode (ScrnInfoPtr scrn, + DisplayModePtr desired, + Rotation rotation) + +This function applies the specified mode to all active outputs. Which is to +say, it picks reasonable modes for all active outputs, attempting to get the +screen to the specified size while not breaking anything that is currently +working. + +3.7 get_modes functions + +Functions called during output->get_modes to help build lists of modes + + xf86MonPtr + xf86OutputGetEDID (xf86OutputPtr output, I2CBusPtr pDDCBus) + +This returns the EDID data structure for the 'output' using the I2C bus +'pDDCBus'. This has no effect on 'output' itself. + + void + xf86OutputSetEDID (xf86OutputPtr output, xf86MonPtr edid_mon) + +Once the EDID data has been fetched, this call applies the EDID data to the +output object, setting the physical size and also various properties, like +the DDC root window property (when output is the 'compat' output), and the +RandR 1.2 EDID output properties. + + DisplayModePtr + xf86OutputGetEDIDModes (xf86OutputPtr output) + +Given an EDID data structure, this function computes a list of suitable +modes. This function also applies a sequence of 'quirks' during this process +so that the returned modes may not actually match the mode data present in +the EDID data. + +3.6 Other functions + +These remaining functions in the API can be used by the driver as needed. + + Bool + xf86CrtcSetMode (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotation, + int x, int y) + +Applies a mode to a CRTC. All of the outputs which are currently using the +specified CRTC are included in the mode setting process. 'x' and 'y' are the +offset within the frame buffer that the crtc is placed at. No checking is +done in this function to ensure that the mode is usable by the active +outputs. + + void + xf86ProbeOutputModes (ScrnInfoPtr pScrn, int maxX, int maxY) + +This discards the mode lists for all outputs, re-detects monitor presence +and then acquires new mode lists for all monitors which are not disconnected. +Monitor configuration data is used to modify the mode lists returned by the +outputs. 'maxX' and 'maxY' limit the maximum size modes that will be +returned. + + void + xf86SetScrnInfoModes (ScrnInfoPtr pScrn) + +This copies the 'compat' output mode list into the pScrn modes list which is +used by the XFree86-VidModeExtension and the keypad mode switching +operations. The current 'desired' mode for the CRTC associated with the +'compat' output is placed first in this list to indicate the current mode. +Usually, the driver won't need to call this function as +xf86InitialConfiguration will do so automatically, as well as any RandR +functions which reprobe for modes. However, if the driver reprobes for modes +at other times using xf86ProbeOutputModes, this function needs to be called. + + Bool + xf86DiDGAReInit (ScreenPtr pScreen) + +This is similar to xf86SetScrnInfoModes, but it applies the 'compat' output +mode list to the set of modes advertised by the DGA extension; it needs to +be called whenever xf86ProbeOutputModes is invoked. + + void + xf86DisableUnusedFunctions(ScrnInfoPtr pScrn) + +After any sequence of calls using xf86CrtcSetMode, this function cleans up +any leftover Output and CRTC objects by disabling them, saving power. It is +safe to call this whenever the server is running as it only disables objects +which are not currently in use. + +4. CRTC operations + +4.1 CRTC functions + +These functions provide an abstract interface for the CRTC object; most +manipulation of the CRTC object is done through these functions. + + void + crtc->funcs->dpms (xf86CrtcPtr crtc, int mode) + +Where 'mode' is one of DPMSModeOff, DPMSModeSuspend, DPMSModeStandby or +DPMSModeOn. This requests that the crtc go to the specified power state. +When changing power states, the output dpms functions are invoked before the +crtc dpms functions. + + void + crtc->funcs->save (xf86CrtcPtr crtc) + + void + crtc->funcs->restore (xf86CrtcPtr crtc) + +Preserve/restore any register contents related to the CRTC. These are +strictly a convenience for the driver writer; if the existing driver has +fully operation save/restore functions, you need not place any additional +code here. In particular, the server itself never uses this function. + + Bool + crtc->funcs->lock (xf86CrtcPtr crtc) + + void + crtc->funcs->unlock (xf86CrtcPtr crtc) + +These functions are invoked around mode setting operations; the intent is +that DRI locking be done here to prevent DRI applications from manipulating +the hardware while the server is busy changing the output configuration. If +the lock function returns FALSE, the unlock function will not be invoked. + + Bool + crtc->funcs->mode_fixup (xf86CrtcPtr crtc, + DisplayModePtr mode, + DisplayModePtr adjusted_mode) + +This call gives the CRTC a chance to see what mode will be set and to +comment on the mode by changing 'adjusted_mode' as needed. This function +shall not modify the state of the crtc hardware at all. If the CRTC cannot +accept this mode, this function may return FALSE. + + void + crtc->funcs->prepare (xf86CrtcPtr crtc) + +This call is made just before the mode is set to make the hardware ready for +the operation. A usual function to perform here is to disable the crtc so +that mode setting can occur with clocks turned off and outputs deactivated. + + void + crtc->funcs->mode_set (xf86CrtcPtr crtc, + DisplayModePtr mode, + DisplayModePtr adjusted_mode) + +This function applies the specified mode (possibly adjusted by the CRTC +and/or Outputs). + + void + crtc->funcs->commit (xf86CrtcPtr crtc) + +Once the mode has been applied to the CRTC and Outputs, this function is +invoked to let the hardware turn things back on. + + void + crtc->funcs->gamma_set (xf86CrtcPtr crtc, CARD16 *red, + CARD16 *green, CARD16 *blue, int size) + +This function adjusts the gamma ramps for the specified crtc. + + void * + crtc->funcs->shadow_allocate (xf86CrtcPtr crtc, int width, int height) + +This function allocates frame buffer space for a shadow frame buffer. When +allocated, the crtc must scan from the shadow instead of the main frame +buffer. This is used for rotation. The address returned is passed to the +shadow_create function. This function should return NULL on failure. + + PixmapPtr + crtc->funcs->shadow_create (xf86CrtcPtr crtc, void *data, + int width, int height) + +This function creates a pixmap object that will be used as a shadow of the +main frame buffer for CRTCs which are rotated or reflected. 'data' is the +value returned by shadow_allocate. + + void + crtc->funcs->shadow_destroy (xf86CrtcPtr crtc, PixmapPtr pPixmap, + void *data) + +Destroys any associated shadow objects. If pPixmap is NULL, then a pixmap +was not created, but 'data' may still be non-NULL indicating that the shadow +had been allocated. + + void + crtc->funcs->destroy (xf86CrtcPtr crtc) + +When a CRTC is destroyed (which only happens in error cases), this function +can clean up any driver-specific data. + +4.2 CRTC fields + +The CRTC object is not opaque; there are several fields of interest to the +driver writer. + + struct _xf86Crtc { + /** + * Associated ScrnInfo + */ + ScrnInfoPtr scrn; + + /** + * Active state of this CRTC + * + * Set when this CRTC is driving one or more outputs + */ + Bool enabled; + + /** Track whether cursor is within CRTC range */ + Bool cursorInRange; + + /** Track state of cursor associated with this CRTC */ + Bool cursorShown; + + /** + * Active mode + * + * This reflects the mode as set in the CRTC currently + * It will be cleared when the VT is not active or + * during server startup + */ + DisplayModeRec mode; + Rotation rotation; + PixmapPtr rotatedPixmap; + void *rotatedData; + + /** + * Position on screen + * + * Locates this CRTC within the frame buffer + */ + int x, y; + + /** + * Desired mode + * + * This is set to the requested mode, independent of + * whether the VT is active. In particular, it receives + * the startup configured mode and saves the active mode + * on VT switch. + */ + DisplayModeRec desiredMode; + Rotation desiredRotation; + int desiredX, desiredY; + + /** crtc-specific functions */ + const xf86CrtcFuncsRec *funcs; + + /** + * Driver private + * + * Holds driver-private information + */ + void *driver_private; + #ifdef RANDR_12_INTERFACE + /** + * RandR crtc + * + * When RandR 1.2 is available, this + * points at the associated crtc object + */ + RRCrtcPtr randr_crtc; + #else + void *randr_crtc; + #endif + }; + + +5. Output functions. + +6. Configuration + +Because the configuration file syntax is fixed, +this was done by creating new "Driver" section options that hook specific +outputs to specific "Monitor" sections in the file. The option: +section of the form: + + Option "monitor-VGA" "My VGA Monitor" + +connects the VGA output of this driver to the "Monitor" section with +Identifier "My VGA Monitor". All of the usual monitor options can now be +placed in that "Monitor" section and will be applied to the VGA output +configuration. diff --git a/hw/xfree86/loader/dixsym.c b/hw/xfree86/loader/dixsym.c index 5479ed0df..6b52aea98 100644 --- a/hw/xfree86/loader/dixsym.c +++ b/hw/xfree86/loader/dixsym.c @@ -280,10 +280,8 @@ _X_HIDDEN void *dixLookupTab[] = { SYMFUNC(AllocateColormapPrivateIndex) SYMFUNC(AllocateDevicePrivateIndex) SYMFUNC(AllocateDevicePrivate) -#ifdef PIXPRIV SYMFUNC(AllocatePixmapPrivateIndex) SYMFUNC(AllocatePixmapPrivate) -#endif /* resource.c */ SYMFUNC(AddResource) SYMFUNC(ChangeResourceValue) diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c index 2ffa9567c..279449688 100644 --- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c @@ -545,6 +545,60 @@ xf86OutputDestroy (xf86OutputPtr output) xfree (output); } +/* + * Called during CreateScreenResources to hook up RandR + */ +static Bool +xf86CrtcCreateScreenResources (ScreenPtr screen) +{ + ScrnInfoPtr scrn = xf86Screens[screen->myNum]; + xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn); + + screen->CreateScreenResources = config->CreateScreenResources; + + if (!(*screen->CreateScreenResources)(screen)) + return FALSE; + + if (!xf86RandR12CreateScreenResources (screen)) + return FALSE; + + return TRUE; +} + +/* + * Called at ScreenInit time to set up + */ +Bool +xf86CrtcScreenInit (ScreenPtr screen) +{ + ScrnInfoPtr scrn = xf86Screens[screen->myNum]; + xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn); + int c; + + /* Rotation */ + xf86DrvMsg(scrn->scrnIndex, X_INFO, "RandR 1.2 enabled, ignore the following RandR disabled message.\n"); + xf86DisableRandR(); /* Disable old RandR extension support */ + xf86RandR12Init (screen); + + /* support all rotations if every crtc has the shadow alloc funcs */ + for (c = 0; c < config->num_crtc; c++) + { + xf86CrtcPtr crtc = config->crtc[c]; + if (!crtc->funcs->shadow_allocate || !crtc->funcs->shadow_create) + break; + } + if (c == config->num_crtc) + xf86RandR12SetRotations (screen, RR_Rotate_0 | RR_Rotate_90 | + RR_Rotate_180 | RR_Rotate_270); + else + xf86RandR12SetRotations (screen, RR_Rotate_0); + + /* Wrap CreateScreenResources so we can initialize the RandR code */ + config->CreateScreenResources = screen->CreateScreenResources; + screen->CreateScreenResources = xf86CrtcCreateScreenResources; + return TRUE; +} + static DisplayModePtr xf86DefaultMode (xf86OutputPtr output, int width, int height) { @@ -879,13 +933,17 @@ xf86InitialOutputPositions (ScrnInfoPtr scrn, DisplayModePtr *modes) { xf86OutputPtr out_rel = config->output[or]; XF86ConfMonitorPtr rel_mon = out_rel->conf_monitor; - char *name; if (rel_mon) - name = rel_mon->mon_identifier; - else - name = out_rel->name; - if (!strcmp (relative_name, name)) + { + if (xf86nameCompare (rel_mon->mon_identifier, + relative_name) == 0) + { + relative = config->output[or]; + break; + } + } + if (strcmp (out_rel->name, relative_name) == 0) { relative = config->output[or]; break; @@ -1542,6 +1600,189 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) return TRUE; } +/* + * Using the desired mode information in each crtc, set + * modes (used in EnterVT functions, or at server startup) + */ + +Bool +xf86SetDesiredModes (ScrnInfoPtr scrn) +{ + xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn); + int c; + + for (c = 0; c < config->num_crtc; c++) + { + xf86CrtcPtr crtc = config->crtc[c]; + xf86OutputPtr output = NULL; + int o; + + if (config->output[config->compat_output]->crtc == crtc) + output = config->output[config->compat_output]; + else + { + for (o = 0; o < config->num_output; o++) + if (config->output[o]->crtc == crtc) + { + output = config->output[o]; + break; + } + } + /* + * Skip disabled crtcs + */ + if (!output) + continue; + + /* Mark that we'll need to re-set the mode for sure */ + memset(&crtc->mode, 0, sizeof(crtc->mode)); + if (!crtc->desiredMode.CrtcHDisplay) + { + DisplayModePtr mode = xf86OutputFindClosestMode (output, scrn->currentMode); + + if (!mode) + return FALSE; + crtc->desiredMode = *mode; + crtc->desiredRotation = RR_Rotate_0; + crtc->desiredX = 0; + crtc->desiredY = 0; + } + + if (!xf86CrtcSetMode (crtc, &crtc->desiredMode, crtc->desiredRotation, + crtc->desiredX, crtc->desiredY)) + return FALSE; + } + + xf86DisableUnusedFunctions(scrn); + return TRUE; +} + +/** + * In the current world order, there are lists of modes per output, which may + * or may not include the mode that was asked to be set by XFree86's mode + * selection. Find the closest one, in the following preference order: + * + * - Equality + * - Closer in size to the requested mode, but no larger + * - Closer in refresh rate to the requested mode. + */ + +DisplayModePtr +xf86OutputFindClosestMode (xf86OutputPtr output, DisplayModePtr desired) +{ + DisplayModePtr best = NULL, scan = NULL; + + for (scan = output->probed_modes; scan != NULL; scan = scan->next) + { + /* If there's an exact match, we're done. */ + if (xf86ModesEqual(scan, desired)) { + best = desired; + break; + } + + /* Reject if it's larger than the desired mode. */ + if (scan->HDisplay > desired->HDisplay || + scan->VDisplay > desired->VDisplay) + { + continue; + } + + /* + * If we haven't picked a best mode yet, use the first + * one in the size range + */ + if (best == NULL) + { + best = scan; + continue; + } + + /* Find if it's closer to the right size than the current best + * option. + */ + if ((scan->HDisplay > best->HDisplay && + scan->VDisplay >= best->VDisplay) || + (scan->HDisplay >= best->HDisplay && + scan->VDisplay > best->VDisplay)) + { + best = scan; + continue; + } + + /* Find if it's still closer to the right refresh than the current + * best resolution. + */ + if (scan->HDisplay == best->HDisplay && + scan->VDisplay == best->VDisplay && + (fabs(scan->VRefresh - desired->VRefresh) < + fabs(best->VRefresh - desired->VRefresh))) { + best = scan; + } + } + return best; +} + +/** + * When setting a mode through XFree86-VidModeExtension or XFree86-DGA, + * take the specified mode and apply it to the crtc connected to the compat + * output. Then, find similar modes for the other outputs, as with the + * InitialConfiguration code above. The goal is to clone the desired + * mode across all outputs that are currently active. + */ + +Bool +xf86SetSingleMode (ScrnInfoPtr pScrn, DisplayModePtr desired, Rotation rotation) +{ + xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn); + Bool ok = TRUE; + xf86OutputPtr compat_output = config->output[config->compat_output]; + DisplayModePtr compat_mode; + int c; + + /* + * Let the compat output drive the final mode selection + */ + compat_mode = xf86OutputFindClosestMode (compat_output, desired); + if (compat_mode) + desired = compat_mode; + + for (c = 0; c < config->num_crtc; c++) + { + xf86CrtcPtr crtc = config->crtc[c]; + DisplayModePtr crtc_mode = NULL; + int o; + + if (!crtc->enabled) + continue; + + for (o = 0; o < config->num_output; o++) + { + xf86OutputPtr output = config->output[o]; + DisplayModePtr output_mode; + + /* skip outputs not on this crtc */ + if (output->crtc != crtc) + continue; + + if (crtc_mode) + { + output_mode = xf86OutputFindClosestMode (output, crtc_mode); + if (output_mode != crtc_mode) + output->crtc = NULL; + } + else + crtc_mode = xf86OutputFindClosestMode (output, desired); + } + if (!xf86CrtcSetMode (crtc, crtc_mode, rotation, 0, 0)) + ok = FALSE; + else + crtc->desiredMode = *crtc_mode; + } + xf86DisableUnusedFunctions(pScrn); + return ok; +} + + /** * Set the DPMS power mode of all outputs and CRTCs. * diff --git a/hw/xfree86/modes/xf86Crtc.h b/hw/xfree86/modes/xf86Crtc.h index 537df3a3b..6152ae4c9 100644 --- a/hw/xfree86/modes/xf86Crtc.h +++ b/hw/xfree86/modes/xf86Crtc.h @@ -494,6 +494,7 @@ typedef struct _xf86CrtcConfig { const xf86CrtcConfigFuncsRec *funcs; + CreateScreenResourcesProcPtr CreateScreenResources; } xf86CrtcConfigRec, *xf86CrtcConfigPtr; extern int xf86CrtcConfigPrivateIndex; @@ -524,25 +525,6 @@ void xf86CrtcDestroy (xf86CrtcPtr crtc); -/** - * Allocate a crtc for the specified output - * - * Find a currently unused CRTC which is suitable for - * the specified output - */ - -xf86CrtcPtr -xf86AllocCrtc (xf86OutputPtr output); - -/** - * Free a crtc - * - * Mark the crtc as unused by any outputs - */ - -void -xf86FreeCrtc (xf86CrtcPtr crtc); - /** * Sets the given video mode on the given crtc */ @@ -582,6 +564,9 @@ xf86ProbeOutputModes (ScrnInfoPtr pScrn, int maxX, int maxY); void xf86SetScrnInfoModes (ScrnInfoPtr pScrn); +Bool +xf86CrtcScreenInit (ScreenPtr pScreen); + Bool xf86InitialConfiguration (ScrnInfoPtr pScrn, Bool canGrow); @@ -594,6 +579,12 @@ xf86SaveScreen(ScreenPtr pScreen, int mode); void xf86DisableUnusedFunctions(ScrnInfoPtr pScrn); +DisplayModePtr +xf86OutputFindClosestMode (xf86OutputPtr output, DisplayModePtr desired); + +Bool +xf86SetSingleMode (ScrnInfoPtr pScrn, DisplayModePtr desired, Rotation rotation); + /** * Set the EDID information for the specified output */ @@ -638,4 +629,12 @@ xf86CrtcSetScreenSubpixelOrder (ScreenPtr pScreen); char * xf86ConnectorGetName(xf86ConnectorType connector); +/* + * Using the desired mode information in each crtc, set + * modes (used in EnterVT functions, or at server startup) + */ + +Bool +xf86SetDesiredModes (ScrnInfoPtr pScrn); + #endif /* _XF86CRTC_H_ */ diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c index 052d12aa3..ce780b6ef 100644 --- a/hw/xfree86/modes/xf86RandR12.c +++ b/hw/xfree86/modes/xf86RandR12.c @@ -422,8 +422,28 @@ xf86RandR12CreateScreenResources (ScreenPtr pScreen) } else { - mmWidth = pScreen->mmWidth; - mmHeight = pScreen->mmHeight; + xf86OutputPtr output = config->output[config->compat_output]; + xf86CrtcPtr crtc = output->crtc; + + if (crtc && crtc->mode.HDisplay && + output->mm_width && output->mm_height) + { + /* + * If the output has a mode and a declared size, use that + * to scale the screen size + */ + DisplayModePtr mode = &crtc->mode; + mmWidth = output->mm_width * width / mode->HDisplay; + mmHeight = output->mm_height * height / mode->VDisplay; + } + else + { + /* + * Otherwise, just set the screen to 96dpi + */ + mmWidth = width * 25.4 / 96; + mmHeight = height * 25.4 / 96; + } } xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Setting screen physical size to %d x %d\n", diff --git a/hw/xfree86/modes/xf86Rename.h b/hw/xfree86/modes/xf86Rename.h index 6cfa5caa1..9dcfef5da 100644 --- a/hw/xfree86/modes/xf86Rename.h +++ b/hw/xfree86/modes/xf86Rename.h @@ -31,6 +31,7 @@ #define xf86CrtcDestroy XF86NAME(xf86CrtcDestroy) #define xf86CrtcInUse XF86NAME(xf86CrtcInUse) #define xf86CrtcRotate XF86NAME(xf86CrtcRotate) +#define xf86CrtcScreenInit XF86NAME(xf86CrtcScreenInit) #define xf86CrtcSetMode XF86NAME(xf86CrtcSetMode) #define xf86CrtcSetSizeRange XF86NAME(xf86CrtcSetSizeRange) #define xf86CVTMode XF86NAME(xf86CVTMode) @@ -76,5 +77,8 @@ #define xf86CrtcSetScreenSubpixelOrder XF86NAME(xf86CrtcSetScreenSubpixelOrder) #define xf86ModeWidth XF86NAME(xf86ModeWidth) #define xf86ModeHeight XF86NAME(xf86ModeHeight) +#define xf86OutputFindClosestMode XF86NAME(xf86OutputFindClosestMode) +#define xf86SetSingleMode XF86NAME(xf86SetSingleMode) +#define xf86SetDesiredModes XF86NAME(xf86SetDesiredModes) #endif /* _XF86RENAME_H_ */ diff --git a/hw/xfree86/xf4bpp/ppcPixmap.c b/hw/xfree86/xf4bpp/ppcPixmap.c index 9f4cdc99a..9b2defda1 100644 --- a/hw/xfree86/xf4bpp/ppcPixmap.c +++ b/hw/xfree86/xf4bpp/ppcPixmap.c @@ -120,12 +120,8 @@ xf4bppCreatePixmap( pScreen, width, height, depth ) pPixmap->devKind = size; pPixmap->refcnt = 1 ; size = height * pPixmap->devKind ; -#ifdef PIXPRIV pPixmap->devPrivate.ptr = (pointer) (((CARD8*)pPixmap) + pScreen->totalPixmapSize); -#else - pPixmap->devPrivate.ptr = (pointer) (pPixmap + 1); -#endif bzero( (char *) pPixmap->devPrivate.ptr, size ) ; return pPixmap ; } diff --git a/hw/xnest/Pixmap.c b/hw/xnest/Pixmap.c index aa8bed933..612df8dac 100644 --- a/hw/xnest/Pixmap.c +++ b/hw/xnest/Pixmap.c @@ -32,9 +32,7 @@ is" without express or implied warranty. #include "Screen.h" #include "XNPixmap.h" -#ifdef PIXPRIV int xnestPixmapPrivateIndex; -#endif PixmapPtr xnestCreatePixmap(ScreenPtr pScreen, int width, int height, int depth) @@ -57,12 +55,8 @@ xnestCreatePixmap(ScreenPtr pScreen, int width, int height, int depth) pPixmap->drawable.serialNumber = NEXT_SERIAL_NUMBER; pPixmap->refcnt = 1; pPixmap->devKind = PixmapBytePad(width, depth); -#ifdef PIXPRIV pPixmap->devPrivates[xnestPixmapPrivateIndex].ptr = (pointer)((char *)pPixmap + pScreen->totalPixmapSize); -#else - pPixmap->devPrivate.ptr = (pointer)(pPixmap + 1); -#endif if (width && height) xnestPixmapPriv(pPixmap)->pixmap = XCreatePixmap(xnestDisplay, diff --git a/hw/xnest/Screen.c b/hw/xnest/Screen.c index 8e86efbdb..e6870e702 100644 --- a/hw/xnest/Screen.c +++ b/hw/xnest/Screen.c @@ -49,9 +49,7 @@ Window xnestScreenSaverWindows[MAXSCREENS]; extern void GlxWrapInitVisuals(miInitVisualsProcPtr *); #endif -#ifdef PIXPRIV int xnestScreenGeneration = -1; -#endif ScreenPtr xnestScreen(Window window) @@ -154,7 +152,6 @@ xnestOpenScreen(int index, ScreenPtr pScreen, int argc, char *argv[]) sizeof(xnestPrivGC)))) return False; -#ifdef PIXPRIV if (xnestScreenGeneration != serverGeneration) { if ((xnestPixmapPrivateIndex = AllocatePixmapPrivateIndex()) < 0) return False; @@ -164,7 +161,6 @@ xnestOpenScreen(int index, ScreenPtr pScreen, int argc, char *argv[]) if (!AllocatePixmapPrivate(pScreen,xnestPixmapPrivateIndex, sizeof (xnestPrivPixmap))) return False; -#endif visuals = (VisualPtr)xalloc(xnestNumVisuals * sizeof(VisualRec)); numVisuals = 0; diff --git a/hw/xnest/XNPixmap.h b/hw/xnest/XNPixmap.h index 77cba24af..6971b1162 100644 --- a/hw/xnest/XNPixmap.h +++ b/hw/xnest/XNPixmap.h @@ -15,21 +15,14 @@ is" without express or implied warranty. #ifndef XNESTPIXMAP_H #define XNESTPIXMAP_H -#ifdef PIXPRIV extern int xnestPixmapPrivateIndex; -#endif typedef struct { Pixmap pixmap; } xnestPrivPixmap; -#ifdef PIXPRIV #define xnestPixmapPriv(pPixmap) \ ((xnestPrivPixmap *)((pPixmap)->devPrivates[xnestPixmapPrivateIndex].ptr)) -#else -#define xnestPixmapPriv(pPixmap) \ - ((xnestPrivPixmap *)((pPixmap)->devPrivate.ptr)) -#endif #define xnestPixmap(pPixmap) (xnestPixmapPriv(pPixmap)->pixmap) diff --git a/hw/xprint/config/C/print/models/CANONC3200-PS/fonts/Makefile.am b/hw/xprint/config/C/print/models/CANONC3200-PS/fonts/Makefile.am index c574c5cde..7a7ecc31a 100644 --- a/hw/xprint/config/C/print/models/CANONC3200-PS/fonts/Makefile.am +++ b/hw/xprint/config/C/print/models/CANONC3200-PS/fonts/Makefile.am @@ -19,10 +19,10 @@ XPFONTS = \ LubalinGraph-BookOblique.pmf \ LubalinGraph-Demi.pmf \ LubalinGraph-DemiOblique.pmf \ - NewCenturySchlbk-Bold.pmf \ - NewCenturySchlbk-BoldItalic.pmf \ - NewCenturySchlbk-Italic.pmf \ - NewCenturySchlbk-Roman.pmf \ + NewCentSchlbk-Bold.pmf \ + NewCentSchlbk-BoldItal.pmf \ + NewCentSchlbk-Ital.pmf \ + NewCentSchlbk-Roman.pmf \ Souvenir-Demi.pmf \ Souvenir-DemiItalic.pmf \ Souvenir-Light.pmf \ diff --git a/hw/xprint/config/C/print/models/HPLJ4050-PS/fonts/Makefile.am b/hw/xprint/config/C/print/models/HPLJ4050-PS/fonts/Makefile.am index 634db1f39..f4f4243e9 100644 --- a/hw/xprint/config/C/print/models/HPLJ4050-PS/fonts/Makefile.am +++ b/hw/xprint/config/C/print/models/HPLJ4050-PS/fonts/Makefile.am @@ -19,10 +19,10 @@ XPFONTS = \ LubalinGraph-BookOblique.pmf \ LubalinGraph-Demi.pmf \ LubalinGraph-DemiOblique.pmf \ - NewCenturySchlbk-Bold.pmf \ - NewCenturySchlbk-BoldItalic.pmf \ - NewCenturySchlbk-Italic.pmf \ - NewCenturySchlbk-Roman.pmf \ + NewCentSchlbk-Bold.pmf \ + NewCentSchlbk-BoldItal.pmf \ + NewCentSchlbk-Ital.pmf \ + NewCentSchlbk-Roman.pmf \ Souvenir-Demi.pmf \ Souvenir-DemiItalic.pmf \ Souvenir-Light.pmf \ diff --git a/hw/xprint/config/C/print/models/PSdefault/fonts/Makefile.am b/hw/xprint/config/C/print/models/PSdefault/fonts/Makefile.am index 1e8c8a781..40f1e3da5 100644 --- a/hw/xprint/config/C/print/models/PSdefault/fonts/Makefile.am +++ b/hw/xprint/config/C/print/models/PSdefault/fonts/Makefile.am @@ -17,10 +17,10 @@ dist_xpc_DATA = \ LubalinGraph-Book.pmf \ LubalinGraph-DemiOblique.pmf \ LubalinGraph-Demi.pmf \ - NewCenturySchlbk-Bold.pmf \ - NewCenturySchlbk-BoldItalic.pmf \ - NewCenturySchlbk-Italic.pmf \ - NewCenturySchlbk-Roman.pmf \ + NewCentSchlbk-Bold.pmf \ + NewCentSchlbk-BoldItal.pmf \ + NewCentSchlbk-Ital.pmf \ + NewCentSchlbk-Roman.pmf \ Souvenir-DemiItalic.pmf \ Souvenir-Demi.pmf \ Souvenir-LightItalic.pmf \ diff --git a/hw/xprint/config/C/print/models/PSdefault/fonts/NewCenturySchlbk-Bold.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/NewCentSchlbk-Bold.pmf similarity index 100% rename from hw/xprint/config/C/print/models/PSdefault/fonts/NewCenturySchlbk-Bold.pmf rename to hw/xprint/config/C/print/models/PSdefault/fonts/NewCentSchlbk-Bold.pmf diff --git a/hw/xprint/config/C/print/models/PSdefault/fonts/NewCenturySchlbk-BoldItalic.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/NewCentSchlbk-BoldItal.pmf similarity index 100% rename from hw/xprint/config/C/print/models/PSdefault/fonts/NewCenturySchlbk-BoldItalic.pmf rename to hw/xprint/config/C/print/models/PSdefault/fonts/NewCentSchlbk-BoldItal.pmf diff --git a/hw/xprint/config/C/print/models/PSdefault/fonts/NewCenturySchlbk-Italic.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/NewCentSchlbk-Ital.pmf similarity index 100% rename from hw/xprint/config/C/print/models/PSdefault/fonts/NewCenturySchlbk-Italic.pmf rename to hw/xprint/config/C/print/models/PSdefault/fonts/NewCentSchlbk-Ital.pmf diff --git a/hw/xprint/config/C/print/models/PSdefault/fonts/NewCenturySchlbk-Roman.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/NewCentSchlbk-Roman.pmf similarity index 100% rename from hw/xprint/config/C/print/models/PSdefault/fonts/NewCenturySchlbk-Roman.pmf rename to hw/xprint/config/C/print/models/PSdefault/fonts/NewCentSchlbk-Roman.pmf diff --git a/include/pixmapstr.h b/include/pixmapstr.h index 628465b97..93bd45db8 100644 --- a/include/pixmapstr.h +++ b/include/pixmapstr.h @@ -86,9 +86,7 @@ typedef struct _Pixmap { int refcnt; int devKind; DevUnion devPrivate; -#ifdef PIXPRIV DevUnion *devPrivates; /* real devPrivates like gcs & windows */ -#endif #ifdef COMPOSITE short screen_x; short screen_y; diff --git a/include/screenint.h b/include/screenint.h index e60c2480c..1f1434a84 100644 --- a/include/screenint.h +++ b/include/screenint.h @@ -86,8 +86,6 @@ extern int AddScreen( int /*argc*/, char** /*argv*/); -#ifdef PIXPRIV - extern void ResetPixmapPrivates(void); extern int AllocatePixmapPrivateIndex(void); @@ -97,8 +95,6 @@ extern Bool AllocatePixmapPrivate( int /* index */, unsigned /* amount */); -#endif /* PIXPRIV */ - extern void ResetColormapPrivates(void); diff --git a/include/scrnintstr.h b/include/scrnintstr.h index 36135153f..110f4dce9 100644 --- a/include/scrnintstr.h +++ b/include/scrnintstr.h @@ -558,11 +558,9 @@ typedef struct _Screen { PixmapPtr pScratchPixmap; /* scratch pixmap "pool" */ -#ifdef PIXPRIV int PixmapPrivateLen; unsigned int *PixmapPrivateSizes; unsigned int totalPixmapSize; -#endif MarkWindowProcPtr MarkWindow; MarkOverlappedWindowsProcPtr MarkOverlappedWindows; diff --git a/mfb/mfbpixmap.c b/mfb/mfbpixmap.c index 5ec8502cb..e34972451 100644 --- a/mfb/mfbpixmap.c +++ b/mfb/mfbpixmap.c @@ -101,12 +101,8 @@ mfbCreatePixmap (pScreen, width, height, depth) pPixmap->drawable.height = height; pPixmap->devKind = paddedWidth; pPixmap->refcnt = 1; -#ifdef PIXPRIV pPixmap->devPrivate.ptr = datasize ? (pointer)((char *)pPixmap + pScreen->totalPixmapSize) : NULL; -#else - pPixmap->devPrivate.ptr = (pointer)(pPixmap + 1); -#endif return pPixmap; } diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c index 1f7462f28..db506f4b0 100644 --- a/randr/rrcrtc.c +++ b/randr/rrcrtc.c @@ -490,7 +490,7 @@ RRCrtcInit (void) int ProcRRGetCrtcInfo (ClientPtr client) { - REQUEST(xRRGetCrtcInfoReq);; + REQUEST(xRRGetCrtcInfoReq); xRRGetCrtcInfoReply rep; RRCrtcPtr crtc; CARD8 *extra; diff --git a/randr/rroutput.c b/randr/rroutput.c index a66433015..df1741f5c 100644 --- a/randr/rroutput.c +++ b/randr/rroutput.c @@ -366,7 +366,7 @@ RROutputInit (void) int ProcRRGetOutputInfo (ClientPtr client) { - REQUEST(xRRGetOutputInfoReq);; + REQUEST(xRRGetOutputInfoReq); xRRGetOutputInfoReply rep; RROutputPtr output; CARD8 *extra; diff --git a/randr/rrpointer.c b/randr/rrpointer.c index 802dcb2c4..c88a0f83e 100644 --- a/randr/rrpointer.c +++ b/randr/rrpointer.c @@ -103,7 +103,7 @@ void RRPointerMoved (ScreenPtr pScreen, int x, int y) { rrScrPriv (pScreen); - RRCrtcPtr pointerCrtc = pScrPriv->pointerCrtc;; + RRCrtcPtr pointerCrtc = pScrPriv->pointerCrtc; int c; /* Check last known CRTC */