From 2aa7bcf37f00b7884ae166d62db81493ea37934a Mon Sep 17 00:00:00 2001 From: marha Date: Wed, 18 Aug 2010 09:35:37 +0000 Subject: libxext libx11 libxcb libXinerama libXau pixman xserver git update 18/10/2010 --- libX11/configure.ac | 1 + libX11/man/BitmapBitOrder.man | 1 + libX11/man/BitmapPad.man | 1 + libX11/man/BitmapUnit.man | 1 + libX11/man/BlackPixel.man | 1 + libX11/man/CellsOfScreen.man | 1 + libX11/man/ClientWhitePointOfCCC.man | 1 + libX11/man/ConnectionNumber.man | 1 + libX11/man/DefaultColormap.man | 1 + libX11/man/DefaultColormapOfScreen.man | 1 + libX11/man/DefaultDepth.man | 1 + libX11/man/DefaultDepthOfScreen.man | 1 + libX11/man/DefaultGC.man | 1 + libX11/man/DefaultGCOfScreen.man | 1 + libX11/man/DefaultRootWindow.man | 1 + libX11/man/DefaultScreen.man | 1 + libX11/man/DefaultScreenOfDisplay.man | 1 + libX11/man/DefaultVisual.man | 1 + libX11/man/DefaultVisualOfScreen.man | 1 + libX11/man/DisplayCells.man | 1 + libX11/man/DisplayHeight.man | 1 + libX11/man/DisplayHeightMM.man | 1 + libX11/man/DisplayOfScreen.man | 1 + libX11/man/DisplayPlanes.man | 1 + libX11/man/DisplayString.man | 1 + libX11/man/DisplayWidth.man | 1 + libX11/man/DisplayWidthMM.man | 1 + libX11/man/DoesBackingStore.man | 1 + libX11/man/DoesSaveUnders.man | 1 + libX11/man/EventMaskOfScreen.man | 1 + libX11/man/HeightMMOfScreen.man | 1 + libX11/man/HeightOfScreen.man | 1 + libX11/man/IsFunctionKey.man | 1 + libX11/man/IsKeypadKey.man | 1 + libX11/man/IsMiscFunctionKey.man | 1 + libX11/man/IsModifierKey.man | 1 + libX11/man/IsPFKey.man | 1 + libX11/man/IsPrivateKeypadKey.man | 1 + libX11/man/LastKnownRequestProcessed.man | 1 + libX11/man/Makefile.am | 694 +--- libX11/man/MaxCmapsOfScreen.man | 1 + libX11/man/MinCmapsOfScreen.man | 1 + libX11/man/NextRequest.man | 1 + libX11/man/PlanesOfScreen.man | 1 + libX11/man/ProtocolRevision.man | 1 + libX11/man/ProtocolVersion.man | 1 + libX11/man/QLength.man | 1 + libX11/man/RootWindow.man | 1 + libX11/man/RootWindowOfScreen.man | 1 + libX11/man/ScreenCount.man | 1 + libX11/man/ScreenNumberOfCCC.man | 1 + libX11/man/ScreenOfDisplay.man | 1 + libX11/man/ScreenWhitePointOfCCC.man | 1 + libX11/man/ServerVendor.man | 1 + libX11/man/VendorRelease.man | 1 + libX11/man/VisualOfCCC.man | 1 + libX11/man/WhitePixel.man | 1 + libX11/man/WhitePixelOfScreen.man | 1 + libX11/man/WidthMMOfScreen.man | 1 + libX11/man/WidthOfScreen.man | 1 + libX11/man/XActivateScreenSaver.man | 1 + libX11/man/XAddHosts.man | 1 + libX11/man/XAddPixel.man | 1 + libX11/man/XAddToSaveSet.man | 1 + libX11/man/XAllocColorCells.man | 1 + libX11/man/XAllocColorPlanes.man | 1 + libX11/man/XAllocNamedColor.man | 1 + libX11/man/XArc.man | 1 + libX11/man/XAutoRepeatOff.man | 1 + libX11/man/XAutoRepeatOn.man | 1 + libX11/man/XBaseFontNameListOfFontSet.man | 1 + libX11/man/XBell.man | 1 + libX11/man/XChangeActivePointerGrab.man | 1 + libX11/man/XChangeGC.man | 1 + libX11/man/XChangeProperty.man | 1 + libX11/man/XChar2b.man | 1 + libX11/man/XCharStruct.man | 1 + libX11/man/XCheckIfEvent.man | 1 + libX11/man/XCheckMaskEvent.man | 1 + libX11/man/XCheckTypedEvent.man | 1 + libX11/man/XCheckTypedWindowEvent.man | 1 + libX11/man/XCheckWindowEvent.man | 1 + libX11/man/XCirculateSubwindows.man | 1 + libX11/man/XCirculateSubwindowsDown.man | 1 + libX11/man/XCirculateSubwindowsUp.man | 1 + libX11/man/XClassHint.man | 1 + libX11/man/XClearWindow.man | 1 + libX11/man/XClipBox.man | 1 + libX11/man/XCloseDisplay.man | 1 + libX11/man/XCloseIM.man | 1 + libX11/man/XCloseOM.man | 1 + libX11/man/XColor.man | 1 + libX11/man/XCompose.man | 1 + libX11/man/XContextDependentDrawing.man | 1 + libX11/man/XContextualDrawing.man | 1 + libX11/man/XConvertCase.man | 1 + libX11/man/XConvertSelection.man | 1 + libX11/man/XCopyColormapAndFree.man | 1 + libX11/man/XCopyGC.man | 1 + libX11/man/XCopyPlane.man | 1 + libX11/man/XCreateBitmapFromData.man | 1 + libX11/man/XCreateGlyphCursor.man | 1 + libX11/man/XCreateImage.man | 1 + libX11/man/XCreatePixmapCursor.man | 1 + libX11/man/XCreatePixmapFromBitmapData.man | 1 + libX11/man/XCreateSimpleWindow.man | 1 + libX11/man/XDefaultString.man | 1 + libX11/man/XDeleteContext.man | 1 + libX11/man/XDeleteModifiermapEntry.man | 1 + libX11/man/XDeleteProperty.man | 1 + libX11/man/XDestroyIC.man | 1 + libX11/man/XDestroyImage.man | 1 + libX11/man/XDestroyOC.man | 1 + libX11/man/XDestroyRegion.man | 1 + libX11/man/XDestroySubwindows.man | 1 + libX11/man/XDirectionalDependentDrawing.man | 1 + libX11/man/XDisableAccessControl.man | 1 + libX11/man/XDisplayKeycodes.man | 1 + libX11/man/XDisplayMotionBufferSize.man | 1 + libX11/man/XDisplayName.man | 1 + libX11/man/XDisplayOfIM.man | 1 + libX11/man/XDisplayOfOM.man | 1 + libX11/man/XDrawArcs.man | 1 + libX11/man/XDrawImageString16.man | 1 + libX11/man/XDrawLines.man | 1 + libX11/man/XDrawPoints.man | 1 + libX11/man/XDrawRectangles.man | 1 + libX11/man/XDrawSegments.man | 1 + libX11/man/XDrawString16.man | 1 + libX11/man/XDrawText16.man | 1 + libX11/man/XEnableAccessControl.man | 1 + libX11/man/XEqualRegion.man | 1 + libX11/man/XEvent.man | 1 + libX11/man/XEventsQueued.man | 1 + libX11/man/XExtendedMaxRequestSize.man | 1 + libX11/man/XFetchBuffer.man | 1 + libX11/man/XFetchBytes.man | 1 + libX11/man/XFetchName.man | 1 + libX11/man/XFillArc.man | 1 + libX11/man/XFillArcs.man | 1 + libX11/man/XFillPolygon.man | 1 + libX11/man/XFillRectangles.man | 1 + libX11/man/XFindContext.man | 1 + libX11/man/XFontProp.man | 1 + libX11/man/XFontStruct.man | 1 + libX11/man/XForceScreenSaver.man | 1 + libX11/man/XFreeColormap.man | 1 + libX11/man/XFreeColors.man | 1 + libX11/man/XFreeCursor.man | 1 + libX11/man/XFreeEventData.man | 1 + libX11/man/XFreeExtensionList.man | 1 + libX11/man/XFreeFont.man | 1 + libX11/man/XFreeFontInfo.man | 1 + libX11/man/XFreeFontNames.man | 1 + libX11/man/XFreeFontPath.man | 1 + libX11/man/XFreeFontSet.man | 1 + libX11/man/XFreeGC.man | 1 + libX11/man/XFreeModifierMap.man | 1 + libX11/man/XFreePixmap.man | 1 + libX11/man/XFreeStringList.man | 1 + libX11/man/XGCValues.man | 1 + libX11/man/XGContextFromGC.man | 1 + libX11/man/XGenericEventCookie.man | 1 + libX11/man/XGetAtomName.man | 1 + libX11/man/XGetAtomNames.man | 1 + libX11/man/XGetClassHint.man | 1 + libX11/man/XGetCommand.man | 1 + libX11/man/XGetErrorDatabaseText.man | 1 + libX11/man/XGetErrorText.man | 1 + libX11/man/XGetFontPath.man | 1 + libX11/man/XGetFontProperty.man | 1 + libX11/man/XGetGCValues.man | 1 + libX11/man/XGetGeometry.man | 1 + libX11/man/XGetICValues.man | 1 + libX11/man/XGetIMValues.man | 1 + libX11/man/XGetIconName.man | 1 + libX11/man/XGetIconSizes.man | 1 + libX11/man/XGetImage.man | 1 + libX11/man/XGetInputFocus.man | 1 + libX11/man/XGetKeyboardControl.man | 1 + libX11/man/XGetKeyboardMapping.man | 1 + libX11/man/XGetModifierMapping.man | 1 + libX11/man/XGetMotionEvents.man | 1 + libX11/man/XGetOCValues.man | 1 + libX11/man/XGetOMValues.man | 1 + libX11/man/XGetPixel.man | 1 + libX11/man/XGetPointerControl.man | 1 + libX11/man/XGetPointerMapping.man | 1 + libX11/man/XGetRGBColormaps.man | 1 + libX11/man/XGetScreenSaver.man | 1 + libX11/man/XGetSelectionOwner.man | 1 + libX11/man/XGetSubImage.man | 1 + libX11/man/XGetTextProperty.man | 1 + libX11/man/XGetTransientForHint.man | 1 + libX11/man/XGetWMClientMachine.man | 1 + libX11/man/XGetWMColormapWindows.man | 1 + libX11/man/XGetWMHints.man | 1 + libX11/man/XGetWMIconName.man | 1 + libX11/man/XGetWMName.man | 1 + libX11/man/XGetWMNormalHints.man | 1 + libX11/man/XGetWMProtocols.man | 1 + libX11/man/XGetWMSizeHints.man | 1 + libX11/man/XHostAddress.man | 1 + libX11/man/XIMOfIC.man | 1 + libX11/man/XIconSize.man | 1 + libX11/man/XInsertModifiermapEntry.man | 1 + libX11/man/XInternAtoms.man | 1 + libX11/man/XInternalConnectionNumbers.man | 1 + libX11/man/XKeyEvent.man | 1 + libX11/man/XKeyboardControl.man | 1 + libX11/man/XKeycodeToKeysym.man | 1 + libX11/man/XKeysymToKeycode.man | 1 + libX11/man/XKeysymToString.man | 1 + libX11/man/XKillClient.man | 1 + libX11/man/XListDepths.man | 1 + libX11/man/XListExtensions.man | 1 + libX11/man/XListFontsWithInfo.man | 1 + libX11/man/XListHosts.man | 1 + libX11/man/XListInstalledColormaps.man | 1 + libX11/man/XListPixmapFormats.man | 1 + libX11/man/XListProperties.man | 1 + libX11/man/XLoadQueryFont.man | 1 + libX11/man/XLocaleOfFontSet.man | 1 + libX11/man/XLocaleOfIM.man | 1 + libX11/man/XLocaleOfOM.man | 1 + libX11/man/XLockDisplay.man | 1 + libX11/man/XLookupColor.man | 1 + libX11/man/XLookupString.man | 1 + libX11/man/XLowerWindow.man | 1 + libX11/man/XMapRaised.man | 1 + libX11/man/XMapSubwindows.man | 1 + libX11/man/XMappingEvent.man | 1 + libX11/man/XMaskEvent.man | 1 + libX11/man/XMatchVisualInfo.man | 1 + libX11/man/XMaxRequestSize.man | 1 + libX11/man/XModifierKeymap.man | 1 + libX11/man/XMotionEvent.man | 1 + libX11/man/XMoveResizeWindow.man | 1 + libX11/man/XMoveWindow.man | 1 + libX11/man/XNewModifiermap.man | 1 + libX11/man/XNoExposeEvent.man | 1 + libX11/man/XOMOfOC.man | 1 + libX11/man/XOffsetRegion.man | 1 + libX11/man/XParseColor.man | 1 + libX11/man/XPeekEvent.man | 1 + libX11/man/XPeekIfEvent.man | 1 + libX11/man/XPending.man | 1 + libX11/man/XPixmapFormatValues.man | 1 + libX11/man/XPoint.man | 1 + libX11/man/XPointInRegion.man | 1 + libX11/man/XProcessInternalConnection.man | 1 + libX11/man/XPutPixel.man | 1 + libX11/man/XQueryBestCursor.man | 1 + libX11/man/XQueryBestStipple.man | 1 + libX11/man/XQueryBestTile.man | 1 + libX11/man/XQueryColors.man | 1 + libX11/man/XQueryFont.man | 1 + libX11/man/XQueryKeymap.man | 1 + libX11/man/XQueryTextExtents.man | 1 + libX11/man/XQueryTextExtents16.man | 1 + libX11/man/XReadBitmapFileData.man | 1 + libX11/man/XRebindKeysym.man | 1 + libX11/man/XReconfigureWMWindow.man | 1 + libX11/man/XRectInRegion.man | 1 + libX11/man/XRectangle.man | 1 + libX11/man/XRefreshKeyboardMapping.man | 1 + libX11/man/XRegisterIMInstantiateCallback.man | 1 + libX11/man/XRemoveConnectionWatch.man | 1 + libX11/man/XRemoveFromSaveSet.man | 1 + libX11/man/XRemoveHost.man | 1 + libX11/man/XRemoveHosts.man | 1 + libX11/man/XResetScreenSaver.man | 1 + libX11/man/XResizeWindow.man | 1 + libX11/man/XRestackWindows.man | 1 + libX11/man/XRotateBuffers.man | 1 + libX11/man/XRotateWindowProperties.man | 1 + libX11/man/XScreenNumberOfScreen.man | 1 + libX11/man/XScreenResourceString.man | 1 + libX11/man/XSegment.man | 1 + libX11/man/XSetAccessControl.man | 1 + libX11/man/XSetAfterFunction.man | 1 + libX11/man/XSetBackground.man | 1 + libX11/man/XSetClassHint.man | 1 + libX11/man/XSetClipMask.man | 1 + libX11/man/XSetClipRectangles.man | 1 + libX11/man/XSetDashes.man | 1 + libX11/man/XSetFillRule.man | 1 + libX11/man/XSetForeground.man | 1 + libX11/man/XSetFunction.man | 1 + libX11/man/XSetGraphicsExposure.man | 1 + libX11/man/XSetIMValues.man | 1 + libX11/man/XSetIOErrorHandler.man | 1 + libX11/man/XSetIconName.man | 1 + libX11/man/XSetIconSizes.man | 1 + libX11/man/XSetLocaleModifiers.man | 1 + libX11/man/XSetModifierMapping.man | 1 + libX11/man/XSetOCValues.man | 1 + libX11/man/XSetOMValues.man | 1 + libX11/man/XSetPlaneMask.man | 1 + libX11/man/XSetRGBColormaps.man | 1 + libX11/man/XSetRegion.man | 1 + libX11/man/XSetStipple.man | 1 + libX11/man/XSetSubwindowMode.man | 1 + libX11/man/XSetTSOrigin.man | 1 + libX11/man/XSetWMHints.man | 1 + libX11/man/XSetWMNormalHints.man | 1 + libX11/man/XSetWMSizeHints.man | 1 + libX11/man/XSetWindowAttributes.man | 1 + libX11/man/XSetWindowBackground.man | 1 + libX11/man/XSetWindowBackgroundPixmap.man | 1 + libX11/man/XSetWindowBorder.man | 1 + libX11/man/XSetWindowBorderPixmap.man | 1 + libX11/man/XSetWindowBorderWidth.man | 1 + libX11/man/XSetWindowColormap.man | 1 + libX11/man/XShrinkRegion.man | 1 + libX11/man/XSizeHints.man | 1 + libX11/man/XStandardColormap.man | 1 + libX11/man/XStoreBuffer.man | 1 + libX11/man/XStoreColor.man | 1 + libX11/man/XStoreName.man | 1 + libX11/man/XStoreNamedColor.man | 1 + libX11/man/XSubImage.man | 1 + libX11/man/XSubtractRegion.man | 1 + libX11/man/XSync.man | 1 + libX11/man/XTextExtents16.man | 1 + libX11/man/XTextItem.man | 1 + libX11/man/XTextItem16.man | 1 + libX11/man/XTextProperty.man | 1 + libX11/man/XTextPropertyToStringList.man | 1 + libX11/man/XTextWidth16.man | 1 + libX11/man/XTimeCoord.man | 1 + libX11/man/XUndefineCursor.man | 1 + libX11/man/XUngrabButton.man | 1 + libX11/man/XUngrabKey.man | 1 + libX11/man/XUngrabKeyboard.man | 1 + libX11/man/XUngrabPointer.man | 1 + libX11/man/XUngrabServer.man | 1 + libX11/man/XUninstallColormap.man | 1 + libX11/man/XUnionRectWithRegion.man | 1 + libX11/man/XUnionRegion.man | 1 + libX11/man/XUniqueContext.man | 1 + libX11/man/XUnloadFont.man | 1 + libX11/man/XUnlockDisplay.man | 1 + libX11/man/XUnmapSubwindows.man | 1 + libX11/man/XUnregisterIMInstantiateCallback.man | 1 + libX11/man/XUnsetICFocus.man | 1 + libX11/man/XVisualIDFromVisual.man | 1 + libX11/man/XVisualInfo.man | 1 + libX11/man/XWMGeometry.man | 1 + libX11/man/XWMHints.man | 1 + libX11/man/XWindowAttributes.man | 1 + libX11/man/XWindowChanges.man | 1 + libX11/man/XWindowEvent.man | 1 + libX11/man/XWithdrawWindow.man | 1 + libX11/man/XWriteBitmapFile.man | 1 + libX11/man/XXorRegion.man | 1 + libX11/man/XcmsAllocNamedColor.man | 1 + libX11/man/XcmsCIELab.man | 1 + libX11/man/XcmsCIELabQueryMaxL.man | 1 + libX11/man/XcmsCIELabQueryMaxLC.man | 1 + libX11/man/XcmsCIELabQueryMinL.man | 1 + libX11/man/XcmsCIELuv.man | 1 + libX11/man/XcmsCIELuvQueryMaxL.man | 1 + libX11/man/XcmsCIELuvQueryMaxLC.man | 1 + libX11/man/XcmsCIELuvQueryMinL.man | 1 + libX11/man/XcmsCIEXYZ.man | 1 + libX11/man/XcmsCIEuvY.man | 1 + libX11/man/XcmsCIExyY.man | 1 + libX11/man/XcmsFreeCCC.man | 1 + libX11/man/XcmsLookupColor.man | 1 + libX11/man/XcmsPad.man | 1 + libX11/man/XcmsQueryBlue.man | 1 + libX11/man/XcmsQueryColors.man | 1 + libX11/man/XcmsQueryGreen.man | 1 + libX11/man/XcmsQueryRed.man | 1 + libX11/man/XcmsQueryWhite.man | 1 + libX11/man/XcmsRGB.man | 1 + libX11/man/XcmsRGBi.man | 1 + libX11/man/XcmsSetCCCOfColormap.man | 1 + libX11/man/XcmsSetWhiteAdjustProc.man | 1 + libX11/man/XcmsStoreColors.man | 1 + libX11/man/XcmsTekHVC.man | 1 + libX11/man/XcmsTekHVCQueryMaxV.man | 1 + libX11/man/XcmsTekHVCQueryMaxVC.man | 1 + libX11/man/XcmsTekHVCQueryMaxVSamples.man | 1 + libX11/man/XcmsTekHVCQueryMinV.man | 1 + libX11/man/XmbSetWMProperties.man | 1 + libX11/man/XmbTextPropertyToTextList.man | 1 + libX11/man/XrmCombineDatabase.man | 1 + libX11/man/XrmCombineFileDatabase.man | 1 + libX11/man/XrmDestroyDatabase.man | 1 + libX11/man/XrmGetDatabase.man | 1 + libX11/man/XrmGetStringDatabase.man | 1 + libX11/man/XrmLocaleOfDatabase.man | 1 + libX11/man/XrmOptionDescRec.man | 1 + libX11/man/XrmOptionKind.man | 1 + libX11/man/XrmParseCommand.man | 1 + libX11/man/XrmPermStringToQuark.man | 1 + libX11/man/XrmPutFileDatabase.man | 1 + libX11/man/XrmPutLineResource.man | 1 + libX11/man/XrmPutStringResource.man | 1 + libX11/man/XrmQGetResource.man | 1 + libX11/man/XrmQGetSearchList.man | 1 + libX11/man/XrmQGetSearchResource.man | 1 + libX11/man/XrmQPutResource.man | 1 + libX11/man/XrmQPutStringResource.man | 1 + libX11/man/XrmQuarkToString.man | 1 + libX11/man/XrmSetDatabase.man | 1 + libX11/man/XrmStringToBindingQuarkList.man | 1 + libX11/man/XrmStringToQuark.man | 1 + libX11/man/XrmStringToQuarkList.man | 1 + libX11/man/XrmValue.man | 1 + libX11/man/Xutf8DrawImageString.man | 1 + libX11/man/Xutf8DrawString.man | 1 + libX11/man/Xutf8DrawText.man | 1 + libX11/man/Xutf8LookupString.man | 1 + libX11/man/Xutf8ResetIC.man | 1 + libX11/man/Xutf8SetWMProperties.man | 1 + libX11/man/Xutf8TextEscapement.man | 1 + libX11/man/Xutf8TextExtents.man | 1 + libX11/man/Xutf8TextListToTextProperty.man | 1 + libX11/man/Xutf8TextPerCharExtents.man | 1 + libX11/man/Xutf8TextPropertyToTextList.man | 1 + libX11/man/XwcDrawImageString.man | 1 + libX11/man/XwcDrawString.man | 1 + libX11/man/XwcDrawText.man | 1 + libX11/man/XwcFreeStringList.man | 1 + libX11/man/XwcLookupString.man | 1 + libX11/man/XwcResetIC.man | 1 + libX11/man/XwcTextEscapement.man | 1 + libX11/man/XwcTextExtents.man | 1 + libX11/man/XwcTextListToTextProperty.man | 1 + libX11/man/XwcTextPerCharExtents.man | 1 + libX11/man/XwcTextPropertyToTextList.man | 1 + libX11/man/xkb/Makefile.am | 2 - libXau/Makefile.am | 35 +- libXau/Xau.man | 134 - libXau/configure.ac | 7 +- libXau/man/Makefile.am | 47 + libXau/man/Xau.man | 134 + libXau/man/XauDisposeAuth.man | 1 + libXau/man/XauFileName.man | 1 + libXau/man/XauGetAuthByAddr.man | 1 + libXau/man/XauGetBestAuthByAddr.man | 1 + libXau/man/XauLockAuth.man | 1 + libXau/man/XauReadAuth.man | 1 + libXau/man/XauUnlockAuth.man | 1 + libXau/man/XauWriteAuth.man | 1 + libXext/man/Makefile.am | 135 +- libXext/man/XShapeCombineMask.man | 1 + libXext/man/XShapeCombineRectangles.man | 1 + libXext/man/XShapeCombineRegion.man | 1 + libXext/man/XShapeCombineShape.man | 1 + libXext/man/XShapeGetRectangles.man | 1 + libXext/man/XShapeInputSelected.man | 1 + libXext/man/XShapeOffsetShape.man | 1 + libXext/man/XShapeQueryExtension.man | 1 + libXext/man/XShapeQueryExtents.man | 1 + libXext/man/XShapeQueryVersion.man | 1 + libXext/man/XShapeSelectInput.man | 1 + libXext/man/XShmAttach.man | 1 + libXext/man/XShmCreateImage.man | 1 + libXext/man/XShmCreatePixmap.man | 1 + libXext/man/XShmDetach.man | 1 + libXext/man/XShmGetEventBase.man | 1 + libXext/man/XShmGetImage.man | 1 + libXext/man/XShmPixmapFormat.man | 1 + libXext/man/XShmPutImage.man | 1 + libXext/man/XShmQueryExtension.man | 1 + libXext/man/XShmQueryVersion.man | 1 + libXext/man/XeviGetVisualInfo.man | 1 + libXext/man/XeviQueryExtension.man | 1 + libXext/man/XeviQueryVersion.man | 1 + libXext/man/XmbufChangeBufferAttributes.man | 1 + libXext/man/XmbufChangeWindowAttributes.man | 1 + libXext/man/XmbufCreateBuffers.man | 1 + libXext/man/XmbufCreateStereoWindow.man | 1 + libXext/man/XmbufDestroyBuffers.man | 1 + libXext/man/XmbufDisplayBuffers.man | 1 + libXext/man/XmbufGetBufferAttributes.man | 1 + libXext/man/XmbufGetScreenInfo.man | 1 + libXext/man/XmbufGetVersion.man | 1 + libXext/man/XmbufGetWindowAttributes.man | 1 + libXext/man/XmbufQueryExtension.man | 1 + libXinerama/man/Makefile.am | 33 +- libXinerama/man/XineramaIsActive.man | 1 + libXinerama/man/XineramaQueryExtension.man | 1 + libXinerama/man/XineramaQueryScreens.man | 1 + libXinerama/man/XineramaQueryVersion.man | 1 + libxcb/NEWS | 837 ++--- libxcb/configure.ac | 2 +- pixman/configure.ac | 12 +- pixman/pixman/pixman-arm-neon-asm.S | 3519 ++++++++++---------- pixman/pixman/pixman-arm-neon.c | 706 ++-- pixman/pixman/pixman-fast-path.c | 7 - pixman/pixman/pixman-image.c | 37 +- pixman/pixman/pixman-private.h | 2 + pixman/pixman/pixman.c | 11 + pixman/test/Makefile.am | 4 + pixman/test/alpha-loop.c | 29 + pixman/test/utils.c | 33 + pixman/test/utils.h | 3 + xorg-server/Xext/xace.c | 170 +- xorg-server/Xi/exevents.c | 6 + xorg-server/configure.ac | 4 +- xorg-server/dix/devices.c | 8 +- xorg-server/dix/dixfonts.c | 101 +- xorg-server/dix/getevents.c | 10 +- xorg-server/doc/xml/Xserver-spec.xml | 152 +- xorg-server/doc/xml/xmlrules.in | 2 + xorg-server/fb/fbpict.c | 24 +- xorg-server/hw/xfree86/common/xf86Xinput.c | 3 - xorg-server/hw/xfree86/parser/Input.c | 7 +- xorg-server/hw/xfree86/parser/InputClass.c | 6 +- xorg-server/hw/xwin/glx/indirect.c | 14 +- xorg-server/include/closestr.h | 307 +- xorg-server/include/input.h | 6 + xorg-server/include/privates.h | 4 +- xorg-server/miext/rootless/rootlessCommon.c | 3 + xorg-server/xkb/xkbActions.c | 93 +- .../xkeyboard-config/rules/base.extras.xml.in | 16 + .../rules/extras/variantsMapping.lst | 1 + .../xkeyboard-config/symbols/extras/Makefile.am | 2 +- xorg-server/xkeyboard-config/symbols/extras/ru | 59 + xorg-server/xkeyboard-config/symbols/inet | 5 +- 525 files changed, 4088 insertions(+), 3818 deletions(-) create mode 100644 libX11/man/BitmapBitOrder.man create mode 100644 libX11/man/BitmapPad.man create mode 100644 libX11/man/BitmapUnit.man create mode 100644 libX11/man/BlackPixel.man create mode 100644 libX11/man/CellsOfScreen.man create mode 100644 libX11/man/ClientWhitePointOfCCC.man create mode 100644 libX11/man/ConnectionNumber.man create mode 100644 libX11/man/DefaultColormap.man create mode 100644 libX11/man/DefaultColormapOfScreen.man create mode 100644 libX11/man/DefaultDepth.man create mode 100644 libX11/man/DefaultDepthOfScreen.man create mode 100644 libX11/man/DefaultGC.man create mode 100644 libX11/man/DefaultGCOfScreen.man create mode 100644 libX11/man/DefaultRootWindow.man create mode 100644 libX11/man/DefaultScreen.man create mode 100644 libX11/man/DefaultScreenOfDisplay.man create mode 100644 libX11/man/DefaultVisual.man create mode 100644 libX11/man/DefaultVisualOfScreen.man create mode 100644 libX11/man/DisplayCells.man create mode 100644 libX11/man/DisplayHeight.man create mode 100644 libX11/man/DisplayHeightMM.man create mode 100644 libX11/man/DisplayOfScreen.man create mode 100644 libX11/man/DisplayPlanes.man create mode 100644 libX11/man/DisplayString.man create mode 100644 libX11/man/DisplayWidth.man create mode 100644 libX11/man/DisplayWidthMM.man create mode 100644 libX11/man/DoesBackingStore.man create mode 100644 libX11/man/DoesSaveUnders.man create mode 100644 libX11/man/EventMaskOfScreen.man create mode 100644 libX11/man/HeightMMOfScreen.man create mode 100644 libX11/man/HeightOfScreen.man create mode 100644 libX11/man/IsFunctionKey.man create mode 100644 libX11/man/IsKeypadKey.man create mode 100644 libX11/man/IsMiscFunctionKey.man create mode 100644 libX11/man/IsModifierKey.man create mode 100644 libX11/man/IsPFKey.man create mode 100644 libX11/man/IsPrivateKeypadKey.man create mode 100644 libX11/man/LastKnownRequestProcessed.man create mode 100644 libX11/man/MaxCmapsOfScreen.man create mode 100644 libX11/man/MinCmapsOfScreen.man create mode 100644 libX11/man/NextRequest.man create mode 100644 libX11/man/PlanesOfScreen.man create mode 100644 libX11/man/ProtocolRevision.man create mode 100644 libX11/man/ProtocolVersion.man create mode 100644 libX11/man/QLength.man create mode 100644 libX11/man/RootWindow.man create mode 100644 libX11/man/RootWindowOfScreen.man create mode 100644 libX11/man/ScreenCount.man create mode 100644 libX11/man/ScreenNumberOfCCC.man create mode 100644 libX11/man/ScreenOfDisplay.man create mode 100644 libX11/man/ScreenWhitePointOfCCC.man create mode 100644 libX11/man/ServerVendor.man create mode 100644 libX11/man/VendorRelease.man create mode 100644 libX11/man/VisualOfCCC.man create mode 100644 libX11/man/WhitePixel.man create mode 100644 libX11/man/WhitePixelOfScreen.man create mode 100644 libX11/man/WidthMMOfScreen.man create mode 100644 libX11/man/WidthOfScreen.man create mode 100644 libX11/man/XActivateScreenSaver.man create mode 100644 libX11/man/XAddHosts.man create mode 100644 libX11/man/XAddPixel.man create mode 100644 libX11/man/XAddToSaveSet.man create mode 100644 libX11/man/XAllocColorCells.man create mode 100644 libX11/man/XAllocColorPlanes.man create mode 100644 libX11/man/XAllocNamedColor.man create mode 100644 libX11/man/XArc.man create mode 100644 libX11/man/XAutoRepeatOff.man create mode 100644 libX11/man/XAutoRepeatOn.man create mode 100644 libX11/man/XBaseFontNameListOfFontSet.man create mode 100644 libX11/man/XBell.man create mode 100644 libX11/man/XChangeActivePointerGrab.man create mode 100644 libX11/man/XChangeGC.man create mode 100644 libX11/man/XChangeProperty.man create mode 100644 libX11/man/XChar2b.man create mode 100644 libX11/man/XCharStruct.man create mode 100644 libX11/man/XCheckIfEvent.man create mode 100644 libX11/man/XCheckMaskEvent.man create mode 100644 libX11/man/XCheckTypedEvent.man create mode 100644 libX11/man/XCheckTypedWindowEvent.man create mode 100644 libX11/man/XCheckWindowEvent.man create mode 100644 libX11/man/XCirculateSubwindows.man create mode 100644 libX11/man/XCirculateSubwindowsDown.man create mode 100644 libX11/man/XCirculateSubwindowsUp.man create mode 100644 libX11/man/XClassHint.man create mode 100644 libX11/man/XClearWindow.man create mode 100644 libX11/man/XClipBox.man create mode 100644 libX11/man/XCloseDisplay.man create mode 100644 libX11/man/XCloseIM.man create mode 100644 libX11/man/XCloseOM.man create mode 100644 libX11/man/XColor.man create mode 100644 libX11/man/XCompose.man create mode 100644 libX11/man/XContextDependentDrawing.man create mode 100644 libX11/man/XContextualDrawing.man create mode 100644 libX11/man/XConvertCase.man create mode 100644 libX11/man/XConvertSelection.man create mode 100644 libX11/man/XCopyColormapAndFree.man create mode 100644 libX11/man/XCopyGC.man create mode 100644 libX11/man/XCopyPlane.man create mode 100644 libX11/man/XCreateBitmapFromData.man create mode 100644 libX11/man/XCreateGlyphCursor.man create mode 100644 libX11/man/XCreateImage.man create mode 100644 libX11/man/XCreatePixmapCursor.man create mode 100644 libX11/man/XCreatePixmapFromBitmapData.man create mode 100644 libX11/man/XCreateSimpleWindow.man create mode 100644 libX11/man/XDefaultString.man create mode 100644 libX11/man/XDeleteContext.man create mode 100644 libX11/man/XDeleteModifiermapEntry.man create mode 100644 libX11/man/XDeleteProperty.man create mode 100644 libX11/man/XDestroyIC.man create mode 100644 libX11/man/XDestroyImage.man create mode 100644 libX11/man/XDestroyOC.man create mode 100644 libX11/man/XDestroyRegion.man create mode 100644 libX11/man/XDestroySubwindows.man create mode 100644 libX11/man/XDirectionalDependentDrawing.man create mode 100644 libX11/man/XDisableAccessControl.man create mode 100644 libX11/man/XDisplayKeycodes.man create mode 100644 libX11/man/XDisplayMotionBufferSize.man create mode 100644 libX11/man/XDisplayName.man create mode 100644 libX11/man/XDisplayOfIM.man create mode 100644 libX11/man/XDisplayOfOM.man create mode 100644 libX11/man/XDrawArcs.man create mode 100644 libX11/man/XDrawImageString16.man create mode 100644 libX11/man/XDrawLines.man create mode 100644 libX11/man/XDrawPoints.man create mode 100644 libX11/man/XDrawRectangles.man create mode 100644 libX11/man/XDrawSegments.man create mode 100644 libX11/man/XDrawString16.man create mode 100644 libX11/man/XDrawText16.man create mode 100644 libX11/man/XEnableAccessControl.man create mode 100644 libX11/man/XEqualRegion.man create mode 100644 libX11/man/XEvent.man create mode 100644 libX11/man/XEventsQueued.man create mode 100644 libX11/man/XExtendedMaxRequestSize.man create mode 100644 libX11/man/XFetchBuffer.man create mode 100644 libX11/man/XFetchBytes.man create mode 100644 libX11/man/XFetchName.man create mode 100644 libX11/man/XFillArc.man create mode 100644 libX11/man/XFillArcs.man create mode 100644 libX11/man/XFillPolygon.man create mode 100644 libX11/man/XFillRectangles.man create mode 100644 libX11/man/XFindContext.man create mode 100644 libX11/man/XFontProp.man create mode 100644 libX11/man/XFontStruct.man create mode 100644 libX11/man/XForceScreenSaver.man create mode 100644 libX11/man/XFreeColormap.man create mode 100644 libX11/man/XFreeColors.man create mode 100644 libX11/man/XFreeCursor.man create mode 100644 libX11/man/XFreeEventData.man create mode 100644 libX11/man/XFreeExtensionList.man create mode 100644 libX11/man/XFreeFont.man create mode 100644 libX11/man/XFreeFontInfo.man create mode 100644 libX11/man/XFreeFontNames.man create mode 100644 libX11/man/XFreeFontPath.man create mode 100644 libX11/man/XFreeFontSet.man create mode 100644 libX11/man/XFreeGC.man create mode 100644 libX11/man/XFreeModifierMap.man create mode 100644 libX11/man/XFreePixmap.man create mode 100644 libX11/man/XFreeStringList.man create mode 100644 libX11/man/XGCValues.man create mode 100644 libX11/man/XGContextFromGC.man create mode 100644 libX11/man/XGenericEventCookie.man create mode 100644 libX11/man/XGetAtomName.man create mode 100644 libX11/man/XGetAtomNames.man create mode 100644 libX11/man/XGetClassHint.man create mode 100644 libX11/man/XGetCommand.man create mode 100644 libX11/man/XGetErrorDatabaseText.man create mode 100644 libX11/man/XGetErrorText.man create mode 100644 libX11/man/XGetFontPath.man create mode 100644 libX11/man/XGetFontProperty.man create mode 100644 libX11/man/XGetGCValues.man create mode 100644 libX11/man/XGetGeometry.man create mode 100644 libX11/man/XGetICValues.man create mode 100644 libX11/man/XGetIMValues.man create mode 100644 libX11/man/XGetIconName.man create mode 100644 libX11/man/XGetIconSizes.man create mode 100644 libX11/man/XGetImage.man create mode 100644 libX11/man/XGetInputFocus.man create mode 100644 libX11/man/XGetKeyboardControl.man create mode 100644 libX11/man/XGetKeyboardMapping.man create mode 100644 libX11/man/XGetModifierMapping.man create mode 100644 libX11/man/XGetMotionEvents.man create mode 100644 libX11/man/XGetOCValues.man create mode 100644 libX11/man/XGetOMValues.man create mode 100644 libX11/man/XGetPixel.man create mode 100644 libX11/man/XGetPointerControl.man create mode 100644 libX11/man/XGetPointerMapping.man create mode 100644 libX11/man/XGetRGBColormaps.man create mode 100644 libX11/man/XGetScreenSaver.man create mode 100644 libX11/man/XGetSelectionOwner.man create mode 100644 libX11/man/XGetSubImage.man create mode 100644 libX11/man/XGetTextProperty.man create mode 100644 libX11/man/XGetTransientForHint.man create mode 100644 libX11/man/XGetWMClientMachine.man create mode 100644 libX11/man/XGetWMColormapWindows.man create mode 100644 libX11/man/XGetWMHints.man create mode 100644 libX11/man/XGetWMIconName.man create mode 100644 libX11/man/XGetWMName.man create mode 100644 libX11/man/XGetWMNormalHints.man create mode 100644 libX11/man/XGetWMProtocols.man create mode 100644 libX11/man/XGetWMSizeHints.man create mode 100644 libX11/man/XHostAddress.man create mode 100644 libX11/man/XIMOfIC.man create mode 100644 libX11/man/XIconSize.man create mode 100644 libX11/man/XInsertModifiermapEntry.man create mode 100644 libX11/man/XInternAtoms.man create mode 100644 libX11/man/XInternalConnectionNumbers.man create mode 100644 libX11/man/XKeyEvent.man create mode 100644 libX11/man/XKeyboardControl.man create mode 100644 libX11/man/XKeycodeToKeysym.man create mode 100644 libX11/man/XKeysymToKeycode.man create mode 100644 libX11/man/XKeysymToString.man create mode 100644 libX11/man/XKillClient.man create mode 100644 libX11/man/XListDepths.man create mode 100644 libX11/man/XListExtensions.man create mode 100644 libX11/man/XListFontsWithInfo.man create mode 100644 libX11/man/XListHosts.man create mode 100644 libX11/man/XListInstalledColormaps.man create mode 100644 libX11/man/XListPixmapFormats.man create mode 100644 libX11/man/XListProperties.man create mode 100644 libX11/man/XLoadQueryFont.man create mode 100644 libX11/man/XLocaleOfFontSet.man create mode 100644 libX11/man/XLocaleOfIM.man create mode 100644 libX11/man/XLocaleOfOM.man create mode 100644 libX11/man/XLockDisplay.man create mode 100644 libX11/man/XLookupColor.man create mode 100644 libX11/man/XLookupString.man create mode 100644 libX11/man/XLowerWindow.man create mode 100644 libX11/man/XMapRaised.man create mode 100644 libX11/man/XMapSubwindows.man create mode 100644 libX11/man/XMappingEvent.man create mode 100644 libX11/man/XMaskEvent.man create mode 100644 libX11/man/XMatchVisualInfo.man create mode 100644 libX11/man/XMaxRequestSize.man create mode 100644 libX11/man/XModifierKeymap.man create mode 100644 libX11/man/XMotionEvent.man create mode 100644 libX11/man/XMoveResizeWindow.man create mode 100644 libX11/man/XMoveWindow.man create mode 100644 libX11/man/XNewModifiermap.man create mode 100644 libX11/man/XNoExposeEvent.man create mode 100644 libX11/man/XOMOfOC.man create mode 100644 libX11/man/XOffsetRegion.man create mode 100644 libX11/man/XParseColor.man create mode 100644 libX11/man/XPeekEvent.man create mode 100644 libX11/man/XPeekIfEvent.man create mode 100644 libX11/man/XPending.man create mode 100644 libX11/man/XPixmapFormatValues.man create mode 100644 libX11/man/XPoint.man create mode 100644 libX11/man/XPointInRegion.man create mode 100644 libX11/man/XProcessInternalConnection.man create mode 100644 libX11/man/XPutPixel.man create mode 100644 libX11/man/XQueryBestCursor.man create mode 100644 libX11/man/XQueryBestStipple.man create mode 100644 libX11/man/XQueryBestTile.man create mode 100644 libX11/man/XQueryColors.man create mode 100644 libX11/man/XQueryFont.man create mode 100644 libX11/man/XQueryKeymap.man create mode 100644 libX11/man/XQueryTextExtents.man create mode 100644 libX11/man/XQueryTextExtents16.man create mode 100644 libX11/man/XReadBitmapFileData.man create mode 100644 libX11/man/XRebindKeysym.man create mode 100644 libX11/man/XReconfigureWMWindow.man create mode 100644 libX11/man/XRectInRegion.man create mode 100644 libX11/man/XRectangle.man create mode 100644 libX11/man/XRefreshKeyboardMapping.man create mode 100644 libX11/man/XRegisterIMInstantiateCallback.man create mode 100644 libX11/man/XRemoveConnectionWatch.man create mode 100644 libX11/man/XRemoveFromSaveSet.man create mode 100644 libX11/man/XRemoveHost.man create mode 100644 libX11/man/XRemoveHosts.man create mode 100644 libX11/man/XResetScreenSaver.man create mode 100644 libX11/man/XResizeWindow.man create mode 100644 libX11/man/XRestackWindows.man create mode 100644 libX11/man/XRotateBuffers.man create mode 100644 libX11/man/XRotateWindowProperties.man create mode 100644 libX11/man/XScreenNumberOfScreen.man create mode 100644 libX11/man/XScreenResourceString.man create mode 100644 libX11/man/XSegment.man create mode 100644 libX11/man/XSetAccessControl.man create mode 100644 libX11/man/XSetAfterFunction.man create mode 100644 libX11/man/XSetBackground.man create mode 100644 libX11/man/XSetClassHint.man create mode 100644 libX11/man/XSetClipMask.man create mode 100644 libX11/man/XSetClipRectangles.man create mode 100644 libX11/man/XSetDashes.man create mode 100644 libX11/man/XSetFillRule.man create mode 100644 libX11/man/XSetForeground.man create mode 100644 libX11/man/XSetFunction.man create mode 100644 libX11/man/XSetGraphicsExposure.man create mode 100644 libX11/man/XSetIMValues.man create mode 100644 libX11/man/XSetIOErrorHandler.man create mode 100644 libX11/man/XSetIconName.man create mode 100644 libX11/man/XSetIconSizes.man create mode 100644 libX11/man/XSetLocaleModifiers.man create mode 100644 libX11/man/XSetModifierMapping.man create mode 100644 libX11/man/XSetOCValues.man create mode 100644 libX11/man/XSetOMValues.man create mode 100644 libX11/man/XSetPlaneMask.man create mode 100644 libX11/man/XSetRGBColormaps.man create mode 100644 libX11/man/XSetRegion.man create mode 100644 libX11/man/XSetStipple.man create mode 100644 libX11/man/XSetSubwindowMode.man create mode 100644 libX11/man/XSetTSOrigin.man create mode 100644 libX11/man/XSetWMHints.man create mode 100644 libX11/man/XSetWMNormalHints.man create mode 100644 libX11/man/XSetWMSizeHints.man create mode 100644 libX11/man/XSetWindowAttributes.man create mode 100644 libX11/man/XSetWindowBackground.man create mode 100644 libX11/man/XSetWindowBackgroundPixmap.man create mode 100644 libX11/man/XSetWindowBorder.man create mode 100644 libX11/man/XSetWindowBorderPixmap.man create mode 100644 libX11/man/XSetWindowBorderWidth.man create mode 100644 libX11/man/XSetWindowColormap.man create mode 100644 libX11/man/XShrinkRegion.man create mode 100644 libX11/man/XSizeHints.man create mode 100644 libX11/man/XStandardColormap.man create mode 100644 libX11/man/XStoreBuffer.man create mode 100644 libX11/man/XStoreColor.man create mode 100644 libX11/man/XStoreName.man create mode 100644 libX11/man/XStoreNamedColor.man create mode 100644 libX11/man/XSubImage.man create mode 100644 libX11/man/XSubtractRegion.man create mode 100644 libX11/man/XSync.man create mode 100644 libX11/man/XTextExtents16.man create mode 100644 libX11/man/XTextItem.man create mode 100644 libX11/man/XTextItem16.man create mode 100644 libX11/man/XTextProperty.man create mode 100644 libX11/man/XTextPropertyToStringList.man create mode 100644 libX11/man/XTextWidth16.man create mode 100644 libX11/man/XTimeCoord.man create mode 100644 libX11/man/XUndefineCursor.man create mode 100644 libX11/man/XUngrabButton.man create mode 100644 libX11/man/XUngrabKey.man create mode 100644 libX11/man/XUngrabKeyboard.man create mode 100644 libX11/man/XUngrabPointer.man create mode 100644 libX11/man/XUngrabServer.man create mode 100644 libX11/man/XUninstallColormap.man create mode 100644 libX11/man/XUnionRectWithRegion.man create mode 100644 libX11/man/XUnionRegion.man create mode 100644 libX11/man/XUniqueContext.man create mode 100644 libX11/man/XUnloadFont.man create mode 100644 libX11/man/XUnlockDisplay.man create mode 100644 libX11/man/XUnmapSubwindows.man create mode 100644 libX11/man/XUnregisterIMInstantiateCallback.man create mode 100644 libX11/man/XUnsetICFocus.man create mode 100644 libX11/man/XVisualIDFromVisual.man create mode 100644 libX11/man/XVisualInfo.man create mode 100644 libX11/man/XWMGeometry.man create mode 100644 libX11/man/XWMHints.man create mode 100644 libX11/man/XWindowAttributes.man create mode 100644 libX11/man/XWindowChanges.man create mode 100644 libX11/man/XWindowEvent.man create mode 100644 libX11/man/XWithdrawWindow.man create mode 100644 libX11/man/XWriteBitmapFile.man create mode 100644 libX11/man/XXorRegion.man create mode 100644 libX11/man/XcmsAllocNamedColor.man create mode 100644 libX11/man/XcmsCIELab.man create mode 100644 libX11/man/XcmsCIELabQueryMaxL.man create mode 100644 libX11/man/XcmsCIELabQueryMaxLC.man create mode 100644 libX11/man/XcmsCIELabQueryMinL.man create mode 100644 libX11/man/XcmsCIELuv.man create mode 100644 libX11/man/XcmsCIELuvQueryMaxL.man create mode 100644 libX11/man/XcmsCIELuvQueryMaxLC.man create mode 100644 libX11/man/XcmsCIELuvQueryMinL.man create mode 100644 libX11/man/XcmsCIEXYZ.man create mode 100644 libX11/man/XcmsCIEuvY.man create mode 100644 libX11/man/XcmsCIExyY.man create mode 100644 libX11/man/XcmsFreeCCC.man create mode 100644 libX11/man/XcmsLookupColor.man create mode 100644 libX11/man/XcmsPad.man create mode 100644 libX11/man/XcmsQueryBlue.man create mode 100644 libX11/man/XcmsQueryColors.man create mode 100644 libX11/man/XcmsQueryGreen.man create mode 100644 libX11/man/XcmsQueryRed.man create mode 100644 libX11/man/XcmsQueryWhite.man create mode 100644 libX11/man/XcmsRGB.man create mode 100644 libX11/man/XcmsRGBi.man create mode 100644 libX11/man/XcmsSetCCCOfColormap.man create mode 100644 libX11/man/XcmsSetWhiteAdjustProc.man create mode 100644 libX11/man/XcmsStoreColors.man create mode 100644 libX11/man/XcmsTekHVC.man create mode 100644 libX11/man/XcmsTekHVCQueryMaxV.man create mode 100644 libX11/man/XcmsTekHVCQueryMaxVC.man create mode 100644 libX11/man/XcmsTekHVCQueryMaxVSamples.man create mode 100644 libX11/man/XcmsTekHVCQueryMinV.man create mode 100644 libX11/man/XmbSetWMProperties.man create mode 100644 libX11/man/XmbTextPropertyToTextList.man create mode 100644 libX11/man/XrmCombineDatabase.man create mode 100644 libX11/man/XrmCombineFileDatabase.man create mode 100644 libX11/man/XrmDestroyDatabase.man create mode 100644 libX11/man/XrmGetDatabase.man create mode 100644 libX11/man/XrmGetStringDatabase.man create mode 100644 libX11/man/XrmLocaleOfDatabase.man create mode 100644 libX11/man/XrmOptionDescRec.man create mode 100644 libX11/man/XrmOptionKind.man create mode 100644 libX11/man/XrmParseCommand.man create mode 100644 libX11/man/XrmPermStringToQuark.man create mode 100644 libX11/man/XrmPutFileDatabase.man create mode 100644 libX11/man/XrmPutLineResource.man create mode 100644 libX11/man/XrmPutStringResource.man create mode 100644 libX11/man/XrmQGetResource.man create mode 100644 libX11/man/XrmQGetSearchList.man create mode 100644 libX11/man/XrmQGetSearchResource.man create mode 100644 libX11/man/XrmQPutResource.man create mode 100644 libX11/man/XrmQPutStringResource.man create mode 100644 libX11/man/XrmQuarkToString.man create mode 100644 libX11/man/XrmSetDatabase.man create mode 100644 libX11/man/XrmStringToBindingQuarkList.man create mode 100644 libX11/man/XrmStringToQuark.man create mode 100644 libX11/man/XrmStringToQuarkList.man create mode 100644 libX11/man/XrmValue.man create mode 100644 libX11/man/Xutf8DrawImageString.man create mode 100644 libX11/man/Xutf8DrawString.man create mode 100644 libX11/man/Xutf8DrawText.man create mode 100644 libX11/man/Xutf8LookupString.man create mode 100644 libX11/man/Xutf8ResetIC.man create mode 100644 libX11/man/Xutf8SetWMProperties.man create mode 100644 libX11/man/Xutf8TextEscapement.man create mode 100644 libX11/man/Xutf8TextExtents.man create mode 100644 libX11/man/Xutf8TextListToTextProperty.man create mode 100644 libX11/man/Xutf8TextPerCharExtents.man create mode 100644 libX11/man/Xutf8TextPropertyToTextList.man create mode 100644 libX11/man/XwcDrawImageString.man create mode 100644 libX11/man/XwcDrawString.man create mode 100644 libX11/man/XwcDrawText.man create mode 100644 libX11/man/XwcFreeStringList.man create mode 100644 libX11/man/XwcLookupString.man create mode 100644 libX11/man/XwcResetIC.man create mode 100644 libX11/man/XwcTextEscapement.man create mode 100644 libX11/man/XwcTextExtents.man create mode 100644 libX11/man/XwcTextListToTextProperty.man create mode 100644 libX11/man/XwcTextPerCharExtents.man create mode 100644 libX11/man/XwcTextPropertyToTextList.man delete mode 100644 libXau/Xau.man create mode 100644 libXau/man/Makefile.am create mode 100644 libXau/man/Xau.man create mode 100644 libXau/man/XauDisposeAuth.man create mode 100644 libXau/man/XauFileName.man create mode 100644 libXau/man/XauGetAuthByAddr.man create mode 100644 libXau/man/XauGetBestAuthByAddr.man create mode 100644 libXau/man/XauLockAuth.man create mode 100644 libXau/man/XauReadAuth.man create mode 100644 libXau/man/XauUnlockAuth.man create mode 100644 libXau/man/XauWriteAuth.man create mode 100644 libXext/man/XShapeCombineMask.man create mode 100644 libXext/man/XShapeCombineRectangles.man create mode 100644 libXext/man/XShapeCombineRegion.man create mode 100644 libXext/man/XShapeCombineShape.man create mode 100644 libXext/man/XShapeGetRectangles.man create mode 100644 libXext/man/XShapeInputSelected.man create mode 100644 libXext/man/XShapeOffsetShape.man create mode 100644 libXext/man/XShapeQueryExtension.man create mode 100644 libXext/man/XShapeQueryExtents.man create mode 100644 libXext/man/XShapeQueryVersion.man create mode 100644 libXext/man/XShapeSelectInput.man create mode 100644 libXext/man/XShmAttach.man create mode 100644 libXext/man/XShmCreateImage.man create mode 100644 libXext/man/XShmCreatePixmap.man create mode 100644 libXext/man/XShmDetach.man create mode 100644 libXext/man/XShmGetEventBase.man create mode 100644 libXext/man/XShmGetImage.man create mode 100644 libXext/man/XShmPixmapFormat.man create mode 100644 libXext/man/XShmPutImage.man create mode 100644 libXext/man/XShmQueryExtension.man create mode 100644 libXext/man/XShmQueryVersion.man create mode 100644 libXext/man/XeviGetVisualInfo.man create mode 100644 libXext/man/XeviQueryExtension.man create mode 100644 libXext/man/XeviQueryVersion.man create mode 100644 libXext/man/XmbufChangeBufferAttributes.man create mode 100644 libXext/man/XmbufChangeWindowAttributes.man create mode 100644 libXext/man/XmbufCreateBuffers.man create mode 100644 libXext/man/XmbufCreateStereoWindow.man create mode 100644 libXext/man/XmbufDestroyBuffers.man create mode 100644 libXext/man/XmbufDisplayBuffers.man create mode 100644 libXext/man/XmbufGetBufferAttributes.man create mode 100644 libXext/man/XmbufGetScreenInfo.man create mode 100644 libXext/man/XmbufGetVersion.man create mode 100644 libXext/man/XmbufGetWindowAttributes.man create mode 100644 libXext/man/XmbufQueryExtension.man create mode 100644 libXinerama/man/XineramaIsActive.man create mode 100644 libXinerama/man/XineramaQueryExtension.man create mode 100644 libXinerama/man/XineramaQueryScreens.man create mode 100644 libXinerama/man/XineramaQueryVersion.man create mode 100644 pixman/test/alpha-loop.c create mode 100644 xorg-server/xkeyboard-config/symbols/extras/ru diff --git a/libX11/configure.ac b/libX11/configure.ac index e720748bd..9eb41d019 100644 --- a/libX11/configure.ac +++ b/libX11/configure.ac @@ -30,6 +30,7 @@ XORG_ENABLE_SPECS XORG_WITH_XMLTO(0.0.20) XORG_WITH_FOP XORG_CHECK_SGML_DOCTOOLS(1.5) +XORG_PROG_RAWCPP # Checks for programs. AC_PROG_LIBTOOL diff --git a/libX11/man/BitmapBitOrder.man b/libX11/man/BitmapBitOrder.man new file mode 100644 index 000000000..0a59afe46 --- /dev/null +++ b/libX11/man/BitmapBitOrder.man @@ -0,0 +1 @@ +.so man__libmansuffix__/ImageByteOrder.__libmansuffix__ diff --git a/libX11/man/BitmapPad.man b/libX11/man/BitmapPad.man new file mode 100644 index 000000000..0a59afe46 --- /dev/null +++ b/libX11/man/BitmapPad.man @@ -0,0 +1 @@ +.so man__libmansuffix__/ImageByteOrder.__libmansuffix__ diff --git a/libX11/man/BitmapUnit.man b/libX11/man/BitmapUnit.man new file mode 100644 index 000000000..0a59afe46 --- /dev/null +++ b/libX11/man/BitmapUnit.man @@ -0,0 +1 @@ +.so man__libmansuffix__/ImageByteOrder.__libmansuffix__ diff --git a/libX11/man/BlackPixel.man b/libX11/man/BlackPixel.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/BlackPixel.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/CellsOfScreen.man b/libX11/man/CellsOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/CellsOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ diff --git a/libX11/man/ClientWhitePointOfCCC.man b/libX11/man/ClientWhitePointOfCCC.man new file mode 100644 index 000000000..5feb8b936 --- /dev/null +++ b/libX11/man/ClientWhitePointOfCCC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/DisplayOfCCC.__libmansuffix__ diff --git a/libX11/man/ConnectionNumber.man b/libX11/man/ConnectionNumber.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/ConnectionNumber.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/DefaultColormap.man b/libX11/man/DefaultColormap.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/DefaultColormap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/DefaultColormapOfScreen.man b/libX11/man/DefaultColormapOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/DefaultColormapOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ diff --git a/libX11/man/DefaultDepth.man b/libX11/man/DefaultDepth.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/DefaultDepth.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/DefaultDepthOfScreen.man b/libX11/man/DefaultDepthOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/DefaultDepthOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ diff --git a/libX11/man/DefaultGC.man b/libX11/man/DefaultGC.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/DefaultGC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/DefaultGCOfScreen.man b/libX11/man/DefaultGCOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/DefaultGCOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ diff --git a/libX11/man/DefaultRootWindow.man b/libX11/man/DefaultRootWindow.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/DefaultRootWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/DefaultScreen.man b/libX11/man/DefaultScreen.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/DefaultScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/DefaultScreenOfDisplay.man b/libX11/man/DefaultScreenOfDisplay.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/DefaultScreenOfDisplay.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/DefaultVisual.man b/libX11/man/DefaultVisual.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/DefaultVisual.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/DefaultVisualOfScreen.man b/libX11/man/DefaultVisualOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/DefaultVisualOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ diff --git a/libX11/man/DisplayCells.man b/libX11/man/DisplayCells.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/DisplayCells.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/DisplayHeight.man b/libX11/man/DisplayHeight.man new file mode 100644 index 000000000..0a59afe46 --- /dev/null +++ b/libX11/man/DisplayHeight.man @@ -0,0 +1 @@ +.so man__libmansuffix__/ImageByteOrder.__libmansuffix__ diff --git a/libX11/man/DisplayHeightMM.man b/libX11/man/DisplayHeightMM.man new file mode 100644 index 000000000..0a59afe46 --- /dev/null +++ b/libX11/man/DisplayHeightMM.man @@ -0,0 +1 @@ +.so man__libmansuffix__/ImageByteOrder.__libmansuffix__ diff --git a/libX11/man/DisplayOfScreen.man b/libX11/man/DisplayOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/DisplayOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ diff --git a/libX11/man/DisplayPlanes.man b/libX11/man/DisplayPlanes.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/DisplayPlanes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/DisplayString.man b/libX11/man/DisplayString.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/DisplayString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/DisplayWidth.man b/libX11/man/DisplayWidth.man new file mode 100644 index 000000000..0a59afe46 --- /dev/null +++ b/libX11/man/DisplayWidth.man @@ -0,0 +1 @@ +.so man__libmansuffix__/ImageByteOrder.__libmansuffix__ diff --git a/libX11/man/DisplayWidthMM.man b/libX11/man/DisplayWidthMM.man new file mode 100644 index 000000000..0a59afe46 --- /dev/null +++ b/libX11/man/DisplayWidthMM.man @@ -0,0 +1 @@ +.so man__libmansuffix__/ImageByteOrder.__libmansuffix__ diff --git a/libX11/man/DoesBackingStore.man b/libX11/man/DoesBackingStore.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/DoesBackingStore.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ diff --git a/libX11/man/DoesSaveUnders.man b/libX11/man/DoesSaveUnders.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/DoesSaveUnders.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ diff --git a/libX11/man/EventMaskOfScreen.man b/libX11/man/EventMaskOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/EventMaskOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ diff --git a/libX11/man/HeightMMOfScreen.man b/libX11/man/HeightMMOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/HeightMMOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ diff --git a/libX11/man/HeightOfScreen.man b/libX11/man/HeightOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/HeightOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ diff --git a/libX11/man/IsFunctionKey.man b/libX11/man/IsFunctionKey.man new file mode 100644 index 000000000..2867ce2ad --- /dev/null +++ b/libX11/man/IsFunctionKey.man @@ -0,0 +1 @@ +.so man__libmansuffix__/IsCursorKey.__libmansuffix__ diff --git a/libX11/man/IsKeypadKey.man b/libX11/man/IsKeypadKey.man new file mode 100644 index 000000000..2867ce2ad --- /dev/null +++ b/libX11/man/IsKeypadKey.man @@ -0,0 +1 @@ +.so man__libmansuffix__/IsCursorKey.__libmansuffix__ diff --git a/libX11/man/IsMiscFunctionKey.man b/libX11/man/IsMiscFunctionKey.man new file mode 100644 index 000000000..2867ce2ad --- /dev/null +++ b/libX11/man/IsMiscFunctionKey.man @@ -0,0 +1 @@ +.so man__libmansuffix__/IsCursorKey.__libmansuffix__ diff --git a/libX11/man/IsModifierKey.man b/libX11/man/IsModifierKey.man new file mode 100644 index 000000000..2867ce2ad --- /dev/null +++ b/libX11/man/IsModifierKey.man @@ -0,0 +1 @@ +.so man__libmansuffix__/IsCursorKey.__libmansuffix__ diff --git a/libX11/man/IsPFKey.man b/libX11/man/IsPFKey.man new file mode 100644 index 000000000..2867ce2ad --- /dev/null +++ b/libX11/man/IsPFKey.man @@ -0,0 +1 @@ +.so man__libmansuffix__/IsCursorKey.__libmansuffix__ diff --git a/libX11/man/IsPrivateKeypadKey.man b/libX11/man/IsPrivateKeypadKey.man new file mode 100644 index 000000000..2867ce2ad --- /dev/null +++ b/libX11/man/IsPrivateKeypadKey.man @@ -0,0 +1 @@ +.so man__libmansuffix__/IsCursorKey.__libmansuffix__ diff --git a/libX11/man/LastKnownRequestProcessed.man b/libX11/man/LastKnownRequestProcessed.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/LastKnownRequestProcessed.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/Makefile.am b/libX11/man/Makefile.am index b1bed16c3..ac3f25ea2 100644 --- a/libX11/man/Makefile.am +++ b/libX11/man/Makefile.am @@ -2,34 +2,47 @@ SUBDIRS = xkb libmandir = $(LIB_MAN_DIR) -LIB_MAN_DIR_SUFFIX = $(LIB_MAN_DIR:@mandir@/man%=%) - libman_PRE = \ + $(all_shadows:=.man) \ + $(file_shadows:=.man) \ AllPlanes.man \ BlackPixelOfScreen.man \ DisplayOfCCC.man \ ImageByteOrder.man \ IsCursorKey.man \ + XAddConnectionWatch.man \ + XAddHost.man \ XAllocClassHint.man \ + XAllocColor.man \ XAllocIconSize.man \ - XAllocStandardColormap.man \ XAllocSizeHints.man \ + XAllocStandardColormap.man \ XAllocWMHints.man \ - XAddHost.man \ - XAllocColor.man \ XAllowEvents.man \ XAnyEvent.man \ XButtonEvent.man \ XChangeKeyboardControl.man \ XChangeKeyboardMapping.man \ - XClientMessageEvent.man \ XChangePointerControl.man \ XChangeSaveSet.man \ XChangeWindowAttributes.man \ - XCreateWindowEvent.man \ XCirculateEvent.man \ XCirculateRequestEvent.man \ XClearArea.man \ + XClientMessageEvent.man \ + XcmsAllocColor.man \ + XcmsCCCOfColormap.man \ + XcmsCIELabQueryMaxC.man \ + XcmsCIELuvQueryMaxC.man \ + XcmsColor.man \ + XcmsConvertColors.man \ + XcmsCreateCCC.man \ + XcmsDefaultCCC.man \ + XcmsQueryBlack.man \ + XcmsQueryColor.man \ + XcmsSetWhitePoint.man \ + XcmsStoreColor.man \ + XcmsTekHVCQueryMaxC.man \ XColormapEvent.man \ XConfigureEvent.man \ XConfigureRequestEvent.man \ @@ -40,14 +53,14 @@ libman_PRE = \ XCreateFontSet.man \ XCreateGC.man \ XCreateIC.man \ - XInitImage.man \ XCreateOC.man \ XCreatePixmap.man \ XCreateRegion.man \ + XCreateWindowEvent.man \ XCreateWindow.man \ XCrossingEvent.man \ - XDestroyWindowEvent.man \ XDefineCursor.man \ + XDestroyWindowEvent.man \ XDestroyWindow.man \ XDrawArc.man \ XDrawImageString.man \ @@ -57,96 +70,106 @@ libman_PRE = \ XDrawString.man \ XDrawText.man \ XEmptyRegion.man \ - XrmEnumerateDatabase.man \ - XExtentsOfFontSet.man \ XErrorEvent.man \ XExposeEvent.man \ - XFocusChangeEvent.man \ - XFilterEvent.man \ - XFontSetExtents.man \ + XExtentsOfFontSet.man \ XFillRectangle.man \ + XFilterEvent.man \ XFlush.man \ + XFocusChangeEvent.man \ + XFontSetExtents.man \ XFontsOfFontSet.man \ XFree.man \ - XGraphicsExposeEvent.man \ - XGravityEvent.man \ - XrmGetFileDatabase.man \ - XrmGetResource.man \ XGetEventData.man \ XGetVisualInfo.man \ XGetWindowAttributes.man \ XGetWindowProperty.man \ XGetXCBConnection.man \ XGrabButton.man \ - XGrabKey.man \ XGrabKeyboard.man \ + XGrabKey.man \ XGrabPointer.man \ XGrabServer.man \ + XGraphicsExposeEvent.man \ + XGravityEvent.man \ XIconifyWindow.man \ XIfEvent.man \ - XrmInitialize.man \ + XInitImage.man \ + XInitThreads.man \ XInstallColormap.man \ - XAddConnectionWatch.man \ - XIntersectRegion.man \ XInternAtom.man \ + XIntersectRegion.man \ XKeymapEvent.man \ XListFonts.man \ XLoadFont.man \ XLookupKeysym.man \ - XrmMergeDatabases.man \ XMapEvent.man \ XMapRequestEvent.man \ XMapWindow.man \ + XmbDrawImageString.man \ + XmbDrawString.man \ + XmbDrawText.man \ + XmbLookupString.man \ + XmbResetIC.man \ + XmbTextEscapement.man \ + XmbTextExtents.man \ + XmbTextListToTextProperty.man \ + XmbTextPerCharExtents.man \ XNextEvent.man \ XNoOp.man \ XOpenDisplay.man \ XOpenIM.man \ XOpenOM.man \ - XPropertyEvent.man \ XParseGeometry.man \ XPolygonRegion.man \ + XPropertyEvent.man \ XPutBackEvent.man \ XPutImage.man \ - XrmPutResource.man \ XQueryBestSize.man \ XQueryColor.man \ XQueryExtension.man \ XQueryPointer.man \ XQueryTree.man \ - XReparentEvent.man \ - XResourceManagerString.man \ - XResizeRequestEvent.man \ XRaiseWindow.man \ XReadBitmapFile.man \ XRecolorCursor.man \ + XReparentEvent.man \ XReparentWindow.man \ - XSelectionClearEvent.man \ + XResizeRequestEvent.man \ + XResourceManagerString.man \ + XrmEnumerateDatabase.man \ + XrmGetFileDatabase.man \ + XrmGetResource.man \ + XrmInitialize.man \ + XrmMergeDatabases.man \ + XrmPutResource.man \ + XrmUniqueQuark.man \ XSaveContext.man \ - XSelectionEvent.man \ - XSetICFocus.man \ - XSetICValues.man \ XSelectInput.man \ - XStringListToTextProperty.man \ + XSelectionClearEvent.man \ + XSelectionEvent.man \ XSelectionRequestEvent.man \ + XSendEvent.man \ XSetArcMode.man \ XSetClipOrigin.man \ XSetCloseDownMode.man \ XSetCommand.man \ XSetErrorHandler.man \ XSetEventQueueOwner.man \ - XSendEvent.man \ XSetFillStyle.man \ XSetFont.man \ XSetFontPath.man \ + XSetICFocus.man \ + XSetICValues.man \ XSetInputFocus.man \ XSetLineAttributes.man \ XSetPointerMapping.man \ XSetScreenSaver.man \ XSetSelectionOwner.man \ XSetState.man \ - XSetTransientForHint.man \ XSetTextProperty.man \ XSetTile.man \ + XSetTransientForHint.man \ XSetWMClientMachine.man \ XSetWMColormapWindows.man \ XSetWMIconName.man \ @@ -155,45 +178,21 @@ libman_PRE = \ XSetWMProtocols.man \ XStoreBytes.man \ XStoreColors.man \ + XStringListToTextProperty.man \ XStringToKeysym.man \ XSupportsLocale.man \ XSynchronize.man \ - XmbTextListToTextProperty.man \ XTextExtents.man \ XTextWidth.man \ - XInitThreads.man \ XTranslateCoordinates.man \ - XrmUniqueQuark.man \ XUnmapEvent.man \ XUnmapWindow.man \ XVaCreateNestedList.man \ XVisibilityEvent.man \ - XWarpPointer.man \ - XcmsCCCOfColormap.man \ - XcmsAllocColor.man \ - XcmsConvertColors.man \ - XcmsColor.man \ - XcmsCreateCCC.man \ - XcmsDefaultCCC.man \ - XcmsCIELabQueryMaxC.man \ - XcmsCIELuvQueryMaxC.man \ - XcmsQueryBlack.man \ - XcmsQueryColor.man \ - XcmsStoreColor.man \ - XcmsSetWhitePoint.man \ - XcmsTekHVCQueryMaxC.man \ - XmbDrawImageString.man \ - XmbDrawString.man \ - XmbDrawText.man \ - XmbLookupString.man \ - XmbResetIC.man \ - XmbTextEscapement.man \ - XmbTextExtents.man \ - XmbTextPerCharExtents.man + XWarpPointer.man filemandir = $(FILE_MAN_DIR) fileman_PRE = Compose.man -FILE_MAN_DIR_SUFFIX = $(FILE_MAN_DIR:@mandir@/man%=%) if MANPAGES libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@) \ @@ -1076,580 +1075,9 @@ XmbTextPerCharExtents_shadows = \ XwcTextPerCharExtents \ Xutf8TextPerCharExtents -AllPlanes_shadowmen = $(AllPlanes_shadows:=.@LIB_MAN_SUFFIX@) -$(AllPlanes_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/AllPlanes.$(LIB_MAN_SUFFIX)" > $@ - -BlackPixelOfScreen_shadowmen = $(BlackPixelOfScreen_shadows:=.@LIB_MAN_SUFFIX@) -$(BlackPixelOfScreen_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/BlackPixelOfScreen.$(LIB_MAN_SUFFIX)" > $@ - -DisplayOfCCC_shadowmen = $(DisplayOfCCC_shadows:=.@LIB_MAN_SUFFIX@) -$(DisplayOfCCC_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/DisplayOfCCC.$(LIB_MAN_SUFFIX)" > $@ - -ImageByteOrder_shadowmen = $(ImageByteOrder_shadows:=.@LIB_MAN_SUFFIX@) -$(ImageByteOrder_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/ImageByteOrder.$(LIB_MAN_SUFFIX)" > $@ - -IsCursorKey_shadowmen = $(IsCursorKey_shadows:=.@LIB_MAN_SUFFIX@) -$(IsCursorKey_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/IsCursorKey.$(LIB_MAN_SUFFIX)" > $@ - -XAllocClassHint_shadowmen = $(XAllocClassHint_shadows:=.@LIB_MAN_SUFFIX@) -$(XAllocClassHint_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XAllocClassHint.$(LIB_MAN_SUFFIX)" > $@ - -XAllocIconSize_shadowmen = $(XAllocIconSize_shadows:=.@LIB_MAN_SUFFIX@) -$(XAllocIconSize_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XAllocIconSize.$(LIB_MAN_SUFFIX)" > $@ - -XAllocStandardColormap_shadowmen = $(XAllocStandardColormap_shadows:=.@LIB_MAN_SUFFIX@) -$(XAllocStandardColormap_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XAllocStandardColormap.$(LIB_MAN_SUFFIX)" > $@ - -XAllocSizeHints_shadowmen = $(XAllocSizeHints_shadows:=.@LIB_MAN_SUFFIX@) -$(XAllocSizeHints_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XAllocSizeHints.$(LIB_MAN_SUFFIX)" > $@ - -XAllocWMHints_shadowmen = $(XAllocWMHints_shadows:=.@LIB_MAN_SUFFIX@) -$(XAllocWMHints_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XAllocWMHints.$(LIB_MAN_SUFFIX)" > $@ - -XAddHost_shadowmen = $(XAddHost_shadows:=.@LIB_MAN_SUFFIX@) -$(XAddHost_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XAddHost.$(LIB_MAN_SUFFIX)" > $@ - -XAllocColor_shadowmen = $(XAllocColor_shadows:=.@LIB_MAN_SUFFIX@) -$(XAllocColor_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XAllocColor.$(LIB_MAN_SUFFIX)" > $@ - -XAnyEvent_shadowmen = $(XAnyEvent_shadows:=.@LIB_MAN_SUFFIX@) -$(XAnyEvent_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XAnyEvent.$(LIB_MAN_SUFFIX)" > $@ - -XButtonEvent_shadowmen = $(XButtonEvent_shadows:=.@LIB_MAN_SUFFIX@) -$(XButtonEvent_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XButtonEvent.$(LIB_MAN_SUFFIX)" > $@ - -XChangeKeyboardControl_shadowmen = $(XChangeKeyboardControl_shadows:=.@LIB_MAN_SUFFIX@) -$(XChangeKeyboardControl_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XChangeKeyboardControl.$(LIB_MAN_SUFFIX)" > $@ - -XChangeKeyboardMapping_shadowmen = $(XChangeKeyboardMapping_shadows:=.@LIB_MAN_SUFFIX@) -$(XChangeKeyboardMapping_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XChangeKeyboardMapping.$(LIB_MAN_SUFFIX)" > $@ - -XChangePointerControl_shadowmen = $(XChangePointerControl_shadows:=.@LIB_MAN_SUFFIX@) -$(XChangePointerControl_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XChangePointerControl.$(LIB_MAN_SUFFIX)" > $@ - -XChangeSaveSet_shadowmen = $(XChangeSaveSet_shadows:=.@LIB_MAN_SUFFIX@) -$(XChangeSaveSet_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XChangeSaveSet.$(LIB_MAN_SUFFIX)" > $@ - -XChangeWindowAttributes_shadowmen = $(XChangeWindowAttributes_shadows:=.@LIB_MAN_SUFFIX@) -$(XChangeWindowAttributes_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XChangeWindowAttributes.$(LIB_MAN_SUFFIX)" > $@ - -XClearArea_shadowmen = $(XClearArea_shadows:=.@LIB_MAN_SUFFIX@) -$(XClearArea_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XClearArea.$(LIB_MAN_SUFFIX)" > $@ - -XConfigureWindow_shadowmen = $(XConfigureWindow_shadows:=.@LIB_MAN_SUFFIX@) -$(XConfigureWindow_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XConfigureWindow.$(LIB_MAN_SUFFIX)" > $@ - -XCopyArea_shadowmen = $(XCopyArea_shadows:=.@LIB_MAN_SUFFIX@) -$(XCopyArea_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XCopyArea.$(LIB_MAN_SUFFIX)" > $@ - -XCreateColormap_shadowmen = $(XCreateColormap_shadows:=.@LIB_MAN_SUFFIX@) -$(XCreateColormap_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XCreateColormap.$(LIB_MAN_SUFFIX)" > $@ - -XCreateFontCursor_shadowmen = $(XCreateFontCursor_shadows:=.@LIB_MAN_SUFFIX@) -$(XCreateFontCursor_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XCreateFontCursor.$(LIB_MAN_SUFFIX)" > $@ - -XCreateFontSet_shadowmen = $(XCreateFontSet_shadows:=.@LIB_MAN_SUFFIX@) -$(XCreateFontSet_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XCreateFontSet.$(LIB_MAN_SUFFIX)" > $@ - -XCreateGC_shadowmen = $(XCreateGC_shadows:=.@LIB_MAN_SUFFIX@) -$(XCreateGC_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XCreateGC.$(LIB_MAN_SUFFIX)" > $@ - -XCreateIC_shadowmen = $(XCreateIC_shadows:=.@LIB_MAN_SUFFIX@) -$(XCreateIC_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XCreateIC.$(LIB_MAN_SUFFIX)" > $@ - -XInitImage_shadowmen = $(XInitImage_shadows:=.@LIB_MAN_SUFFIX@) -$(XInitImage_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XInitImage.$(LIB_MAN_SUFFIX)" > $@ - -XCreateOC_shadowmen = $(XCreateOC_shadows:=.@LIB_MAN_SUFFIX@) -$(XCreateOC_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XCreateOC.$(LIB_MAN_SUFFIX)" > $@ - -XCreatePixmap_shadowmen = $(XCreatePixmap_shadows:=.@LIB_MAN_SUFFIX@) -$(XCreatePixmap_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XCreatePixmap.$(LIB_MAN_SUFFIX)" > $@ - -XCreateRegion_shadowmen = $(XCreateRegion_shadows:=.@LIB_MAN_SUFFIX@) -$(XCreateRegion_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XCreateRegion.$(LIB_MAN_SUFFIX)" > $@ - -XCreateWindow_shadowmen = $(XCreateWindow_shadows:=.@LIB_MAN_SUFFIX@) -$(XCreateWindow_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XCreateWindow.$(LIB_MAN_SUFFIX)" > $@ - -XDefineCursor_shadowmen = $(XDefineCursor_shadows:=.@LIB_MAN_SUFFIX@) -$(XDefineCursor_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XDefineCursor.$(LIB_MAN_SUFFIX)" > $@ - -XDestroyWindow_shadowmen = $(XDestroyWindow_shadows:=.@LIB_MAN_SUFFIX@) -$(XDestroyWindow_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XDestroyWindow.$(LIB_MAN_SUFFIX)" > $@ - -XDrawArc_shadowmen = $(XDrawArc_shadows:=.@LIB_MAN_SUFFIX@) -$(XDrawArc_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XDrawArc.$(LIB_MAN_SUFFIX)" > $@ - -XDrawImageString_shadowmen = $(XDrawImageString_shadows:=.@LIB_MAN_SUFFIX@) -$(XDrawImageString_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XDrawImageString.$(LIB_MAN_SUFFIX)" > $@ - -XDrawLine_shadowmen = $(XDrawLine_shadows:=.@LIB_MAN_SUFFIX@) -$(XDrawLine_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XDrawLine.$(LIB_MAN_SUFFIX)" > $@ - -XDrawPoint_shadowmen = $(XDrawPoint_shadows:=.@LIB_MAN_SUFFIX@) -$(XDrawPoint_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XDrawPoint.$(LIB_MAN_SUFFIX)" > $@ - -XDrawRectangle_shadowmen = $(XDrawRectangle_shadows:=.@LIB_MAN_SUFFIX@) -$(XDrawRectangle_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XDrawRectangle.$(LIB_MAN_SUFFIX)" > $@ - -XDrawString_shadowmen = $(XDrawString_shadows:=.@LIB_MAN_SUFFIX@) -$(XDrawString_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XDrawString.$(LIB_MAN_SUFFIX)" > $@ - -XDrawText_shadowmen = $(XDrawText_shadows:=.@LIB_MAN_SUFFIX@) -$(XDrawText_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XDrawText.$(LIB_MAN_SUFFIX)" > $@ - -XEmptyRegion_shadowmen = $(XEmptyRegion_shadows:=.@LIB_MAN_SUFFIX@) -$(XEmptyRegion_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XEmptyRegion.$(LIB_MAN_SUFFIX)" > $@ - -XFillRectangle_shadowmen = $(XFillRectangle_shadows:=.@LIB_MAN_SUFFIX@) -$(XFillRectangle_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XFillRectangle.$(LIB_MAN_SUFFIX)" > $@ - -XFlush_shadowmen = $(XFlush_shadows:=.@LIB_MAN_SUFFIX@) -$(XFlush_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XFlush.$(LIB_MAN_SUFFIX)" > $@ - -XFontsOfFontSet_shadowmen = $(XFontsOfFontSet_shadows:=.@LIB_MAN_SUFFIX@) -$(XFontsOfFontSet_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XFontsOfFontSet.$(LIB_MAN_SUFFIX)" > $@ - -XGraphicsExposeEvent_shadowmen = $(XGraphicsExposeEvent_shadows:=.@LIB_MAN_SUFFIX@) -$(XGraphicsExposeEvent_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XGraphicsExposeEvent.$(LIB_MAN_SUFFIX)" > $@ - -XrmGetFileDatabase_shadowmen = $(XrmGetFileDatabase_shadows:=.@LIB_MAN_SUFFIX@) -$(XrmGetFileDatabase_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XrmGetFileDatabase.$(LIB_MAN_SUFFIX)" > $@ - -XrmGetResource_shadowmen = $(XrmGetResource_shadows:=.@LIB_MAN_SUFFIX@) -$(XrmGetResource_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XrmGetResource.$(LIB_MAN_SUFFIX)" > $@ - -XGetEventData_shadowmen = $(XGetEventData_shadows:=.@LIB_MAN_SUFFIX@) -$(XGetEventData_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XGetEventData.$(LIB_MAN_SUFFIX)" > $@ - -XGetVisualInfo_shadowmen = $(XGetVisualInfo_shadows:=.@LIB_MAN_SUFFIX@) -$(XGetVisualInfo_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XGetVisualInfo.$(LIB_MAN_SUFFIX)" > $@ - -XGetWindowAttributes_shadowmen = $(XGetWindowAttributes_shadows:=.@LIB_MAN_SUFFIX@) -$(XGetWindowAttributes_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XGetWindowAttributes.$(LIB_MAN_SUFFIX)" > $@ - -XGetWindowProperty_shadowmen = $(XGetWindowProperty_shadows:=.@LIB_MAN_SUFFIX@) -$(XGetWindowProperty_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XGetWindowProperty.$(LIB_MAN_SUFFIX)" > $@ - -XGrabButton_shadowmen = $(XGrabButton_shadows:=.@LIB_MAN_SUFFIX@) -$(XGrabButton_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XGrabButton.$(LIB_MAN_SUFFIX)" > $@ - -XGrabKey_shadowmen = $(XGrabKey_shadows:=.@LIB_MAN_SUFFIX@) -$(XGrabKey_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XGrabKey.$(LIB_MAN_SUFFIX)" > $@ - -XGrabKeyboard_shadowmen = $(XGrabKeyboard_shadows:=.@LIB_MAN_SUFFIX@) -$(XGrabKeyboard_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XGrabKeyboard.$(LIB_MAN_SUFFIX)" > $@ - -XGrabPointer_shadowmen = $(XGrabPointer_shadows:=.@LIB_MAN_SUFFIX@) -$(XGrabPointer_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XGrabPointer.$(LIB_MAN_SUFFIX)" > $@ - -XGrabServer_shadowmen = $(XGrabServer_shadows:=.@LIB_MAN_SUFFIX@) -$(XGrabServer_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XGrabServer.$(LIB_MAN_SUFFIX)" > $@ - -XIconifyWindow_shadowmen = $(XIconifyWindow_shadows:=.@LIB_MAN_SUFFIX@) -$(XIconifyWindow_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XIconifyWindow.$(LIB_MAN_SUFFIX)" > $@ - -XIfEvent_shadowmen = $(XIfEvent_shadows:=.@LIB_MAN_SUFFIX@) -$(XIfEvent_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XIfEvent.$(LIB_MAN_SUFFIX)" > $@ - -XrmInitialize_shadowmen = $(XrmInitialize_shadows:=.@LIB_MAN_SUFFIX@) -$(XrmInitialize_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XrmInitialize.$(LIB_MAN_SUFFIX)" > $@ - -XInstallColormap_shadowmen = $(XInstallColormap_shadows:=.@LIB_MAN_SUFFIX@) -$(XInstallColormap_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XInstallColormap.$(LIB_MAN_SUFFIX)" > $@ - -XAddConnectionWatch_shadowmen = $(XAddConnectionWatch_shadows:=.@LIB_MAN_SUFFIX@) -$(XAddConnectionWatch_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XAddConnectionWatch.$(LIB_MAN_SUFFIX)" > $@ - -XIntersectRegion_shadowmen = $(XIntersectRegion_shadows:=.@LIB_MAN_SUFFIX@) -$(XIntersectRegion_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XIntersectRegion.$(LIB_MAN_SUFFIX)" > $@ - -XInternAtom_shadowmen = $(XInternAtom_shadows:=.@LIB_MAN_SUFFIX@) -$(XInternAtom_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XInternAtom.$(LIB_MAN_SUFFIX)" > $@ - -XListFonts_shadowmen = $(XListFonts_shadows:=.@LIB_MAN_SUFFIX@) -$(XListFonts_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XListFonts.$(LIB_MAN_SUFFIX)" > $@ - -XLoadFont_shadowmen = $(XLoadFont_shadows:=.@LIB_MAN_SUFFIX@) -$(XLoadFont_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XLoadFont.$(LIB_MAN_SUFFIX)" > $@ - -XLookupKeysym_shadowmen = $(XLookupKeysym_shadows:=.@LIB_MAN_SUFFIX@) -$(XLookupKeysym_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XLookupKeysym.$(LIB_MAN_SUFFIX)" > $@ - -XrmMergeDatabases_shadowmen = $(XrmMergeDatabases_shadows:=.@LIB_MAN_SUFFIX@) -$(XrmMergeDatabases_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XrmMergeDatabases.$(LIB_MAN_SUFFIX)" > $@ - -XMapEvent_shadowmen = $(XMapEvent_shadows:=.@LIB_MAN_SUFFIX@) -$(XMapEvent_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XMapEvent.$(LIB_MAN_SUFFIX)" > $@ - -XMapWindow_shadowmen = $(XMapWindow_shadows:=.@LIB_MAN_SUFFIX@) -$(XMapWindow_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XMapWindow.$(LIB_MAN_SUFFIX)" > $@ - -XNextEvent_shadowmen = $(XNextEvent_shadows:=.@LIB_MAN_SUFFIX@) -$(XNextEvent_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XNextEvent.$(LIB_MAN_SUFFIX)" > $@ - -XOpenDisplay_shadowmen = $(XOpenDisplay_shadows:=.@LIB_MAN_SUFFIX@) -$(XOpenDisplay_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XOpenDisplay.$(LIB_MAN_SUFFIX)" > $@ - -XOpenIM_shadowmen = $(XOpenIM_shadows:=.@LIB_MAN_SUFFIX@) -$(XOpenIM_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XOpenIM.$(LIB_MAN_SUFFIX)" > $@ - -XOpenOM_shadowmen = $(XOpenOM_shadows:=.@LIB_MAN_SUFFIX@) -$(XOpenOM_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XOpenOM.$(LIB_MAN_SUFFIX)" > $@ - -XParseGeometry_shadowmen = $(XParseGeometry_shadows:=.@LIB_MAN_SUFFIX@) -$(XParseGeometry_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XParseGeometry.$(LIB_MAN_SUFFIX)" > $@ - -XPolygonRegion_shadowmen = $(XPolygonRegion_shadows:=.@LIB_MAN_SUFFIX@) -$(XPolygonRegion_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XPolygonRegion.$(LIB_MAN_SUFFIX)" > $@ - -XPutImage_shadowmen = $(XPutImage_shadows:=.@LIB_MAN_SUFFIX@) -$(XPutImage_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XPutImage.$(LIB_MAN_SUFFIX)" > $@ - -XrmPutResource_shadowmen = $(XrmPutResource_shadows:=.@LIB_MAN_SUFFIX@) -$(XrmPutResource_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XrmPutResource.$(LIB_MAN_SUFFIX)" > $@ - -XQueryBestSize_shadowmen = $(XQueryBestSize_shadows:=.@LIB_MAN_SUFFIX@) -$(XQueryBestSize_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XQueryBestSize.$(LIB_MAN_SUFFIX)" > $@ - -XQueryColor_shadowmen = $(XQueryColor_shadows:=.@LIB_MAN_SUFFIX@) -$(XQueryColor_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XQueryColor.$(LIB_MAN_SUFFIX)" > $@ - -XQueryExtension_shadowmen = $(XQueryExtension_shadows:=.@LIB_MAN_SUFFIX@) -$(XQueryExtension_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XQueryExtension.$(LIB_MAN_SUFFIX)" > $@ - -XResourceManagerString_shadowmen = $(XResourceManagerString_shadows:=.@LIB_MAN_SUFFIX@) -$(XResourceManagerString_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XResourceManagerString.$(LIB_MAN_SUFFIX)" > $@ - -XRaiseWindow_shadowmen = $(XRaiseWindow_shadows:=.@LIB_MAN_SUFFIX@) -$(XRaiseWindow_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XRaiseWindow.$(LIB_MAN_SUFFIX)" > $@ - -XReadBitmapFile_shadowmen = $(XReadBitmapFile_shadows:=.@LIB_MAN_SUFFIX@) -$(XReadBitmapFile_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XReadBitmapFile.$(LIB_MAN_SUFFIX)" > $@ - -XRecolorCursor_shadowmen = $(XRecolorCursor_shadows:=.@LIB_MAN_SUFFIX@) -$(XRecolorCursor_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XRecolorCursor.$(LIB_MAN_SUFFIX)" > $@ - -XSaveContext_shadowmen = $(XSaveContext_shadows:=.@LIB_MAN_SUFFIX@) -$(XSaveContext_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSaveContext.$(LIB_MAN_SUFFIX)" > $@ - -XSetICFocus_shadowmen = $(XSetICFocus_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetICFocus_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetICFocus.$(LIB_MAN_SUFFIX)" > $@ - -XSetICValues_shadowmen = $(XSetICValues_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetICValues_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetICValues.$(LIB_MAN_SUFFIX)" > $@ - -XStringListToTextProperty_shadowmen = $(XStringListToTextProperty_shadows:=.@LIB_MAN_SUFFIX@) -$(XStringListToTextProperty_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XStringListToTextProperty.$(LIB_MAN_SUFFIX)" > $@ - -XSetArcMode_shadowmen = $(XSetArcMode_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetArcMode_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetArcMode.$(LIB_MAN_SUFFIX)" > $@ - -XSetClipOrigin_shadowmen = $(XSetClipOrigin_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetClipOrigin_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetClipOrigin.$(LIB_MAN_SUFFIX)" > $@ - -XSetCloseDownMode_shadowmen = $(XSetCloseDownMode_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetCloseDownMode_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetCloseDownMode.$(LIB_MAN_SUFFIX)" > $@ - -XSetCommand_shadowmen = $(XSetCommand_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetCommand_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetCommand.$(LIB_MAN_SUFFIX)" > $@ - -XSetErrorHandler_shadowmen = $(XSetErrorHandler_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetErrorHandler_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetErrorHandler.$(LIB_MAN_SUFFIX)" > $@ - -XSendEvent_shadowmen = $(XSendEvent_shadows:=.@LIB_MAN_SUFFIX@) -$(XSendEvent_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSendEvent.$(LIB_MAN_SUFFIX)" > $@ - -XSetFillStyle_shadowmen = $(XSetFillStyle_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetFillStyle_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetFillStyle.$(LIB_MAN_SUFFIX)" > $@ - -XSetFontPath_shadowmen = $(XSetFontPath_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetFontPath_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetFontPath.$(LIB_MAN_SUFFIX)" > $@ - -XSetInputFocus_shadowmen = $(XSetInputFocus_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetInputFocus_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetInputFocus.$(LIB_MAN_SUFFIX)" > $@ - -XSetLineAttributes_shadowmen = $(XSetLineAttributes_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetLineAttributes_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetLineAttributes.$(LIB_MAN_SUFFIX)" > $@ - -XSetPointerMapping_shadowmen = $(XSetPointerMapping_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetPointerMapping_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetPointerMapping.$(LIB_MAN_SUFFIX)" > $@ - -XSetScreenSaver_shadowmen = $(XSetScreenSaver_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetScreenSaver_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetScreenSaver.$(LIB_MAN_SUFFIX)" > $@ - -XSetSelectionOwner_shadowmen = $(XSetSelectionOwner_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetSelectionOwner_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetSelectionOwner.$(LIB_MAN_SUFFIX)" > $@ - -XSetState_shadowmen = $(XSetState_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetState_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetState.$(LIB_MAN_SUFFIX)" > $@ - -XSetTransientForHint_shadowmen = $(XSetTransientForHint_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetTransientForHint_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetTransientForHint.$(LIB_MAN_SUFFIX)" > $@ - -XSetTextProperty_shadowmen = $(XSetTextProperty_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetTextProperty_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetTextProperty.$(LIB_MAN_SUFFIX)" > $@ - -XSetTile_shadowmen = $(XSetTile_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetTile_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetTile.$(LIB_MAN_SUFFIX)" > $@ - -XSetWMClientMachine_shadowmen = $(XSetWMClientMachine_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetWMClientMachine_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetWMClientMachine.$(LIB_MAN_SUFFIX)" > $@ - -XSetWMColormapWindows_shadowmen = $(XSetWMColormapWindows_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetWMColormapWindows_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetWMColormapWindows.$(LIB_MAN_SUFFIX)" > $@ - -XSetWMIconName_shadowmen = $(XSetWMIconName_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetWMIconName_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetWMIconName.$(LIB_MAN_SUFFIX)" > $@ - -XSetWMName_shadowmen = $(XSetWMName_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetWMName_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetWMName.$(LIB_MAN_SUFFIX)" > $@ - -XSetWMProperties_shadowmen = $(XSetWMProperties_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetWMProperties_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetWMProperties.$(LIB_MAN_SUFFIX)" > $@ - -XSetWMProtocols_shadowmen = $(XSetWMProtocols_shadows:=.@LIB_MAN_SUFFIX@) -$(XSetWMProtocols_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetWMProtocols.$(LIB_MAN_SUFFIX)" > $@ - -XStoreBytes_shadowmen = $(XStoreBytes_shadows:=.@LIB_MAN_SUFFIX@) -$(XStoreBytes_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XStoreBytes.$(LIB_MAN_SUFFIX)" > $@ - -XStoreColors_shadowmen = $(XStoreColors_shadows:=.@LIB_MAN_SUFFIX@) -$(XStoreColors_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XStoreColors.$(LIB_MAN_SUFFIX)" > $@ - -XStringToKeysym_shadowmen = $(XStringToKeysym_shadows:=.@LIB_MAN_SUFFIX@) -$(XStringToKeysym_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XStringToKeysym.$(LIB_MAN_SUFFIX)" > $@ - -XSupportsLocale_shadowmen = $(XSupportsLocale_shadows:=.@LIB_MAN_SUFFIX@) -$(XSupportsLocale_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSupportsLocale.$(LIB_MAN_SUFFIX)" > $@ - -XSynchronize_shadowmen = $(XSynchronize_shadows:=.@LIB_MAN_SUFFIX@) -$(XSynchronize_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSynchronize.$(LIB_MAN_SUFFIX)" > $@ - -XmbTextListToTextProperty_shadowmen = $(XmbTextListToTextProperty_shadows:=.@LIB_MAN_SUFFIX@) -$(XmbTextListToTextProperty_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XmbTextListToTextProperty.$(LIB_MAN_SUFFIX)" > $@ - -XTextExtents_shadowmen = $(XTextExtents_shadows:=.@LIB_MAN_SUFFIX@) -$(XTextExtents_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XTextExtents.$(LIB_MAN_SUFFIX)" > $@ - -XTextWidth_shadowmen = $(XTextWidth_shadows:=.@LIB_MAN_SUFFIX@) -$(XTextWidth_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XTextWidth.$(LIB_MAN_SUFFIX)" > $@ - -XInitThreads_shadowmen = $(XInitThreads_shadows:=.@LIB_MAN_SUFFIX@) -$(XInitThreads_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XInitThreads.$(LIB_MAN_SUFFIX)" > $@ - -XrmUniqueQuark_shadowmen = $(XrmUniqueQuark_shadows:=.@LIB_MAN_SUFFIX@) -$(XrmUniqueQuark_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XrmUniqueQuark.$(LIB_MAN_SUFFIX)" > $@ - -XUnmapWindow_shadowmen = $(XUnmapWindow_shadows:=.@LIB_MAN_SUFFIX@) -$(XUnmapWindow_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XUnmapWindow.$(LIB_MAN_SUFFIX)" > $@ - -XcmsCCCOfColormap_shadowmen = $(XcmsCCCOfColormap_shadows:=.@LIB_MAN_SUFFIX@) -$(XcmsCCCOfColormap_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsCCCOfColormap.$(LIB_MAN_SUFFIX)" > $@ - -XcmsAllocColor_shadowmen = $(XcmsAllocColor_shadows:=.@LIB_MAN_SUFFIX@) -$(XcmsAllocColor_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsAllocColor.$(LIB_MAN_SUFFIX)" > $@ - -XcmsColor_shadowmen = $(XcmsColor_shadows:=.@LIB_MAN_SUFFIX@) -$(XcmsColor_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsColor.$(LIB_MAN_SUFFIX)" > $@ - -XcmsCreateCCC_shadowmen = $(XcmsCreateCCC_shadows:=.@LIB_MAN_SUFFIX@) -$(XcmsCreateCCC_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsCreateCCC.$(LIB_MAN_SUFFIX)" > $@ - -XcmsCIELabQueryMaxC_shadowmen = $(XcmsCIELabQueryMaxC_shadows:=.@LIB_MAN_SUFFIX@) -$(XcmsCIELabQueryMaxC_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsCIELabQueryMaxC.$(LIB_MAN_SUFFIX)" > $@ - -XcmsCIELuvQueryMaxC_shadowmen = $(XcmsCIELuvQueryMaxC_shadows:=.@LIB_MAN_SUFFIX@) -$(XcmsCIELuvQueryMaxC_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsCIELuvQueryMaxC.$(LIB_MAN_SUFFIX)" > $@ - -XcmsQueryBlack_shadowmen = $(XcmsQueryBlack_shadows:=.@LIB_MAN_SUFFIX@) -$(XcmsQueryBlack_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsQueryBlack.$(LIB_MAN_SUFFIX)" > $@ - -XcmsQueryColor_shadowmen = $(XcmsQueryColor_shadows:=.@LIB_MAN_SUFFIX@) -$(XcmsQueryColor_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsQueryColor.$(LIB_MAN_SUFFIX)" > $@ - -XcmsStoreColor_shadowmen = $(XcmsStoreColor_shadows:=.@LIB_MAN_SUFFIX@) -$(XcmsStoreColor_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsStoreColor.$(LIB_MAN_SUFFIX)" > $@ - -XcmsSetWhitePoint_shadowmen = $(XcmsSetWhitePoint_shadows:=.@LIB_MAN_SUFFIX@) -$(XcmsSetWhitePoint_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsSetWhitePoint.$(LIB_MAN_SUFFIX)" > $@ - -XcmsTekHVCQueryMaxC_shadowmen = $(XcmsTekHVCQueryMaxC_shadows:=.@LIB_MAN_SUFFIX@) -$(XcmsTekHVCQueryMaxC_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsTekHVCQueryMaxC.$(LIB_MAN_SUFFIX)" > $@ - -XmbDrawImageString_shadowmen = $(XmbDrawImageString_shadows:=.@LIB_MAN_SUFFIX@) -$(XmbDrawImageString_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XmbDrawImageString.$(LIB_MAN_SUFFIX)" > $@ - -XmbDrawString_shadowmen = $(XmbDrawString_shadows:=.@LIB_MAN_SUFFIX@) -$(XmbDrawString_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XmbDrawString.$(LIB_MAN_SUFFIX)" > $@ - -XmbDrawText_shadowmen = $(XmbDrawText_shadows:=.@LIB_MAN_SUFFIX@) -$(XmbDrawText_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XmbDrawText.$(LIB_MAN_SUFFIX)" > $@ - -XmbLookupString_shadowmen = $(XmbLookupString_shadows:=.@LIB_MAN_SUFFIX@) -$(XmbLookupString_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XmbLookupString.$(LIB_MAN_SUFFIX)" > $@ - -XmbResetIC_shadowmen = $(XmbResetIC_shadows:=.@LIB_MAN_SUFFIX@) -$(XmbResetIC_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XmbResetIC.$(LIB_MAN_SUFFIX)" > $@ - -XmbTextEscapement_shadowmen = $(XmbTextEscapement_shadows:=.@LIB_MAN_SUFFIX@) -$(XmbTextEscapement_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XmbTextEscapement.$(LIB_MAN_SUFFIX)" > $@ - -XmbTextExtents_shadowmen = $(XmbTextExtents_shadows:=.@LIB_MAN_SUFFIX@) -$(XmbTextExtents_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XmbTextExtents.$(LIB_MAN_SUFFIX)" > $@ - -XmbTextPerCharExtents_shadowmen = $(XmbTextPerCharExtents_shadows:=.@LIB_MAN_SUFFIX@) -$(XmbTextPerCharExtents_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XmbTextPerCharExtents.$(LIB_MAN_SUFFIX)" > $@ - -file_shadows = \ +file_shadows = \ $(Compose_shadows) Compose_shadows = \ XCompose -Compose_shadowmen = $(Compose_shadows:=.@FILE_MAN_SUFFIX@) -$(Compose_shadowmen): - $(AM_V_GEN)echo ".so man$(FILE_MAN_DIR_SUFFIX)/Compose.$(FILE_MAN_SUFFIX)" > $@ diff --git a/libX11/man/MaxCmapsOfScreen.man b/libX11/man/MaxCmapsOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/MaxCmapsOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ diff --git a/libX11/man/MinCmapsOfScreen.man b/libX11/man/MinCmapsOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/MinCmapsOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ diff --git a/libX11/man/NextRequest.man b/libX11/man/NextRequest.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/NextRequest.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/PlanesOfScreen.man b/libX11/man/PlanesOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/PlanesOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ diff --git a/libX11/man/ProtocolRevision.man b/libX11/man/ProtocolRevision.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/ProtocolRevision.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/ProtocolVersion.man b/libX11/man/ProtocolVersion.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/ProtocolVersion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/QLength.man b/libX11/man/QLength.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/QLength.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/RootWindow.man b/libX11/man/RootWindow.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/RootWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/RootWindowOfScreen.man b/libX11/man/RootWindowOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/RootWindowOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ diff --git a/libX11/man/ScreenCount.man b/libX11/man/ScreenCount.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/ScreenCount.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/ScreenNumberOfCCC.man b/libX11/man/ScreenNumberOfCCC.man new file mode 100644 index 000000000..5feb8b936 --- /dev/null +++ b/libX11/man/ScreenNumberOfCCC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/DisplayOfCCC.__libmansuffix__ diff --git a/libX11/man/ScreenOfDisplay.man b/libX11/man/ScreenOfDisplay.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/ScreenOfDisplay.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/ScreenWhitePointOfCCC.man b/libX11/man/ScreenWhitePointOfCCC.man new file mode 100644 index 000000000..5feb8b936 --- /dev/null +++ b/libX11/man/ScreenWhitePointOfCCC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/DisplayOfCCC.__libmansuffix__ diff --git a/libX11/man/ServerVendor.man b/libX11/man/ServerVendor.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/ServerVendor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/VendorRelease.man b/libX11/man/VendorRelease.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/VendorRelease.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/VisualOfCCC.man b/libX11/man/VisualOfCCC.man new file mode 100644 index 000000000..5feb8b936 --- /dev/null +++ b/libX11/man/VisualOfCCC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/DisplayOfCCC.__libmansuffix__ diff --git a/libX11/man/WhitePixel.man b/libX11/man/WhitePixel.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/WhitePixel.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/WhitePixelOfScreen.man b/libX11/man/WhitePixelOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/WhitePixelOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ diff --git a/libX11/man/WidthMMOfScreen.man b/libX11/man/WidthMMOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/WidthMMOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ diff --git a/libX11/man/WidthOfScreen.man b/libX11/man/WidthOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/WidthOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ diff --git a/libX11/man/XActivateScreenSaver.man b/libX11/man/XActivateScreenSaver.man new file mode 100644 index 000000000..35198d594 --- /dev/null +++ b/libX11/man/XActivateScreenSaver.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetScreenSaver.__libmansuffix__ diff --git a/libX11/man/XAddHosts.man b/libX11/man/XAddHosts.man new file mode 100644 index 000000000..8efac194e --- /dev/null +++ b/libX11/man/XAddHosts.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddHost.__libmansuffix__ diff --git a/libX11/man/XAddPixel.man b/libX11/man/XAddPixel.man new file mode 100644 index 000000000..8fe560159 --- /dev/null +++ b/libX11/man/XAddPixel.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInitImage.__libmansuffix__ diff --git a/libX11/man/XAddToSaveSet.man b/libX11/man/XAddToSaveSet.man new file mode 100644 index 000000000..0ea6bfcfc --- /dev/null +++ b/libX11/man/XAddToSaveSet.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeSaveSet.__libmansuffix__ diff --git a/libX11/man/XAllocColorCells.man b/libX11/man/XAllocColorCells.man new file mode 100644 index 000000000..843a17fc9 --- /dev/null +++ b/libX11/man/XAllocColorCells.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocColor.__libmansuffix__ diff --git a/libX11/man/XAllocColorPlanes.man b/libX11/man/XAllocColorPlanes.man new file mode 100644 index 000000000..843a17fc9 --- /dev/null +++ b/libX11/man/XAllocColorPlanes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocColor.__libmansuffix__ diff --git a/libX11/man/XAllocNamedColor.man b/libX11/man/XAllocNamedColor.man new file mode 100644 index 000000000..843a17fc9 --- /dev/null +++ b/libX11/man/XAllocNamedColor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocColor.__libmansuffix__ diff --git a/libX11/man/XArc.man b/libX11/man/XArc.man new file mode 100644 index 000000000..71f63e1e2 --- /dev/null +++ b/libX11/man/XArc.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawArc.__libmansuffix__ diff --git a/libX11/man/XAutoRepeatOff.man b/libX11/man/XAutoRepeatOff.man new file mode 100644 index 000000000..528cea2d7 --- /dev/null +++ b/libX11/man/XAutoRepeatOff.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__ diff --git a/libX11/man/XAutoRepeatOn.man b/libX11/man/XAutoRepeatOn.man new file mode 100644 index 000000000..528cea2d7 --- /dev/null +++ b/libX11/man/XAutoRepeatOn.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__ diff --git a/libX11/man/XBaseFontNameListOfFontSet.man b/libX11/man/XBaseFontNameListOfFontSet.man new file mode 100644 index 000000000..48ea35b67 --- /dev/null +++ b/libX11/man/XBaseFontNameListOfFontSet.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__ diff --git a/libX11/man/XBell.man b/libX11/man/XBell.man new file mode 100644 index 000000000..528cea2d7 --- /dev/null +++ b/libX11/man/XBell.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__ diff --git a/libX11/man/XChangeActivePointerGrab.man b/libX11/man/XChangeActivePointerGrab.man new file mode 100644 index 000000000..93259b8c3 --- /dev/null +++ b/libX11/man/XChangeActivePointerGrab.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGrabPointer.__libmansuffix__ diff --git a/libX11/man/XChangeGC.man b/libX11/man/XChangeGC.man new file mode 100644 index 000000000..dec9f1eb7 --- /dev/null +++ b/libX11/man/XChangeGC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateGC.__libmansuffix__ diff --git a/libX11/man/XChangeProperty.man b/libX11/man/XChangeProperty.man new file mode 100644 index 000000000..e265d7d69 --- /dev/null +++ b/libX11/man/XChangeProperty.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetWindowProperty.__libmansuffix__ diff --git a/libX11/man/XChar2b.man b/libX11/man/XChar2b.man new file mode 100644 index 000000000..8b44e8513 --- /dev/null +++ b/libX11/man/XChar2b.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLoadFont.__libmansuffix__ diff --git a/libX11/man/XCharStruct.man b/libX11/man/XCharStruct.man new file mode 100644 index 000000000..8b44e8513 --- /dev/null +++ b/libX11/man/XCharStruct.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLoadFont.__libmansuffix__ diff --git a/libX11/man/XCheckIfEvent.man b/libX11/man/XCheckIfEvent.man new file mode 100644 index 000000000..5970130fb --- /dev/null +++ b/libX11/man/XCheckIfEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XIfEvent.__libmansuffix__ diff --git a/libX11/man/XCheckMaskEvent.man b/libX11/man/XCheckMaskEvent.man new file mode 100644 index 000000000..f421b8caa --- /dev/null +++ b/libX11/man/XCheckMaskEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XNextEvent.__libmansuffix__ diff --git a/libX11/man/XCheckTypedEvent.man b/libX11/man/XCheckTypedEvent.man new file mode 100644 index 000000000..f421b8caa --- /dev/null +++ b/libX11/man/XCheckTypedEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XNextEvent.__libmansuffix__ diff --git a/libX11/man/XCheckTypedWindowEvent.man b/libX11/man/XCheckTypedWindowEvent.man new file mode 100644 index 000000000..f421b8caa --- /dev/null +++ b/libX11/man/XCheckTypedWindowEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XNextEvent.__libmansuffix__ diff --git a/libX11/man/XCheckWindowEvent.man b/libX11/man/XCheckWindowEvent.man new file mode 100644 index 000000000..f421b8caa --- /dev/null +++ b/libX11/man/XCheckWindowEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XNextEvent.__libmansuffix__ diff --git a/libX11/man/XCirculateSubwindows.man b/libX11/man/XCirculateSubwindows.man new file mode 100644 index 000000000..61d7a2348 --- /dev/null +++ b/libX11/man/XCirculateSubwindows.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XRaiseWindow.__libmansuffix__ diff --git a/libX11/man/XCirculateSubwindowsDown.man b/libX11/man/XCirculateSubwindowsDown.man new file mode 100644 index 000000000..61d7a2348 --- /dev/null +++ b/libX11/man/XCirculateSubwindowsDown.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XRaiseWindow.__libmansuffix__ diff --git a/libX11/man/XCirculateSubwindowsUp.man b/libX11/man/XCirculateSubwindowsUp.man new file mode 100644 index 000000000..61d7a2348 --- /dev/null +++ b/libX11/man/XCirculateSubwindowsUp.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XRaiseWindow.__libmansuffix__ diff --git a/libX11/man/XClassHint.man b/libX11/man/XClassHint.man new file mode 100644 index 000000000..fc953a21b --- /dev/null +++ b/libX11/man/XClassHint.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocClassHint.__libmansuffix__ diff --git a/libX11/man/XClearWindow.man b/libX11/man/XClearWindow.man new file mode 100644 index 000000000..ca4582acc --- /dev/null +++ b/libX11/man/XClearWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XClearArea.__libmansuffix__ diff --git a/libX11/man/XClipBox.man b/libX11/man/XClipBox.man new file mode 100644 index 000000000..06c8f86f2 --- /dev/null +++ b/libX11/man/XClipBox.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XPolygonRegion.__libmansuffix__ diff --git a/libX11/man/XCloseDisplay.man b/libX11/man/XCloseDisplay.man new file mode 100644 index 000000000..6e5e6c03a --- /dev/null +++ b/libX11/man/XCloseDisplay.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenDisplay.__libmansuffix__ diff --git a/libX11/man/XCloseIM.man b/libX11/man/XCloseIM.man new file mode 100644 index 000000000..6d302b9cd --- /dev/null +++ b/libX11/man/XCloseIM.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenIM.__libmansuffix__ diff --git a/libX11/man/XCloseOM.man b/libX11/man/XCloseOM.man new file mode 100644 index 000000000..d7e1adb03 --- /dev/null +++ b/libX11/man/XCloseOM.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenOM.__libmansuffix__ diff --git a/libX11/man/XColor.man b/libX11/man/XColor.man new file mode 100644 index 000000000..7a214a7a8 --- /dev/null +++ b/libX11/man/XColor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateColormap.__libmansuffix__ diff --git a/libX11/man/XCompose.man b/libX11/man/XCompose.man new file mode 100644 index 000000000..09e458290 --- /dev/null +++ b/libX11/man/XCompose.man @@ -0,0 +1 @@ +.so man__filemansuffix__/Compose.__filemansuffix__ diff --git a/libX11/man/XContextDependentDrawing.man b/libX11/man/XContextDependentDrawing.man new file mode 100644 index 000000000..48ea35b67 --- /dev/null +++ b/libX11/man/XContextDependentDrawing.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__ diff --git a/libX11/man/XContextualDrawing.man b/libX11/man/XContextualDrawing.man new file mode 100644 index 000000000..48ea35b67 --- /dev/null +++ b/libX11/man/XContextualDrawing.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__ diff --git a/libX11/man/XConvertCase.man b/libX11/man/XConvertCase.man new file mode 100644 index 000000000..9126b791f --- /dev/null +++ b/libX11/man/XConvertCase.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStringToKeysym.__libmansuffix__ diff --git a/libX11/man/XConvertSelection.man b/libX11/man/XConvertSelection.man new file mode 100644 index 000000000..c8e52aa34 --- /dev/null +++ b/libX11/man/XConvertSelection.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetSelectionOwner.__libmansuffix__ diff --git a/libX11/man/XCopyColormapAndFree.man b/libX11/man/XCopyColormapAndFree.man new file mode 100644 index 000000000..7a214a7a8 --- /dev/null +++ b/libX11/man/XCopyColormapAndFree.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateColormap.__libmansuffix__ diff --git a/libX11/man/XCopyGC.man b/libX11/man/XCopyGC.man new file mode 100644 index 000000000..dec9f1eb7 --- /dev/null +++ b/libX11/man/XCopyGC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateGC.__libmansuffix__ diff --git a/libX11/man/XCopyPlane.man b/libX11/man/XCopyPlane.man new file mode 100644 index 000000000..9e6488817 --- /dev/null +++ b/libX11/man/XCopyPlane.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCopyArea.__libmansuffix__ diff --git a/libX11/man/XCreateBitmapFromData.man b/libX11/man/XCreateBitmapFromData.man new file mode 100644 index 000000000..9631570d0 --- /dev/null +++ b/libX11/man/XCreateBitmapFromData.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XReadBitmapFile.__libmansuffix__ diff --git a/libX11/man/XCreateGlyphCursor.man b/libX11/man/XCreateGlyphCursor.man new file mode 100644 index 000000000..1023b0611 --- /dev/null +++ b/libX11/man/XCreateGlyphCursor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateFontCursor.__libmansuffix__ diff --git a/libX11/man/XCreateImage.man b/libX11/man/XCreateImage.man new file mode 100644 index 000000000..8fe560159 --- /dev/null +++ b/libX11/man/XCreateImage.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInitImage.__libmansuffix__ diff --git a/libX11/man/XCreatePixmapCursor.man b/libX11/man/XCreatePixmapCursor.man new file mode 100644 index 000000000..1023b0611 --- /dev/null +++ b/libX11/man/XCreatePixmapCursor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateFontCursor.__libmansuffix__ diff --git a/libX11/man/XCreatePixmapFromBitmapData.man b/libX11/man/XCreatePixmapFromBitmapData.man new file mode 100644 index 000000000..9631570d0 --- /dev/null +++ b/libX11/man/XCreatePixmapFromBitmapData.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XReadBitmapFile.__libmansuffix__ diff --git a/libX11/man/XCreateSimpleWindow.man b/libX11/man/XCreateSimpleWindow.man new file mode 100644 index 000000000..11440c64e --- /dev/null +++ b/libX11/man/XCreateSimpleWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateWindow.__libmansuffix__ diff --git a/libX11/man/XDefaultString.man b/libX11/man/XDefaultString.man new file mode 100644 index 000000000..d73114782 --- /dev/null +++ b/libX11/man/XDefaultString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__ diff --git a/libX11/man/XDeleteContext.man b/libX11/man/XDeleteContext.man new file mode 100644 index 000000000..60c71a492 --- /dev/null +++ b/libX11/man/XDeleteContext.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSaveContext.__libmansuffix__ diff --git a/libX11/man/XDeleteModifiermapEntry.man b/libX11/man/XDeleteModifiermapEntry.man new file mode 100644 index 000000000..013c70a95 --- /dev/null +++ b/libX11/man/XDeleteModifiermapEntry.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__ diff --git a/libX11/man/XDeleteProperty.man b/libX11/man/XDeleteProperty.man new file mode 100644 index 000000000..e265d7d69 --- /dev/null +++ b/libX11/man/XDeleteProperty.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetWindowProperty.__libmansuffix__ diff --git a/libX11/man/XDestroyIC.man b/libX11/man/XDestroyIC.man new file mode 100644 index 000000000..652aa0330 --- /dev/null +++ b/libX11/man/XDestroyIC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateIC.__libmansuffix__ diff --git a/libX11/man/XDestroyImage.man b/libX11/man/XDestroyImage.man new file mode 100644 index 000000000..8fe560159 --- /dev/null +++ b/libX11/man/XDestroyImage.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInitImage.__libmansuffix__ diff --git a/libX11/man/XDestroyOC.man b/libX11/man/XDestroyOC.man new file mode 100644 index 000000000..ece6d5ce7 --- /dev/null +++ b/libX11/man/XDestroyOC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateOC.__libmansuffix__ diff --git a/libX11/man/XDestroyRegion.man b/libX11/man/XDestroyRegion.man new file mode 100644 index 000000000..9e7e7d197 --- /dev/null +++ b/libX11/man/XDestroyRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateRegion.__libmansuffix__ diff --git a/libX11/man/XDestroySubwindows.man b/libX11/man/XDestroySubwindows.man new file mode 100644 index 000000000..e81bc7ace --- /dev/null +++ b/libX11/man/XDestroySubwindows.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDestroyWindow.__libmansuffix__ diff --git a/libX11/man/XDirectionalDependentDrawing.man b/libX11/man/XDirectionalDependentDrawing.man new file mode 100644 index 000000000..48ea35b67 --- /dev/null +++ b/libX11/man/XDirectionalDependentDrawing.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__ diff --git a/libX11/man/XDisableAccessControl.man b/libX11/man/XDisableAccessControl.man new file mode 100644 index 000000000..8efac194e --- /dev/null +++ b/libX11/man/XDisableAccessControl.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddHost.__libmansuffix__ diff --git a/libX11/man/XDisplayKeycodes.man b/libX11/man/XDisplayKeycodes.man new file mode 100644 index 000000000..013c70a95 --- /dev/null +++ b/libX11/man/XDisplayKeycodes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__ diff --git a/libX11/man/XDisplayMotionBufferSize.man b/libX11/man/XDisplayMotionBufferSize.man new file mode 100644 index 000000000..708dee7c8 --- /dev/null +++ b/libX11/man/XDisplayMotionBufferSize.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSendEvent.__libmansuffix__ diff --git a/libX11/man/XDisplayName.man b/libX11/man/XDisplayName.man new file mode 100644 index 000000000..608900365 --- /dev/null +++ b/libX11/man/XDisplayName.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetErrorHandler.__libmansuffix__ diff --git a/libX11/man/XDisplayOfIM.man b/libX11/man/XDisplayOfIM.man new file mode 100644 index 000000000..6d302b9cd --- /dev/null +++ b/libX11/man/XDisplayOfIM.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenIM.__libmansuffix__ diff --git a/libX11/man/XDisplayOfOM.man b/libX11/man/XDisplayOfOM.man new file mode 100644 index 000000000..d7e1adb03 --- /dev/null +++ b/libX11/man/XDisplayOfOM.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenOM.__libmansuffix__ diff --git a/libX11/man/XDrawArcs.man b/libX11/man/XDrawArcs.man new file mode 100644 index 000000000..71f63e1e2 --- /dev/null +++ b/libX11/man/XDrawArcs.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawArc.__libmansuffix__ diff --git a/libX11/man/XDrawImageString16.man b/libX11/man/XDrawImageString16.man new file mode 100644 index 000000000..e2de3d0ae --- /dev/null +++ b/libX11/man/XDrawImageString16.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawImageString.__libmansuffix__ diff --git a/libX11/man/XDrawLines.man b/libX11/man/XDrawLines.man new file mode 100644 index 000000000..a361976a0 --- /dev/null +++ b/libX11/man/XDrawLines.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawLine.__libmansuffix__ diff --git a/libX11/man/XDrawPoints.man b/libX11/man/XDrawPoints.man new file mode 100644 index 000000000..268cdcd97 --- /dev/null +++ b/libX11/man/XDrawPoints.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawPoint.__libmansuffix__ diff --git a/libX11/man/XDrawRectangles.man b/libX11/man/XDrawRectangles.man new file mode 100644 index 000000000..0def1f675 --- /dev/null +++ b/libX11/man/XDrawRectangles.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawRectangle.__libmansuffix__ diff --git a/libX11/man/XDrawSegments.man b/libX11/man/XDrawSegments.man new file mode 100644 index 000000000..a361976a0 --- /dev/null +++ b/libX11/man/XDrawSegments.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawLine.__libmansuffix__ diff --git a/libX11/man/XDrawString16.man b/libX11/man/XDrawString16.man new file mode 100644 index 000000000..15a747f8b --- /dev/null +++ b/libX11/man/XDrawString16.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawString.__libmansuffix__ diff --git a/libX11/man/XDrawText16.man b/libX11/man/XDrawText16.man new file mode 100644 index 000000000..cee50e8da --- /dev/null +++ b/libX11/man/XDrawText16.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawText.__libmansuffix__ diff --git a/libX11/man/XEnableAccessControl.man b/libX11/man/XEnableAccessControl.man new file mode 100644 index 000000000..8efac194e --- /dev/null +++ b/libX11/man/XEnableAccessControl.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddHost.__libmansuffix__ diff --git a/libX11/man/XEqualRegion.man b/libX11/man/XEqualRegion.man new file mode 100644 index 000000000..19b5dac0b --- /dev/null +++ b/libX11/man/XEqualRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XEmptyRegion.__libmansuffix__ diff --git a/libX11/man/XEvent.man b/libX11/man/XEvent.man new file mode 100644 index 000000000..cda915d19 --- /dev/null +++ b/libX11/man/XEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAnyEvent.__libmansuffix__ diff --git a/libX11/man/XEventsQueued.man b/libX11/man/XEventsQueued.man new file mode 100644 index 000000000..170707ae0 --- /dev/null +++ b/libX11/man/XEventsQueued.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFlush.__libmansuffix__ diff --git a/libX11/man/XExtendedMaxRequestSize.man b/libX11/man/XExtendedMaxRequestSize.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/XExtendedMaxRequestSize.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/XFetchBuffer.man b/libX11/man/XFetchBuffer.man new file mode 100644 index 000000000..c399f1c19 --- /dev/null +++ b/libX11/man/XFetchBuffer.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStoreBytes.__libmansuffix__ diff --git a/libX11/man/XFetchBytes.man b/libX11/man/XFetchBytes.man new file mode 100644 index 000000000..c399f1c19 --- /dev/null +++ b/libX11/man/XFetchBytes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStoreBytes.__libmansuffix__ diff --git a/libX11/man/XFetchName.man b/libX11/man/XFetchName.man new file mode 100644 index 000000000..6b4fc7e7d --- /dev/null +++ b/libX11/man/XFetchName.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMName.__libmansuffix__ diff --git a/libX11/man/XFillArc.man b/libX11/man/XFillArc.man new file mode 100644 index 000000000..10ca9226e --- /dev/null +++ b/libX11/man/XFillArc.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFillRectangle.__libmansuffix__ diff --git a/libX11/man/XFillArcs.man b/libX11/man/XFillArcs.man new file mode 100644 index 000000000..10ca9226e --- /dev/null +++ b/libX11/man/XFillArcs.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFillRectangle.__libmansuffix__ diff --git a/libX11/man/XFillPolygon.man b/libX11/man/XFillPolygon.man new file mode 100644 index 000000000..10ca9226e --- /dev/null +++ b/libX11/man/XFillPolygon.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFillRectangle.__libmansuffix__ diff --git a/libX11/man/XFillRectangles.man b/libX11/man/XFillRectangles.man new file mode 100644 index 000000000..10ca9226e --- /dev/null +++ b/libX11/man/XFillRectangles.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFillRectangle.__libmansuffix__ diff --git a/libX11/man/XFindContext.man b/libX11/man/XFindContext.man new file mode 100644 index 000000000..60c71a492 --- /dev/null +++ b/libX11/man/XFindContext.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSaveContext.__libmansuffix__ diff --git a/libX11/man/XFontProp.man b/libX11/man/XFontProp.man new file mode 100644 index 000000000..8b44e8513 --- /dev/null +++ b/libX11/man/XFontProp.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLoadFont.__libmansuffix__ diff --git a/libX11/man/XFontStruct.man b/libX11/man/XFontStruct.man new file mode 100644 index 000000000..8b44e8513 --- /dev/null +++ b/libX11/man/XFontStruct.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLoadFont.__libmansuffix__ diff --git a/libX11/man/XForceScreenSaver.man b/libX11/man/XForceScreenSaver.man new file mode 100644 index 000000000..35198d594 --- /dev/null +++ b/libX11/man/XForceScreenSaver.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetScreenSaver.__libmansuffix__ diff --git a/libX11/man/XFreeColormap.man b/libX11/man/XFreeColormap.man new file mode 100644 index 000000000..7a214a7a8 --- /dev/null +++ b/libX11/man/XFreeColormap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateColormap.__libmansuffix__ diff --git a/libX11/man/XFreeColors.man b/libX11/man/XFreeColors.man new file mode 100644 index 000000000..843a17fc9 --- /dev/null +++ b/libX11/man/XFreeColors.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocColor.__libmansuffix__ diff --git a/libX11/man/XFreeCursor.man b/libX11/man/XFreeCursor.man new file mode 100644 index 000000000..2600d2f3b --- /dev/null +++ b/libX11/man/XFreeCursor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XRecolorCursor.__libmansuffix__ diff --git a/libX11/man/XFreeEventData.man b/libX11/man/XFreeEventData.man new file mode 100644 index 000000000..cf44d9698 --- /dev/null +++ b/libX11/man/XFreeEventData.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetEventData.__libmansuffix__ diff --git a/libX11/man/XFreeExtensionList.man b/libX11/man/XFreeExtensionList.man new file mode 100644 index 000000000..d5ffc5c35 --- /dev/null +++ b/libX11/man/XFreeExtensionList.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XQueryExtension.__libmansuffix__ diff --git a/libX11/man/XFreeFont.man b/libX11/man/XFreeFont.man new file mode 100644 index 000000000..8b44e8513 --- /dev/null +++ b/libX11/man/XFreeFont.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLoadFont.__libmansuffix__ diff --git a/libX11/man/XFreeFontInfo.man b/libX11/man/XFreeFontInfo.man new file mode 100644 index 000000000..5c6200765 --- /dev/null +++ b/libX11/man/XFreeFontInfo.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XListFonts.__libmansuffix__ diff --git a/libX11/man/XFreeFontNames.man b/libX11/man/XFreeFontNames.man new file mode 100644 index 000000000..5c6200765 --- /dev/null +++ b/libX11/man/XFreeFontNames.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XListFonts.__libmansuffix__ diff --git a/libX11/man/XFreeFontPath.man b/libX11/man/XFreeFontPath.man new file mode 100644 index 000000000..49b4723ce --- /dev/null +++ b/libX11/man/XFreeFontPath.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetFontPath.__libmansuffix__ diff --git a/libX11/man/XFreeFontSet.man b/libX11/man/XFreeFontSet.man new file mode 100644 index 000000000..cda2771c0 --- /dev/null +++ b/libX11/man/XFreeFontSet.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateFontSet.__libmansuffix__ diff --git a/libX11/man/XFreeGC.man b/libX11/man/XFreeGC.man new file mode 100644 index 000000000..dec9f1eb7 --- /dev/null +++ b/libX11/man/XFreeGC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateGC.__libmansuffix__ diff --git a/libX11/man/XFreeModifierMap.man b/libX11/man/XFreeModifierMap.man new file mode 100644 index 000000000..013c70a95 --- /dev/null +++ b/libX11/man/XFreeModifierMap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__ diff --git a/libX11/man/XFreePixmap.man b/libX11/man/XFreePixmap.man new file mode 100644 index 000000000..36a302413 --- /dev/null +++ b/libX11/man/XFreePixmap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreatePixmap.__libmansuffix__ diff --git a/libX11/man/XFreeStringList.man b/libX11/man/XFreeStringList.man new file mode 100644 index 000000000..70c3debc2 --- /dev/null +++ b/libX11/man/XFreeStringList.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStringListToTextProperty.__libmansuffix__ diff --git a/libX11/man/XGCValues.man b/libX11/man/XGCValues.man new file mode 100644 index 000000000..dec9f1eb7 --- /dev/null +++ b/libX11/man/XGCValues.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateGC.__libmansuffix__ diff --git a/libX11/man/XGContextFromGC.man b/libX11/man/XGContextFromGC.man new file mode 100644 index 000000000..dec9f1eb7 --- /dev/null +++ b/libX11/man/XGContextFromGC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateGC.__libmansuffix__ diff --git a/libX11/man/XGenericEventCookie.man b/libX11/man/XGenericEventCookie.man new file mode 100644 index 000000000..cf44d9698 --- /dev/null +++ b/libX11/man/XGenericEventCookie.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetEventData.__libmansuffix__ diff --git a/libX11/man/XGetAtomName.man b/libX11/man/XGetAtomName.man new file mode 100644 index 000000000..6c0495121 --- /dev/null +++ b/libX11/man/XGetAtomName.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInternAtom.__libmansuffix__ diff --git a/libX11/man/XGetAtomNames.man b/libX11/man/XGetAtomNames.man new file mode 100644 index 000000000..6c0495121 --- /dev/null +++ b/libX11/man/XGetAtomNames.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInternAtom.__libmansuffix__ diff --git a/libX11/man/XGetClassHint.man b/libX11/man/XGetClassHint.man new file mode 100644 index 000000000..fc953a21b --- /dev/null +++ b/libX11/man/XGetClassHint.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocClassHint.__libmansuffix__ diff --git a/libX11/man/XGetCommand.man b/libX11/man/XGetCommand.man new file mode 100644 index 000000000..706fb1e1f --- /dev/null +++ b/libX11/man/XGetCommand.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetCommand.__libmansuffix__ diff --git a/libX11/man/XGetErrorDatabaseText.man b/libX11/man/XGetErrorDatabaseText.man new file mode 100644 index 000000000..608900365 --- /dev/null +++ b/libX11/man/XGetErrorDatabaseText.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetErrorHandler.__libmansuffix__ diff --git a/libX11/man/XGetErrorText.man b/libX11/man/XGetErrorText.man new file mode 100644 index 000000000..608900365 --- /dev/null +++ b/libX11/man/XGetErrorText.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetErrorHandler.__libmansuffix__ diff --git a/libX11/man/XGetFontPath.man b/libX11/man/XGetFontPath.man new file mode 100644 index 000000000..49b4723ce --- /dev/null +++ b/libX11/man/XGetFontPath.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetFontPath.__libmansuffix__ diff --git a/libX11/man/XGetFontProperty.man b/libX11/man/XGetFontProperty.man new file mode 100644 index 000000000..8b44e8513 --- /dev/null +++ b/libX11/man/XGetFontProperty.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLoadFont.__libmansuffix__ diff --git a/libX11/man/XGetGCValues.man b/libX11/man/XGetGCValues.man new file mode 100644 index 000000000..dec9f1eb7 --- /dev/null +++ b/libX11/man/XGetGCValues.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateGC.__libmansuffix__ diff --git a/libX11/man/XGetGeometry.man b/libX11/man/XGetGeometry.man new file mode 100644 index 000000000..df77346fb --- /dev/null +++ b/libX11/man/XGetGeometry.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetWindowAttributes.__libmansuffix__ diff --git a/libX11/man/XGetICValues.man b/libX11/man/XGetICValues.man new file mode 100644 index 000000000..a80dcff32 --- /dev/null +++ b/libX11/man/XGetICValues.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetICValues.__libmansuffix__ diff --git a/libX11/man/XGetIMValues.man b/libX11/man/XGetIMValues.man new file mode 100644 index 000000000..6d302b9cd --- /dev/null +++ b/libX11/man/XGetIMValues.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenIM.__libmansuffix__ diff --git a/libX11/man/XGetIconName.man b/libX11/man/XGetIconName.man new file mode 100644 index 000000000..e315e4495 --- /dev/null +++ b/libX11/man/XGetIconName.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMIconName.__libmansuffix__ diff --git a/libX11/man/XGetIconSizes.man b/libX11/man/XGetIconSizes.man new file mode 100644 index 000000000..edc8882fb --- /dev/null +++ b/libX11/man/XGetIconSizes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocIconSize.__libmansuffix__ diff --git a/libX11/man/XGetImage.man b/libX11/man/XGetImage.man new file mode 100644 index 000000000..d17774846 --- /dev/null +++ b/libX11/man/XGetImage.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XPutImage.__libmansuffix__ diff --git a/libX11/man/XGetInputFocus.man b/libX11/man/XGetInputFocus.man new file mode 100644 index 000000000..c6c1bbb04 --- /dev/null +++ b/libX11/man/XGetInputFocus.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetInputFocus.__libmansuffix__ diff --git a/libX11/man/XGetKeyboardControl.man b/libX11/man/XGetKeyboardControl.man new file mode 100644 index 000000000..528cea2d7 --- /dev/null +++ b/libX11/man/XGetKeyboardControl.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__ diff --git a/libX11/man/XGetKeyboardMapping.man b/libX11/man/XGetKeyboardMapping.man new file mode 100644 index 000000000..013c70a95 --- /dev/null +++ b/libX11/man/XGetKeyboardMapping.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__ diff --git a/libX11/man/XGetModifierMapping.man b/libX11/man/XGetModifierMapping.man new file mode 100644 index 000000000..013c70a95 --- /dev/null +++ b/libX11/man/XGetModifierMapping.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__ diff --git a/libX11/man/XGetMotionEvents.man b/libX11/man/XGetMotionEvents.man new file mode 100644 index 000000000..708dee7c8 --- /dev/null +++ b/libX11/man/XGetMotionEvents.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSendEvent.__libmansuffix__ diff --git a/libX11/man/XGetOCValues.man b/libX11/man/XGetOCValues.man new file mode 100644 index 000000000..ece6d5ce7 --- /dev/null +++ b/libX11/man/XGetOCValues.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateOC.__libmansuffix__ diff --git a/libX11/man/XGetOMValues.man b/libX11/man/XGetOMValues.man new file mode 100644 index 000000000..d7e1adb03 --- /dev/null +++ b/libX11/man/XGetOMValues.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenOM.__libmansuffix__ diff --git a/libX11/man/XGetPixel.man b/libX11/man/XGetPixel.man new file mode 100644 index 000000000..8fe560159 --- /dev/null +++ b/libX11/man/XGetPixel.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInitImage.__libmansuffix__ diff --git a/libX11/man/XGetPointerControl.man b/libX11/man/XGetPointerControl.man new file mode 100644 index 000000000..f4e744322 --- /dev/null +++ b/libX11/man/XGetPointerControl.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangePointerControl.__libmansuffix__ diff --git a/libX11/man/XGetPointerMapping.man b/libX11/man/XGetPointerMapping.man new file mode 100644 index 000000000..9fc1407c5 --- /dev/null +++ b/libX11/man/XGetPointerMapping.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetPointerMapping.__libmansuffix__ diff --git a/libX11/man/XGetRGBColormaps.man b/libX11/man/XGetRGBColormaps.man new file mode 100644 index 000000000..a36aee4fe --- /dev/null +++ b/libX11/man/XGetRGBColormaps.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocStandardColormap.__libmansuffix__ diff --git a/libX11/man/XGetScreenSaver.man b/libX11/man/XGetScreenSaver.man new file mode 100644 index 000000000..35198d594 --- /dev/null +++ b/libX11/man/XGetScreenSaver.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetScreenSaver.__libmansuffix__ diff --git a/libX11/man/XGetSelectionOwner.man b/libX11/man/XGetSelectionOwner.man new file mode 100644 index 000000000..c8e52aa34 --- /dev/null +++ b/libX11/man/XGetSelectionOwner.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetSelectionOwner.__libmansuffix__ diff --git a/libX11/man/XGetSubImage.man b/libX11/man/XGetSubImage.man new file mode 100644 index 000000000..d17774846 --- /dev/null +++ b/libX11/man/XGetSubImage.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XPutImage.__libmansuffix__ diff --git a/libX11/man/XGetTextProperty.man b/libX11/man/XGetTextProperty.man new file mode 100644 index 000000000..1d04e4fc3 --- /dev/null +++ b/libX11/man/XGetTextProperty.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetTextProperty.__libmansuffix__ diff --git a/libX11/man/XGetTransientForHint.man b/libX11/man/XGetTransientForHint.man new file mode 100644 index 000000000..df25fc239 --- /dev/null +++ b/libX11/man/XGetTransientForHint.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetTransientForHint.__libmansuffix__ diff --git a/libX11/man/XGetWMClientMachine.man b/libX11/man/XGetWMClientMachine.man new file mode 100644 index 000000000..cd7c2f074 --- /dev/null +++ b/libX11/man/XGetWMClientMachine.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMClientMachine.__libmansuffix__ diff --git a/libX11/man/XGetWMColormapWindows.man b/libX11/man/XGetWMColormapWindows.man new file mode 100644 index 000000000..5b0f489ce --- /dev/null +++ b/libX11/man/XGetWMColormapWindows.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMColormapWindows.__libmansuffix__ diff --git a/libX11/man/XGetWMHints.man b/libX11/man/XGetWMHints.man new file mode 100644 index 000000000..e066f6d95 --- /dev/null +++ b/libX11/man/XGetWMHints.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocWMHints.__libmansuffix__ diff --git a/libX11/man/XGetWMIconName.man b/libX11/man/XGetWMIconName.man new file mode 100644 index 000000000..e315e4495 --- /dev/null +++ b/libX11/man/XGetWMIconName.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMIconName.__libmansuffix__ diff --git a/libX11/man/XGetWMName.man b/libX11/man/XGetWMName.man new file mode 100644 index 000000000..6b4fc7e7d --- /dev/null +++ b/libX11/man/XGetWMName.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMName.__libmansuffix__ diff --git a/libX11/man/XGetWMNormalHints.man b/libX11/man/XGetWMNormalHints.man new file mode 100644 index 000000000..94ebb6295 --- /dev/null +++ b/libX11/man/XGetWMNormalHints.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocSizeHints.__libmansuffix__ diff --git a/libX11/man/XGetWMProtocols.man b/libX11/man/XGetWMProtocols.man new file mode 100644 index 000000000..565aad646 --- /dev/null +++ b/libX11/man/XGetWMProtocols.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMProtocols.__libmansuffix__ diff --git a/libX11/man/XGetWMSizeHints.man b/libX11/man/XGetWMSizeHints.man new file mode 100644 index 000000000..94ebb6295 --- /dev/null +++ b/libX11/man/XGetWMSizeHints.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocSizeHints.__libmansuffix__ diff --git a/libX11/man/XHostAddress.man b/libX11/man/XHostAddress.man new file mode 100644 index 000000000..8efac194e --- /dev/null +++ b/libX11/man/XHostAddress.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddHost.__libmansuffix__ diff --git a/libX11/man/XIMOfIC.man b/libX11/man/XIMOfIC.man new file mode 100644 index 000000000..652aa0330 --- /dev/null +++ b/libX11/man/XIMOfIC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateIC.__libmansuffix__ diff --git a/libX11/man/XIconSize.man b/libX11/man/XIconSize.man new file mode 100644 index 000000000..edc8882fb --- /dev/null +++ b/libX11/man/XIconSize.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocIconSize.__libmansuffix__ diff --git a/libX11/man/XInsertModifiermapEntry.man b/libX11/man/XInsertModifiermapEntry.man new file mode 100644 index 000000000..013c70a95 --- /dev/null +++ b/libX11/man/XInsertModifiermapEntry.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__ diff --git a/libX11/man/XInternAtoms.man b/libX11/man/XInternAtoms.man new file mode 100644 index 000000000..6c0495121 --- /dev/null +++ b/libX11/man/XInternAtoms.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInternAtom.__libmansuffix__ diff --git a/libX11/man/XInternalConnectionNumbers.man b/libX11/man/XInternalConnectionNumbers.man new file mode 100644 index 000000000..4a3cc1380 --- /dev/null +++ b/libX11/man/XInternalConnectionNumbers.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddConnectionWatch.__libmansuffix__ diff --git a/libX11/man/XKeyEvent.man b/libX11/man/XKeyEvent.man new file mode 100644 index 000000000..41e30bbe3 --- /dev/null +++ b/libX11/man/XKeyEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XButtonEvent.__libmansuffix__ diff --git a/libX11/man/XKeyboardControl.man b/libX11/man/XKeyboardControl.man new file mode 100644 index 000000000..528cea2d7 --- /dev/null +++ b/libX11/man/XKeyboardControl.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__ diff --git a/libX11/man/XKeycodeToKeysym.man b/libX11/man/XKeycodeToKeysym.man new file mode 100644 index 000000000..9126b791f --- /dev/null +++ b/libX11/man/XKeycodeToKeysym.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStringToKeysym.__libmansuffix__ diff --git a/libX11/man/XKeysymToKeycode.man b/libX11/man/XKeysymToKeycode.man new file mode 100644 index 000000000..9126b791f --- /dev/null +++ b/libX11/man/XKeysymToKeycode.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStringToKeysym.__libmansuffix__ diff --git a/libX11/man/XKeysymToString.man b/libX11/man/XKeysymToString.man new file mode 100644 index 000000000..9126b791f --- /dev/null +++ b/libX11/man/XKeysymToString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStringToKeysym.__libmansuffix__ diff --git a/libX11/man/XKillClient.man b/libX11/man/XKillClient.man new file mode 100644 index 000000000..a94379149 --- /dev/null +++ b/libX11/man/XKillClient.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetCloseDownMode.__libmansuffix__ diff --git a/libX11/man/XListDepths.man b/libX11/man/XListDepths.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/XListDepths.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/XListExtensions.man b/libX11/man/XListExtensions.man new file mode 100644 index 000000000..d5ffc5c35 --- /dev/null +++ b/libX11/man/XListExtensions.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XQueryExtension.__libmansuffix__ diff --git a/libX11/man/XListFontsWithInfo.man b/libX11/man/XListFontsWithInfo.man new file mode 100644 index 000000000..5c6200765 --- /dev/null +++ b/libX11/man/XListFontsWithInfo.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XListFonts.__libmansuffix__ diff --git a/libX11/man/XListHosts.man b/libX11/man/XListHosts.man new file mode 100644 index 000000000..8efac194e --- /dev/null +++ b/libX11/man/XListHosts.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddHost.__libmansuffix__ diff --git a/libX11/man/XListInstalledColormaps.man b/libX11/man/XListInstalledColormaps.man new file mode 100644 index 000000000..7b18ab38b --- /dev/null +++ b/libX11/man/XListInstalledColormaps.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInstallColormap.__libmansuffix__ diff --git a/libX11/man/XListPixmapFormats.man b/libX11/man/XListPixmapFormats.man new file mode 100644 index 000000000..0a59afe46 --- /dev/null +++ b/libX11/man/XListPixmapFormats.man @@ -0,0 +1 @@ +.so man__libmansuffix__/ImageByteOrder.__libmansuffix__ diff --git a/libX11/man/XListProperties.man b/libX11/man/XListProperties.man new file mode 100644 index 000000000..e265d7d69 --- /dev/null +++ b/libX11/man/XListProperties.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetWindowProperty.__libmansuffix__ diff --git a/libX11/man/XLoadQueryFont.man b/libX11/man/XLoadQueryFont.man new file mode 100644 index 000000000..8b44e8513 --- /dev/null +++ b/libX11/man/XLoadQueryFont.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLoadFont.__libmansuffix__ diff --git a/libX11/man/XLocaleOfFontSet.man b/libX11/man/XLocaleOfFontSet.man new file mode 100644 index 000000000..48ea35b67 --- /dev/null +++ b/libX11/man/XLocaleOfFontSet.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__ diff --git a/libX11/man/XLocaleOfIM.man b/libX11/man/XLocaleOfIM.man new file mode 100644 index 000000000..6d302b9cd --- /dev/null +++ b/libX11/man/XLocaleOfIM.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenIM.__libmansuffix__ diff --git a/libX11/man/XLocaleOfOM.man b/libX11/man/XLocaleOfOM.man new file mode 100644 index 000000000..d7e1adb03 --- /dev/null +++ b/libX11/man/XLocaleOfOM.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenOM.__libmansuffix__ diff --git a/libX11/man/XLockDisplay.man b/libX11/man/XLockDisplay.man new file mode 100644 index 000000000..bc8bb0205 --- /dev/null +++ b/libX11/man/XLockDisplay.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInitThreads.__libmansuffix__ diff --git a/libX11/man/XLookupColor.man b/libX11/man/XLookupColor.man new file mode 100644 index 000000000..d1aad2b4a --- /dev/null +++ b/libX11/man/XLookupColor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XQueryColor.__libmansuffix__ diff --git a/libX11/man/XLookupString.man b/libX11/man/XLookupString.man new file mode 100644 index 000000000..23156fe74 --- /dev/null +++ b/libX11/man/XLookupString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLookupKeysym.__libmansuffix__ diff --git a/libX11/man/XLowerWindow.man b/libX11/man/XLowerWindow.man new file mode 100644 index 000000000..61d7a2348 --- /dev/null +++ b/libX11/man/XLowerWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XRaiseWindow.__libmansuffix__ diff --git a/libX11/man/XMapRaised.man b/libX11/man/XMapRaised.man new file mode 100644 index 000000000..ab771f83f --- /dev/null +++ b/libX11/man/XMapRaised.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XMapWindow.__libmansuffix__ diff --git a/libX11/man/XMapSubwindows.man b/libX11/man/XMapSubwindows.man new file mode 100644 index 000000000..ab771f83f --- /dev/null +++ b/libX11/man/XMapSubwindows.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XMapWindow.__libmansuffix__ diff --git a/libX11/man/XMappingEvent.man b/libX11/man/XMappingEvent.man new file mode 100644 index 000000000..c0a031b46 --- /dev/null +++ b/libX11/man/XMappingEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XMapEvent.__libmansuffix__ diff --git a/libX11/man/XMaskEvent.man b/libX11/man/XMaskEvent.man new file mode 100644 index 000000000..f421b8caa --- /dev/null +++ b/libX11/man/XMaskEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XNextEvent.__libmansuffix__ diff --git a/libX11/man/XMatchVisualInfo.man b/libX11/man/XMatchVisualInfo.man new file mode 100644 index 000000000..0b12bf69d --- /dev/null +++ b/libX11/man/XMatchVisualInfo.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetVisualInfo.__libmansuffix__ diff --git a/libX11/man/XMaxRequestSize.man b/libX11/man/XMaxRequestSize.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/XMaxRequestSize.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__ diff --git a/libX11/man/XModifierKeymap.man b/libX11/man/XModifierKeymap.man new file mode 100644 index 000000000..013c70a95 --- /dev/null +++ b/libX11/man/XModifierKeymap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__ diff --git a/libX11/man/XMotionEvent.man b/libX11/man/XMotionEvent.man new file mode 100644 index 000000000..41e30bbe3 --- /dev/null +++ b/libX11/man/XMotionEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XButtonEvent.__libmansuffix__ diff --git a/libX11/man/XMoveResizeWindow.man b/libX11/man/XMoveResizeWindow.man new file mode 100644 index 000000000..5fbc49488 --- /dev/null +++ b/libX11/man/XMoveResizeWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XConfigureWindow.__libmansuffix__ diff --git a/libX11/man/XMoveWindow.man b/libX11/man/XMoveWindow.man new file mode 100644 index 000000000..5fbc49488 --- /dev/null +++ b/libX11/man/XMoveWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XConfigureWindow.__libmansuffix__ diff --git a/libX11/man/XNewModifiermap.man b/libX11/man/XNewModifiermap.man new file mode 100644 index 000000000..013c70a95 --- /dev/null +++ b/libX11/man/XNewModifiermap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__ diff --git a/libX11/man/XNoExposeEvent.man b/libX11/man/XNoExposeEvent.man new file mode 100644 index 000000000..c986c219c --- /dev/null +++ b/libX11/man/XNoExposeEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGraphicsExposeEvent.__libmansuffix__ diff --git a/libX11/man/XOMOfOC.man b/libX11/man/XOMOfOC.man new file mode 100644 index 000000000..ece6d5ce7 --- /dev/null +++ b/libX11/man/XOMOfOC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateOC.__libmansuffix__ diff --git a/libX11/man/XOffsetRegion.man b/libX11/man/XOffsetRegion.man new file mode 100644 index 000000000..630c1f2c8 --- /dev/null +++ b/libX11/man/XOffsetRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XIntersectRegion.__libmansuffix__ diff --git a/libX11/man/XParseColor.man b/libX11/man/XParseColor.man new file mode 100644 index 000000000..d1aad2b4a --- /dev/null +++ b/libX11/man/XParseColor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XQueryColor.__libmansuffix__ diff --git a/libX11/man/XPeekEvent.man b/libX11/man/XPeekEvent.man new file mode 100644 index 000000000..f421b8caa --- /dev/null +++ b/libX11/man/XPeekEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XNextEvent.__libmansuffix__ diff --git a/libX11/man/XPeekIfEvent.man b/libX11/man/XPeekIfEvent.man new file mode 100644 index 000000000..5970130fb --- /dev/null +++ b/libX11/man/XPeekIfEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XIfEvent.__libmansuffix__ diff --git a/libX11/man/XPending.man b/libX11/man/XPending.man new file mode 100644 index 000000000..170707ae0 --- /dev/null +++ b/libX11/man/XPending.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFlush.__libmansuffix__ diff --git a/libX11/man/XPixmapFormatValues.man b/libX11/man/XPixmapFormatValues.man new file mode 100644 index 000000000..0a59afe46 --- /dev/null +++ b/libX11/man/XPixmapFormatValues.man @@ -0,0 +1 @@ +.so man__libmansuffix__/ImageByteOrder.__libmansuffix__ diff --git a/libX11/man/XPoint.man b/libX11/man/XPoint.man new file mode 100644 index 000000000..268cdcd97 --- /dev/null +++ b/libX11/man/XPoint.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawPoint.__libmansuffix__ diff --git a/libX11/man/XPointInRegion.man b/libX11/man/XPointInRegion.man new file mode 100644 index 000000000..19b5dac0b --- /dev/null +++ b/libX11/man/XPointInRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XEmptyRegion.__libmansuffix__ diff --git a/libX11/man/XProcessInternalConnection.man b/libX11/man/XProcessInternalConnection.man new file mode 100644 index 000000000..4a3cc1380 --- /dev/null +++ b/libX11/man/XProcessInternalConnection.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddConnectionWatch.__libmansuffix__ diff --git a/libX11/man/XPutPixel.man b/libX11/man/XPutPixel.man new file mode 100644 index 000000000..8fe560159 --- /dev/null +++ b/libX11/man/XPutPixel.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInitImage.__libmansuffix__ diff --git a/libX11/man/XQueryBestCursor.man b/libX11/man/XQueryBestCursor.man new file mode 100644 index 000000000..2600d2f3b --- /dev/null +++ b/libX11/man/XQueryBestCursor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XRecolorCursor.__libmansuffix__ diff --git a/libX11/man/XQueryBestStipple.man b/libX11/man/XQueryBestStipple.man new file mode 100644 index 000000000..171150340 --- /dev/null +++ b/libX11/man/XQueryBestStipple.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XQueryBestSize.__libmansuffix__ diff --git a/libX11/man/XQueryBestTile.man b/libX11/man/XQueryBestTile.man new file mode 100644 index 000000000..171150340 --- /dev/null +++ b/libX11/man/XQueryBestTile.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XQueryBestSize.__libmansuffix__ diff --git a/libX11/man/XQueryColors.man b/libX11/man/XQueryColors.man new file mode 100644 index 000000000..d1aad2b4a --- /dev/null +++ b/libX11/man/XQueryColors.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XQueryColor.__libmansuffix__ diff --git a/libX11/man/XQueryFont.man b/libX11/man/XQueryFont.man new file mode 100644 index 000000000..8b44e8513 --- /dev/null +++ b/libX11/man/XQueryFont.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLoadFont.__libmansuffix__ diff --git a/libX11/man/XQueryKeymap.man b/libX11/man/XQueryKeymap.man new file mode 100644 index 000000000..528cea2d7 --- /dev/null +++ b/libX11/man/XQueryKeymap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__ diff --git a/libX11/man/XQueryTextExtents.man b/libX11/man/XQueryTextExtents.man new file mode 100644 index 000000000..36be9d3c7 --- /dev/null +++ b/libX11/man/XQueryTextExtents.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XTextExtents.__libmansuffix__ diff --git a/libX11/man/XQueryTextExtents16.man b/libX11/man/XQueryTextExtents16.man new file mode 100644 index 000000000..36be9d3c7 --- /dev/null +++ b/libX11/man/XQueryTextExtents16.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XTextExtents.__libmansuffix__ diff --git a/libX11/man/XReadBitmapFileData.man b/libX11/man/XReadBitmapFileData.man new file mode 100644 index 000000000..9631570d0 --- /dev/null +++ b/libX11/man/XReadBitmapFileData.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XReadBitmapFile.__libmansuffix__ diff --git a/libX11/man/XRebindKeysym.man b/libX11/man/XRebindKeysym.man new file mode 100644 index 000000000..23156fe74 --- /dev/null +++ b/libX11/man/XRebindKeysym.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLookupKeysym.__libmansuffix__ diff --git a/libX11/man/XReconfigureWMWindow.man b/libX11/man/XReconfigureWMWindow.man new file mode 100644 index 000000000..799989ad0 --- /dev/null +++ b/libX11/man/XReconfigureWMWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XIconifyWindow.__libmansuffix__ diff --git a/libX11/man/XRectInRegion.man b/libX11/man/XRectInRegion.man new file mode 100644 index 000000000..19b5dac0b --- /dev/null +++ b/libX11/man/XRectInRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XEmptyRegion.__libmansuffix__ diff --git a/libX11/man/XRectangle.man b/libX11/man/XRectangle.man new file mode 100644 index 000000000..0def1f675 --- /dev/null +++ b/libX11/man/XRectangle.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawRectangle.__libmansuffix__ diff --git a/libX11/man/XRefreshKeyboardMapping.man b/libX11/man/XRefreshKeyboardMapping.man new file mode 100644 index 000000000..23156fe74 --- /dev/null +++ b/libX11/man/XRefreshKeyboardMapping.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLookupKeysym.__libmansuffix__ diff --git a/libX11/man/XRegisterIMInstantiateCallback.man b/libX11/man/XRegisterIMInstantiateCallback.man new file mode 100644 index 000000000..6d302b9cd --- /dev/null +++ b/libX11/man/XRegisterIMInstantiateCallback.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenIM.__libmansuffix__ diff --git a/libX11/man/XRemoveConnectionWatch.man b/libX11/man/XRemoveConnectionWatch.man new file mode 100644 index 000000000..4a3cc1380 --- /dev/null +++ b/libX11/man/XRemoveConnectionWatch.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddConnectionWatch.__libmansuffix__ diff --git a/libX11/man/XRemoveFromSaveSet.man b/libX11/man/XRemoveFromSaveSet.man new file mode 100644 index 000000000..0ea6bfcfc --- /dev/null +++ b/libX11/man/XRemoveFromSaveSet.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeSaveSet.__libmansuffix__ diff --git a/libX11/man/XRemoveHost.man b/libX11/man/XRemoveHost.man new file mode 100644 index 000000000..8efac194e --- /dev/null +++ b/libX11/man/XRemoveHost.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddHost.__libmansuffix__ diff --git a/libX11/man/XRemoveHosts.man b/libX11/man/XRemoveHosts.man new file mode 100644 index 000000000..8efac194e --- /dev/null +++ b/libX11/man/XRemoveHosts.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddHost.__libmansuffix__ diff --git a/libX11/man/XResetScreenSaver.man b/libX11/man/XResetScreenSaver.man new file mode 100644 index 000000000..35198d594 --- /dev/null +++ b/libX11/man/XResetScreenSaver.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetScreenSaver.__libmansuffix__ diff --git a/libX11/man/XResizeWindow.man b/libX11/man/XResizeWindow.man new file mode 100644 index 000000000..5fbc49488 --- /dev/null +++ b/libX11/man/XResizeWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XConfigureWindow.__libmansuffix__ diff --git a/libX11/man/XRestackWindows.man b/libX11/man/XRestackWindows.man new file mode 100644 index 000000000..61d7a2348 --- /dev/null +++ b/libX11/man/XRestackWindows.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XRaiseWindow.__libmansuffix__ diff --git a/libX11/man/XRotateBuffers.man b/libX11/man/XRotateBuffers.man new file mode 100644 index 000000000..c399f1c19 --- /dev/null +++ b/libX11/man/XRotateBuffers.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStoreBytes.__libmansuffix__ diff --git a/libX11/man/XRotateWindowProperties.man b/libX11/man/XRotateWindowProperties.man new file mode 100644 index 000000000..e265d7d69 --- /dev/null +++ b/libX11/man/XRotateWindowProperties.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetWindowProperty.__libmansuffix__ diff --git a/libX11/man/XScreenNumberOfScreen.man b/libX11/man/XScreenNumberOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/XScreenNumberOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__ diff --git a/libX11/man/XScreenResourceString.man b/libX11/man/XScreenResourceString.man new file mode 100644 index 000000000..5bb47cead --- /dev/null +++ b/libX11/man/XScreenResourceString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XResourceManagerString.__libmansuffix__ diff --git a/libX11/man/XSegment.man b/libX11/man/XSegment.man new file mode 100644 index 000000000..a361976a0 --- /dev/null +++ b/libX11/man/XSegment.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawLine.__libmansuffix__ diff --git a/libX11/man/XSetAccessControl.man b/libX11/man/XSetAccessControl.man new file mode 100644 index 000000000..8efac194e --- /dev/null +++ b/libX11/man/XSetAccessControl.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddHost.__libmansuffix__ diff --git a/libX11/man/XSetAfterFunction.man b/libX11/man/XSetAfterFunction.man new file mode 100644 index 000000000..f37afee4a --- /dev/null +++ b/libX11/man/XSetAfterFunction.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSynchronize.__libmansuffix__ diff --git a/libX11/man/XSetBackground.man b/libX11/man/XSetBackground.man new file mode 100644 index 000000000..137df8ee5 --- /dev/null +++ b/libX11/man/XSetBackground.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetState.__libmansuffix__ diff --git a/libX11/man/XSetClassHint.man b/libX11/man/XSetClassHint.man new file mode 100644 index 000000000..fc953a21b --- /dev/null +++ b/libX11/man/XSetClassHint.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocClassHint.__libmansuffix__ diff --git a/libX11/man/XSetClipMask.man b/libX11/man/XSetClipMask.man new file mode 100644 index 000000000..5393e9b2a --- /dev/null +++ b/libX11/man/XSetClipMask.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetClipOrigin.__libmansuffix__ diff --git a/libX11/man/XSetClipRectangles.man b/libX11/man/XSetClipRectangles.man new file mode 100644 index 000000000..5393e9b2a --- /dev/null +++ b/libX11/man/XSetClipRectangles.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetClipOrigin.__libmansuffix__ diff --git a/libX11/man/XSetDashes.man b/libX11/man/XSetDashes.man new file mode 100644 index 000000000..6193102c0 --- /dev/null +++ b/libX11/man/XSetDashes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetLineAttributes.__libmansuffix__ diff --git a/libX11/man/XSetFillRule.man b/libX11/man/XSetFillRule.man new file mode 100644 index 000000000..aa575baab --- /dev/null +++ b/libX11/man/XSetFillRule.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetFillStyle.__libmansuffix__ diff --git a/libX11/man/XSetForeground.man b/libX11/man/XSetForeground.man new file mode 100644 index 000000000..137df8ee5 --- /dev/null +++ b/libX11/man/XSetForeground.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetState.__libmansuffix__ diff --git a/libX11/man/XSetFunction.man b/libX11/man/XSetFunction.man new file mode 100644 index 000000000..137df8ee5 --- /dev/null +++ b/libX11/man/XSetFunction.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetState.__libmansuffix__ diff --git a/libX11/man/XSetGraphicsExposure.man b/libX11/man/XSetGraphicsExposure.man new file mode 100644 index 000000000..9d4203f44 --- /dev/null +++ b/libX11/man/XSetGraphicsExposure.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetArcMode.__libmansuffix__ diff --git a/libX11/man/XSetIMValues.man b/libX11/man/XSetIMValues.man new file mode 100644 index 000000000..6d302b9cd --- /dev/null +++ b/libX11/man/XSetIMValues.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenIM.__libmansuffix__ diff --git a/libX11/man/XSetIOErrorHandler.man b/libX11/man/XSetIOErrorHandler.man new file mode 100644 index 000000000..608900365 --- /dev/null +++ b/libX11/man/XSetIOErrorHandler.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetErrorHandler.__libmansuffix__ diff --git a/libX11/man/XSetIconName.man b/libX11/man/XSetIconName.man new file mode 100644 index 000000000..e315e4495 --- /dev/null +++ b/libX11/man/XSetIconName.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMIconName.__libmansuffix__ diff --git a/libX11/man/XSetIconSizes.man b/libX11/man/XSetIconSizes.man new file mode 100644 index 000000000..edc8882fb --- /dev/null +++ b/libX11/man/XSetIconSizes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocIconSize.__libmansuffix__ diff --git a/libX11/man/XSetLocaleModifiers.man b/libX11/man/XSetLocaleModifiers.man new file mode 100644 index 000000000..046f97fe3 --- /dev/null +++ b/libX11/man/XSetLocaleModifiers.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSupportsLocale.__libmansuffix__ diff --git a/libX11/man/XSetModifierMapping.man b/libX11/man/XSetModifierMapping.man new file mode 100644 index 000000000..013c70a95 --- /dev/null +++ b/libX11/man/XSetModifierMapping.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__ diff --git a/libX11/man/XSetOCValues.man b/libX11/man/XSetOCValues.man new file mode 100644 index 000000000..ece6d5ce7 --- /dev/null +++ b/libX11/man/XSetOCValues.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateOC.__libmansuffix__ diff --git a/libX11/man/XSetOMValues.man b/libX11/man/XSetOMValues.man new file mode 100644 index 000000000..d7e1adb03 --- /dev/null +++ b/libX11/man/XSetOMValues.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenOM.__libmansuffix__ diff --git a/libX11/man/XSetPlaneMask.man b/libX11/man/XSetPlaneMask.man new file mode 100644 index 000000000..137df8ee5 --- /dev/null +++ b/libX11/man/XSetPlaneMask.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetState.__libmansuffix__ diff --git a/libX11/man/XSetRGBColormaps.man b/libX11/man/XSetRGBColormaps.man new file mode 100644 index 000000000..a36aee4fe --- /dev/null +++ b/libX11/man/XSetRGBColormaps.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocStandardColormap.__libmansuffix__ diff --git a/libX11/man/XSetRegion.man b/libX11/man/XSetRegion.man new file mode 100644 index 000000000..9e7e7d197 --- /dev/null +++ b/libX11/man/XSetRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateRegion.__libmansuffix__ diff --git a/libX11/man/XSetStipple.man b/libX11/man/XSetStipple.man new file mode 100644 index 000000000..7c434f5cc --- /dev/null +++ b/libX11/man/XSetStipple.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetTile.__libmansuffix__ diff --git a/libX11/man/XSetSubwindowMode.man b/libX11/man/XSetSubwindowMode.man new file mode 100644 index 000000000..9d4203f44 --- /dev/null +++ b/libX11/man/XSetSubwindowMode.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetArcMode.__libmansuffix__ diff --git a/libX11/man/XSetTSOrigin.man b/libX11/man/XSetTSOrigin.man new file mode 100644 index 000000000..7c434f5cc --- /dev/null +++ b/libX11/man/XSetTSOrigin.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetTile.__libmansuffix__ diff --git a/libX11/man/XSetWMHints.man b/libX11/man/XSetWMHints.man new file mode 100644 index 000000000..e066f6d95 --- /dev/null +++ b/libX11/man/XSetWMHints.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocWMHints.__libmansuffix__ diff --git a/libX11/man/XSetWMNormalHints.man b/libX11/man/XSetWMNormalHints.man new file mode 100644 index 000000000..94ebb6295 --- /dev/null +++ b/libX11/man/XSetWMNormalHints.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocSizeHints.__libmansuffix__ diff --git a/libX11/man/XSetWMSizeHints.man b/libX11/man/XSetWMSizeHints.man new file mode 100644 index 000000000..94ebb6295 --- /dev/null +++ b/libX11/man/XSetWMSizeHints.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocSizeHints.__libmansuffix__ diff --git a/libX11/man/XSetWindowAttributes.man b/libX11/man/XSetWindowAttributes.man new file mode 100644 index 000000000..11440c64e --- /dev/null +++ b/libX11/man/XSetWindowAttributes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateWindow.__libmansuffix__ diff --git a/libX11/man/XSetWindowBackground.man b/libX11/man/XSetWindowBackground.man new file mode 100644 index 000000000..1c1160ec3 --- /dev/null +++ b/libX11/man/XSetWindowBackground.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__ diff --git a/libX11/man/XSetWindowBackgroundPixmap.man b/libX11/man/XSetWindowBackgroundPixmap.man new file mode 100644 index 000000000..1c1160ec3 --- /dev/null +++ b/libX11/man/XSetWindowBackgroundPixmap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__ diff --git a/libX11/man/XSetWindowBorder.man b/libX11/man/XSetWindowBorder.man new file mode 100644 index 000000000..1c1160ec3 --- /dev/null +++ b/libX11/man/XSetWindowBorder.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__ diff --git a/libX11/man/XSetWindowBorderPixmap.man b/libX11/man/XSetWindowBorderPixmap.man new file mode 100644 index 000000000..1c1160ec3 --- /dev/null +++ b/libX11/man/XSetWindowBorderPixmap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__ diff --git a/libX11/man/XSetWindowBorderWidth.man b/libX11/man/XSetWindowBorderWidth.man new file mode 100644 index 000000000..5fbc49488 --- /dev/null +++ b/libX11/man/XSetWindowBorderWidth.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XConfigureWindow.__libmansuffix__ diff --git a/libX11/man/XSetWindowColormap.man b/libX11/man/XSetWindowColormap.man new file mode 100644 index 000000000..1c1160ec3 --- /dev/null +++ b/libX11/man/XSetWindowColormap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__ diff --git a/libX11/man/XShrinkRegion.man b/libX11/man/XShrinkRegion.man new file mode 100644 index 000000000..630c1f2c8 --- /dev/null +++ b/libX11/man/XShrinkRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XIntersectRegion.__libmansuffix__ diff --git a/libX11/man/XSizeHints.man b/libX11/man/XSizeHints.man new file mode 100644 index 000000000..94ebb6295 --- /dev/null +++ b/libX11/man/XSizeHints.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocSizeHints.__libmansuffix__ diff --git a/libX11/man/XStandardColormap.man b/libX11/man/XStandardColormap.man new file mode 100644 index 000000000..a36aee4fe --- /dev/null +++ b/libX11/man/XStandardColormap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocStandardColormap.__libmansuffix__ diff --git a/libX11/man/XStoreBuffer.man b/libX11/man/XStoreBuffer.man new file mode 100644 index 000000000..c399f1c19 --- /dev/null +++ b/libX11/man/XStoreBuffer.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStoreBytes.__libmansuffix__ diff --git a/libX11/man/XStoreColor.man b/libX11/man/XStoreColor.man new file mode 100644 index 000000000..f185b7e60 --- /dev/null +++ b/libX11/man/XStoreColor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStoreColors.__libmansuffix__ diff --git a/libX11/man/XStoreName.man b/libX11/man/XStoreName.man new file mode 100644 index 000000000..6b4fc7e7d --- /dev/null +++ b/libX11/man/XStoreName.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMName.__libmansuffix__ diff --git a/libX11/man/XStoreNamedColor.man b/libX11/man/XStoreNamedColor.man new file mode 100644 index 000000000..f185b7e60 --- /dev/null +++ b/libX11/man/XStoreNamedColor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStoreColors.__libmansuffix__ diff --git a/libX11/man/XSubImage.man b/libX11/man/XSubImage.man new file mode 100644 index 000000000..8fe560159 --- /dev/null +++ b/libX11/man/XSubImage.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInitImage.__libmansuffix__ diff --git a/libX11/man/XSubtractRegion.man b/libX11/man/XSubtractRegion.man new file mode 100644 index 000000000..630c1f2c8 --- /dev/null +++ b/libX11/man/XSubtractRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XIntersectRegion.__libmansuffix__ diff --git a/libX11/man/XSync.man b/libX11/man/XSync.man new file mode 100644 index 000000000..170707ae0 --- /dev/null +++ b/libX11/man/XSync.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFlush.__libmansuffix__ diff --git a/libX11/man/XTextExtents16.man b/libX11/man/XTextExtents16.man new file mode 100644 index 000000000..36be9d3c7 --- /dev/null +++ b/libX11/man/XTextExtents16.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XTextExtents.__libmansuffix__ diff --git a/libX11/man/XTextItem.man b/libX11/man/XTextItem.man new file mode 100644 index 000000000..cee50e8da --- /dev/null +++ b/libX11/man/XTextItem.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawText.__libmansuffix__ diff --git a/libX11/man/XTextItem16.man b/libX11/man/XTextItem16.man new file mode 100644 index 000000000..cee50e8da --- /dev/null +++ b/libX11/man/XTextItem16.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawText.__libmansuffix__ diff --git a/libX11/man/XTextProperty.man b/libX11/man/XTextProperty.man new file mode 100644 index 000000000..70c3debc2 --- /dev/null +++ b/libX11/man/XTextProperty.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStringListToTextProperty.__libmansuffix__ diff --git a/libX11/man/XTextPropertyToStringList.man b/libX11/man/XTextPropertyToStringList.man new file mode 100644 index 000000000..70c3debc2 --- /dev/null +++ b/libX11/man/XTextPropertyToStringList.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStringListToTextProperty.__libmansuffix__ diff --git a/libX11/man/XTextWidth16.man b/libX11/man/XTextWidth16.man new file mode 100644 index 000000000..e0e845a85 --- /dev/null +++ b/libX11/man/XTextWidth16.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XTextWidth.__libmansuffix__ diff --git a/libX11/man/XTimeCoord.man b/libX11/man/XTimeCoord.man new file mode 100644 index 000000000..708dee7c8 --- /dev/null +++ b/libX11/man/XTimeCoord.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSendEvent.__libmansuffix__ diff --git a/libX11/man/XUndefineCursor.man b/libX11/man/XUndefineCursor.man new file mode 100644 index 000000000..55aeaca40 --- /dev/null +++ b/libX11/man/XUndefineCursor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDefineCursor.__libmansuffix__ diff --git a/libX11/man/XUngrabButton.man b/libX11/man/XUngrabButton.man new file mode 100644 index 000000000..d82a48eb5 --- /dev/null +++ b/libX11/man/XUngrabButton.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGrabButton.__libmansuffix__ diff --git a/libX11/man/XUngrabKey.man b/libX11/man/XUngrabKey.man new file mode 100644 index 000000000..55923cdec --- /dev/null +++ b/libX11/man/XUngrabKey.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGrabKey.__libmansuffix__ diff --git a/libX11/man/XUngrabKeyboard.man b/libX11/man/XUngrabKeyboard.man new file mode 100644 index 000000000..0e7379418 --- /dev/null +++ b/libX11/man/XUngrabKeyboard.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGrabKeyboard.__libmansuffix__ diff --git a/libX11/man/XUngrabPointer.man b/libX11/man/XUngrabPointer.man new file mode 100644 index 000000000..93259b8c3 --- /dev/null +++ b/libX11/man/XUngrabPointer.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGrabPointer.__libmansuffix__ diff --git a/libX11/man/XUngrabServer.man b/libX11/man/XUngrabServer.man new file mode 100644 index 000000000..2427493cf --- /dev/null +++ b/libX11/man/XUngrabServer.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGrabServer.__libmansuffix__ diff --git a/libX11/man/XUninstallColormap.man b/libX11/man/XUninstallColormap.man new file mode 100644 index 000000000..7b18ab38b --- /dev/null +++ b/libX11/man/XUninstallColormap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInstallColormap.__libmansuffix__ diff --git a/libX11/man/XUnionRectWithRegion.man b/libX11/man/XUnionRectWithRegion.man new file mode 100644 index 000000000..630c1f2c8 --- /dev/null +++ b/libX11/man/XUnionRectWithRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XIntersectRegion.__libmansuffix__ diff --git a/libX11/man/XUnionRegion.man b/libX11/man/XUnionRegion.man new file mode 100644 index 000000000..630c1f2c8 --- /dev/null +++ b/libX11/man/XUnionRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XIntersectRegion.__libmansuffix__ diff --git a/libX11/man/XUniqueContext.man b/libX11/man/XUniqueContext.man new file mode 100644 index 000000000..60c71a492 --- /dev/null +++ b/libX11/man/XUniqueContext.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSaveContext.__libmansuffix__ diff --git a/libX11/man/XUnloadFont.man b/libX11/man/XUnloadFont.man new file mode 100644 index 000000000..8b44e8513 --- /dev/null +++ b/libX11/man/XUnloadFont.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLoadFont.__libmansuffix__ diff --git a/libX11/man/XUnlockDisplay.man b/libX11/man/XUnlockDisplay.man new file mode 100644 index 000000000..bc8bb0205 --- /dev/null +++ b/libX11/man/XUnlockDisplay.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInitThreads.__libmansuffix__ diff --git a/libX11/man/XUnmapSubwindows.man b/libX11/man/XUnmapSubwindows.man new file mode 100644 index 000000000..86b768e8e --- /dev/null +++ b/libX11/man/XUnmapSubwindows.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XUnmapWindow.__libmansuffix__ diff --git a/libX11/man/XUnregisterIMInstantiateCallback.man b/libX11/man/XUnregisterIMInstantiateCallback.man new file mode 100644 index 000000000..6d302b9cd --- /dev/null +++ b/libX11/man/XUnregisterIMInstantiateCallback.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenIM.__libmansuffix__ diff --git a/libX11/man/XUnsetICFocus.man b/libX11/man/XUnsetICFocus.man new file mode 100644 index 000000000..034ffb47d --- /dev/null +++ b/libX11/man/XUnsetICFocus.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetICFocus.__libmansuffix__ diff --git a/libX11/man/XVisualIDFromVisual.man b/libX11/man/XVisualIDFromVisual.man new file mode 100644 index 000000000..0b12bf69d --- /dev/null +++ b/libX11/man/XVisualIDFromVisual.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetVisualInfo.__libmansuffix__ diff --git a/libX11/man/XVisualInfo.man b/libX11/man/XVisualInfo.man new file mode 100644 index 000000000..0b12bf69d --- /dev/null +++ b/libX11/man/XVisualInfo.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetVisualInfo.__libmansuffix__ diff --git a/libX11/man/XWMGeometry.man b/libX11/man/XWMGeometry.man new file mode 100644 index 000000000..9ad74b7ba --- /dev/null +++ b/libX11/man/XWMGeometry.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XParseGeometry.__libmansuffix__ diff --git a/libX11/man/XWMHints.man b/libX11/man/XWMHints.man new file mode 100644 index 000000000..e066f6d95 --- /dev/null +++ b/libX11/man/XWMHints.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocWMHints.__libmansuffix__ diff --git a/libX11/man/XWindowAttributes.man b/libX11/man/XWindowAttributes.man new file mode 100644 index 000000000..df77346fb --- /dev/null +++ b/libX11/man/XWindowAttributes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetWindowAttributes.__libmansuffix__ diff --git a/libX11/man/XWindowChanges.man b/libX11/man/XWindowChanges.man new file mode 100644 index 000000000..5fbc49488 --- /dev/null +++ b/libX11/man/XWindowChanges.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XConfigureWindow.__libmansuffix__ diff --git a/libX11/man/XWindowEvent.man b/libX11/man/XWindowEvent.man new file mode 100644 index 000000000..f421b8caa --- /dev/null +++ b/libX11/man/XWindowEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XNextEvent.__libmansuffix__ diff --git a/libX11/man/XWithdrawWindow.man b/libX11/man/XWithdrawWindow.man new file mode 100644 index 000000000..799989ad0 --- /dev/null +++ b/libX11/man/XWithdrawWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XIconifyWindow.__libmansuffix__ diff --git a/libX11/man/XWriteBitmapFile.man b/libX11/man/XWriteBitmapFile.man new file mode 100644 index 000000000..9631570d0 --- /dev/null +++ b/libX11/man/XWriteBitmapFile.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XReadBitmapFile.__libmansuffix__ diff --git a/libX11/man/XXorRegion.man b/libX11/man/XXorRegion.man new file mode 100644 index 000000000..630c1f2c8 --- /dev/null +++ b/libX11/man/XXorRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XIntersectRegion.__libmansuffix__ diff --git a/libX11/man/XcmsAllocNamedColor.man b/libX11/man/XcmsAllocNamedColor.man new file mode 100644 index 000000000..e8e02c0af --- /dev/null +++ b/libX11/man/XcmsAllocNamedColor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsAllocColor.__libmansuffix__ diff --git a/libX11/man/XcmsCIELab.man b/libX11/man/XcmsCIELab.man new file mode 100644 index 000000000..ddce73e37 --- /dev/null +++ b/libX11/man/XcmsCIELab.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsColor.__libmansuffix__ diff --git a/libX11/man/XcmsCIELabQueryMaxL.man b/libX11/man/XcmsCIELabQueryMaxL.man new file mode 100644 index 000000000..ae4d10014 --- /dev/null +++ b/libX11/man/XcmsCIELabQueryMaxL.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsCIELabQueryMaxC.__libmansuffix__ diff --git a/libX11/man/XcmsCIELabQueryMaxLC.man b/libX11/man/XcmsCIELabQueryMaxLC.man new file mode 100644 index 000000000..ae4d10014 --- /dev/null +++ b/libX11/man/XcmsCIELabQueryMaxLC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsCIELabQueryMaxC.__libmansuffix__ diff --git a/libX11/man/XcmsCIELabQueryMinL.man b/libX11/man/XcmsCIELabQueryMinL.man new file mode 100644 index 000000000..ae4d10014 --- /dev/null +++ b/libX11/man/XcmsCIELabQueryMinL.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsCIELabQueryMaxC.__libmansuffix__ diff --git a/libX11/man/XcmsCIELuv.man b/libX11/man/XcmsCIELuv.man new file mode 100644 index 000000000..ddce73e37 --- /dev/null +++ b/libX11/man/XcmsCIELuv.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsColor.__libmansuffix__ diff --git a/libX11/man/XcmsCIELuvQueryMaxL.man b/libX11/man/XcmsCIELuvQueryMaxL.man new file mode 100644 index 000000000..96b9c7f1d --- /dev/null +++ b/libX11/man/XcmsCIELuvQueryMaxL.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsCIELuvQueryMaxC.__libmansuffix__ diff --git a/libX11/man/XcmsCIELuvQueryMaxLC.man b/libX11/man/XcmsCIELuvQueryMaxLC.man new file mode 100644 index 000000000..96b9c7f1d --- /dev/null +++ b/libX11/man/XcmsCIELuvQueryMaxLC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsCIELuvQueryMaxC.__libmansuffix__ diff --git a/libX11/man/XcmsCIELuvQueryMinL.man b/libX11/man/XcmsCIELuvQueryMinL.man new file mode 100644 index 000000000..96b9c7f1d --- /dev/null +++ b/libX11/man/XcmsCIELuvQueryMinL.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsCIELuvQueryMaxC.__libmansuffix__ diff --git a/libX11/man/XcmsCIEXYZ.man b/libX11/man/XcmsCIEXYZ.man new file mode 100644 index 000000000..ddce73e37 --- /dev/null +++ b/libX11/man/XcmsCIEXYZ.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsColor.__libmansuffix__ diff --git a/libX11/man/XcmsCIEuvY.man b/libX11/man/XcmsCIEuvY.man new file mode 100644 index 000000000..ddce73e37 --- /dev/null +++ b/libX11/man/XcmsCIEuvY.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsColor.__libmansuffix__ diff --git a/libX11/man/XcmsCIExyY.man b/libX11/man/XcmsCIExyY.man new file mode 100644 index 000000000..ddce73e37 --- /dev/null +++ b/libX11/man/XcmsCIExyY.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsColor.__libmansuffix__ diff --git a/libX11/man/XcmsFreeCCC.man b/libX11/man/XcmsFreeCCC.man new file mode 100644 index 000000000..8d43dee20 --- /dev/null +++ b/libX11/man/XcmsFreeCCC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsCreateCCC.__libmansuffix__ diff --git a/libX11/man/XcmsLookupColor.man b/libX11/man/XcmsLookupColor.man new file mode 100644 index 000000000..60500d85e --- /dev/null +++ b/libX11/man/XcmsLookupColor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsQueryColor.__libmansuffix__ diff --git a/libX11/man/XcmsPad.man b/libX11/man/XcmsPad.man new file mode 100644 index 000000000..ddce73e37 --- /dev/null +++ b/libX11/man/XcmsPad.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsColor.__libmansuffix__ diff --git a/libX11/man/XcmsQueryBlue.man b/libX11/man/XcmsQueryBlue.man new file mode 100644 index 000000000..16213132b --- /dev/null +++ b/libX11/man/XcmsQueryBlue.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsQueryBlack.__libmansuffix__ diff --git a/libX11/man/XcmsQueryColors.man b/libX11/man/XcmsQueryColors.man new file mode 100644 index 000000000..60500d85e --- /dev/null +++ b/libX11/man/XcmsQueryColors.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsQueryColor.__libmansuffix__ diff --git a/libX11/man/XcmsQueryGreen.man b/libX11/man/XcmsQueryGreen.man new file mode 100644 index 000000000..16213132b --- /dev/null +++ b/libX11/man/XcmsQueryGreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsQueryBlack.__libmansuffix__ diff --git a/libX11/man/XcmsQueryRed.man b/libX11/man/XcmsQueryRed.man new file mode 100644 index 000000000..16213132b --- /dev/null +++ b/libX11/man/XcmsQueryRed.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsQueryBlack.__libmansuffix__ diff --git a/libX11/man/XcmsQueryWhite.man b/libX11/man/XcmsQueryWhite.man new file mode 100644 index 000000000..16213132b --- /dev/null +++ b/libX11/man/XcmsQueryWhite.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsQueryBlack.__libmansuffix__ diff --git a/libX11/man/XcmsRGB.man b/libX11/man/XcmsRGB.man new file mode 100644 index 000000000..ddce73e37 --- /dev/null +++ b/libX11/man/XcmsRGB.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsColor.__libmansuffix__ diff --git a/libX11/man/XcmsRGBi.man b/libX11/man/XcmsRGBi.man new file mode 100644 index 000000000..ddce73e37 --- /dev/null +++ b/libX11/man/XcmsRGBi.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsColor.__libmansuffix__ diff --git a/libX11/man/XcmsSetCCCOfColormap.man b/libX11/man/XcmsSetCCCOfColormap.man new file mode 100644 index 000000000..862869ffe --- /dev/null +++ b/libX11/man/XcmsSetCCCOfColormap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsCCCOfColormap.__libmansuffix__ diff --git a/libX11/man/XcmsSetWhiteAdjustProc.man b/libX11/man/XcmsSetWhiteAdjustProc.man new file mode 100644 index 000000000..1b224cccb --- /dev/null +++ b/libX11/man/XcmsSetWhiteAdjustProc.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsSetWhitePoint.__libmansuffix__ diff --git a/libX11/man/XcmsStoreColors.man b/libX11/man/XcmsStoreColors.man new file mode 100644 index 000000000..356624062 --- /dev/null +++ b/libX11/man/XcmsStoreColors.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsStoreColor.__libmansuffix__ diff --git a/libX11/man/XcmsTekHVC.man b/libX11/man/XcmsTekHVC.man new file mode 100644 index 000000000..ddce73e37 --- /dev/null +++ b/libX11/man/XcmsTekHVC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsColor.__libmansuffix__ diff --git a/libX11/man/XcmsTekHVCQueryMaxV.man b/libX11/man/XcmsTekHVCQueryMaxV.man new file mode 100644 index 000000000..0893603c7 --- /dev/null +++ b/libX11/man/XcmsTekHVCQueryMaxV.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsTekHVCQueryMaxC.__libmansuffix__ diff --git a/libX11/man/XcmsTekHVCQueryMaxVC.man b/libX11/man/XcmsTekHVCQueryMaxVC.man new file mode 100644 index 000000000..0893603c7 --- /dev/null +++ b/libX11/man/XcmsTekHVCQueryMaxVC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsTekHVCQueryMaxC.__libmansuffix__ diff --git a/libX11/man/XcmsTekHVCQueryMaxVSamples.man b/libX11/man/XcmsTekHVCQueryMaxVSamples.man new file mode 100644 index 000000000..0893603c7 --- /dev/null +++ b/libX11/man/XcmsTekHVCQueryMaxVSamples.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsTekHVCQueryMaxC.__libmansuffix__ diff --git a/libX11/man/XcmsTekHVCQueryMinV.man b/libX11/man/XcmsTekHVCQueryMinV.man new file mode 100644 index 000000000..0893603c7 --- /dev/null +++ b/libX11/man/XcmsTekHVCQueryMinV.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsTekHVCQueryMaxC.__libmansuffix__ diff --git a/libX11/man/XmbSetWMProperties.man b/libX11/man/XmbSetWMProperties.man new file mode 100644 index 000000000..24e3c41af --- /dev/null +++ b/libX11/man/XmbSetWMProperties.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMProperties.__libmansuffix__ diff --git a/libX11/man/XmbTextPropertyToTextList.man b/libX11/man/XmbTextPropertyToTextList.man new file mode 100644 index 000000000..d73114782 --- /dev/null +++ b/libX11/man/XmbTextPropertyToTextList.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__ diff --git a/libX11/man/XrmCombineDatabase.man b/libX11/man/XrmCombineDatabase.man new file mode 100644 index 000000000..7630c51e8 --- /dev/null +++ b/libX11/man/XrmCombineDatabase.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmMergeDatabases.__libmansuffix__ diff --git a/libX11/man/XrmCombineFileDatabase.man b/libX11/man/XrmCombineFileDatabase.man new file mode 100644 index 000000000..7630c51e8 --- /dev/null +++ b/libX11/man/XrmCombineFileDatabase.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmMergeDatabases.__libmansuffix__ diff --git a/libX11/man/XrmDestroyDatabase.man b/libX11/man/XrmDestroyDatabase.man new file mode 100644 index 000000000..2dc1243ec --- /dev/null +++ b/libX11/man/XrmDestroyDatabase.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__ diff --git a/libX11/man/XrmGetDatabase.man b/libX11/man/XrmGetDatabase.man new file mode 100644 index 000000000..2dc1243ec --- /dev/null +++ b/libX11/man/XrmGetDatabase.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__ diff --git a/libX11/man/XrmGetStringDatabase.man b/libX11/man/XrmGetStringDatabase.man new file mode 100644 index 000000000..2dc1243ec --- /dev/null +++ b/libX11/man/XrmGetStringDatabase.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__ diff --git a/libX11/man/XrmLocaleOfDatabase.man b/libX11/man/XrmLocaleOfDatabase.man new file mode 100644 index 000000000..2dc1243ec --- /dev/null +++ b/libX11/man/XrmLocaleOfDatabase.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__ diff --git a/libX11/man/XrmOptionDescRec.man b/libX11/man/XrmOptionDescRec.man new file mode 100644 index 000000000..cbff21629 --- /dev/null +++ b/libX11/man/XrmOptionDescRec.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmInitialize.__libmansuffix__ diff --git a/libX11/man/XrmOptionKind.man b/libX11/man/XrmOptionKind.man new file mode 100644 index 000000000..cbff21629 --- /dev/null +++ b/libX11/man/XrmOptionKind.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmInitialize.__libmansuffix__ diff --git a/libX11/man/XrmParseCommand.man b/libX11/man/XrmParseCommand.man new file mode 100644 index 000000000..cbff21629 --- /dev/null +++ b/libX11/man/XrmParseCommand.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmInitialize.__libmansuffix__ diff --git a/libX11/man/XrmPermStringToQuark.man b/libX11/man/XrmPermStringToQuark.man new file mode 100644 index 000000000..8f5733ea4 --- /dev/null +++ b/libX11/man/XrmPermStringToQuark.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__ diff --git a/libX11/man/XrmPutFileDatabase.man b/libX11/man/XrmPutFileDatabase.man new file mode 100644 index 000000000..2dc1243ec --- /dev/null +++ b/libX11/man/XrmPutFileDatabase.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__ diff --git a/libX11/man/XrmPutLineResource.man b/libX11/man/XrmPutLineResource.man new file mode 100644 index 000000000..6011ae5fd --- /dev/null +++ b/libX11/man/XrmPutLineResource.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmPutResource.__libmansuffix__ diff --git a/libX11/man/XrmPutStringResource.man b/libX11/man/XrmPutStringResource.man new file mode 100644 index 000000000..6011ae5fd --- /dev/null +++ b/libX11/man/XrmPutStringResource.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmPutResource.__libmansuffix__ diff --git a/libX11/man/XrmQGetResource.man b/libX11/man/XrmQGetResource.man new file mode 100644 index 000000000..19ab8bff8 --- /dev/null +++ b/libX11/man/XrmQGetResource.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmGetResource.__libmansuffix__ diff --git a/libX11/man/XrmQGetSearchList.man b/libX11/man/XrmQGetSearchList.man new file mode 100644 index 000000000..19ab8bff8 --- /dev/null +++ b/libX11/man/XrmQGetSearchList.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmGetResource.__libmansuffix__ diff --git a/libX11/man/XrmQGetSearchResource.man b/libX11/man/XrmQGetSearchResource.man new file mode 100644 index 000000000..19ab8bff8 --- /dev/null +++ b/libX11/man/XrmQGetSearchResource.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmGetResource.__libmansuffix__ diff --git a/libX11/man/XrmQPutResource.man b/libX11/man/XrmQPutResource.man new file mode 100644 index 000000000..6011ae5fd --- /dev/null +++ b/libX11/man/XrmQPutResource.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmPutResource.__libmansuffix__ diff --git a/libX11/man/XrmQPutStringResource.man b/libX11/man/XrmQPutStringResource.man new file mode 100644 index 000000000..6011ae5fd --- /dev/null +++ b/libX11/man/XrmQPutStringResource.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmPutResource.__libmansuffix__ diff --git a/libX11/man/XrmQuarkToString.man b/libX11/man/XrmQuarkToString.man new file mode 100644 index 000000000..8f5733ea4 --- /dev/null +++ b/libX11/man/XrmQuarkToString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__ diff --git a/libX11/man/XrmSetDatabase.man b/libX11/man/XrmSetDatabase.man new file mode 100644 index 000000000..2dc1243ec --- /dev/null +++ b/libX11/man/XrmSetDatabase.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__ diff --git a/libX11/man/XrmStringToBindingQuarkList.man b/libX11/man/XrmStringToBindingQuarkList.man new file mode 100644 index 000000000..8f5733ea4 --- /dev/null +++ b/libX11/man/XrmStringToBindingQuarkList.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__ diff --git a/libX11/man/XrmStringToQuark.man b/libX11/man/XrmStringToQuark.man new file mode 100644 index 000000000..8f5733ea4 --- /dev/null +++ b/libX11/man/XrmStringToQuark.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__ diff --git a/libX11/man/XrmStringToQuarkList.man b/libX11/man/XrmStringToQuarkList.man new file mode 100644 index 000000000..8f5733ea4 --- /dev/null +++ b/libX11/man/XrmStringToQuarkList.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__ diff --git a/libX11/man/XrmValue.man b/libX11/man/XrmValue.man new file mode 100644 index 000000000..cbff21629 --- /dev/null +++ b/libX11/man/XrmValue.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmInitialize.__libmansuffix__ diff --git a/libX11/man/Xutf8DrawImageString.man b/libX11/man/Xutf8DrawImageString.man new file mode 100644 index 000000000..ce965eb55 --- /dev/null +++ b/libX11/man/Xutf8DrawImageString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbDrawImageString.__libmansuffix__ diff --git a/libX11/man/Xutf8DrawString.man b/libX11/man/Xutf8DrawString.man new file mode 100644 index 000000000..dad556159 --- /dev/null +++ b/libX11/man/Xutf8DrawString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbDrawString.__libmansuffix__ diff --git a/libX11/man/Xutf8DrawText.man b/libX11/man/Xutf8DrawText.man new file mode 100644 index 000000000..6588ec558 --- /dev/null +++ b/libX11/man/Xutf8DrawText.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbDrawText.__libmansuffix__ diff --git a/libX11/man/Xutf8LookupString.man b/libX11/man/Xutf8LookupString.man new file mode 100644 index 000000000..3d2805b88 --- /dev/null +++ b/libX11/man/Xutf8LookupString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbLookupString.__libmansuffix__ diff --git a/libX11/man/Xutf8ResetIC.man b/libX11/man/Xutf8ResetIC.man new file mode 100644 index 000000000..a2336ccfa --- /dev/null +++ b/libX11/man/Xutf8ResetIC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbResetIC.__libmansuffix__ diff --git a/libX11/man/Xutf8SetWMProperties.man b/libX11/man/Xutf8SetWMProperties.man new file mode 100644 index 000000000..24e3c41af --- /dev/null +++ b/libX11/man/Xutf8SetWMProperties.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMProperties.__libmansuffix__ diff --git a/libX11/man/Xutf8TextEscapement.man b/libX11/man/Xutf8TextEscapement.man new file mode 100644 index 000000000..e63373fb0 --- /dev/null +++ b/libX11/man/Xutf8TextEscapement.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextEscapement.__libmansuffix__ diff --git a/libX11/man/Xutf8TextExtents.man b/libX11/man/Xutf8TextExtents.man new file mode 100644 index 000000000..f5a3c260f --- /dev/null +++ b/libX11/man/Xutf8TextExtents.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextExtents.__libmansuffix__ diff --git a/libX11/man/Xutf8TextListToTextProperty.man b/libX11/man/Xutf8TextListToTextProperty.man new file mode 100644 index 000000000..d73114782 --- /dev/null +++ b/libX11/man/Xutf8TextListToTextProperty.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__ diff --git a/libX11/man/Xutf8TextPerCharExtents.man b/libX11/man/Xutf8TextPerCharExtents.man new file mode 100644 index 000000000..41db614d9 --- /dev/null +++ b/libX11/man/Xutf8TextPerCharExtents.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextPerCharExtents.__libmansuffix__ diff --git a/libX11/man/Xutf8TextPropertyToTextList.man b/libX11/man/Xutf8TextPropertyToTextList.man new file mode 100644 index 000000000..d73114782 --- /dev/null +++ b/libX11/man/Xutf8TextPropertyToTextList.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__ diff --git a/libX11/man/XwcDrawImageString.man b/libX11/man/XwcDrawImageString.man new file mode 100644 index 000000000..ce965eb55 --- /dev/null +++ b/libX11/man/XwcDrawImageString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbDrawImageString.__libmansuffix__ diff --git a/libX11/man/XwcDrawString.man b/libX11/man/XwcDrawString.man new file mode 100644 index 000000000..dad556159 --- /dev/null +++ b/libX11/man/XwcDrawString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbDrawString.__libmansuffix__ diff --git a/libX11/man/XwcDrawText.man b/libX11/man/XwcDrawText.man new file mode 100644 index 000000000..6588ec558 --- /dev/null +++ b/libX11/man/XwcDrawText.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbDrawText.__libmansuffix__ diff --git a/libX11/man/XwcFreeStringList.man b/libX11/man/XwcFreeStringList.man new file mode 100644 index 000000000..d73114782 --- /dev/null +++ b/libX11/man/XwcFreeStringList.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__ diff --git a/libX11/man/XwcLookupString.man b/libX11/man/XwcLookupString.man new file mode 100644 index 000000000..3d2805b88 --- /dev/null +++ b/libX11/man/XwcLookupString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbLookupString.__libmansuffix__ diff --git a/libX11/man/XwcResetIC.man b/libX11/man/XwcResetIC.man new file mode 100644 index 000000000..a2336ccfa --- /dev/null +++ b/libX11/man/XwcResetIC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbResetIC.__libmansuffix__ diff --git a/libX11/man/XwcTextEscapement.man b/libX11/man/XwcTextEscapement.man new file mode 100644 index 000000000..e63373fb0 --- /dev/null +++ b/libX11/man/XwcTextEscapement.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextEscapement.__libmansuffix__ diff --git a/libX11/man/XwcTextExtents.man b/libX11/man/XwcTextExtents.man new file mode 100644 index 000000000..f5a3c260f --- /dev/null +++ b/libX11/man/XwcTextExtents.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextExtents.__libmansuffix__ diff --git a/libX11/man/XwcTextListToTextProperty.man b/libX11/man/XwcTextListToTextProperty.man new file mode 100644 index 000000000..d73114782 --- /dev/null +++ b/libX11/man/XwcTextListToTextProperty.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__ diff --git a/libX11/man/XwcTextPerCharExtents.man b/libX11/man/XwcTextPerCharExtents.man new file mode 100644 index 000000000..41db614d9 --- /dev/null +++ b/libX11/man/XwcTextPerCharExtents.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextPerCharExtents.__libmansuffix__ diff --git a/libX11/man/XwcTextPropertyToTextList.man b/libX11/man/XwcTextPropertyToTextList.man new file mode 100644 index 000000000..d73114782 --- /dev/null +++ b/libX11/man/XwcTextPropertyToTextList.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__ diff --git a/libX11/man/xkb/Makefile.am b/libX11/man/xkb/Makefile.am index e385d445e..c5d970074 100644 --- a/libX11/man/xkb/Makefile.am +++ b/libX11/man/xkb/Makefile.am @@ -1,7 +1,5 @@ libmandir = $(LIB_MAN_DIR) -LIB_MAN_DIR_SUFFIX = $(LIB_MAN_DIR:@mandir@/man%=%) - libman_PRE = \ XkbActionCtrls.man \ XkbAddDeviceLedInfo.man \ diff --git a/libXau/Makefile.am b/libXau/Makefile.am index 3ff7c03a9..f74f1bf93 100644 --- a/libXau/Makefile.am +++ b/libXau/Makefile.am @@ -1,3 +1,5 @@ +SUBDIRS=man + lib_LTLIBRARIES = libXau.la AM_CFLAGS = $(XAU_CFLAGS) $(CWARNFLAGS) @@ -48,39 +50,8 @@ $(LINTLIB): $(libXau_la_SOURCES) $(LINT) -y -oXau -x $(ALL_LINT_FLAGS) $(libXau_la_SOURCES) endif MAKE_LINT_LIB -LIB_MAN_DIR_SUFFIX = $(LIB_MAN_DIR:@mandir@/man%=%) - -libmandir = $(LIB_MAN_DIR) -libman_PRE = Xau.man -BUILT_SOURCES = $(Xau_shadows:=.@LIB_MAN_SUFFIX@) -CLEANFILES = $(libman_DATA) $(BUILT_SOURCES) $(lintlib_DATA) -libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@) \ - $(Xau_shadows:=.@LIB_MAN_SUFFIX@) - +CLEANFILES = $(lintlib_DATA) MAINTAINERCLEANFILES = ChangeLog INSTALL -EXTRA_DIST = $(libman_PRE) - -Xau_shadows = \ - XauFileName \ - XauReadAuth \ - XauLockAuth \ - XauUnlockAuth \ - XauWriteAuth \ - XauDisposeAuth \ - XauGetAuthByAddr \ - XauGetBestAuthByAddr - -Xau_shadows_man = $(Xau_shadows:=.@LIB_MAN_SUFFIX@) -$(Xau_shadows_man): - $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/Xau.$(LIB_MAN_SUFFIX) > $@ - -XORGRELSTRING = @PACKAGE_STRING@ - XORGMANNAME = X Version 11 - -Xau.$(LIB_MAN_SUFFIX): $(srcdir)/Xau.man - $(AM_V_GEN)$(SED) \ - -e 's/__xorgversion__/"$(XORGRELSTRING)" "$(XORGMANNAME)"/' \ - < $(srcdir)/Xau.man > Xau.$(LIB_MAN_SUFFIX) .PHONY: ChangeLog INSTALL diff --git a/libXau/Xau.man b/libXau/Xau.man deleted file mode 100644 index 2cea88c22..000000000 --- a/libXau/Xau.man +++ /dev/null @@ -1,134 +0,0 @@ -.\" $Xorg: Xau.man,v 1.3 2000/08/17 19:41:54 cpqbld Exp $ -.\" $XdotOrg$ -.\" -.\" Copyright (c) 1994 X Consortium -.\" -.\" 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 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 X CONSORTIUM 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 X Consortium shall not -.\" be used in advertising or otherwise to promote the sale, use or other -.\" dealing in this Software without prior written authorization from the -.\" X Consortium. -.\" -.\" $XFree86: xc/doc/man/Xau/Xau.man,v 1.2 2001/01/27 18:20:19 dawes Exp $ -.\" -.TH Xau 3 __xorgversion__ -.SH NAME -Xau library: XauFileName, XauReadAuth, XauLockAuth, XauUnlockAuth, -XauWriteAuth, XauDisposeAuth, -XauGetAuthByAddr, XauGetBestAuthByAddr \- X authority database routines -.SH SYNOPSIS -.B "#include " -.PP -.nf -.ta .5i 2i -typedef struct xauth { - unsigned short family; - unsigned short address_length; - char *address; - unsigned short number_length; - char *number; - unsigned short name_length; - char *name; - unsigned short data_length; - char *data; -} Xauth; - -.HP -char *XauFileName (void); -.HP -Xauth *XauReadAuth (FILE *\fIauth_file\fP\^); -.HP -int XauWriteAuth (FILE *\fIauth_file\fP, Xauth *\fIauth\fP\^); -.HP -Xauth *XauGetAuthByAddr (unsigned short \fIfamily\fP\^, unsigned short -\fIaddress_length\fP\^, const char *\fIaddress\fP\^, unsigned short -\fInumber_length\fP\^, const char *\fInumber\fP\^, unsigned short -\fIname_length\fP\^, const char *\fIname\fP\^); -.HP -Xauth *XauGetBestAuthByAddr (unsigned short \fIfamily\fP\^, unsigned short -\fIaddress_length\fP\^, const char *\fIaddress\fP\^, unsigned short -\fInumber_length\fP\^, const char *\fInumber\fP\^, int \fItypes_length\fP\^, -char **\fItypes\fR\^, const int *\fItype_lengths\fR\^); -.HP -int XauLockAuth (const char *\fIfile_name\fP\^, int \fIretries\fP\^, int -\fItimeout\fP\^, long \fIdead\fP\^); -.HP -int XauUnlockAuth (const char *\fIfile_name\fP\^); -.HP -int XauDisposeAuth (Xauth *\fIauth\fP\^); -.ft R -.SH DESCRIPTION -.PP -\fBXauFileName\fP generates the default authorization file name by first -checking the XAUTHORITY environment variable if set, else it returns -$HOME/.Xauthority. This name is statically allocated and should -not be freed. -.PP -\fBXauReadAuth\fP reads the next entry from \fIauth_file\fP. The entry is -\fBnot\fP statically allocated and should be freed by calling -\fIXauDisposeAuth\fP. -.PP -\fBXauWriteAuth\fP writes an authorization entry to \fIauth_file\fP. It -returns 1 on success, 0 on failure. -.PP -\fBXauGetAuthByAddr\fP searches for an entry which matches the given network -address/display number pair. The entry is \fBnot\fP statically allocated -and should be freed by calling \fIXauDisposeAuth\fP. -.PP -\fBXauGetBestAuthByAddr\fP is similar to \fBXauGetAuthByAddr\fP, except -that a list of acceptable authentication methods is specified. Xau will -choose the file entry which matches the earliest entry in this list (e.g., the -most secure authentication method). The \fItypes\fP argument is an array of -strings, one string for each authentication method. \fItypes_length\fP -specifies how many elements are in the \fItypes\fP array. -\fItypes_lengths\fP is an array of integers representing the length -of each string. -.PP -\fBXauLockAuth\fP does the work necessary to synchronously update an -authorization file. First it makes two file names, one with ``-c'' appended -to \fIfile_name\fP, the other with ``-l'' appended. If the ``-c'' file -already exists and is more than \fIdead\fP seconds old, \fIXauLockAuth\fP -removes it and the associated ``-l'' file. To prevent possible -synchronization troubles with NFS, a \fIdead\fP value of zero forces the -files to be removed. \fIXauLockAuth\fP makes \fIretries\fP attempts to -create and link the file names, pausing \fItimeout\fP seconds between each -attempt. \fIXauLockAuth\fP returns a collection of values depending on the -results: -.nf -.ta .5i 2i - - LOCK_ERROR A system error occurred, either a file_name - which is too long, or an unexpected failure from - a system call. errno may prove useful. - - LOCK_TIMEOUT \fIretries\fP attempts failed - - LOCK_SUCCESS The lock succeeded. - -.fi -.PP -\fBXauUnlockAuth\fP undoes the work of \fIXauLockAuth\fP by unlinking both -the ``-c'' and ``-l'' file names. -.PP -\fBXauDisposeAuth\fP frees storage allocated to hold an authorization entry. -.SH "SEE ALSO" -xauth(1), xdm(1) -.SH AUTHOR -Keith Packard, MIT X Consortium diff --git a/libXau/configure.ac b/libXau/configure.ac index 98e0184d6..ae37e62b3 100644 --- a/libXau/configure.ac +++ b/libXau/configure.ac @@ -28,10 +28,10 @@ AM_MAINTAINER_MODE AM_CONFIG_HEADER(config.h) -# Require xorg-macros: XORG_DEFAULT_OPTIONS +# Require X.Org macros 1.8 or later for MAN_SUBSTS set by XORG_MANPAGE_SECTIONS m4_ifndef([XORG_MACROS_VERSION], - [m4_fatal([must install xorg-macros 1.4 or later before running autoconf/autogen])]) -XORG_MACROS_VERSION(1.4) + [m4_fatal([must install xorg-macros 1.8 or later before running autoconf/autogen])]) +XORG_MACROS_VERSION(1.8) XORG_DEFAULT_OPTIONS AC_PROG_CC @@ -75,4 +75,5 @@ LINT_FLAGS="${LINT_FLAGS} ${XAU_CFLAGS}" AC_OUTPUT([Makefile + man/Makefile xau.pc]) diff --git a/libXau/man/Makefile.am b/libXau/man/Makefile.am new file mode 100644 index 000000000..694c376b0 --- /dev/null +++ b/libXau/man/Makefile.am @@ -0,0 +1,47 @@ +# +# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. +# +# 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 (including the next +# paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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. +# + +libmandir = $(LIB_MAN_DIR) + +libman_PRE = \ + Xau.man \ + XauDisposeAuth.man \ + XauFileName.man \ + XauGetAuthByAddr.man \ + XauGetBestAuthByAddr.man \ + XauLockAuth.man \ + XauReadAuth.man \ + XauUnlockAuth.man \ + XauWriteAuth.man + +libman_DATA = $(libman_PRE:man=$(LIB_MAN_SUFFIX)) + +EXTRA_DIST = $(libman_PRE) + +CLEANFILES = $(libman_DATA) + +# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure +SUFFIXES = .$(LIB_MAN_SUFFIX) .man + +.man.$(LIB_MAN_SUFFIX): + $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@ diff --git a/libXau/man/Xau.man b/libXau/man/Xau.man new file mode 100644 index 000000000..0688f49ef --- /dev/null +++ b/libXau/man/Xau.man @@ -0,0 +1,134 @@ +.\" $Xorg: Xau.man,v 1.3 2000/08/17 19:41:54 cpqbld Exp $ +.\" $XdotOrg$ +.\" +.\" Copyright (c) 1994 X Consortium +.\" +.\" 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 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 X CONSORTIUM 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 X Consortium shall not +.\" be used in advertising or otherwise to promote the sale, use or other +.\" dealing in this Software without prior written authorization from the +.\" X Consortium. +.\" +.\" $XFree86: xc/doc/man/Xau/Xau.man,v 1.2 2001/01/27 18:20:19 dawes Exp $ +.\" +.TH Xau __libmansuffix__ __xorgversion__ +.SH NAME +Xau library: XauFileName, XauReadAuth, XauLockAuth, XauUnlockAuth, +XauWriteAuth, XauDisposeAuth, +XauGetAuthByAddr, XauGetBestAuthByAddr \- X authority database routines +.SH SYNOPSIS +.B "#include " +.PP +.nf +.ta .5i 2i +typedef struct xauth { + unsigned short family; + unsigned short address_length; + char *address; + unsigned short number_length; + char *number; + unsigned short name_length; + char *name; + unsigned short data_length; + char *data; +} Xauth; + +.HP +char *XauFileName (void); +.HP +Xauth *XauReadAuth (FILE *\fIauth_file\fP\^); +.HP +int XauWriteAuth (FILE *\fIauth_file\fP, Xauth *\fIauth\fP\^); +.HP +Xauth *XauGetAuthByAddr (unsigned short \fIfamily\fP\^, unsigned short +\fIaddress_length\fP\^, const char *\fIaddress\fP\^, unsigned short +\fInumber_length\fP\^, const char *\fInumber\fP\^, unsigned short +\fIname_length\fP\^, const char *\fIname\fP\^); +.HP +Xauth *XauGetBestAuthByAddr (unsigned short \fIfamily\fP\^, unsigned short +\fIaddress_length\fP\^, const char *\fIaddress\fP\^, unsigned short +\fInumber_length\fP\^, const char *\fInumber\fP\^, int \fItypes_length\fP\^, +char **\fItypes\fR\^, const int *\fItype_lengths\fR\^); +.HP +int XauLockAuth (const char *\fIfile_name\fP\^, int \fIretries\fP\^, int +\fItimeout\fP\^, long \fIdead\fP\^); +.HP +int XauUnlockAuth (const char *\fIfile_name\fP\^); +.HP +int XauDisposeAuth (Xauth *\fIauth\fP\^); +.ft R +.SH DESCRIPTION +.PP +\fBXauFileName\fP generates the default authorization file name by first +checking the XAUTHORITY environment variable if set, else it returns +$HOME/.Xauthority. This name is statically allocated and should +not be freed. +.PP +\fBXauReadAuth\fP reads the next entry from \fIauth_file\fP. The entry is +\fBnot\fP statically allocated and should be freed by calling +\fIXauDisposeAuth\fP. +.PP +\fBXauWriteAuth\fP writes an authorization entry to \fIauth_file\fP. It +returns 1 on success, 0 on failure. +.PP +\fBXauGetAuthByAddr\fP searches for an entry which matches the given network +address/display number pair. The entry is \fBnot\fP statically allocated +and should be freed by calling \fIXauDisposeAuth\fP. +.PP +\fBXauGetBestAuthByAddr\fP is similar to \fBXauGetAuthByAddr\fP, except +that a list of acceptable authentication methods is specified. Xau will +choose the file entry which matches the earliest entry in this list (e.g., the +most secure authentication method). The \fItypes\fP argument is an array of +strings, one string for each authentication method. \fItypes_length\fP +specifies how many elements are in the \fItypes\fP array. +\fItypes_lengths\fP is an array of integers representing the length +of each string. +.PP +\fBXauLockAuth\fP does the work necessary to synchronously update an +authorization file. First it makes two file names, one with ``-c'' appended +to \fIfile_name\fP, the other with ``-l'' appended. If the ``-c'' file +already exists and is more than \fIdead\fP seconds old, \fIXauLockAuth\fP +removes it and the associated ``-l'' file. To prevent possible +synchronization troubles with NFS, a \fIdead\fP value of zero forces the +files to be removed. \fIXauLockAuth\fP makes \fIretries\fP attempts to +create and link the file names, pausing \fItimeout\fP seconds between each +attempt. \fIXauLockAuth\fP returns a collection of values depending on the +results: +.nf +.ta .5i 2i + + LOCK_ERROR A system error occurred, either a file_name + which is too long, or an unexpected failure from + a system call. errno may prove useful. + + LOCK_TIMEOUT \fIretries\fP attempts failed + + LOCK_SUCCESS The lock succeeded. + +.fi +.PP +\fBXauUnlockAuth\fP undoes the work of \fIXauLockAuth\fP by unlinking both +the ``-c'' and ``-l'' file names. +.PP +\fBXauDisposeAuth\fP frees storage allocated to hold an authorization entry. +.SH "SEE ALSO" +xauth(1), xdm(1) +.SH AUTHOR +Keith Packard, MIT X Consortium diff --git a/libXau/man/XauDisposeAuth.man b/libXau/man/XauDisposeAuth.man new file mode 100644 index 000000000..d20306a06 --- /dev/null +++ b/libXau/man/XauDisposeAuth.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xau.__libmansuffix__ diff --git a/libXau/man/XauFileName.man b/libXau/man/XauFileName.man new file mode 100644 index 000000000..d20306a06 --- /dev/null +++ b/libXau/man/XauFileName.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xau.__libmansuffix__ diff --git a/libXau/man/XauGetAuthByAddr.man b/libXau/man/XauGetAuthByAddr.man new file mode 100644 index 000000000..d20306a06 --- /dev/null +++ b/libXau/man/XauGetAuthByAddr.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xau.__libmansuffix__ diff --git a/libXau/man/XauGetBestAuthByAddr.man b/libXau/man/XauGetBestAuthByAddr.man new file mode 100644 index 000000000..d20306a06 --- /dev/null +++ b/libXau/man/XauGetBestAuthByAddr.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xau.__libmansuffix__ diff --git a/libXau/man/XauLockAuth.man b/libXau/man/XauLockAuth.man new file mode 100644 index 000000000..d20306a06 --- /dev/null +++ b/libXau/man/XauLockAuth.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xau.__libmansuffix__ diff --git a/libXau/man/XauReadAuth.man b/libXau/man/XauReadAuth.man new file mode 100644 index 000000000..d20306a06 --- /dev/null +++ b/libXau/man/XauReadAuth.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xau.__libmansuffix__ diff --git a/libXau/man/XauUnlockAuth.man b/libXau/man/XauUnlockAuth.man new file mode 100644 index 000000000..d20306a06 --- /dev/null +++ b/libXau/man/XauUnlockAuth.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xau.__libmansuffix__ diff --git a/libXau/man/XauWriteAuth.man b/libXau/man/XauWriteAuth.man new file mode 100644 index 000000000..d20306a06 --- /dev/null +++ b/libXau/man/XauWriteAuth.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xau.__libmansuffix__ diff --git a/libXext/man/Makefile.am b/libXext/man/Makefile.am index 0b4288882..0d7c1bba5 100644 --- a/libXext/man/Makefile.am +++ b/libXext/man/Makefile.am @@ -1,74 +1,85 @@ libmandir = $(LIB_MAN_DIR) -LIB_MAN_DIR_SUFFIX = $(LIB_MAN_DIR:@mandir@/man%=%) - -libman_PRE = \ - DBE.man \ - DPMSCapable.man \ - DPMSDisable.man \ - DPMSEnable.man \ - DPMSForceLevel.man \ - DPMSGetTimeouts.man \ - DPMSGetVersion.man \ - DPMSInfo.man \ - DPMSQueryExtension.man \ - DPMSSetTimeouts.man \ - XShape.man \ - XShm.man \ - XcupGetReservedColormapEntries.man \ - XcupQueryVersion.man \ - XcupStoreColors.man \ - XdbeAllocateBackBufferName.man \ - XdbeBeginIdiom.man \ - XdbeDeallocateBackBufferName.man \ - XdbeEndIdiom.man \ - XdbeFreeVisualInfo.man \ - XdbeGetBackBufferAttributes.man \ - XdbeGetVisualInfo.man \ - XdbeQueryExtension.man \ - XdbeSwapBuffers.man \ - Xevi.man \ +libman_PRE = \ + $(all_shadows:=.man) \ + DBE.man \ + DPMSCapable.man \ + DPMSDisable.man \ + DPMSEnable.man \ + DPMSForceLevel.man \ + DPMSGetTimeouts.man \ + DPMSGetVersion.man \ + DPMSInfo.man \ + DPMSQueryExtension.man \ + DPMSSetTimeouts.man \ + XShape.man \ + XShm.man \ + XcupGetReservedColormapEntries.man \ + XcupQueryVersion.man \ + XcupStoreColors.man \ + XdbeAllocateBackBufferName.man \ + XdbeBeginIdiom.man \ + XdbeDeallocateBackBufferName.man \ + XdbeEndIdiom.man \ + XdbeFreeVisualInfo.man \ + XdbeGetBackBufferAttributes.man \ + XdbeGetVisualInfo.man \ + XdbeQueryExtension.man \ + XdbeSwapBuffers.man \ + Xevi.man \ Xmbuf.man -XShape_man_aliases = XShapeQueryExtension XShapeQueryVersion XShapeCombineRegion XShapeCombineRectangles XShapeCombineMask XShapeCombineShape XShapeOffsetShape XShapeQueryExtents XShapeSelectInput XShapeInputSelected XShapeGetRectangles - -XShm_man_aliases = XShmQueryExtension XShmQueryVersion XShmPixmapFormat XShmAttach XShmDetach XShmCreateImage XShmPutImage XShmGetImage XShmCreatePixmap XShmGetEventBase - -Xmbuf_man_aliases = XmbufQueryExtension XmbufGetVersion XmbufCreateBuffers XmbufDestroyBuffers XmbufDisplayBuffers XmbufGetWindowAttributes XmbufChangeWindowAttributes XmbufGetBufferAttributes XmbufChangeBufferAttributes XmbufGetScreenInfo XmbufCreateStereoWindow - -Xevi_man_aliases = XeviQueryVersion XeviGetVisualInfo XeviQueryExtension - -all_aliases = $(XShape_man_aliases) $(XShm_man_aliases) $(Xmbuf_man_aliases) $(Xevi_man_aliases) - -libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@) \ - $(all_aliases:=.@LIB_MAN_SUFFIX@) +XShape_shadows = \ + XShapeQueryExtension \ + XShapeQueryVersion \ + XShapeCombineRegion \ + XShapeCombineRectangles \ + XShapeCombineMask \ + XShapeCombineShape \ + XShapeOffsetShape \ + XShapeQueryExtents \ + XShapeSelectInput \ + XShapeInputSelected \ + XShapeGetRectangles + +XShm_shadows = \ + XShmQueryExtension \ + XShmQueryVersion \ + XShmPixmapFormat \ + XShmAttach \ + XShmDetach \ + XShmCreateImage \ + XShmPutImage \ + XShmGetImage \ + XShmCreatePixmap \ + XShmGetEventBase + +Xmbuf_shadows = \ + XmbufQueryExtension \ + XmbufGetVersion \ + XmbufCreateBuffers \ + XmbufDestroyBuffers \ + XmbufDisplayBuffers \ + XmbufGetWindowAttributes \ + XmbufChangeWindowAttributes \ + XmbufGetBufferAttributes \ + XmbufChangeBufferAttributes \ + XmbufGetScreenInfo \ + XmbufCreateStereoWindow + +Xevi_shadows = \ + XeviQueryVersion \ + XeviGetVisualInfo \ + XeviQueryExtension + +all_shadows = $(XShape_shadows) $(XShm_shadows) $(Xmbuf_shadows) $(Xevi_shadows) + +libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@) EXTRA_DIST = $(libman_PRE) CLEANFILES = $(libman_DATA) -# Generate man page shadow files (Replaces InstallManPageAliases from Imake) - -XShape_shadowmen = $(XShape_man_aliases:=.@LIB_MAN_SUFFIX@) - -$(XShape_shadowmen): - $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XShape.$(LIB_MAN_SUFFIX) > $@ - -XShm_shadowmen = $(XShm_man_aliases:=.@LIB_MAN_SUFFIX@) - -$(XShm_shadowmen): - $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XShm.$(LIB_MAN_SUFFIX) > $@ - -Xmbuf_shadowmen = $(Xmbuf_man_aliases:=.@LIB_MAN_SUFFIX@) - -$(Xmbuf_shadowmen): - $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/Xmbuf.$(LIB_MAN_SUFFIX) > $@ - -Xevi_shadowmen = $(Xevi_man_aliases:=.@LIB_MAN_SUFFIX@) - -$(Xevi_shadowmen): - $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/Xevi.$(LIB_MAN_SUFFIX) > $@ - SUFFIXES = .$(LIB_MAN_SUFFIX) .man # String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure diff --git a/libXext/man/XShapeCombineMask.man b/libXext/man/XShapeCombineMask.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeCombineMask.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__ diff --git a/libXext/man/XShapeCombineRectangles.man b/libXext/man/XShapeCombineRectangles.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeCombineRectangles.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__ diff --git a/libXext/man/XShapeCombineRegion.man b/libXext/man/XShapeCombineRegion.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeCombineRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__ diff --git a/libXext/man/XShapeCombineShape.man b/libXext/man/XShapeCombineShape.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeCombineShape.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__ diff --git a/libXext/man/XShapeGetRectangles.man b/libXext/man/XShapeGetRectangles.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeGetRectangles.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__ diff --git a/libXext/man/XShapeInputSelected.man b/libXext/man/XShapeInputSelected.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeInputSelected.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__ diff --git a/libXext/man/XShapeOffsetShape.man b/libXext/man/XShapeOffsetShape.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeOffsetShape.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__ diff --git a/libXext/man/XShapeQueryExtension.man b/libXext/man/XShapeQueryExtension.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeQueryExtension.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__ diff --git a/libXext/man/XShapeQueryExtents.man b/libXext/man/XShapeQueryExtents.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeQueryExtents.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__ diff --git a/libXext/man/XShapeQueryVersion.man b/libXext/man/XShapeQueryVersion.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeQueryVersion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__ diff --git a/libXext/man/XShapeSelectInput.man b/libXext/man/XShapeSelectInput.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeSelectInput.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__ diff --git a/libXext/man/XShmAttach.man b/libXext/man/XShmAttach.man new file mode 100644 index 000000000..d2725373c --- /dev/null +++ b/libXext/man/XShmAttach.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShm.__libmansuffix__ diff --git a/libXext/man/XShmCreateImage.man b/libXext/man/XShmCreateImage.man new file mode 100644 index 000000000..d2725373c --- /dev/null +++ b/libXext/man/XShmCreateImage.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShm.__libmansuffix__ diff --git a/libXext/man/XShmCreatePixmap.man b/libXext/man/XShmCreatePixmap.man new file mode 100644 index 000000000..d2725373c --- /dev/null +++ b/libXext/man/XShmCreatePixmap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShm.__libmansuffix__ diff --git a/libXext/man/XShmDetach.man b/libXext/man/XShmDetach.man new file mode 100644 index 000000000..d2725373c --- /dev/null +++ b/libXext/man/XShmDetach.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShm.__libmansuffix__ diff --git a/libXext/man/XShmGetEventBase.man b/libXext/man/XShmGetEventBase.man new file mode 100644 index 000000000..d2725373c --- /dev/null +++ b/libXext/man/XShmGetEventBase.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShm.__libmansuffix__ diff --git a/libXext/man/XShmGetImage.man b/libXext/man/XShmGetImage.man new file mode 100644 index 000000000..d2725373c --- /dev/null +++ b/libXext/man/XShmGetImage.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShm.__libmansuffix__ diff --git a/libXext/man/XShmPixmapFormat.man b/libXext/man/XShmPixmapFormat.man new file mode 100644 index 000000000..d2725373c --- /dev/null +++ b/libXext/man/XShmPixmapFormat.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShm.__libmansuffix__ diff --git a/libXext/man/XShmPutImage.man b/libXext/man/XShmPutImage.man new file mode 100644 index 000000000..d2725373c --- /dev/null +++ b/libXext/man/XShmPutImage.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShm.__libmansuffix__ diff --git a/libXext/man/XShmQueryExtension.man b/libXext/man/XShmQueryExtension.man new file mode 100644 index 000000000..d2725373c --- /dev/null +++ b/libXext/man/XShmQueryExtension.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShm.__libmansuffix__ diff --git a/libXext/man/XShmQueryVersion.man b/libXext/man/XShmQueryVersion.man new file mode 100644 index 000000000..d2725373c --- /dev/null +++ b/libXext/man/XShmQueryVersion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShm.__libmansuffix__ diff --git a/libXext/man/XeviGetVisualInfo.man b/libXext/man/XeviGetVisualInfo.man new file mode 100644 index 000000000..dae44c178 --- /dev/null +++ b/libXext/man/XeviGetVisualInfo.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xevi.__libmansuffix__ diff --git a/libXext/man/XeviQueryExtension.man b/libXext/man/XeviQueryExtension.man new file mode 100644 index 000000000..dae44c178 --- /dev/null +++ b/libXext/man/XeviQueryExtension.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xevi.__libmansuffix__ diff --git a/libXext/man/XeviQueryVersion.man b/libXext/man/XeviQueryVersion.man new file mode 100644 index 000000000..dae44c178 --- /dev/null +++ b/libXext/man/XeviQueryVersion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xevi.__libmansuffix__ diff --git a/libXext/man/XmbufChangeBufferAttributes.man b/libXext/man/XmbufChangeBufferAttributes.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufChangeBufferAttributes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__ diff --git a/libXext/man/XmbufChangeWindowAttributes.man b/libXext/man/XmbufChangeWindowAttributes.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufChangeWindowAttributes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__ diff --git a/libXext/man/XmbufCreateBuffers.man b/libXext/man/XmbufCreateBuffers.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufCreateBuffers.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__ diff --git a/libXext/man/XmbufCreateStereoWindow.man b/libXext/man/XmbufCreateStereoWindow.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufCreateStereoWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__ diff --git a/libXext/man/XmbufDestroyBuffers.man b/libXext/man/XmbufDestroyBuffers.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufDestroyBuffers.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__ diff --git a/libXext/man/XmbufDisplayBuffers.man b/libXext/man/XmbufDisplayBuffers.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufDisplayBuffers.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__ diff --git a/libXext/man/XmbufGetBufferAttributes.man b/libXext/man/XmbufGetBufferAttributes.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufGetBufferAttributes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__ diff --git a/libXext/man/XmbufGetScreenInfo.man b/libXext/man/XmbufGetScreenInfo.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufGetScreenInfo.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__ diff --git a/libXext/man/XmbufGetVersion.man b/libXext/man/XmbufGetVersion.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufGetVersion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__ diff --git a/libXext/man/XmbufGetWindowAttributes.man b/libXext/man/XmbufGetWindowAttributes.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufGetWindowAttributes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__ diff --git a/libXext/man/XmbufQueryExtension.man b/libXext/man/XmbufQueryExtension.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufQueryExtension.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__ diff --git a/libXinerama/man/Makefile.am b/libXinerama/man/Makefile.am index 7d8cc3dec..312a14b93 100644 --- a/libXinerama/man/Makefile.am +++ b/libXinerama/man/Makefile.am @@ -23,32 +23,23 @@ libmandir = $(LIB_MAN_DIR) -LIB_MAN_DIR_SUFFIX = $(LIB_MAN_DIR:@mandir@/man%=%) - -libman_PRE = Xinerama.man - -BUILT_SOURCES = $(Xinerama_shadowmen) +libman_PRE = \ + Xinerama.man \ + $(Xinerama_shadows:=.man) + +Xinerama_shadows = \ + XineramaQueryExtension \ + XineramaQueryVersion \ + XineramaIsActive \ + XineramaQueryScreens EXTRA_DIST = $(libman_PRE) +CLEANFILES = $(libman_DATA) -CLEANFILES = $(libman_DATA) $(BUILT_SOURCES) - -libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@) \ - $(Xinerama_shadowmen) +libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@) SUFFIXES = .$(LIB_MAN_SUFFIX) .man +# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure .man.$(LIB_MAN_SUFFIX): $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@ - -# Generate man page shadow files (Replaces InstallManPageAliases from Imake) - -Xinerama_shadows = \ - XineramaQueryExtension \ - XineramaQueryVersion \ - XineramaIsActive \ - XineramaQueryScreens - -Xinerama_shadowmen = $(Xinerama_shadows:=.@LIB_MAN_SUFFIX@) -$(Xinerama_shadowmen): - $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/Xinerama.$(LIB_MAN_SUFFIX)" > $@ diff --git a/libXinerama/man/XineramaIsActive.man b/libXinerama/man/XineramaIsActive.man new file mode 100644 index 000000000..a4f83321b --- /dev/null +++ b/libXinerama/man/XineramaIsActive.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xinerama.__libmansuffix__ diff --git a/libXinerama/man/XineramaQueryExtension.man b/libXinerama/man/XineramaQueryExtension.man new file mode 100644 index 000000000..a4f83321b --- /dev/null +++ b/libXinerama/man/XineramaQueryExtension.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xinerama.__libmansuffix__ diff --git a/libXinerama/man/XineramaQueryScreens.man b/libXinerama/man/XineramaQueryScreens.man new file mode 100644 index 000000000..a4f83321b --- /dev/null +++ b/libXinerama/man/XineramaQueryScreens.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xinerama.__libmansuffix__ diff --git a/libXinerama/man/XineramaQueryVersion.man b/libXinerama/man/XineramaQueryVersion.man new file mode 100644 index 000000000..a4f83321b --- /dev/null +++ b/libXinerama/man/XineramaQueryVersion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xinerama.__libmansuffix__ diff --git a/libxcb/NEWS b/libxcb/NEWS index 457059877..eaa31e885 100644 --- a/libxcb/NEWS +++ b/libxcb/NEWS @@ -1,414 +1,423 @@ -Release 1.6 (2010-04-09) -======================== -- darwin: xnu doesn't support poll on ttys on the master side -- Fix descriptor leak on memory error path -- Support xcb_discard_reply -- Open the X11 socket with close-on-exec flag -- Fix authentication on hpux and Hurd - -Release 1.5 (2009-12-03) -======================== -- setsockopt(SO_KEEPALIVE) on TCP display connections -- Add DRI2 support -- Fix check dependency -- Cygwin build fix: Add -no-undefined to libtool flags - -Release 1.4 (2009-07-15) -======================== -* Add majorCode, minorCode and resourceID fields to X generic error -* Fix precedence bug: wrong length for big-requests preceded by sync -* Fix libxcb-randr version info - -Release 1.3 (2009-05-29) -======================== -* Copy full IPv4 mapping (Bug #20665) -* Fix XID allocation -* Use poll() instead of select() when available -* Fix local socket connection on Hurd -* Fix XDM-AUTHORIZATION-1 -* Disable Nagle on TCP socket - -Release 1.2 (2009-02-17) -======================== -* Stop packaging auto-generated C files into tarball. - -Release 1.1.93 (2008-12-11) -=========================== -Enhancements: -* Apple: Enable support for launchd DISPLAY socket -* Treat XIDs the same as other cardinal values. - -Release 1.1.92 (2008-11-01) -=========================== -Enhancements: -* Added small fix to support trailing fixed fields; also warning for non-pad fixed fields -* Fixed overly aggressive warning about fixed field following variable -* Added generation of extern "C" for compatibility with C++ -* Remove libxcb-xlib and xcbxlib.h. -* Inline _xcb_lock_io, _xcb_unlock_io, and _xcb_wait_io. -* Track 64-bit sequence numbers internally. -* Use sequence number ranges in pending replies -* Remove duplicate XCB_EXTENSION calls for Composite extension -* Factorize m4 macros and add one to set X extensions -* Allow compile-time setting for XCB queue buffer size -* Support handing off socket write permission to external code. -* Add support for the abstract socket namespace under Linux - -Bug fixes: -* Fix tiny memory leak in read_packet -* Fix some fd leaks in _xcb_open_*() - -Release 1.1 (2007-11-04) -======================== - -This release requires xcb-proto 1.1, due to the addition of the -extension-multiword attribute to the XML schema. - -This release contains several important bug fixes, summarized below. It -also contains a patch much like Novell's libxcb-sloppy-lock.diff. -Rationale from the commit message follows. The patch and this rationale -were authored by Jamey Sharp , with agreement from -Josh Triplett . - - I strongly opposed proposals like this one for a long time. - Originally I had a very good reason: libX11, when compiled to use - XCB, would crash soon after a locking correctness violation, so it - was better to have an informative assert failure than a mystifying - crash soon after. - - It took some time for me to realize that I'd changed the libX11 - implementation (for unrelated reasons) so that it could survive most - invalid locking situations, as long as it wasn't actually being used - from multiple threads concurrently. - - The other thing that has changed is that most of the code with - incorrect locking has now been fixed. The value of the assert is - accordingly lower. - - However, remaining broken callers do need to be fixed. That's why - libXCB will still noisily print a stacktrace (if possible) on each - assertion failure, even when assert isn't actually invoked to - abort() the program; and that's why aborting is still default. This - environment variable is provided only for use as a temporary - workaround for broken applications. - -Enhancements: -* Print a backtrace, if possible, on locking assertion failures. -* Skip abort() on locking assertions if LIBXCB_ALLOW_SLOPPY_LOCK is set. -* xcb_poll_for_event: Return already-read events before reading again. -* Output a configuration summary at the end of ./configure. - -Bug fixes: -* Don't hold the xlib-xcb lock while sleeping: that allows deadlock. -* Allow unix: style display names again. -* Bug #9119: test xcb_popcount -* Fix unit tests for FreeBSD -* NetBSD doesn't have AI_ADDRCONFIG: use it only if it's available. -* Require libXau >= 0.99.2; earlier versions have a broken .pc file -* Use substitition variables in xcb-xinerama.pc.in -* Update autogen.sh to one that does objdir != srcdir -* Add tools/* and autogen.sh to EXTRA_DIST. -* Doxygen can now be fully disabled if desired. - -Documentation improvements: -* Many fixes and updates to the tutorial. -* Iterators, requests, and replies get partial Doxygen documentation. - - -Release 1.0 (2006-11-23) -======================== - -The "Thanksgiving" release: We feel thankful to have it released. Five years -have passed since XCB's initial commit on September 3rd, 2001: - - -* Support IPv6. XCB now supports displays with IPv6 addresses, with or without - enclosing square brackets, or with hosts which resolve to IPv6 addresses, by - using getaddrinfo instead of gethostbyname, and by including support for - authentication for such connections. This allows such displays as "::1:1.1". - -* XCB now uses the libpthread-stubs, to properly support optional use of - pthreads even on platforms which do not have all the necessary pthread stubs - in libc or otherwise available by default. - -* Switch from the old AM_PATH_CHECK macro to pkg-config. check 0.9.4 is now - required to build XCB's unit tests. The version that we were requiring was - not actually new enough to let our unit tests compile, and the AM_PATH_CHECK - macro is now considered deprecated. We know that versions of check using - pkg-config are new enough to work, and the check dependency was optional - anyway, so we've dropped support for older versions. - -* Provide a xcb_prefetch_maximum_request_length counterpart to - xcb_get_maximum_request_length. - -* Fix Bug #5958: zero out padding bytes in requests. - -* Change xcb_connect to pass the display number to _xcb_get_auth_info, which - passes it to get_authptr. This allows get_authptr to stop hacking the - display number out of the sockaddrs of various address families, such as - port - X_TCP_PORT, or the number after the last X in the UNIX socket path. - -* Remove --with-opt and --with-debug options from configure.ac; configure - supports the use of custom CFLAGS, so please use that instead. - -* Reove support for the tag in protocol descriptions, since they - no longer use it, and since new protocol descriptions should not need it - either. - -* xcb-proto has no libraries or headers, so don't use XCBPROTO_CFLAGS or - XCBPROTO_LIBS. - -* XCB builds which use xdmcp now include it in Requires.private, to support - static linking. - -* Replace "long" with uint32_t when used for a 32-bit quantity - -* Various enhancements to the generation of documentation with Doxygen: - * Check for doxygen in configure.ac - * Fix some Doxygen warnings. - * Install documentation. - * Handle out-of-tree builds, with srcdir != builddir. xcb.doxygen now gets - generated from xcb.doxygen.in, so that it can use top_builddir and - top_srcdir to find source and to output documentation. - * Fill in PROJECT_NUMBER from @VERSION@, now that we have it readily - available via autoconf. - - -Release 1.0 RC3 (2006-11-02) -============================ - -Note: Version 0.9.4 of the test suite tool "check" provides a broken -version of the AM_PATH_CHECK macro, which causes autoconf to fail due to -insufficient quoting on the macro names it prints in its deprecation -message. We have written a patch to fix this problem, available at: - -Version 0.9.4-2 of the Debian package for check includes this patch. -Users of other distributions who want to re-autotool libxcb will need to -apply this patch, use an older version of check, or wait for a fixed -upstream version. This bug does not affect users who use the distributed -tarballs and do not re-autotool. - -* Add library support for xcb-xinerama, using new protocol description - from xcb-proto. -* In the generated protocol code, define and use constants for opcode - numbers rather than hard-coding them. -* In the API conversion script, match only XCB-namespaced XID generators - when converting to xcb_generate_id. -* Quit treating xproto specially in Makefile.am: handle it like all the - extensions. -* Generate Doxygen documentation comments in the protocol stubs, and - provide a Doxygen config file for building HTML documentation for XCB. -* Add note to xcbxlib.h that nothing except Xlib/XCB should use it. -* Extend test suite to test xcb_parse_display with NULL argument and - display in $DISPLAY. - - -Release 1.0 RC2 (2006-10-07) -============================ - -API changes ------------ - -In our announcement of XCB 1.0 RC1, we proposed two API changes for -community feedback: - - We would greatly appreciate API review in this final release - candidate period. We've had some limited feedback that our attempts - to impose static type safety on XIDs in C pose more a hindrance than - a help, so we would appreciate discussion over whether this - constitutes a "serious issue with the API". Some question also - remains of whether xcb_poll_for_event should have the out-parameter - 'error', now that XCB has a more uniform mechanism for reporting - connection errors. Speak now on these points or leave us alone. ;-) - -Since we've received feedback agreeing with our proposed changes, and no -objections or requests to keep the existing API, we made both changes -and bumped the soname to libxcb.so.1.0.0 in preparation for the release -of XCB 1.0. - -* Remove XID wrapper structures and replace them with uint32_t typedefs. - XID union types like xcb_drawable_t and xcb_fontable_t also become - uint32_t typedefs. The API conversion script now replaces xcb_*_new - with calls directly to xcb_generate_id. This change makes - xcb_generate_id part of the client API rather than the extension API, - so move xcb_generate_id from xcbext.h to xcb.h. - -* Remove the 'int *error' out-parameter for xcb_poll_for_event. - xcb_poll_for_event now shuts down the xcb_connection_t on fatal - errors; use xcb_connection_has_error to check. - -The Xlib-specific API in libxcb-xlib also changed: - -* Stop exposing the XCB IO lock for Xlib's benefit, by removing - xcb_get_io_lock from the Xlib-specific XCB API; instead, libxcb-xlib - now provides xcb_xlib_lock and xcb_xlib_unlock. - -Code generation changes ------------------------ - -* The code generator no longer implicitly imports xproto for extensions. - xcb-proto 1.0 RC2 includes the corresponding change to explicitly - import xproto in extensions that need it - -* The generated protocol headers now declare "struct foo", "union foo" - or "enum foo", not just the typedef "foo" of an unnamed - struct/union/enum type. - -Bug Fixes ---------- - -* Make Plan 7 'checked' requests work correctly. - -Documentation improvements --------------------------- - -* Document xcb_generate_id. - -* Tutorial enhancements. - - -Release 1.0 RC1 (2006-09-25) -============================ - -The Great XCB Renaming ----------------------- - -Rename API to follow a new naming convention: - -* XCB_CONSTANTS_UPPERCASE_WITH_UNDERSCORES -* xcb_functions_lowercase_with_underscores -* xcb_types_lowercase_with_underscores_and_suffix_t -* expand all abbreviations like "req", "rep", and "iter" - -Word boundaries for the names in the protocol descriptions fall: - -* Wherever the protocol descriptions already have an underscore -* Between a lowercase letter and a subsequent uppercase letter -* Before the last uppercase letter in a string of uppercase letters - followed by a lowercase letter (such as in LSBFirst between LSB and - First) -* Before and after a string of digits (with exceptions for sized types - like xcb_char2b_t and xcb_glx_float32_t to match the stdint.h - convention) - -Also fix up some particular naming issues: - -* Rename shape_op and shape_kind to drop the "shape_" prefix, since - otherwise these types end up as xcb_shape_shape_{op,kind}_t. -* Remove leading underscores from enums in the GLX protocol description, - previously needed to ensure a word separator, but now redundant. - -This renaming breaks code written for the previous API naming -convention. The scripts in XCB's tools directory will convert code -written for the old API to use the new API; they work well enough that -we used them to convert the non-program-generated code in XCB, and when -run on the old program-generated code, they almost exactly reproduce the -new program-generated code (modulo whitespace and bugs in the old code -generator). - -Authors: Vincent Torri, Thomas Hunger, Josh Triplett - -In addition to the API renaming, the library SONAMEs have changed to -libxcb.so and libxcb-extname.so. The library major version remains at 0, -to become version 1 before 1.0 is released; the SONAME lowercasing means -that this will not conflict with XCB 0.9 libraries. - -The header files have moved from /usr/include/X11/XCB/ to -/usr/include/xcb/. The XML-XCB protocol descriptions have moved to -/usr/share/xcb, with extension descriptions no longer relegated to an -extensions/ subdirectory. The API conversion script api_conv.pl will fix -references to the header files, and packages using pkg-config will -automatically use the new library names. - -Error handling Plan 7 ---------------------- - -All request functions now come in an "unchecked" and "checked" variant. -The checked variant allows callers to handle errors inline where they -obtain the reply, or by calling xcb_request_check for requests with no -reply. The unchecked variant uses the event queue for errors. Requests -with replies default to checked, because the caller must already make a -function call to retrieve the reply and can see the error at that time; -the unchecked variant uses the suffix _unchecked. Requests without -replies default to unchecked, because the caller will not necessarily -expect to handle a response, and the checked variant uses the suffix -_checked. - -Connection error handling -------------------------- - -Fatal connection errors now put the xcb_connection_t object into an -error state, at which point all further operations on that connection -will fail. Callers can use the new xcb_connection_has_error function to -check for this state in a connection. Functions that return a -connection, such as the xcb_connect function, may instead return an -xcb_connection_t already in an error state. - -In the future we expect to add additional API for getting more -information about the error condition that caused the connection to get -into an error state. - -Smaller API changes -------------------- - -All functions that have been marked 'deprecated' up to now have been -removed for this release. After XCB 1.0 is released, functions marked -'deprecated' will be preserved until the end of time to maintain -compatibility. - -XCB no longer provides a sync function. Most callers of this function -should use xcb_flush instead, which usually provides the intended -functionality and does not require a round-trip to the server. If you -really need this functionality, either use xcb_get_input_focus like sync -used to do, or use the xcb_aux_sync function from the xcb-aux library in -xcb-util. However, note that we do not consider the libraries in -xcb-util remotely stable yet. - -XCB no longer provides xcb_[extension_name]_init functions for each -extension. These functions previously caused XCB to issue and process a -QueryExtension request. Callers should now directly call -xcb_get_extension_data on the xcb_[extension_name]_id, or use -xcb_prefetch_extension_data if they do not need to force a round-trip -immediately. - -The compatibility functions in xcbxlib.h, provided solely for use by -Xlib/XCB, now exist in a separate library libxcb-xlib. We don't want to -have to change the libxcb soname if we later change or remove the Xlib -compatibility functions, and nothing except Xlib/XCB should ever use -them. (Applications which use Xlib/XCB do not need this library either; -Xlib/XCB only uses it internally.) - -The descriptions of several extensions have been updated to match the -latest versions implemented in the X.org X server. - -GIT Repository split --------------------- - -Previously, several XCB-related projects all existed under the umbrella -of a single monolithic GIT repository with per-project subdirectories. -We have split this repository into individual per-project repositories. - -Josh Triplett and Jamey Sharp wrote a tool called git-split to -accomplish this repository split. git-split reconstructs the history of -a sub-project previously stored in a subdirectory of a larger -repository. It constructs new commit objects based on the existing tree -objects for the subtree in each commit, and discards commits which do -not affect the history of the sub-project, as well as merges made -unnecessary due to these discarded commits. - -We would like to acknowledge the work of the gobby team in creating a -collaborative editor which greatly aided the development of git-split -(as well as these release notes). - -Build and implementation fixes ------------------------------- - -XCB no longer needs proto/x11 from X.org; the XCB header xproto.h -provides the definitions from X.h, named according to XCB conventions. - -XCB should now build with non-GNU implementations of Make. - -XCB properly handles 32-bit wrap of sequence numbers, and thus now -supports issuing more than 2**32 requests in one connection. - -Fixed bugs #7001, #7261. +Release 1.7 (2010-08-13) +======================== +- Always wake up readers after writing +- Get rid of PATH_MAX and MAXPATHLEN +- Add ~ operator support in code generator +- xcb_open: Improve protocol/host parsing +- xcb_connect_to_display_with_auth_info: Fix memory leak +- Report which extensions are being built + +Release 1.6 (2010-04-09) +======================== +- darwin: xnu doesn't support poll on ttys on the master side +- Fix descriptor leak on memory error path +- Support xcb_discard_reply +- Open the X11 socket with close-on-exec flag +- Fix authentication on hpux and Hurd + +Release 1.5 (2009-12-03) +======================== +- setsockopt(SO_KEEPALIVE) on TCP display connections +- Add DRI2 support +- Fix check dependency +- Cygwin build fix: Add -no-undefined to libtool flags + +Release 1.4 (2009-07-15) +======================== +* Add majorCode, minorCode and resourceID fields to X generic error +* Fix precedence bug: wrong length for big-requests preceded by sync +* Fix libxcb-randr version info + +Release 1.3 (2009-05-29) +======================== +* Copy full IPv4 mapping (Bug #20665) +* Fix XID allocation +* Use poll() instead of select() when available +* Fix local socket connection on Hurd +* Fix XDM-AUTHORIZATION-1 +* Disable Nagle on TCP socket + +Release 1.2 (2009-02-17) +======================== +* Stop packaging auto-generated C files into tarball. + +Release 1.1.93 (2008-12-11) +=========================== +Enhancements: +* Apple: Enable support for launchd DISPLAY socket +* Treat XIDs the same as other cardinal values. + +Release 1.1.92 (2008-11-01) +=========================== +Enhancements: +* Added small fix to support trailing fixed fields; also warning for non-pad fixed fields +* Fixed overly aggressive warning about fixed field following variable +* Added generation of extern "C" for compatibility with C++ +* Remove libxcb-xlib and xcbxlib.h. +* Inline _xcb_lock_io, _xcb_unlock_io, and _xcb_wait_io. +* Track 64-bit sequence numbers internally. +* Use sequence number ranges in pending replies +* Remove duplicate XCB_EXTENSION calls for Composite extension +* Factorize m4 macros and add one to set X extensions +* Allow compile-time setting for XCB queue buffer size +* Support handing off socket write permission to external code. +* Add support for the abstract socket namespace under Linux + +Bug fixes: +* Fix tiny memory leak in read_packet +* Fix some fd leaks in _xcb_open_*() + +Release 1.1 (2007-11-04) +======================== + +This release requires xcb-proto 1.1, due to the addition of the +extension-multiword attribute to the XML schema. + +This release contains several important bug fixes, summarized below. It +also contains a patch much like Novell's libxcb-sloppy-lock.diff. +Rationale from the commit message follows. The patch and this rationale +were authored by Jamey Sharp , with agreement from +Josh Triplett . + + I strongly opposed proposals like this one for a long time. + Originally I had a very good reason: libX11, when compiled to use + XCB, would crash soon after a locking correctness violation, so it + was better to have an informative assert failure than a mystifying + crash soon after. + + It took some time for me to realize that I'd changed the libX11 + implementation (for unrelated reasons) so that it could survive most + invalid locking situations, as long as it wasn't actually being used + from multiple threads concurrently. + + The other thing that has changed is that most of the code with + incorrect locking has now been fixed. The value of the assert is + accordingly lower. + + However, remaining broken callers do need to be fixed. That's why + libXCB will still noisily print a stacktrace (if possible) on each + assertion failure, even when assert isn't actually invoked to + abort() the program; and that's why aborting is still default. This + environment variable is provided only for use as a temporary + workaround for broken applications. + +Enhancements: +* Print a backtrace, if possible, on locking assertion failures. +* Skip abort() on locking assertions if LIBXCB_ALLOW_SLOPPY_LOCK is set. +* xcb_poll_for_event: Return already-read events before reading again. +* Output a configuration summary at the end of ./configure. + +Bug fixes: +* Don't hold the xlib-xcb lock while sleeping: that allows deadlock. +* Allow unix: style display names again. +* Bug #9119: test xcb_popcount +* Fix unit tests for FreeBSD +* NetBSD doesn't have AI_ADDRCONFIG: use it only if it's available. +* Require libXau >= 0.99.2; earlier versions have a broken .pc file +* Use substitition variables in xcb-xinerama.pc.in +* Update autogen.sh to one that does objdir != srcdir +* Add tools/* and autogen.sh to EXTRA_DIST. +* Doxygen can now be fully disabled if desired. + +Documentation improvements: +* Many fixes and updates to the tutorial. +* Iterators, requests, and replies get partial Doxygen documentation. + + +Release 1.0 (2006-11-23) +======================== + +The "Thanksgiving" release: We feel thankful to have it released. Five years +have passed since XCB's initial commit on September 3rd, 2001: + + +* Support IPv6. XCB now supports displays with IPv6 addresses, with or without + enclosing square brackets, or with hosts which resolve to IPv6 addresses, by + using getaddrinfo instead of gethostbyname, and by including support for + authentication for such connections. This allows such displays as "::1:1.1". + +* XCB now uses the libpthread-stubs, to properly support optional use of + pthreads even on platforms which do not have all the necessary pthread stubs + in libc or otherwise available by default. + +* Switch from the old AM_PATH_CHECK macro to pkg-config. check 0.9.4 is now + required to build XCB's unit tests. The version that we were requiring was + not actually new enough to let our unit tests compile, and the AM_PATH_CHECK + macro is now considered deprecated. We know that versions of check using + pkg-config are new enough to work, and the check dependency was optional + anyway, so we've dropped support for older versions. + +* Provide a xcb_prefetch_maximum_request_length counterpart to + xcb_get_maximum_request_length. + +* Fix Bug #5958: zero out padding bytes in requests. + +* Change xcb_connect to pass the display number to _xcb_get_auth_info, which + passes it to get_authptr. This allows get_authptr to stop hacking the + display number out of the sockaddrs of various address families, such as + port - X_TCP_PORT, or the number after the last X in the UNIX socket path. + +* Remove --with-opt and --with-debug options from configure.ac; configure + supports the use of custom CFLAGS, so please use that instead. + +* Reove support for the tag in protocol descriptions, since they + no longer use it, and since new protocol descriptions should not need it + either. + +* xcb-proto has no libraries or headers, so don't use XCBPROTO_CFLAGS or + XCBPROTO_LIBS. + +* XCB builds which use xdmcp now include it in Requires.private, to support + static linking. + +* Replace "long" with uint32_t when used for a 32-bit quantity + +* Various enhancements to the generation of documentation with Doxygen: + * Check for doxygen in configure.ac + * Fix some Doxygen warnings. + * Install documentation. + * Handle out-of-tree builds, with srcdir != builddir. xcb.doxygen now gets + generated from xcb.doxygen.in, so that it can use top_builddir and + top_srcdir to find source and to output documentation. + * Fill in PROJECT_NUMBER from @VERSION@, now that we have it readily + available via autoconf. + + +Release 1.0 RC3 (2006-11-02) +============================ + +Note: Version 0.9.4 of the test suite tool "check" provides a broken +version of the AM_PATH_CHECK macro, which causes autoconf to fail due to +insufficient quoting on the macro names it prints in its deprecation +message. We have written a patch to fix this problem, available at: + +Version 0.9.4-2 of the Debian package for check includes this patch. +Users of other distributions who want to re-autotool libxcb will need to +apply this patch, use an older version of check, or wait for a fixed +upstream version. This bug does not affect users who use the distributed +tarballs and do not re-autotool. + +* Add library support for xcb-xinerama, using new protocol description + from xcb-proto. +* In the generated protocol code, define and use constants for opcode + numbers rather than hard-coding them. +* In the API conversion script, match only XCB-namespaced XID generators + when converting to xcb_generate_id. +* Quit treating xproto specially in Makefile.am: handle it like all the + extensions. +* Generate Doxygen documentation comments in the protocol stubs, and + provide a Doxygen config file for building HTML documentation for XCB. +* Add note to xcbxlib.h that nothing except Xlib/XCB should use it. +* Extend test suite to test xcb_parse_display with NULL argument and + display in $DISPLAY. + + +Release 1.0 RC2 (2006-10-07) +============================ + +API changes +----------- + +In our announcement of XCB 1.0 RC1, we proposed two API changes for +community feedback: + + We would greatly appreciate API review in this final release + candidate period. We've had some limited feedback that our attempts + to impose static type safety on XIDs in C pose more a hindrance than + a help, so we would appreciate discussion over whether this + constitutes a "serious issue with the API". Some question also + remains of whether xcb_poll_for_event should have the out-parameter + 'error', now that XCB has a more uniform mechanism for reporting + connection errors. Speak now on these points or leave us alone. ;-) + +Since we've received feedback agreeing with our proposed changes, and no +objections or requests to keep the existing API, we made both changes +and bumped the soname to libxcb.so.1.0.0 in preparation for the release +of XCB 1.0. + +* Remove XID wrapper structures and replace them with uint32_t typedefs. + XID union types like xcb_drawable_t and xcb_fontable_t also become + uint32_t typedefs. The API conversion script now replaces xcb_*_new + with calls directly to xcb_generate_id. This change makes + xcb_generate_id part of the client API rather than the extension API, + so move xcb_generate_id from xcbext.h to xcb.h. + +* Remove the 'int *error' out-parameter for xcb_poll_for_event. + xcb_poll_for_event now shuts down the xcb_connection_t on fatal + errors; use xcb_connection_has_error to check. + +The Xlib-specific API in libxcb-xlib also changed: + +* Stop exposing the XCB IO lock for Xlib's benefit, by removing + xcb_get_io_lock from the Xlib-specific XCB API; instead, libxcb-xlib + now provides xcb_xlib_lock and xcb_xlib_unlock. + +Code generation changes +----------------------- + +* The code generator no longer implicitly imports xproto for extensions. + xcb-proto 1.0 RC2 includes the corresponding change to explicitly + import xproto in extensions that need it + +* The generated protocol headers now declare "struct foo", "union foo" + or "enum foo", not just the typedef "foo" of an unnamed + struct/union/enum type. + +Bug Fixes +--------- + +* Make Plan 7 'checked' requests work correctly. + +Documentation improvements +-------------------------- + +* Document xcb_generate_id. + +* Tutorial enhancements. + + +Release 1.0 RC1 (2006-09-25) +============================ + +The Great XCB Renaming +---------------------- + +Rename API to follow a new naming convention: + +* XCB_CONSTANTS_UPPERCASE_WITH_UNDERSCORES +* xcb_functions_lowercase_with_underscores +* xcb_types_lowercase_with_underscores_and_suffix_t +* expand all abbreviations like "req", "rep", and "iter" + +Word boundaries for the names in the protocol descriptions fall: + +* Wherever the protocol descriptions already have an underscore +* Between a lowercase letter and a subsequent uppercase letter +* Before the last uppercase letter in a string of uppercase letters + followed by a lowercase letter (such as in LSBFirst between LSB and + First) +* Before and after a string of digits (with exceptions for sized types + like xcb_char2b_t and xcb_glx_float32_t to match the stdint.h + convention) + +Also fix up some particular naming issues: + +* Rename shape_op and shape_kind to drop the "shape_" prefix, since + otherwise these types end up as xcb_shape_shape_{op,kind}_t. +* Remove leading underscores from enums in the GLX protocol description, + previously needed to ensure a word separator, but now redundant. + +This renaming breaks code written for the previous API naming +convention. The scripts in XCB's tools directory will convert code +written for the old API to use the new API; they work well enough that +we used them to convert the non-program-generated code in XCB, and when +run on the old program-generated code, they almost exactly reproduce the +new program-generated code (modulo whitespace and bugs in the old code +generator). + +Authors: Vincent Torri, Thomas Hunger, Josh Triplett + +In addition to the API renaming, the library SONAMEs have changed to +libxcb.so and libxcb-extname.so. The library major version remains at 0, +to become version 1 before 1.0 is released; the SONAME lowercasing means +that this will not conflict with XCB 0.9 libraries. + +The header files have moved from /usr/include/X11/XCB/ to +/usr/include/xcb/. The XML-XCB protocol descriptions have moved to +/usr/share/xcb, with extension descriptions no longer relegated to an +extensions/ subdirectory. The API conversion script api_conv.pl will fix +references to the header files, and packages using pkg-config will +automatically use the new library names. + +Error handling Plan 7 +--------------------- + +All request functions now come in an "unchecked" and "checked" variant. +The checked variant allows callers to handle errors inline where they +obtain the reply, or by calling xcb_request_check for requests with no +reply. The unchecked variant uses the event queue for errors. Requests +with replies default to checked, because the caller must already make a +function call to retrieve the reply and can see the error at that time; +the unchecked variant uses the suffix _unchecked. Requests without +replies default to unchecked, because the caller will not necessarily +expect to handle a response, and the checked variant uses the suffix +_checked. + +Connection error handling +------------------------- + +Fatal connection errors now put the xcb_connection_t object into an +error state, at which point all further operations on that connection +will fail. Callers can use the new xcb_connection_has_error function to +check for this state in a connection. Functions that return a +connection, such as the xcb_connect function, may instead return an +xcb_connection_t already in an error state. + +In the future we expect to add additional API for getting more +information about the error condition that caused the connection to get +into an error state. + +Smaller API changes +------------------- + +All functions that have been marked 'deprecated' up to now have been +removed for this release. After XCB 1.0 is released, functions marked +'deprecated' will be preserved until the end of time to maintain +compatibility. + +XCB no longer provides a sync function. Most callers of this function +should use xcb_flush instead, which usually provides the intended +functionality and does not require a round-trip to the server. If you +really need this functionality, either use xcb_get_input_focus like sync +used to do, or use the xcb_aux_sync function from the xcb-aux library in +xcb-util. However, note that we do not consider the libraries in +xcb-util remotely stable yet. + +XCB no longer provides xcb_[extension_name]_init functions for each +extension. These functions previously caused XCB to issue and process a +QueryExtension request. Callers should now directly call +xcb_get_extension_data on the xcb_[extension_name]_id, or use +xcb_prefetch_extension_data if they do not need to force a round-trip +immediately. + +The compatibility functions in xcbxlib.h, provided solely for use by +Xlib/XCB, now exist in a separate library libxcb-xlib. We don't want to +have to change the libxcb soname if we later change or remove the Xlib +compatibility functions, and nothing except Xlib/XCB should ever use +them. (Applications which use Xlib/XCB do not need this library either; +Xlib/XCB only uses it internally.) + +The descriptions of several extensions have been updated to match the +latest versions implemented in the X.org X server. + +GIT Repository split +-------------------- + +Previously, several XCB-related projects all existed under the umbrella +of a single monolithic GIT repository with per-project subdirectories. +We have split this repository into individual per-project repositories. + +Josh Triplett and Jamey Sharp wrote a tool called git-split to +accomplish this repository split. git-split reconstructs the history of +a sub-project previously stored in a subdirectory of a larger +repository. It constructs new commit objects based on the existing tree +objects for the subtree in each commit, and discards commits which do +not affect the history of the sub-project, as well as merges made +unnecessary due to these discarded commits. + +We would like to acknowledge the work of the gobby team in creating a +collaborative editor which greatly aided the development of git-split +(as well as these release notes). + +Build and implementation fixes +------------------------------ + +XCB no longer needs proto/x11 from X.org; the XCB header xproto.h +provides the definitions from X.h, named according to XCB conventions. + +XCB should now build with non-GNU implementations of Make. + +XCB properly handles 32-bit wrap of sequence numbers, and thus now +supports issuing more than 2**32 requests in one connection. + +Fixed bugs #7001, #7261. diff --git a/libxcb/configure.ac b/libxcb/configure.ac index ef71ad886..173755c2a 100644 --- a/libxcb/configure.ac +++ b/libxcb/configure.ac @@ -3,7 +3,7 @@ AC_PREREQ(2.57) AC_INIT([libxcb], - 1.6, + 1.7, [xcb@lists.freedesktop.org]) AC_CONFIG_SRCDIR([xcb.pc.in]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) diff --git a/pixman/configure.ac b/pixman/configure.ac index ae7b4ee15..be1690b3b 100644 --- a/pixman/configure.ac +++ b/pixman/configure.ac @@ -600,13 +600,23 @@ AC_SUBST(DEP_CFLAGS) AC_SUBST(DEP_LIBS) dnl ===================================== -dnl posix_memalign +dnl posix_memalign, sigaction, alarm AC_CHECK_FUNC(posix_memalign, have_posix_memalign=yes, have_posix_memalign=no) if test x$have_posix_memalign = xyes; then AC_DEFINE(HAVE_POSIX_MEMALIGN, 1, [Whether we have posix_memalign()]) fi +AC_CHECK_FUNC(sigaction, have_sigaction=yes, have_sigaction=no) +if test x$have_sigaction = xyes; then + AC_DEFINE(HAVE_SIGACTION, 1, [Whether we have sigaction()]) +fi + +AC_CHECK_FUNC(alarm, have_alarm=yes, have_alarm=no) +if test x$have_alarm = xyes; then + AC_DEFINE(HAVE_ALARM, 1, [Whether we have alarm()]) +fi + dnl ===================================== dnl Thread local storage diff --git a/pixman/pixman/pixman-arm-neon-asm.S b/pixman/pixman/pixman-arm-neon-asm.S index 51bc347bc..18dca54ef 100644 --- a/pixman/pixman/pixman-arm-neon-asm.S +++ b/pixman/pixman/pixman-arm-neon-asm.S @@ -1,1713 +1,1806 @@ -/* - * Copyright © 2009 Nokia Corporation - * - * 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 (including the next - * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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. - * - * Author: Siarhei Siamashka (siarhei.siamashka@nokia.com) - */ - -/* - * This file contains implementations of NEON optimized pixel processing - * functions. There is no full and detailed tutorial, but some functions - * (those which are exposing some new or interesting features) are - * extensively commented and can be used as examples. - * - * You may want to have a look at the comments for following functions: - * - pixman_composite_over_8888_0565_asm_neon - * - pixman_composite_over_n_8_0565_asm_neon - */ - -/* Prevent the stack from becoming executable for no reason... */ -#if defined(__linux__) && defined(__ELF__) -.section .note.GNU-stack,"",%progbits -#endif - - .text - .fpu neon - .arch armv7a - .object_arch armv4 - .eabi_attribute 10, 0 /* suppress Tag_FP_arch */ - .eabi_attribute 12, 0 /* suppress Tag_Advanced_SIMD_arch */ - .arm - .altmacro - -#include "pixman-arm-neon-asm.h" - -/* Global configuration options and preferences */ - -/* - * The code can optionally make use of unaligned memory accesses to improve - * performance of handling leading/trailing pixels for each scanline. - * Configuration variable RESPECT_STRICT_ALIGNMENT can be set to 0 for - * example in linux if unaligned memory accesses are not configured to - * generate.exceptions. - */ -.set RESPECT_STRICT_ALIGNMENT, 1 - -/* - * Set default prefetch type. There is a choice between the following options: - * - * PREFETCH_TYPE_NONE (may be useful for the ARM cores where PLD is set to work - * as NOP to workaround some HW bugs or for whatever other reason) - * - * PREFETCH_TYPE_SIMPLE (may be useful for simple single-issue ARM cores where - * advanced prefetch intruduces heavy overhead) - * - * PREFETCH_TYPE_ADVANCED (useful for superscalar cores such as ARM Cortex-A8 - * which can run ARM and NEON instructions simultaneously so that extra ARM - * instructions do not add (many) extra cycles, but improve prefetch efficiency) - * - * Note: some types of function can't support advanced prefetch and fallback - * to simple one (those which handle 24bpp pixels) - */ -.set PREFETCH_TYPE_DEFAULT, PREFETCH_TYPE_ADVANCED - -/* Prefetch distance in pixels for simple prefetch */ -.set PREFETCH_DISTANCE_SIMPLE, 64 - -/* - * Implementation of pixman_composite_over_8888_0565_asm_neon - * - * This function takes a8r8g8b8 source buffer, r5g6b5 destination buffer and - * performs OVER compositing operation. Function fast_composite_over_8888_0565 - * from pixman-fast-path.c does the same in C and can be used as a reference. - * - * First we need to have some NEON assembly code which can do the actual - * operation on the pixels and provide it to the template macro. - * - * Template macro quite conveniently takes care of emitting all the necessary - * code for memory reading and writing (including quite tricky cases of - * handling unaligned leading/trailing pixels), so we only need to deal with - * the data in NEON registers. - * - * NEON registers allocation in general is recommented to be the following: - * d0, d1, d2, d3 - contain loaded source pixel data - * d4, d5, d6, d7 - contain loaded destination pixels (if they are needed) - * d24, d25, d26, d27 - contain loading mask pixel data (if mask is used) - * d28, d29, d30, d31 - place for storing the result (destination pixels) - * - * As can be seen above, four 64-bit NEON registers are used for keeping - * intermediate pixel data and up to 8 pixels can be processed in one step - * for 32bpp formats (16 pixels for 16bpp, 32 pixels for 8bpp). - * - * This particular function uses the following registers allocation: - * d0, d1, d2, d3 - contain loaded source pixel data - * d4, d5 - contain loaded destination pixels (they are needed) - * d28, d29 - place for storing the result (destination pixels) - */ - -/* - * Step one. We need to have some code to do some arithmetics on pixel data. - * This is implemented as a pair of macros: '*_head' and '*_tail'. When used - * back-to-back, they take pixel data from {d0, d1, d2, d3} and {d4, d5}, - * perform all the needed calculations and write the result to {d28, d29}. - * The rationale for having two macros and not just one will be explained - * later. In practice, any single monolitic function which does the work can - * be split into two parts in any arbitrary way without affecting correctness. - * - * There is one special trick here too. Common template macro can optionally - * make our life a bit easier by doing R, G, B, A color components - * deinterleaving for 32bpp pixel formats (and this feature is used in - * 'pixman_composite_over_8888_0565_asm_neon' function). So it means that - * instead of having 8 packed pixels in {d0, d1, d2, d3} registers, we - * actually use d0 register for blue channel (a vector of eight 8-bit - * values), d1 register for green, d2 for red and d3 for alpha. This - * simple conversion can be also done with a few NEON instructions: - * - * Packed to planar conversion: - * vuzp.8 d0, d1 - * vuzp.8 d2, d3 - * vuzp.8 d1, d3 - * vuzp.8 d0, d2 - * - * Planar to packed conversion: - * vzip.8 d0, d2 - * vzip.8 d1, d3 - * vzip.8 d2, d3 - * vzip.8 d0, d1 - * - * But pixel can be loaded directly in planar format using VLD4.8 NEON - * instruction. It is 1 cycle slower than VLD1.32, so this is not always - * desirable, that's why deinterleaving is optional. - * - * But anyway, here is the code: - */ -.macro pixman_composite_over_8888_0565_process_pixblock_head - /* convert 8 r5g6b5 pixel data from {d4, d5} to planar 8-bit format - and put data into d6 - red, d7 - green, d30 - blue */ - vshrn.u16 d6, q2, #8 - vshrn.u16 d7, q2, #3 - vsli.u16 q2, q2, #5 - vsri.u8 d6, d6, #5 - vmvn.8 d3, d3 /* invert source alpha */ - vsri.u8 d7, d7, #6 - vshrn.u16 d30, q2, #2 - /* now do alpha blending, storing results in 8-bit planar format - into d16 - red, d19 - green, d18 - blue */ - vmull.u8 q10, d3, d6 - vmull.u8 q11, d3, d7 - vmull.u8 q12, d3, d30 - vrshr.u16 q13, q10, #8 - vrshr.u16 q3, q11, #8 - vrshr.u16 q15, q12, #8 - vraddhn.u16 d20, q10, q13 - vraddhn.u16 d23, q11, q3 - vraddhn.u16 d22, q12, q15 -.endm - -.macro pixman_composite_over_8888_0565_process_pixblock_tail - /* ... continue alpha blending */ - vqadd.u8 d16, d2, d20 - vqadd.u8 q9, q0, q11 - /* convert the result to r5g6b5 and store it into {d28, d29} */ - vshll.u8 q14, d16, #8 - vshll.u8 q8, d19, #8 - vshll.u8 q9, d18, #8 - vsri.u16 q14, q8, #5 - vsri.u16 q14, q9, #11 -.endm - -/* - * OK, now we got almost everything that we need. Using the above two - * macros, the work can be done right. But now we want to optimize - * it a bit. ARM Cortex-A8 is an in-order core, and benefits really - * a lot from good code scheduling and software pipelining. - * - * Let's construct some code, which will run in the core main loop. - * Some pseudo-code of the main loop will look like this: - * head - * while (...) { - * tail - * head - * } - * tail - * - * It may look a bit weird, but this setup allows to hide instruction - * latencies better and also utilize dual-issue capability more - * efficiently (make pairs of load-store and ALU instructions). - * - * So what we need now is a '*_tail_head' macro, which will be used - * in the core main loop. A trivial straightforward implementation - * of this macro would look like this: - * - * pixman_composite_over_8888_0565_process_pixblock_tail - * vst1.16 {d28, d29}, [DST_W, :128]! - * vld1.16 {d4, d5}, [DST_R, :128]! - * vld4.32 {d0, d1, d2, d3}, [SRC]! - * pixman_composite_over_8888_0565_process_pixblock_head - * cache_preload 8, 8 - * - * Now it also got some VLD/VST instructions. We simply can't move from - * processing one block of pixels to the other one with just arithmetics. - * The previously processed data needs to be written to memory and new - * data needs to be fetched. Fortunately, this main loop does not deal - * with partial leading/trailing pixels and can load/store a full block - * of pixels in a bulk. Additionally, destination buffer is already - * 16 bytes aligned here (which is good for performance). - * - * New things here are DST_R, DST_W, SRC and MASK identifiers. These - * are the aliases for ARM registers which are used as pointers for - * accessing data. We maintain separate pointers for reading and writing - * destination buffer (DST_R and DST_W). - * - * Another new thing is 'cache_preload' macro. It is used for prefetching - * data into CPU L2 cache and improve performance when dealing with large - * images which are far larger than cache size. It uses one argument - * (actually two, but they need to be the same here) - number of pixels - * in a block. Looking into 'pixman-arm-neon-asm.h' can provide some - * details about this macro. Moreover, if good performance is needed - * the code from this macro needs to be copied into '*_tail_head' macro - * and mixed with the rest of code for optimal instructions scheduling. - * We are actually doing it below. - * - * Now after all the explanations, here is the optimized code. - * Different instruction streams (originaling from '*_head', '*_tail' - * and 'cache_preload' macro) use different indentation levels for - * better readability. Actually taking the code from one of these - * indentation levels and ignoring a few VLD/VST instructions would - * result in exactly the code from '*_head', '*_tail' or 'cache_preload' - * macro! - */ - -#if 1 - -.macro pixman_composite_over_8888_0565_process_pixblock_tail_head - vqadd.u8 d16, d2, d20 - vld1.16 {d4, d5}, [DST_R, :128]! - vqadd.u8 q9, q0, q11 - vshrn.u16 d6, q2, #8 - vld4.8 {d0, d1, d2, d3}, [SRC]! - vshrn.u16 d7, q2, #3 - vsli.u16 q2, q2, #5 - vshll.u8 q14, d16, #8 - PF add PF_X, PF_X, #8 - vshll.u8 q8, d19, #8 - PF tst PF_CTL, #0xF - vsri.u8 d6, d6, #5 - PF addne PF_X, PF_X, #8 - vmvn.8 d3, d3 - PF subne PF_CTL, PF_CTL, #1 - vsri.u8 d7, d7, #6 - vshrn.u16 d30, q2, #2 - vmull.u8 q10, d3, d6 - PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] - vmull.u8 q11, d3, d7 - vmull.u8 q12, d3, d30 - PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift] - vsri.u16 q14, q8, #5 - PF cmp PF_X, ORIG_W - vshll.u8 q9, d18, #8 - vrshr.u16 q13, q10, #8 - PF subge PF_X, PF_X, ORIG_W - vrshr.u16 q3, q11, #8 - vrshr.u16 q15, q12, #8 - PF subges PF_CTL, PF_CTL, #0x10 - vsri.u16 q14, q9, #11 - PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! - vraddhn.u16 d20, q10, q13 - vraddhn.u16 d23, q11, q3 - PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! - vraddhn.u16 d22, q12, q15 - vst1.16 {d28, d29}, [DST_W, :128]! -.endm - -#else - -/* If we did not care much about the performance, we would just use this... */ -.macro pixman_composite_over_8888_0565_process_pixblock_tail_head - pixman_composite_over_8888_0565_process_pixblock_tail - vst1.16 {d28, d29}, [DST_W, :128]! - vld1.16 {d4, d5}, [DST_R, :128]! - vld4.32 {d0, d1, d2, d3}, [SRC]! - pixman_composite_over_8888_0565_process_pixblock_head - cache_preload 8, 8 -.endm - -#endif - -/* - * And now the final part. We are using 'generate_composite_function' macro - * to put all the stuff together. We are specifying the name of the function - * which we want to get, number of bits per pixel for the source, mask and - * destination (0 if unused, like mask in this case). Next come some bit - * flags: - * FLAG_DST_READWRITE - tells that the destination buffer is both read - * and written, for write-only buffer we would use - * FLAG_DST_WRITEONLY flag instead - * FLAG_DEINTERLEAVE_32BPP - tells that we prefer to work with planar data - * and separate color channels for 32bpp format. - * The next things are: - * - the number of pixels processed per iteration (8 in this case, because - * that's the maximum what can fit into four 64-bit NEON registers). - * - prefetch distance, measured in pixel blocks. In this case it is 5 times - * by 8 pixels. That would be 40 pixels, or up to 160 bytes. Optimal - * prefetch distance can be selected by running some benchmarks. - * - * After that we specify some macros, these are 'default_init', - * 'default_cleanup' here which are empty (but it is possible to have custom - * init/cleanup macros to be able to save/restore some extra NEON registers - * like d8-d15 or do anything else) followed by - * 'pixman_composite_over_8888_0565_process_pixblock_head', - * 'pixman_composite_over_8888_0565_process_pixblock_tail' and - * 'pixman_composite_over_8888_0565_process_pixblock_tail_head' - * which we got implemented above. - * - * The last part is the NEON registers allocation scheme. - */ -generate_composite_function \ - pixman_composite_over_8888_0565_asm_neon, 32, 0, 16, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_over_8888_0565_process_pixblock_head, \ - pixman_composite_over_8888_0565_process_pixblock_tail, \ - pixman_composite_over_8888_0565_process_pixblock_tail_head, \ - 28, /* dst_w_basereg */ \ - 4, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 24 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_over_n_0565_process_pixblock_head - /* convert 8 r5g6b5 pixel data from {d4, d5} to planar 8-bit format - and put data into d6 - red, d7 - green, d30 - blue */ - vshrn.u16 d6, q2, #8 - vshrn.u16 d7, q2, #3 - vsli.u16 q2, q2, #5 - vsri.u8 d6, d6, #5 - vsri.u8 d7, d7, #6 - vshrn.u16 d30, q2, #2 - /* now do alpha blending, storing results in 8-bit planar format - into d16 - red, d19 - green, d18 - blue */ - vmull.u8 q10, d3, d6 - vmull.u8 q11, d3, d7 - vmull.u8 q12, d3, d30 - vrshr.u16 q13, q10, #8 - vrshr.u16 q3, q11, #8 - vrshr.u16 q15, q12, #8 - vraddhn.u16 d20, q10, q13 - vraddhn.u16 d23, q11, q3 - vraddhn.u16 d22, q12, q15 -.endm - -.macro pixman_composite_over_n_0565_process_pixblock_tail - /* ... continue alpha blending */ - vqadd.u8 d16, d2, d20 - vqadd.u8 q9, q0, q11 - /* convert the result to r5g6b5 and store it into {d28, d29} */ - vshll.u8 q14, d16, #8 - vshll.u8 q8, d19, #8 - vshll.u8 q9, d18, #8 - vsri.u16 q14, q8, #5 - vsri.u16 q14, q9, #11 -.endm - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_over_n_0565_process_pixblock_tail_head - pixman_composite_over_n_0565_process_pixblock_tail - vld1.16 {d4, d5}, [DST_R, :128]! - vst1.16 {d28, d29}, [DST_W, :128]! - pixman_composite_over_n_0565_process_pixblock_head -.endm - -.macro pixman_composite_over_n_0565_init - add DUMMY, sp, #ARGS_STACK_OFFSET - vld1.32 {d3[0]}, [DUMMY] - vdup.8 d0, d3[0] - vdup.8 d1, d3[1] - vdup.8 d2, d3[2] - vdup.8 d3, d3[3] - vmvn.8 d3, d3 /* invert source alpha */ -.endm - -generate_composite_function \ - pixman_composite_over_n_0565_asm_neon, 0, 0, 16, \ - FLAG_DST_READWRITE, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_over_n_0565_init, \ - default_cleanup, \ - pixman_composite_over_n_0565_process_pixblock_head, \ - pixman_composite_over_n_0565_process_pixblock_tail, \ - pixman_composite_over_n_0565_process_pixblock_tail_head, \ - 28, /* dst_w_basereg */ \ - 4, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 24 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_src_8888_0565_process_pixblock_head - vshll.u8 q8, d1, #8 - vshll.u8 q14, d2, #8 - vshll.u8 q9, d0, #8 -.endm - -.macro pixman_composite_src_8888_0565_process_pixblock_tail - vsri.u16 q14, q8, #5 - vsri.u16 q14, q9, #11 -.endm - -.macro pixman_composite_src_8888_0565_process_pixblock_tail_head - vsri.u16 q14, q8, #5 - PF add PF_X, PF_X, #8 - PF tst PF_CTL, #0xF - vld4.8 {d0, d1, d2, d3}, [SRC]! - PF addne PF_X, PF_X, #8 - PF subne PF_CTL, PF_CTL, #1 - vsri.u16 q14, q9, #11 - PF cmp PF_X, ORIG_W - PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] - vshll.u8 q8, d1, #8 - vst1.16 {d28, d29}, [DST_W, :128]! - PF subge PF_X, PF_X, ORIG_W - PF subges PF_CTL, PF_CTL, #0x10 - vshll.u8 q14, d2, #8 - PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! - vshll.u8 q9, d0, #8 -.endm - -generate_composite_function \ - pixman_composite_src_8888_0565_asm_neon, 32, 0, 16, \ - FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_src_8888_0565_process_pixblock_head, \ - pixman_composite_src_8888_0565_process_pixblock_tail, \ - pixman_composite_src_8888_0565_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_src_0565_8888_process_pixblock_head - vshrn.u16 d30, q0, #8 - vshrn.u16 d29, q0, #3 - vsli.u16 q0, q0, #5 - vmov.u8 d31, #255 - vsri.u8 d30, d30, #5 - vsri.u8 d29, d29, #6 - vshrn.u16 d28, q0, #2 -.endm - -.macro pixman_composite_src_0565_8888_process_pixblock_tail -.endm - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_src_0565_8888_process_pixblock_tail_head - pixman_composite_src_0565_8888_process_pixblock_tail - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! - vld1.16 {d0, d1}, [SRC]! - pixman_composite_src_0565_8888_process_pixblock_head - cache_preload 8, 8 -.endm - -generate_composite_function \ - pixman_composite_src_0565_8888_asm_neon, 16, 0, 32, \ - FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_src_0565_8888_process_pixblock_head, \ - pixman_composite_src_0565_8888_process_pixblock_tail, \ - pixman_composite_src_0565_8888_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_add_8000_8000_process_pixblock_head - vqadd.u8 q14, q0, q2 - vqadd.u8 q15, q1, q3 -.endm - -.macro pixman_composite_add_8000_8000_process_pixblock_tail -.endm - -.macro pixman_composite_add_8000_8000_process_pixblock_tail_head - vld1.8 {d0, d1, d2, d3}, [SRC]! - PF add PF_X, PF_X, #32 - PF tst PF_CTL, #0xF - vld1.8 {d4, d5, d6, d7}, [DST_R, :128]! - PF addne PF_X, PF_X, #32 - PF subne PF_CTL, PF_CTL, #1 - vst1.8 {d28, d29, d30, d31}, [DST_W, :128]! - PF cmp PF_X, ORIG_W - PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] - PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift] - PF subge PF_X, PF_X, ORIG_W - PF subges PF_CTL, PF_CTL, #0x10 - vqadd.u8 q14, q0, q2 - PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! - PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! - vqadd.u8 q15, q1, q3 -.endm - -generate_composite_function \ - pixman_composite_add_8000_8000_asm_neon, 8, 0, 8, \ - FLAG_DST_READWRITE, \ - 32, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_add_8000_8000_process_pixblock_head, \ - pixman_composite_add_8000_8000_process_pixblock_tail, \ - pixman_composite_add_8000_8000_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_add_8888_8888_process_pixblock_tail_head - vld1.8 {d0, d1, d2, d3}, [SRC]! - PF add PF_X, PF_X, #8 - PF tst PF_CTL, #0xF - vld1.8 {d4, d5, d6, d7}, [DST_R, :128]! - PF addne PF_X, PF_X, #8 - PF subne PF_CTL, PF_CTL, #1 - vst1.8 {d28, d29, d30, d31}, [DST_W, :128]! - PF cmp PF_X, ORIG_W - PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] - PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift] - PF subge PF_X, PF_X, ORIG_W - PF subges PF_CTL, PF_CTL, #0x10 - vqadd.u8 q14, q0, q2 - PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! - PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! - vqadd.u8 q15, q1, q3 -.endm - -generate_composite_function \ - pixman_composite_add_8888_8888_asm_neon, 32, 0, 32, \ - FLAG_DST_READWRITE, \ - 8, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_add_8000_8000_process_pixblock_head, \ - pixman_composite_add_8000_8000_process_pixblock_tail, \ - pixman_composite_add_8888_8888_process_pixblock_tail_head - -generate_composite_function_single_scanline \ - pixman_composite_scanline_add_asm_neon, 32, 0, 32, \ - FLAG_DST_READWRITE, \ - 8, /* number of pixels, processed in a single block */ \ - default_init, \ - default_cleanup, \ - pixman_composite_add_8000_8000_process_pixblock_head, \ - pixman_composite_add_8000_8000_process_pixblock_tail, \ - pixman_composite_add_8888_8888_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_over_8888_8888_process_pixblock_head - vmvn.8 d24, d3 /* get inverted alpha */ - /* do alpha blending */ - vmull.u8 q8, d24, d4 - vmull.u8 q9, d24, d5 - vmull.u8 q10, d24, d6 - vmull.u8 q11, d24, d7 -.endm - -.macro pixman_composite_over_8888_8888_process_pixblock_tail - vrshr.u16 q14, q8, #8 - vrshr.u16 q15, q9, #8 - vrshr.u16 q12, q10, #8 - vrshr.u16 q13, q11, #8 - vraddhn.u16 d28, q14, q8 - vraddhn.u16 d29, q15, q9 - vraddhn.u16 d30, q12, q10 - vraddhn.u16 d31, q13, q11 - vqadd.u8 q14, q0, q14 - vqadd.u8 q15, q1, q15 -.endm - -.macro pixman_composite_over_8888_8888_process_pixblock_tail_head - vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! - vrshr.u16 q14, q8, #8 - PF add PF_X, PF_X, #8 - PF tst PF_CTL, #0xF - vrshr.u16 q15, q9, #8 - vrshr.u16 q12, q10, #8 - vrshr.u16 q13, q11, #8 - PF addne PF_X, PF_X, #8 - PF subne PF_CTL, PF_CTL, #1 - vraddhn.u16 d28, q14, q8 - vraddhn.u16 d29, q15, q9 - PF cmp PF_X, ORIG_W - vraddhn.u16 d30, q12, q10 - vraddhn.u16 d31, q13, q11 - vqadd.u8 q14, q0, q14 - vqadd.u8 q15, q1, q15 - vld4.8 {d0, d1, d2, d3}, [SRC]! - PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] - vmvn.8 d22, d3 - PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift] - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! - PF subge PF_X, PF_X, ORIG_W - vmull.u8 q8, d22, d4 - PF subges PF_CTL, PF_CTL, #0x10 - vmull.u8 q9, d22, d5 - PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! - vmull.u8 q10, d22, d6 - PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! - vmull.u8 q11, d22, d7 -.endm - -generate_composite_function \ - pixman_composite_over_8888_8888_asm_neon, 32, 0, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_over_8888_8888_process_pixblock_head, \ - pixman_composite_over_8888_8888_process_pixblock_tail, \ - pixman_composite_over_8888_8888_process_pixblock_tail_head - -generate_composite_function_single_scanline \ - pixman_composite_scanline_over_asm_neon, 32, 0, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - default_init, \ - default_cleanup, \ - pixman_composite_over_8888_8888_process_pixblock_head, \ - pixman_composite_over_8888_8888_process_pixblock_tail, \ - pixman_composite_over_8888_8888_process_pixblock_tail_head - -/******************************************************************************/ - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_over_n_8888_process_pixblock_tail_head - pixman_composite_over_8888_8888_process_pixblock_tail - vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! - pixman_composite_over_8888_8888_process_pixblock_head -.endm - -.macro pixman_composite_over_n_8888_init - add DUMMY, sp, #ARGS_STACK_OFFSET - vld1.32 {d3[0]}, [DUMMY] - vdup.8 d0, d3[0] - vdup.8 d1, d3[1] - vdup.8 d2, d3[2] - vdup.8 d3, d3[3] -.endm - -generate_composite_function \ - pixman_composite_over_n_8888_asm_neon, 0, 0, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_over_n_8888_init, \ - default_cleanup, \ - pixman_composite_over_8888_8888_process_pixblock_head, \ - pixman_composite_over_8888_8888_process_pixblock_tail, \ - pixman_composite_over_n_8888_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_over_reverse_n_8888_process_pixblock_tail_head - vrshr.u16 q14, q8, #8 - PF add PF_X, PF_X, #8 - PF tst PF_CTL, #0xF - vrshr.u16 q15, q9, #8 - vrshr.u16 q12, q10, #8 - vrshr.u16 q13, q11, #8 - PF addne PF_X, PF_X, #8 - PF subne PF_CTL, PF_CTL, #1 - vraddhn.u16 d28, q14, q8 - vraddhn.u16 d29, q15, q9 - PF cmp PF_X, ORIG_W - vraddhn.u16 d30, q12, q10 - vraddhn.u16 d31, q13, q11 - vqadd.u8 q14, q0, q14 - vqadd.u8 q15, q1, q15 - vld4.8 {d0, d1, d2, d3}, [DST_R, :128]! - vmvn.8 d22, d3 - PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift] - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! - PF subge PF_X, PF_X, ORIG_W - vmull.u8 q8, d22, d4 - PF subges PF_CTL, PF_CTL, #0x10 - vmull.u8 q9, d22, d5 - vmull.u8 q10, d22, d6 - PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! - vmull.u8 q11, d22, d7 -.endm - -.macro pixman_composite_over_reverse_n_8888_init - add DUMMY, sp, #ARGS_STACK_OFFSET - vld1.32 {d7[0]}, [DUMMY] - vdup.8 d4, d7[0] - vdup.8 d5, d7[1] - vdup.8 d6, d7[2] - vdup.8 d7, d7[3] -.endm - -generate_composite_function \ - pixman_composite_over_reverse_n_8888_asm_neon, 0, 0, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_over_reverse_n_8888_init, \ - default_cleanup, \ - pixman_composite_over_8888_8888_process_pixblock_head, \ - pixman_composite_over_8888_8888_process_pixblock_tail, \ - pixman_composite_over_reverse_n_8888_process_pixblock_tail_head, \ - 28, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 4, /* src_basereg */ \ - 24 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_over_n_8_0565_process_pixblock_head - /* in */ - vmull.u8 q0, d24, d8 - vmull.u8 q1, d24, d9 - vmull.u8 q6, d24, d10 - vmull.u8 q7, d24, d11 - vrshr.u16 q10, q0, #8 - vrshr.u16 q11, q1, #8 - vrshr.u16 q12, q6, #8 - vrshr.u16 q13, q7, #8 - vraddhn.u16 d0, q0, q10 - vraddhn.u16 d1, q1, q11 - vraddhn.u16 d2, q6, q12 - vraddhn.u16 d3, q7, q13 - - vshrn.u16 d6, q2, #8 - vshrn.u16 d7, q2, #3 - vsli.u16 q2, q2, #5 - vsri.u8 d6, d6, #5 - vmvn.8 d3, d3 - vsri.u8 d7, d7, #6 - vshrn.u16 d30, q2, #2 - /* now do alpha blending */ - vmull.u8 q10, d3, d6 - vmull.u8 q11, d3, d7 - vmull.u8 q12, d3, d30 - vrshr.u16 q13, q10, #8 - vrshr.u16 q3, q11, #8 - vrshr.u16 q15, q12, #8 - vraddhn.u16 d20, q10, q13 - vraddhn.u16 d23, q11, q3 - vraddhn.u16 d22, q12, q15 -.endm - -.macro pixman_composite_over_n_8_0565_process_pixblock_tail - vqadd.u8 d16, d2, d20 - vqadd.u8 q9, q0, q11 - /* convert to r5g6b5 */ - vshll.u8 q14, d16, #8 - vshll.u8 q8, d19, #8 - vshll.u8 q9, d18, #8 - vsri.u16 q14, q8, #5 - vsri.u16 q14, q9, #11 -.endm - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_over_n_8_0565_process_pixblock_tail_head - pixman_composite_over_n_8_0565_process_pixblock_tail - vst1.16 {d28, d29}, [DST_W, :128]! - vld1.16 {d4, d5}, [DST_R, :128]! - vld1.8 {d24}, [MASK]! - cache_preload 8, 8 - pixman_composite_over_n_8_0565_process_pixblock_head -.endm - -/* - * This function needs a special initialization of solid mask. - * Solid source pixel data is fetched from stack at ARGS_STACK_OFFSET - * offset, split into color components and replicated in d8-d11 - * registers. Additionally, this function needs all the NEON registers, - * so it has to save d8-d15 registers which are callee saved according - * to ABI. These registers are restored from 'cleanup' macro. All the - * other NEON registers are caller saved, so can be clobbered freely - * without introducing any problems. - */ -.macro pixman_composite_over_n_8_0565_init - add DUMMY, sp, #ARGS_STACK_OFFSET - vpush {d8-d15} - vld1.32 {d11[0]}, [DUMMY] - vdup.8 d8, d11[0] - vdup.8 d9, d11[1] - vdup.8 d10, d11[2] - vdup.8 d11, d11[3] -.endm - -.macro pixman_composite_over_n_8_0565_cleanup - vpop {d8-d15} -.endm - -generate_composite_function \ - pixman_composite_over_n_8_0565_asm_neon, 0, 8, 16, \ - FLAG_DST_READWRITE, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_over_n_8_0565_init, \ - pixman_composite_over_n_8_0565_cleanup, \ - pixman_composite_over_n_8_0565_process_pixblock_head, \ - pixman_composite_over_n_8_0565_process_pixblock_tail, \ - pixman_composite_over_n_8_0565_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_src_0565_0565_process_pixblock_head -.endm - -.macro pixman_composite_src_0565_0565_process_pixblock_tail -.endm - -.macro pixman_composite_src_0565_0565_process_pixblock_tail_head - vst1.16 {d0, d1, d2, d3}, [DST_W, :128]! - vld1.16 {d0, d1, d2, d3}, [SRC]! - cache_preload 16, 16 -.endm - -generate_composite_function \ - pixman_composite_src_0565_0565_asm_neon, 16, 0, 16, \ - FLAG_DST_WRITEONLY, \ - 16, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_src_0565_0565_process_pixblock_head, \ - pixman_composite_src_0565_0565_process_pixblock_tail, \ - pixman_composite_src_0565_0565_process_pixblock_tail_head, \ - 0, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 0 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_src_n_8_process_pixblock_head -.endm - -.macro pixman_composite_src_n_8_process_pixblock_tail -.endm - -.macro pixman_composite_src_n_8_process_pixblock_tail_head - vst1.8 {d0, d1, d2, d3}, [DST_W, :128]! -.endm - -.macro pixman_composite_src_n_8_init - add DUMMY, sp, #ARGS_STACK_OFFSET - vld1.32 {d0[0]}, [DUMMY] - vsli.u64 d0, d0, #8 - vsli.u64 d0, d0, #16 - vsli.u64 d0, d0, #32 - vorr d1, d0, d0 - vorr q1, q0, q0 -.endm - -.macro pixman_composite_src_n_8_cleanup -.endm - -generate_composite_function \ - pixman_composite_src_n_8_asm_neon, 0, 0, 8, \ - FLAG_DST_WRITEONLY, \ - 32, /* number of pixels, processed in a single block */ \ - 0, /* prefetch distance */ \ - pixman_composite_src_n_8_init, \ - pixman_composite_src_n_8_cleanup, \ - pixman_composite_src_n_8_process_pixblock_head, \ - pixman_composite_src_n_8_process_pixblock_tail, \ - pixman_composite_src_n_8_process_pixblock_tail_head, \ - 0, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 0 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_src_n_0565_process_pixblock_head -.endm - -.macro pixman_composite_src_n_0565_process_pixblock_tail -.endm - -.macro pixman_composite_src_n_0565_process_pixblock_tail_head - vst1.16 {d0, d1, d2, d3}, [DST_W, :128]! -.endm - -.macro pixman_composite_src_n_0565_init - add DUMMY, sp, #ARGS_STACK_OFFSET - vld1.32 {d0[0]}, [DUMMY] - vsli.u64 d0, d0, #16 - vsli.u64 d0, d0, #32 - vorr d1, d0, d0 - vorr q1, q0, q0 -.endm - -.macro pixman_composite_src_n_0565_cleanup -.endm - -generate_composite_function \ - pixman_composite_src_n_0565_asm_neon, 0, 0, 16, \ - FLAG_DST_WRITEONLY, \ - 16, /* number of pixels, processed in a single block */ \ - 0, /* prefetch distance */ \ - pixman_composite_src_n_0565_init, \ - pixman_composite_src_n_0565_cleanup, \ - pixman_composite_src_n_0565_process_pixblock_head, \ - pixman_composite_src_n_0565_process_pixblock_tail, \ - pixman_composite_src_n_0565_process_pixblock_tail_head, \ - 0, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 0 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_src_n_8888_process_pixblock_head -.endm - -.macro pixman_composite_src_n_8888_process_pixblock_tail -.endm - -.macro pixman_composite_src_n_8888_process_pixblock_tail_head - vst1.32 {d0, d1, d2, d3}, [DST_W, :128]! -.endm - -.macro pixman_composite_src_n_8888_init - add DUMMY, sp, #ARGS_STACK_OFFSET - vld1.32 {d0[0]}, [DUMMY] - vsli.u64 d0, d0, #32 - vorr d1, d0, d0 - vorr q1, q0, q0 -.endm - -.macro pixman_composite_src_n_8888_cleanup -.endm - -generate_composite_function \ - pixman_composite_src_n_8888_asm_neon, 0, 0, 32, \ - FLAG_DST_WRITEONLY, \ - 8, /* number of pixels, processed in a single block */ \ - 0, /* prefetch distance */ \ - pixman_composite_src_n_8888_init, \ - pixman_composite_src_n_8888_cleanup, \ - pixman_composite_src_n_8888_process_pixblock_head, \ - pixman_composite_src_n_8888_process_pixblock_tail, \ - pixman_composite_src_n_8888_process_pixblock_tail_head, \ - 0, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 0 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_src_8888_8888_process_pixblock_head -.endm - -.macro pixman_composite_src_8888_8888_process_pixblock_tail -.endm - -.macro pixman_composite_src_8888_8888_process_pixblock_tail_head - vst1.32 {d0, d1, d2, d3}, [DST_W, :128]! - vld1.32 {d0, d1, d2, d3}, [SRC]! - cache_preload 8, 8 -.endm - -generate_composite_function \ - pixman_composite_src_8888_8888_asm_neon, 32, 0, 32, \ - FLAG_DST_WRITEONLY, \ - 8, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_src_8888_8888_process_pixblock_head, \ - pixman_composite_src_8888_8888_process_pixblock_tail, \ - pixman_composite_src_8888_8888_process_pixblock_tail_head, \ - 0, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 0 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_src_x888_8888_process_pixblock_head - vorr q0, q0, q2 - vorr q1, q1, q2 -.endm - -.macro pixman_composite_src_x888_8888_process_pixblock_tail -.endm - -.macro pixman_composite_src_x888_8888_process_pixblock_tail_head - vst1.32 {d0, d1, d2, d3}, [DST_W, :128]! - vld1.32 {d0, d1, d2, d3}, [SRC]! - vorr q0, q0, q2 - vorr q1, q1, q2 - cache_preload 8, 8 -.endm - -.macro pixman_composite_src_x888_8888_init - vmov.u8 q2, #0xFF - vshl.u32 q2, q2, #24 -.endm - -generate_composite_function \ - pixman_composite_src_x888_8888_asm_neon, 32, 0, 32, \ - FLAG_DST_WRITEONLY, \ - 8, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - pixman_composite_src_x888_8888_init, \ - default_cleanup, \ - pixman_composite_src_x888_8888_process_pixblock_head, \ - pixman_composite_src_x888_8888_process_pixblock_tail, \ - pixman_composite_src_x888_8888_process_pixblock_tail_head, \ - 0, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 0 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_over_n_8_8888_process_pixblock_head - /* expecting deinterleaved source data in {d8, d9, d10, d11} */ - /* d8 - blue, d9 - green, d10 - red, d11 - alpha */ - /* and destination data in {d4, d5, d6, d7} */ - /* mask is in d24 (d25, d26, d27 are unused) */ - - /* in */ - vmull.u8 q0, d24, d8 - vmull.u8 q1, d24, d9 - vmull.u8 q6, d24, d10 - vmull.u8 q7, d24, d11 - vrshr.u16 q10, q0, #8 - vrshr.u16 q11, q1, #8 - vrshr.u16 q12, q6, #8 - vrshr.u16 q13, q7, #8 - vraddhn.u16 d0, q0, q10 - vraddhn.u16 d1, q1, q11 - vraddhn.u16 d2, q6, q12 - vraddhn.u16 d3, q7, q13 - vmvn.8 d24, d3 /* get inverted alpha */ - /* source: d0 - blue, d1 - green, d2 - red, d3 - alpha */ - /* destination: d4 - blue, d5 - green, d6 - red, d7 - alpha */ - /* now do alpha blending */ - vmull.u8 q8, d24, d4 - vmull.u8 q9, d24, d5 - vmull.u8 q10, d24, d6 - vmull.u8 q11, d24, d7 -.endm - -.macro pixman_composite_over_n_8_8888_process_pixblock_tail - vrshr.u16 q14, q8, #8 - vrshr.u16 q15, q9, #8 - vrshr.u16 q12, q10, #8 - vrshr.u16 q13, q11, #8 - vraddhn.u16 d28, q14, q8 - vraddhn.u16 d29, q15, q9 - vraddhn.u16 d30, q12, q10 - vraddhn.u16 d31, q13, q11 - vqadd.u8 q14, q0, q14 - vqadd.u8 q15, q1, q15 -.endm - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_over_n_8_8888_process_pixblock_tail_head - pixman_composite_over_n_8_8888_process_pixblock_tail - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! - vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! - vld1.8 {d24}, [MASK]! - cache_preload 8, 8 - pixman_composite_over_n_8_8888_process_pixblock_head -.endm - -.macro pixman_composite_over_n_8_8888_init - add DUMMY, sp, #ARGS_STACK_OFFSET - vpush {d8-d15} - vld1.32 {d11[0]}, [DUMMY] - vdup.8 d8, d11[0] - vdup.8 d9, d11[1] - vdup.8 d10, d11[2] - vdup.8 d11, d11[3] -.endm - -.macro pixman_composite_over_n_8_8888_cleanup - vpop {d8-d15} -.endm - -generate_composite_function \ - pixman_composite_over_n_8_8888_asm_neon, 0, 8, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_over_n_8_8888_init, \ - pixman_composite_over_n_8_8888_cleanup, \ - pixman_composite_over_n_8_8888_process_pixblock_head, \ - pixman_composite_over_n_8_8888_process_pixblock_tail, \ - pixman_composite_over_n_8_8888_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_head - /* - * 'combine_mask_ca' replacement - * - * input: solid src (n) in {d8, d9, d10, d11} - * dest in {d4, d5, d6, d7 } - * mask in {d24, d25, d26, d27} - * output: updated src in {d0, d1, d2, d3 } - * updated mask in {d24, d25, d26, d3 } - */ - vmull.u8 q0, d24, d8 - vmull.u8 q1, d25, d9 - vmull.u8 q6, d26, d10 - vmull.u8 q7, d27, d11 - vmull.u8 q9, d11, d25 - vmull.u8 q12, d11, d24 - vmull.u8 q13, d11, d26 - vrshr.u16 q8, q0, #8 - vrshr.u16 q10, q1, #8 - vrshr.u16 q11, q6, #8 - vraddhn.u16 d0, q0, q8 - vraddhn.u16 d1, q1, q10 - vraddhn.u16 d2, q6, q11 - vrshr.u16 q11, q12, #8 - vrshr.u16 q8, q9, #8 - vrshr.u16 q6, q13, #8 - vrshr.u16 q10, q7, #8 - vraddhn.u16 d24, q12, q11 - vraddhn.u16 d25, q9, q8 - vraddhn.u16 d26, q13, q6 - vraddhn.u16 d3, q7, q10 - /* - * 'combine_over_ca' replacement - * - * output: updated dest in {d28, d29, d30, d31} - */ - vmvn.8 d24, d24 - vmvn.8 d25, d25 - vmull.u8 q8, d24, d4 - vmull.u8 q9, d25, d5 - vmvn.8 d26, d26 - vmvn.8 d27, d3 - vmull.u8 q10, d26, d6 - vmull.u8 q11, d27, d7 -.endm - -.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_tail - /* ... continue 'combine_over_ca' replacement */ - vrshr.u16 q14, q8, #8 - vrshr.u16 q15, q9, #8 - vrshr.u16 q6, q10, #8 - vrshr.u16 q7, q11, #8 - vraddhn.u16 d28, q14, q8 - vraddhn.u16 d29, q15, q9 - vraddhn.u16 d30, q6, q10 - vraddhn.u16 d31, q7, q11 - vqadd.u8 q14, q0, q14 - vqadd.u8 q15, q1, q15 -.endm - -.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_tail_head - vrshr.u16 q14, q8, #8 - vrshr.u16 q15, q9, #8 - vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! - vrshr.u16 q6, q10, #8 - vrshr.u16 q7, q11, #8 - vraddhn.u16 d28, q14, q8 - vraddhn.u16 d29, q15, q9 - vraddhn.u16 d30, q6, q10 - vraddhn.u16 d31, q7, q11 - vld4.8 {d24, d25, d26, d27}, [MASK]! - vqadd.u8 q14, q0, q14 - vqadd.u8 q15, q1, q15 - cache_preload 8, 8 - pixman_composite_over_n_8888_8888_ca_process_pixblock_head - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! -.endm - -.macro pixman_composite_over_n_8888_8888_ca_init - add DUMMY, sp, #ARGS_STACK_OFFSET - vpush {d8-d15} - vld1.32 {d11[0]}, [DUMMY] - vdup.8 d8, d11[0] - vdup.8 d9, d11[1] - vdup.8 d10, d11[2] - vdup.8 d11, d11[3] -.endm - -.macro pixman_composite_over_n_8888_8888_ca_cleanup - vpop {d8-d15} -.endm - -generate_composite_function \ - pixman_composite_over_n_8888_8888_ca_asm_neon, 0, 32, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_over_n_8888_8888_ca_init, \ - pixman_composite_over_n_8888_8888_ca_cleanup, \ - pixman_composite_over_n_8888_8888_ca_process_pixblock_head, \ - pixman_composite_over_n_8888_8888_ca_process_pixblock_tail, \ - pixman_composite_over_n_8888_8888_ca_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_add_n_8_8_process_pixblock_head - /* expecting source data in {d8, d9, d10, d11} */ - /* d8 - blue, d9 - green, d10 - red, d11 - alpha */ - /* and destination data in {d4, d5, d6, d7} */ - /* mask is in d24, d25, d26, d27 */ - vmull.u8 q0, d24, d11 - vmull.u8 q1, d25, d11 - vmull.u8 q6, d26, d11 - vmull.u8 q7, d27, d11 - vrshr.u16 q10, q0, #8 - vrshr.u16 q11, q1, #8 - vrshr.u16 q12, q6, #8 - vrshr.u16 q13, q7, #8 - vraddhn.u16 d0, q0, q10 - vraddhn.u16 d1, q1, q11 - vraddhn.u16 d2, q6, q12 - vraddhn.u16 d3, q7, q13 - vqadd.u8 q14, q0, q2 - vqadd.u8 q15, q1, q3 -.endm - -.macro pixman_composite_add_n_8_8_process_pixblock_tail -.endm - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_add_n_8_8_process_pixblock_tail_head - pixman_composite_add_n_8_8_process_pixblock_tail - vst1.8 {d28, d29, d30, d31}, [DST_W, :128]! - vld1.8 {d4, d5, d6, d7}, [DST_R, :128]! - vld1.8 {d24, d25, d26, d27}, [MASK]! - cache_preload 32, 32 - pixman_composite_add_n_8_8_process_pixblock_head -.endm - -.macro pixman_composite_add_n_8_8_init - add DUMMY, sp, #ARGS_STACK_OFFSET - vpush {d8-d15} - vld1.32 {d11[0]}, [DUMMY] - vdup.8 d11, d11[3] -.endm - -.macro pixman_composite_add_n_8_8_cleanup - vpop {d8-d15} -.endm - -generate_composite_function \ - pixman_composite_add_n_8_8_asm_neon, 0, 8, 8, \ - FLAG_DST_READWRITE, \ - 32, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_add_n_8_8_init, \ - pixman_composite_add_n_8_8_cleanup, \ - pixman_composite_add_n_8_8_process_pixblock_head, \ - pixman_composite_add_n_8_8_process_pixblock_tail, \ - pixman_composite_add_n_8_8_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_add_8_8_8_process_pixblock_head - /* expecting source data in {d0, d1, d2, d3} */ - /* destination data in {d4, d5, d6, d7} */ - /* mask in {d24, d25, d26, d27} */ - vmull.u8 q8, d24, d0 - vmull.u8 q9, d25, d1 - vmull.u8 q10, d26, d2 - vmull.u8 q11, d27, d3 - vrshr.u16 q0, q8, #8 - vrshr.u16 q1, q9, #8 - vrshr.u16 q12, q10, #8 - vrshr.u16 q13, q11, #8 - vraddhn.u16 d0, q0, q8 - vraddhn.u16 d1, q1, q9 - vraddhn.u16 d2, q12, q10 - vraddhn.u16 d3, q13, q11 - vqadd.u8 q14, q0, q2 - vqadd.u8 q15, q1, q3 -.endm - -.macro pixman_composite_add_8_8_8_process_pixblock_tail -.endm - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_add_8_8_8_process_pixblock_tail_head - pixman_composite_add_8_8_8_process_pixblock_tail - vst1.8 {d28, d29, d30, d31}, [DST_W, :128]! - vld1.8 {d4, d5, d6, d7}, [DST_R, :128]! - vld1.8 {d24, d25, d26, d27}, [MASK]! - vld1.8 {d0, d1, d2, d3}, [SRC]! - cache_preload 32, 32 - pixman_composite_add_8_8_8_process_pixblock_head -.endm - -.macro pixman_composite_add_8_8_8_init -.endm - -.macro pixman_composite_add_8_8_8_cleanup -.endm - -generate_composite_function \ - pixman_composite_add_8_8_8_asm_neon, 8, 8, 8, \ - FLAG_DST_READWRITE, \ - 32, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_add_8_8_8_init, \ - pixman_composite_add_8_8_8_cleanup, \ - pixman_composite_add_8_8_8_process_pixblock_head, \ - pixman_composite_add_8_8_8_process_pixblock_tail, \ - pixman_composite_add_8_8_8_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_add_8888_8888_8888_process_pixblock_head - /* expecting source data in {d0, d1, d2, d3} */ - /* destination data in {d4, d5, d6, d7} */ - /* mask in {d24, d25, d26, d27} */ - vmull.u8 q8, d27, d0 - vmull.u8 q9, d27, d1 - vmull.u8 q10, d27, d2 - vmull.u8 q11, d27, d3 - vrshr.u16 q0, q8, #8 - vrshr.u16 q1, q9, #8 - vrshr.u16 q12, q10, #8 - vrshr.u16 q13, q11, #8 - vraddhn.u16 d0, q0, q8 - vraddhn.u16 d1, q1, q9 - vraddhn.u16 d2, q12, q10 - vraddhn.u16 d3, q13, q11 - vqadd.u8 q14, q0, q2 - vqadd.u8 q15, q1, q3 -.endm - -.macro pixman_composite_add_8888_8888_8888_process_pixblock_tail -.endm - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_add_8888_8888_8888_process_pixblock_tail_head - pixman_composite_add_8888_8888_8888_process_pixblock_tail - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! - vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! - vld4.8 {d24, d25, d26, d27}, [MASK]! - vld4.8 {d0, d1, d2, d3}, [SRC]! - cache_preload 8, 8 - pixman_composite_add_8888_8888_8888_process_pixblock_head -.endm - -generate_composite_function \ - pixman_composite_add_8888_8888_8888_asm_neon, 32, 32, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_add_8888_8888_8888_process_pixblock_head, \ - pixman_composite_add_8888_8888_8888_process_pixblock_tail, \ - pixman_composite_add_8888_8888_8888_process_pixblock_tail_head - -generate_composite_function_single_scanline \ - pixman_composite_scanline_add_mask_asm_neon, 32, 32, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - default_init, \ - default_cleanup, \ - pixman_composite_add_8888_8888_8888_process_pixblock_head, \ - pixman_composite_add_8888_8888_8888_process_pixblock_tail, \ - pixman_composite_add_8888_8888_8888_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_over_8888_n_8888_process_pixblock_head - /* expecting source data in {d0, d1, d2, d3} */ - /* destination data in {d4, d5, d6, d7} */ - /* solid mask is in d15 */ - - /* 'in' */ - vmull.u8 q8, d15, d3 - vmull.u8 q6, d15, d2 - vmull.u8 q5, d15, d1 - vmull.u8 q4, d15, d0 - vrshr.u16 q13, q8, #8 - vrshr.u16 q12, q6, #8 - vrshr.u16 q11, q5, #8 - vrshr.u16 q10, q4, #8 - vraddhn.u16 d3, q8, q13 - vraddhn.u16 d2, q6, q12 - vraddhn.u16 d1, q5, q11 - vraddhn.u16 d0, q4, q10 - vmvn.8 d24, d3 /* get inverted alpha */ - /* now do alpha blending */ - vmull.u8 q8, d24, d4 - vmull.u8 q9, d24, d5 - vmull.u8 q10, d24, d6 - vmull.u8 q11, d24, d7 -.endm - -.macro pixman_composite_over_8888_n_8888_process_pixblock_tail - vrshr.u16 q14, q8, #8 - vrshr.u16 q15, q9, #8 - vrshr.u16 q12, q10, #8 - vrshr.u16 q13, q11, #8 - vraddhn.u16 d28, q14, q8 - vraddhn.u16 d29, q15, q9 - vraddhn.u16 d30, q12, q10 - vraddhn.u16 d31, q13, q11 - vqadd.u8 q14, q0, q14 - vqadd.u8 q15, q1, q15 -.endm - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_over_8888_n_8888_process_pixblock_tail_head - vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! - pixman_composite_over_8888_n_8888_process_pixblock_tail - vld4.8 {d0, d1, d2, d3}, [SRC]! - cache_preload 8, 8 - pixman_composite_over_8888_n_8888_process_pixblock_head - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! -.endm - -.macro pixman_composite_over_8888_n_8888_init - add DUMMY, sp, #48 - vpush {d8-d15} - vld1.32 {d15[0]}, [DUMMY] - vdup.8 d15, d15[3] -.endm - -.macro pixman_composite_over_8888_n_8888_cleanup - vpop {d8-d15} -.endm - -generate_composite_function \ - pixman_composite_over_8888_n_8888_asm_neon, 32, 0, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_over_8888_n_8888_init, \ - pixman_composite_over_8888_n_8888_cleanup, \ - pixman_composite_over_8888_n_8888_process_pixblock_head, \ - pixman_composite_over_8888_n_8888_process_pixblock_tail, \ - pixman_composite_over_8888_n_8888_process_pixblock_tail_head - -/******************************************************************************/ - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_over_8888_8888_8888_process_pixblock_tail_head - vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! - pixman_composite_over_8888_n_8888_process_pixblock_tail - vld4.8 {d0, d1, d2, d3}, [SRC]! - cache_preload 8, 8 - vld4.8 {d12, d13, d14, d15}, [MASK]! - pixman_composite_over_8888_n_8888_process_pixblock_head - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! -.endm - -.macro pixman_composite_over_8888_8888_8888_init - vpush {d8-d15} -.endm - -.macro pixman_composite_over_8888_8888_8888_cleanup - vpop {d8-d15} -.endm - -generate_composite_function \ - pixman_composite_over_8888_8888_8888_asm_neon, 32, 32, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_over_8888_8888_8888_init, \ - pixman_composite_over_8888_8888_8888_cleanup, \ - pixman_composite_over_8888_n_8888_process_pixblock_head, \ - pixman_composite_over_8888_n_8888_process_pixblock_tail, \ - pixman_composite_over_8888_8888_8888_process_pixblock_tail_head \ - 28, /* dst_w_basereg */ \ - 4, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 12 /* mask_basereg */ - -generate_composite_function_single_scanline \ - pixman_composite_scanline_over_mask_asm_neon, 32, 32, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - pixman_composite_over_8888_8888_8888_init, \ - pixman_composite_over_8888_8888_8888_cleanup, \ - pixman_composite_over_8888_n_8888_process_pixblock_head, \ - pixman_composite_over_8888_n_8888_process_pixblock_tail, \ - pixman_composite_over_8888_8888_8888_process_pixblock_tail_head \ - 28, /* dst_w_basereg */ \ - 4, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 12 /* mask_basereg */ - -/******************************************************************************/ - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_over_8888_8_8888_process_pixblock_tail_head - vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! - pixman_composite_over_8888_n_8888_process_pixblock_tail - vld4.8 {d0, d1, d2, d3}, [SRC]! - cache_preload 8, 8 - vld1.8 {d15}, [MASK]! - pixman_composite_over_8888_n_8888_process_pixblock_head - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! -.endm - -.macro pixman_composite_over_8888_8_8888_init - vpush {d8-d15} -.endm - -.macro pixman_composite_over_8888_8_8888_cleanup - vpop {d8-d15} -.endm - -generate_composite_function \ - pixman_composite_over_8888_8_8888_asm_neon, 32, 8, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_over_8888_8_8888_init, \ - pixman_composite_over_8888_8_8888_cleanup, \ - pixman_composite_over_8888_n_8888_process_pixblock_head, \ - pixman_composite_over_8888_n_8888_process_pixblock_tail, \ - pixman_composite_over_8888_8_8888_process_pixblock_tail_head \ - 28, /* dst_w_basereg */ \ - 4, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 15 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_src_0888_0888_process_pixblock_head -.endm - -.macro pixman_composite_src_0888_0888_process_pixblock_tail -.endm - -.macro pixman_composite_src_0888_0888_process_pixblock_tail_head - vst3.8 {d0, d1, d2}, [DST_W]! - vld3.8 {d0, d1, d2}, [SRC]! - cache_preload 8, 8 -.endm - -generate_composite_function \ - pixman_composite_src_0888_0888_asm_neon, 24, 0, 24, \ - FLAG_DST_WRITEONLY, \ - 8, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_src_0888_0888_process_pixblock_head, \ - pixman_composite_src_0888_0888_process_pixblock_tail, \ - pixman_composite_src_0888_0888_process_pixblock_tail_head, \ - 0, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 0 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_src_0888_8888_rev_process_pixblock_head - vswp d0, d2 -.endm - -.macro pixman_composite_src_0888_8888_rev_process_pixblock_tail -.endm - -.macro pixman_composite_src_0888_8888_rev_process_pixblock_tail_head - vst4.8 {d0, d1, d2, d3}, [DST_W]! - vld3.8 {d0, d1, d2}, [SRC]! - vswp d0, d2 - cache_preload 8, 8 -.endm - -.macro pixman_composite_src_0888_8888_rev_init - veor d3, d3, d3 -.endm - -generate_composite_function \ - pixman_composite_src_0888_8888_rev_asm_neon, 24, 0, 32, \ - FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - pixman_composite_src_0888_8888_rev_init, \ - default_cleanup, \ - pixman_composite_src_0888_8888_rev_process_pixblock_head, \ - pixman_composite_src_0888_8888_rev_process_pixblock_tail, \ - pixman_composite_src_0888_8888_rev_process_pixblock_tail_head, \ - 0, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 0 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_src_0888_0565_rev_process_pixblock_head - vshll.u8 q8, d1, #8 - vshll.u8 q9, d2, #8 -.endm - -.macro pixman_composite_src_0888_0565_rev_process_pixblock_tail - vshll.u8 q14, d0, #8 - vsri.u16 q14, q8, #5 - vsri.u16 q14, q9, #11 -.endm - -.macro pixman_composite_src_0888_0565_rev_process_pixblock_tail_head - vshll.u8 q14, d0, #8 - vld3.8 {d0, d1, d2}, [SRC]! - vsri.u16 q14, q8, #5 - vsri.u16 q14, q9, #11 - vshll.u8 q8, d1, #8 - vst1.16 {d28, d29}, [DST_W, :128]! - vshll.u8 q9, d2, #8 -.endm - -generate_composite_function \ - pixman_composite_src_0888_0565_rev_asm_neon, 24, 0, 16, \ - FLAG_DST_WRITEONLY, \ - 8, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_src_0888_0565_rev_process_pixblock_head, \ - pixman_composite_src_0888_0565_rev_process_pixblock_tail, \ - pixman_composite_src_0888_0565_rev_process_pixblock_tail_head, \ - 28, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 0 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_src_pixbuf_8888_process_pixblock_head - vmull.u8 q8, d3, d0 - vmull.u8 q9, d3, d1 - vmull.u8 q10, d3, d2 -.endm - -.macro pixman_composite_src_pixbuf_8888_process_pixblock_tail - vrshr.u16 q11, q8, #8 - vswp d3, d31 - vrshr.u16 q12, q9, #8 - vrshr.u16 q13, q10, #8 - vraddhn.u16 d30, q11, q8 - vraddhn.u16 d29, q12, q9 - vraddhn.u16 d28, q13, q10 -.endm - -.macro pixman_composite_src_pixbuf_8888_process_pixblock_tail_head - vrshr.u16 q11, q8, #8 - vswp d3, d31 - vrshr.u16 q12, q9, #8 - vrshr.u16 q13, q10, #8 - vld4.8 {d0, d1, d2, d3}, [SRC]! - vraddhn.u16 d30, q11, q8 - PF add PF_X, PF_X, #8 - PF tst PF_CTL, #0xF - PF addne PF_X, PF_X, #8 - PF subne PF_CTL, PF_CTL, #1 - vraddhn.u16 d29, q12, q9 - vraddhn.u16 d28, q13, q10 - vmull.u8 q8, d3, d0 - vmull.u8 q9, d3, d1 - vmull.u8 q10, d3, d2 - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! - PF cmp PF_X, ORIG_W - PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] - PF subge PF_X, PF_X, ORIG_W - PF subges PF_CTL, PF_CTL, #0x10 - PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! -.endm - -generate_composite_function \ - pixman_composite_src_pixbuf_8888_asm_neon, 32, 0, 32, \ - FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_src_pixbuf_8888_process_pixblock_head, \ - pixman_composite_src_pixbuf_8888_process_pixblock_tail, \ - pixman_composite_src_pixbuf_8888_process_pixblock_tail_head, \ - 28, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 0 /* mask_basereg */ +/* + * Copyright © 2009 Nokia Corporation + * + * 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 (including the next + * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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. + * + * Author: Siarhei Siamashka (siarhei.siamashka@nokia.com) + */ + +/* + * This file contains implementations of NEON optimized pixel processing + * functions. There is no full and detailed tutorial, but some functions + * (those which are exposing some new or interesting features) are + * extensively commented and can be used as examples. + * + * You may want to have a look at the comments for following functions: + * - pixman_composite_over_8888_0565_asm_neon + * - pixman_composite_over_n_8_0565_asm_neon + */ + +/* Prevent the stack from becoming executable for no reason... */ +#if defined(__linux__) && defined(__ELF__) +.section .note.GNU-stack,"",%progbits +#endif + + .text + .fpu neon + .arch armv7a + .object_arch armv4 + .eabi_attribute 10, 0 /* suppress Tag_FP_arch */ + .eabi_attribute 12, 0 /* suppress Tag_Advanced_SIMD_arch */ + .arm + .altmacro + +#include "pixman-arm-neon-asm.h" + +/* Global configuration options and preferences */ + +/* + * The code can optionally make use of unaligned memory accesses to improve + * performance of handling leading/trailing pixels for each scanline. + * Configuration variable RESPECT_STRICT_ALIGNMENT can be set to 0 for + * example in linux if unaligned memory accesses are not configured to + * generate.exceptions. + */ +.set RESPECT_STRICT_ALIGNMENT, 1 + +/* + * Set default prefetch type. There is a choice between the following options: + * + * PREFETCH_TYPE_NONE (may be useful for the ARM cores where PLD is set to work + * as NOP to workaround some HW bugs or for whatever other reason) + * + * PREFETCH_TYPE_SIMPLE (may be useful for simple single-issue ARM cores where + * advanced prefetch intruduces heavy overhead) + * + * PREFETCH_TYPE_ADVANCED (useful for superscalar cores such as ARM Cortex-A8 + * which can run ARM and NEON instructions simultaneously so that extra ARM + * instructions do not add (many) extra cycles, but improve prefetch efficiency) + * + * Note: some types of function can't support advanced prefetch and fallback + * to simple one (those which handle 24bpp pixels) + */ +.set PREFETCH_TYPE_DEFAULT, PREFETCH_TYPE_ADVANCED + +/* Prefetch distance in pixels for simple prefetch */ +.set PREFETCH_DISTANCE_SIMPLE, 64 + +/* + * Implementation of pixman_composite_over_8888_0565_asm_neon + * + * This function takes a8r8g8b8 source buffer, r5g6b5 destination buffer and + * performs OVER compositing operation. Function fast_composite_over_8888_0565 + * from pixman-fast-path.c does the same in C and can be used as a reference. + * + * First we need to have some NEON assembly code which can do the actual + * operation on the pixels and provide it to the template macro. + * + * Template macro quite conveniently takes care of emitting all the necessary + * code for memory reading and writing (including quite tricky cases of + * handling unaligned leading/trailing pixels), so we only need to deal with + * the data in NEON registers. + * + * NEON registers allocation in general is recommented to be the following: + * d0, d1, d2, d3 - contain loaded source pixel data + * d4, d5, d6, d7 - contain loaded destination pixels (if they are needed) + * d24, d25, d26, d27 - contain loading mask pixel data (if mask is used) + * d28, d29, d30, d31 - place for storing the result (destination pixels) + * + * As can be seen above, four 64-bit NEON registers are used for keeping + * intermediate pixel data and up to 8 pixels can be processed in one step + * for 32bpp formats (16 pixels for 16bpp, 32 pixels for 8bpp). + * + * This particular function uses the following registers allocation: + * d0, d1, d2, d3 - contain loaded source pixel data + * d4, d5 - contain loaded destination pixels (they are needed) + * d28, d29 - place for storing the result (destination pixels) + */ + +/* + * Step one. We need to have some code to do some arithmetics on pixel data. + * This is implemented as a pair of macros: '*_head' and '*_tail'. When used + * back-to-back, they take pixel data from {d0, d1, d2, d3} and {d4, d5}, + * perform all the needed calculations and write the result to {d28, d29}. + * The rationale for having two macros and not just one will be explained + * later. In practice, any single monolitic function which does the work can + * be split into two parts in any arbitrary way without affecting correctness. + * + * There is one special trick here too. Common template macro can optionally + * make our life a bit easier by doing R, G, B, A color components + * deinterleaving for 32bpp pixel formats (and this feature is used in + * 'pixman_composite_over_8888_0565_asm_neon' function). So it means that + * instead of having 8 packed pixels in {d0, d1, d2, d3} registers, we + * actually use d0 register for blue channel (a vector of eight 8-bit + * values), d1 register for green, d2 for red and d3 for alpha. This + * simple conversion can be also done with a few NEON instructions: + * + * Packed to planar conversion: + * vuzp.8 d0, d1 + * vuzp.8 d2, d3 + * vuzp.8 d1, d3 + * vuzp.8 d0, d2 + * + * Planar to packed conversion: + * vzip.8 d0, d2 + * vzip.8 d1, d3 + * vzip.8 d2, d3 + * vzip.8 d0, d1 + * + * But pixel can be loaded directly in planar format using VLD4.8 NEON + * instruction. It is 1 cycle slower than VLD1.32, so this is not always + * desirable, that's why deinterleaving is optional. + * + * But anyway, here is the code: + */ +.macro pixman_composite_over_8888_0565_process_pixblock_head + /* convert 8 r5g6b5 pixel data from {d4, d5} to planar 8-bit format + and put data into d6 - red, d7 - green, d30 - blue */ + vshrn.u16 d6, q2, #8 + vshrn.u16 d7, q2, #3 + vsli.u16 q2, q2, #5 + vsri.u8 d6, d6, #5 + vmvn.8 d3, d3 /* invert source alpha */ + vsri.u8 d7, d7, #6 + vshrn.u16 d30, q2, #2 + /* now do alpha blending, storing results in 8-bit planar format + into d16 - red, d19 - green, d18 - blue */ + vmull.u8 q10, d3, d6 + vmull.u8 q11, d3, d7 + vmull.u8 q12, d3, d30 + vrshr.u16 q13, q10, #8 + vrshr.u16 q3, q11, #8 + vrshr.u16 q15, q12, #8 + vraddhn.u16 d20, q10, q13 + vraddhn.u16 d23, q11, q3 + vraddhn.u16 d22, q12, q15 +.endm + +.macro pixman_composite_over_8888_0565_process_pixblock_tail + /* ... continue alpha blending */ + vqadd.u8 d16, d2, d20 + vqadd.u8 q9, q0, q11 + /* convert the result to r5g6b5 and store it into {d28, d29} */ + vshll.u8 q14, d16, #8 + vshll.u8 q8, d19, #8 + vshll.u8 q9, d18, #8 + vsri.u16 q14, q8, #5 + vsri.u16 q14, q9, #11 +.endm + +/* + * OK, now we got almost everything that we need. Using the above two + * macros, the work can be done right. But now we want to optimize + * it a bit. ARM Cortex-A8 is an in-order core, and benefits really + * a lot from good code scheduling and software pipelining. + * + * Let's construct some code, which will run in the core main loop. + * Some pseudo-code of the main loop will look like this: + * head + * while (...) { + * tail + * head + * } + * tail + * + * It may look a bit weird, but this setup allows to hide instruction + * latencies better and also utilize dual-issue capability more + * efficiently (make pairs of load-store and ALU instructions). + * + * So what we need now is a '*_tail_head' macro, which will be used + * in the core main loop. A trivial straightforward implementation + * of this macro would look like this: + * + * pixman_composite_over_8888_0565_process_pixblock_tail + * vst1.16 {d28, d29}, [DST_W, :128]! + * vld1.16 {d4, d5}, [DST_R, :128]! + * vld4.32 {d0, d1, d2, d3}, [SRC]! + * pixman_composite_over_8888_0565_process_pixblock_head + * cache_preload 8, 8 + * + * Now it also got some VLD/VST instructions. We simply can't move from + * processing one block of pixels to the other one with just arithmetics. + * The previously processed data needs to be written to memory and new + * data needs to be fetched. Fortunately, this main loop does not deal + * with partial leading/trailing pixels and can load/store a full block + * of pixels in a bulk. Additionally, destination buffer is already + * 16 bytes aligned here (which is good for performance). + * + * New things here are DST_R, DST_W, SRC and MASK identifiers. These + * are the aliases for ARM registers which are used as pointers for + * accessing data. We maintain separate pointers for reading and writing + * destination buffer (DST_R and DST_W). + * + * Another new thing is 'cache_preload' macro. It is used for prefetching + * data into CPU L2 cache and improve performance when dealing with large + * images which are far larger than cache size. It uses one argument + * (actually two, but they need to be the same here) - number of pixels + * in a block. Looking into 'pixman-arm-neon-asm.h' can provide some + * details about this macro. Moreover, if good performance is needed + * the code from this macro needs to be copied into '*_tail_head' macro + * and mixed with the rest of code for optimal instructions scheduling. + * We are actually doing it below. + * + * Now after all the explanations, here is the optimized code. + * Different instruction streams (originaling from '*_head', '*_tail' + * and 'cache_preload' macro) use different indentation levels for + * better readability. Actually taking the code from one of these + * indentation levels and ignoring a few VLD/VST instructions would + * result in exactly the code from '*_head', '*_tail' or 'cache_preload' + * macro! + */ + +#if 1 + +.macro pixman_composite_over_8888_0565_process_pixblock_tail_head + vqadd.u8 d16, d2, d20 + vld1.16 {d4, d5}, [DST_R, :128]! + vqadd.u8 q9, q0, q11 + vshrn.u16 d6, q2, #8 + vld4.8 {d0, d1, d2, d3}, [SRC]! + vshrn.u16 d7, q2, #3 + vsli.u16 q2, q2, #5 + vshll.u8 q14, d16, #8 + PF add PF_X, PF_X, #8 + vshll.u8 q8, d19, #8 + PF tst PF_CTL, #0xF + vsri.u8 d6, d6, #5 + PF addne PF_X, PF_X, #8 + vmvn.8 d3, d3 + PF subne PF_CTL, PF_CTL, #1 + vsri.u8 d7, d7, #6 + vshrn.u16 d30, q2, #2 + vmull.u8 q10, d3, d6 + PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] + vmull.u8 q11, d3, d7 + vmull.u8 q12, d3, d30 + PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift] + vsri.u16 q14, q8, #5 + PF cmp PF_X, ORIG_W + vshll.u8 q9, d18, #8 + vrshr.u16 q13, q10, #8 + PF subge PF_X, PF_X, ORIG_W + vrshr.u16 q3, q11, #8 + vrshr.u16 q15, q12, #8 + PF subges PF_CTL, PF_CTL, #0x10 + vsri.u16 q14, q9, #11 + PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! + vraddhn.u16 d20, q10, q13 + vraddhn.u16 d23, q11, q3 + PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! + vraddhn.u16 d22, q12, q15 + vst1.16 {d28, d29}, [DST_W, :128]! +.endm + +#else + +/* If we did not care much about the performance, we would just use this... */ +.macro pixman_composite_over_8888_0565_process_pixblock_tail_head + pixman_composite_over_8888_0565_process_pixblock_tail + vst1.16 {d28, d29}, [DST_W, :128]! + vld1.16 {d4, d5}, [DST_R, :128]! + vld4.32 {d0, d1, d2, d3}, [SRC]! + pixman_composite_over_8888_0565_process_pixblock_head + cache_preload 8, 8 +.endm + +#endif + +/* + * And now the final part. We are using 'generate_composite_function' macro + * to put all the stuff together. We are specifying the name of the function + * which we want to get, number of bits per pixel for the source, mask and + * destination (0 if unused, like mask in this case). Next come some bit + * flags: + * FLAG_DST_READWRITE - tells that the destination buffer is both read + * and written, for write-only buffer we would use + * FLAG_DST_WRITEONLY flag instead + * FLAG_DEINTERLEAVE_32BPP - tells that we prefer to work with planar data + * and separate color channels for 32bpp format. + * The next things are: + * - the number of pixels processed per iteration (8 in this case, because + * that's the maximum what can fit into four 64-bit NEON registers). + * - prefetch distance, measured in pixel blocks. In this case it is 5 times + * by 8 pixels. That would be 40 pixels, or up to 160 bytes. Optimal + * prefetch distance can be selected by running some benchmarks. + * + * After that we specify some macros, these are 'default_init', + * 'default_cleanup' here which are empty (but it is possible to have custom + * init/cleanup macros to be able to save/restore some extra NEON registers + * like d8-d15 or do anything else) followed by + * 'pixman_composite_over_8888_0565_process_pixblock_head', + * 'pixman_composite_over_8888_0565_process_pixblock_tail' and + * 'pixman_composite_over_8888_0565_process_pixblock_tail_head' + * which we got implemented above. + * + * The last part is the NEON registers allocation scheme. + */ +generate_composite_function \ + pixman_composite_over_8888_0565_asm_neon, 32, 0, 16, \ + FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ + 8, /* number of pixels, processed in a single block */ \ + 5, /* prefetch distance */ \ + default_init, \ + default_cleanup, \ + pixman_composite_over_8888_0565_process_pixblock_head, \ + pixman_composite_over_8888_0565_process_pixblock_tail, \ + pixman_composite_over_8888_0565_process_pixblock_tail_head, \ + 28, /* dst_w_basereg */ \ + 4, /* dst_r_basereg */ \ + 0, /* src_basereg */ \ + 24 /* mask_basereg */ + +/******************************************************************************/ + +.macro pixman_composite_over_n_0565_process_pixblock_head + /* convert 8 r5g6b5 pixel data from {d4, d5} to planar 8-bit format + and put data into d6 - red, d7 - green, d30 - blue */ + vshrn.u16 d6, q2, #8 + vshrn.u16 d7, q2, #3 + vsli.u16 q2, q2, #5 + vsri.u8 d6, d6, #5 + vsri.u8 d7, d7, #6 + vshrn.u16 d30, q2, #2 + /* now do alpha blending, storing results in 8-bit planar format + into d16 - red, d19 - green, d18 - blue */ + vmull.u8 q10, d3, d6 + vmull.u8 q11, d3, d7 + vmull.u8 q12, d3, d30 + vrshr.u16 q13, q10, #8 + vrshr.u16 q3, q11, #8 + vrshr.u16 q15, q12, #8 + vraddhn.u16 d20, q10, q13 + vraddhn.u16 d23, q11, q3 + vraddhn.u16 d22, q12, q15 +.endm + +.macro pixman_composite_over_n_0565_process_pixblock_tail + /* ... continue alpha blending */ + vqadd.u8 d16, d2, d20 + vqadd.u8 q9, q0, q11 + /* convert the result to r5g6b5 and store it into {d28, d29} */ + vshll.u8 q14, d16, #8 + vshll.u8 q8, d19, #8 + vshll.u8 q9, d18, #8 + vsri.u16 q14, q8, #5 + vsri.u16 q14, q9, #11 +.endm + +/* TODO: expand macros and do better instructions scheduling */ +.macro pixman_composite_over_n_0565_process_pixblock_tail_head + pixman_composite_over_n_0565_process_pixblock_tail + vld1.16 {d4, d5}, [DST_R, :128]! + vst1.16 {d28, d29}, [DST_W, :128]! + pixman_composite_over_n_0565_process_pixblock_head +.endm + +.macro pixman_composite_over_n_0565_init + add DUMMY, sp, #ARGS_STACK_OFFSET + vld1.32 {d3[0]}, [DUMMY] + vdup.8 d0, d3[0] + vdup.8 d1, d3[1] + vdup.8 d2, d3[2] + vdup.8 d3, d3[3] + vmvn.8 d3, d3 /* invert source alpha */ +.endm + +generate_composite_function \ + pixman_composite_over_n_0565_asm_neon, 0, 0, 16, \ + FLAG_DST_READWRITE, \ + 8, /* number of pixels, processed in a single block */ \ + 5, /* prefetch distance */ \ + pixman_composite_over_n_0565_init, \ + default_cleanup, \ + pixman_composite_over_n_0565_process_pixblock_head, \ + pixman_composite_over_n_0565_process_pixblock_tail, \ + pixman_composite_over_n_0565_process_pixblock_tail_head, \ + 28, /* dst_w_basereg */ \ + 4, /* dst_r_basereg */ \ + 0, /* src_basereg */ \ + 24 /* mask_basereg */ + +/******************************************************************************/ + +.macro pixman_composite_src_8888_0565_process_pixblock_head + vshll.u8 q8, d1, #8 + vshll.u8 q14, d2, #8 + vshll.u8 q9, d0, #8 +.endm + +.macro pixman_composite_src_8888_0565_process_pixblock_tail + vsri.u16 q14, q8, #5 + vsri.u16 q14, q9, #11 +.endm + +.macro pixman_composite_src_8888_0565_process_pixblock_tail_head + vsri.u16 q14, q8, #5 + PF add PF_X, PF_X, #8 + PF tst PF_CTL, #0xF + vld4.8 {d0, d1, d2, d3}, [SRC]! + PF addne PF_X, PF_X, #8 + PF subne PF_CTL, PF_CTL, #1 + vsri.u16 q14, q9, #11 + PF cmp PF_X, ORIG_W + PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] + vshll.u8 q8, d1, #8 + vst1.16 {d28, d29}, [DST_W, :128]! + PF subge PF_X, PF_X, ORIG_W + PF subges PF_CTL, PF_CTL, #0x10 + vshll.u8 q14, d2, #8 + PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! + vshll.u8 q9, d0, #8 +.endm + +generate_composite_function \ + pixman_composite_src_8888_0565_asm_neon, 32, 0, 16, \ + FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \ + 8, /* number of pixels, processed in a single block */ \ + 10, /* prefetch distance */ \ + default_init, \ + default_cleanup, \ + pixman_composite_src_8888_0565_process_pixblock_head, \ + pixman_composite_src_8888_0565_process_pixblock_tail, \ + pixman_composite_src_8888_0565_process_pixblock_tail_head + +/******************************************************************************/ + +.macro pixman_composite_src_0565_8888_process_pixblock_head + vshrn.u16 d30, q0, #8 + vshrn.u16 d29, q0, #3 + vsli.u16 q0, q0, #5 + vmov.u8 d31, #255 + vsri.u8 d30, d30, #5 + vsri.u8 d29, d29, #6 + vshrn.u16 d28, q0, #2 +.endm + +.macro pixman_composite_src_0565_8888_process_pixblock_tail +.endm + +/* TODO: expand macros and do better instructions scheduling */ +.macro pixman_composite_src_0565_8888_process_pixblock_tail_head + pixman_composite_src_0565_8888_process_pixblock_tail + vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! + vld1.16 {d0, d1}, [SRC]! + pixman_composite_src_0565_8888_process_pixblock_head + cache_preload 8, 8 +.endm + +generate_composite_function \ + pixman_composite_src_0565_8888_asm_neon, 16, 0, 32, \ + FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \ + 8, /* number of pixels, processed in a single block */ \ + 10, /* prefetch distance */ \ + default_init, \ + default_cleanup, \ + pixman_composite_src_0565_8888_process_pixblock_head, \ + pixman_composite_src_0565_8888_process_pixblock_tail, \ + pixman_composite_src_0565_8888_process_pixblock_tail_head + +/******************************************************************************/ + +.macro pixman_composite_add_8000_8000_process_pixblock_head + vqadd.u8 q14, q0, q2 + vqadd.u8 q15, q1, q3 +.endm + +.macro pixman_composite_add_8000_8000_process_pixblock_tail +.endm + +.macro pixman_composite_add_8000_8000_process_pixblock_tail_head + vld1.8 {d0, d1, d2, d3}, [SRC]! + PF add PF_X, PF_X, #32 + PF tst PF_CTL, #0xF + vld1.8 {d4, d5, d6, d7}, [DST_R, :128]! + PF addne PF_X, PF_X, #32 + PF subne PF_CTL, PF_CTL, #1 + vst1.8 {d28, d29, d30, d31}, [DST_W, :128]! + PF cmp PF_X, ORIG_W + PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] + PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift] + PF subge PF_X, PF_X, ORIG_W + PF subges PF_CTL, PF_CTL, #0x10 + vqadd.u8 q14, q0, q2 + PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! + PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! + vqadd.u8 q15, q1, q3 +.endm + +generate_composite_function \ + pixman_composite_add_8000_8000_asm_neon, 8, 0, 8, \ + FLAG_DST_READWRITE, \ + 32, /* number of pixels, processed in a single block */ \ + 10, /* prefetch distance */ \ + default_init, \ + default_cleanup, \ + pixman_composite_add_8000_8000_process_pixblock_head, \ + pixman_composite_add_8000_8000_process_pixblock_tail, \ + pixman_composite_add_8000_8000_process_pixblock_tail_head + +/******************************************************************************/ + +.macro pixman_composite_add_8888_8888_process_pixblock_tail_head + vld1.8 {d0, d1, d2, d3}, [SRC]! + PF add PF_X, PF_X, #8 + PF tst PF_CTL, #0xF + vld1.8 {d4, d5, d6, d7}, [DST_R, :128]! + PF addne PF_X, PF_X, #8 + PF subne PF_CTL, PF_CTL, #1 + vst1.8 {d28, d29, d30, d31}, [DST_W, :128]! + PF cmp PF_X, ORIG_W + PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] + PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift] + PF subge PF_X, PF_X, ORIG_W + PF subges PF_CTL, PF_CTL, #0x10 + vqadd.u8 q14, q0, q2 + PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! + PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! + vqadd.u8 q15, q1, q3 +.endm + +generate_composite_function \ + pixman_composite_add_8888_8888_asm_neon, 32, 0, 32, \ + FLAG_DST_READWRITE, \ + 8, /* number of pixels, processed in a single block */ \ + 10, /* prefetch distance */ \ + default_init, \ + default_cleanup, \ + pixman_composite_add_8000_8000_process_pixblock_head, \ + pixman_composite_add_8000_8000_process_pixblock_tail, \ + pixman_composite_add_8888_8888_process_pixblock_tail_head + +generate_composite_function_single_scanline \ + pixman_composite_scanline_add_asm_neon, 32, 0, 32, \ + FLAG_DST_READWRITE, \ + 8, /* number of pixels, processed in a single block */ \ + default_init, \ + default_cleanup, \ + pixman_composite_add_8000_8000_process_pixblock_head, \ + pixman_composite_add_8000_8000_process_pixblock_tail, \ + pixman_composite_add_8888_8888_process_pixblock_tail_head + +/******************************************************************************/ + +.macro pixman_composite_out_reverse_8888_8888_process_pixblock_head + vmvn.8 d24, d3 /* get inverted alpha */ + /* do alpha blending */ + vmull.u8 q8, d24, d4 + vmull.u8 q9, d24, d5 + vmull.u8 q10, d24, d6 + vmull.u8 q11, d24, d7 +.endm + +.macro pixman_composite_out_reverse_8888_8888_process_pixblock_tail + vrshr.u16 q14, q8, #8 + vrshr.u16 q15, q9, #8 + vrshr.u16 q12, q10, #8 + vrshr.u16 q13, q11, #8 + vraddhn.u16 d28, q14, q8 + vraddhn.u16 d29, q15, q9 + vraddhn.u16 d30, q12, q10 + vraddhn.u16 d31, q13, q11 +.endm + +.macro pixman_composite_out_reverse_8888_8888_process_pixblock_tail_head + vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! + vrshr.u16 q14, q8, #8 + PF add PF_X, PF_X, #8 + PF tst PF_CTL, #0xF + vrshr.u16 q15, q9, #8 + vrshr.u16 q12, q10, #8 + vrshr.u16 q13, q11, #8 + PF addne PF_X, PF_X, #8 + PF subne PF_CTL, PF_CTL, #1 + vraddhn.u16 d28, q14, q8 + vraddhn.u16 d29, q15, q9 + PF cmp PF_X, ORIG_W + vraddhn.u16 d30, q12, q10 + vraddhn.u16 d31, q13, q11 + vld4.8 {d0, d1, d2, d3}, [SRC]! + PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] + vmvn.8 d22, d3 + PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift] + vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! + PF subge PF_X, PF_X, ORIG_W + vmull.u8 q8, d22, d4 + PF subges PF_CTL, PF_CTL, #0x10 + vmull.u8 q9, d22, d5 + PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! + vmull.u8 q10, d22, d6 + PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! + vmull.u8 q11, d22, d7 +.endm + +generate_composite_function_single_scanline \ + pixman_composite_scanline_out_reverse_asm_neon, 32, 0, 32, \ + FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ + 8, /* number of pixels, processed in a single block */ \ + default_init, \ + default_cleanup, \ + pixman_composite_out_reverse_8888_8888_process_pixblock_head, \ + pixman_composite_out_reverse_8888_8888_process_pixblock_tail, \ + pixman_composite_out_reverse_8888_8888_process_pixblock_tail_head + +/******************************************************************************/ + +.macro pixman_composite_over_8888_8888_process_pixblock_head + pixman_composite_out_reverse_8888_8888_process_pixblock_head +.endm + +.macro pixman_composite_over_8888_8888_process_pixblock_tail + pixman_composite_out_reverse_8888_8888_process_pixblock_tail + vqadd.u8 q14, q0, q14 + vqadd.u8 q15, q1, q15 +.endm + +.macro pixman_composite_over_8888_8888_process_pixblock_tail_head + vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! + vrshr.u16 q14, q8, #8 + PF add PF_X, PF_X, #8 + PF tst PF_CTL, #0xF + vrshr.u16 q15, q9, #8 + vrshr.u16 q12, q10, #8 + vrshr.u16 q13, q11, #8 + PF addne PF_X, PF_X, #8 + PF subne PF_CTL, PF_CTL, #1 + vraddhn.u16 d28, q14, q8 + vraddhn.u16 d29, q15, q9 + PF cmp PF_X, ORIG_W + vraddhn.u16 d30, q12, q10 + vraddhn.u16 d31, q13, q11 + vqadd.u8 q14, q0, q14 + vqadd.u8 q15, q1, q15 + vld4.8 {d0, d1, d2, d3}, [SRC]! + PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] + vmvn.8 d22, d3 + PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift] + vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! + PF subge PF_X, PF_X, ORIG_W + vmull.u8 q8, d22, d4 + PF subges PF_CTL, PF_CTL, #0x10 + vmull.u8 q9, d22, d5 + PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! + vmull.u8 q10, d22, d6 + PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! + vmull.u8 q11, d22, d7 +.endm + +generate_composite_function \ + pixman_composite_over_8888_8888_asm_neon, 32, 0, 32, \ + FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ + 8, /* number of pixels, processed in a single block */ \ + 5, /* prefetch distance */ \ + default_init, \ + default_cleanup, \ + pixman_composite_over_8888_8888_process_pixblock_head, \ + pixman_composite_over_8888_8888_process_pixblock_tail, \ + pixman_composite_over_8888_8888_process_pixblock_tail_head + +generate_composite_function_single_scanline \ + pixman_composite_scanline_over_asm_neon, 32, 0, 32, \ + FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ + 8, /* number of pixels, processed in a single block */ \ + default_init, \ + default_cleanup, \ + pixman_composite_over_8888_8888_process_pixblock_head, \ + pixman_composite_over_8888_8888_process_pixblock_tail, \ + pixman_composite_over_8888_8888_process_pixblock_tail_head + +/******************************************************************************/ + +/* TODO: expand macros and do better instructions scheduling */ +.macro pixman_composite_over_n_8888_process_pixblock_tail_head + pixman_composite_over_8888_8888_process_pixblock_tail + vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! + vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! + pixman_composite_over_8888_8888_process_pixblock_head +.endm + +.macro pixman_composite_over_n_8888_init + add DUMMY, sp, #ARGS_STACK_OFFSET + vld1.32 {d3[0]}, [DUMMY] + vdup.8 d0, d3[0] + vdup.8 d1, d3[1] + vdup.8 d2, d3[2] + vdup.8 d3, d3[3] +.endm + +generate_composite_function \ + pixman_composite_over_n_8888_asm_neon, 0, 0, 32, \ + FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ + 8, /* number of pixels, processed in a single block */ \ + 5, /* prefetch distance */ \ + pixman_composite_over_n_8888_init, \ + default_cleanup, \ + pixman_composite_over_8888_8888_process_pixblock_head, \ + pixman_composite_over_8888_8888_process_pixblock_tail, \ + pixman_composite_over_n_8888_process_pixblock_tail_head + +/******************************************************************************/ + +.macro pixman_composite_over_reverse_n_8888_process_pixblock_tail_head + vrshr.u16 q14, q8, #8 + PF add PF_X, PF_X, #8 + PF tst PF_CTL, #0xF + vrshr.u16 q15, q9, #8 + vrshr.u16 q12, q10, #8 + vrshr.u16 q13, q11, #8 + PF addne PF_X, PF_X, #8 + PF subne PF_CTL, PF_CTL, #1 + vraddhn.u16 d28, q14, q8 + vraddhn.u16 d29, q15, q9 + PF cmp PF_X, ORIG_W + vraddhn.u16 d30, q12, q10 + vraddhn.u16 d31, q13, q11 + vqadd.u8 q14, q0, q14 + vqadd.u8 q15, q1, q15 + vld4.8 {d0, d1, d2, d3}, [DST_R, :128]! + vmvn.8 d22, d3 + PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift] + vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! + PF subge PF_X, PF_X, ORIG_W + vmull.u8 q8, d22, d4 + PF subges PF_CTL, PF_CTL, #0x10 + vmull.u8 q9, d22, d5 + vmull.u8 q10, d22, d6 + PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! + vmull.u8 q11, d22, d7 +.endm + +.macro pixman_composite_over_reverse_n_8888_init + add DUMMY, sp, #ARGS_STACK_OFFSET + vld1.32 {d7[0]}, [DUMMY] + vdup.8 d4, d7[0] + vdup.8 d5, d7[1] + vdup.8 d6, d7[2] + vdup.8 d7, d7[3] +.endm + +generate_composite_function \ + pixman_composite_over_reverse_n_8888_asm_neon, 0, 0, 32, \ + FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ + 8, /* number of pixels, processed in a single block */ \ + 5, /* prefetch distance */ \ + pixman_composite_over_reverse_n_8888_init, \ + default_cleanup, \ + pixman_composite_over_8888_8888_process_pixblock_head, \ + pixman_composite_over_8888_8888_process_pixblock_tail, \ + pixman_composite_over_reverse_n_8888_process_pixblock_tail_head, \ + 28, /* dst_w_basereg */ \ + 0, /* dst_r_basereg */ \ + 4, /* src_basereg */ \ + 24 /* mask_basereg */ + +/******************************************************************************/ + +.macro pixman_composite_over_n_8_0565_process_pixblock_head + /* in */ + vmull.u8 q0, d24, d8 + vmull.u8 q1, d24, d9 + vmull.u8 q6, d24, d10 + vmull.u8 q7, d24, d11 + vrshr.u16 q10, q0, #8 + vrshr.u16 q11, q1, #8 + vrshr.u16 q12, q6, #8 + vrshr.u16 q13, q7, #8 + vraddhn.u16 d0, q0, q10 + vraddhn.u16 d1, q1, q11 + vraddhn.u16 d2, q6, q12 + vraddhn.u16 d3, q7, q13 + + vshrn.u16 d6, q2, #8 + vshrn.u16 d7, q2, #3 + vsli.u16 q2, q2, #5 + vsri.u8 d6, d6, #5 + vmvn.8 d3, d3 + vsri.u8 d7, d7, #6 + vshrn.u16 d30, q2, #2 + /* now do alpha blending */ + vmull.u8 q10, d3, d6 + vmull.u8 q11, d3, d7 + vmull.u8 q12, d3, d30 + vrshr.u16 q13, q10, #8 + vrshr.u16 q3, q11, #8 + vrshr.u16 q15, q12, #8 + vraddhn.u16 d20, q10, q13 + vraddhn.u16 d23, q11, q3 + vraddhn.u16 d22, q12, q15 +.endm + +.macro pixman_composite_over_n_8_0565_process_pixblock_tail + vqadd.u8 d16, d2, d20 + vqadd.u8 q9, q0, q11 + /* convert to r5g6b5 */ + vshll.u8 q14, d16, #8 + vshll.u8 q8, d19, #8 + vshll.u8 q9, d18, #8 + vsri.u16 q14, q8, #5 + vsri.u16 q14, q9, #11 +.endm + +/* TODO: expand macros and do better instructions scheduling */ +.macro pixman_composite_over_n_8_0565_process_pixblock_tail_head + pixman_composite_over_n_8_0565_process_pixblock_tail + vst1.16 {d28, d29}, [DST_W, :128]! + vld1.16 {d4, d5}, [DST_R, :128]! + vld1.8 {d24}, [MASK]! + cache_preload 8, 8 + pixman_composite_over_n_8_0565_process_pixblock_head +.endm + +/* + * This function needs a special initialization of solid mask. + * Solid source pixel data is fetched from stack at ARGS_STACK_OFFSET + * offset, split into color components and replicated in d8-d11 + * registers. Additionally, this function needs all the NEON registers, + * so it has to save d8-d15 registers which are callee saved according + * to ABI. These registers are restored from 'cleanup' macro. All the + * other NEON registers are caller saved, so can be clobbered freely + * without introducing any problems. + */ +.macro pixman_composite_over_n_8_0565_init + add DUMMY, sp, #ARGS_STACK_OFFSET + vpush {d8-d15} + vld1.32 {d11[0]}, [DUMMY] + vdup.8 d8, d11[0] + vdup.8 d9, d11[1] + vdup.8 d10, d11[2] + vdup.8 d11, d11[3] +.endm + +.macro pixman_composite_over_n_8_0565_cleanup + vpop {d8-d15} +.endm + +generate_composite_function \ + pixman_composite_over_n_8_0565_asm_neon, 0, 8, 16, \ + FLAG_DST_READWRITE, \ + 8, /* number of pixels, processed in a single block */ \ + 5, /* prefetch distance */ \ + pixman_composite_over_n_8_0565_init, \ + pixman_composite_over_n_8_0565_cleanup, \ + pixman_composite_over_n_8_0565_process_pixblock_head, \ + pixman_composite_over_n_8_0565_process_pixblock_tail, \ + pixman_composite_over_n_8_0565_process_pixblock_tail_head + +/******************************************************************************/ + +.macro pixman_composite_src_0565_0565_process_pixblock_head +.endm + +.macro pixman_composite_src_0565_0565_process_pixblock_tail +.endm + +.macro pixman_composite_src_0565_0565_process_pixblock_tail_head + vst1.16 {d0, d1, d2, d3}, [DST_W, :128]! + vld1.16 {d0, d1, d2, d3}, [SRC]! + cache_preload 16, 16 +.endm + +generate_composite_function \ + pixman_composite_src_0565_0565_asm_neon, 16, 0, 16, \ + FLAG_DST_WRITEONLY, \ + 16, /* number of pixels, processed in a single block */ \ + 10, /* prefetch distance */ \ + default_init, \ + default_cleanup, \ + pixman_composite_src_0565_0565_process_pixblock_head, \ + pixman_composite_src_0565_0565_process_pixblock_tail, \ + pixman_composite_src_0565_0565_process_pixblock_tail_head, \ + 0, /* dst_w_basereg */ \ + 0, /* dst_r_basereg */ \ + 0, /* src_basereg */ \ + 0 /* mask_basereg */ + +/******************************************************************************/ + +.macro pixman_composite_src_n_8_process_pixblock_head +.endm + +.macro pixman_composite_src_n_8_process_pixblock_tail +.endm + +.macro pixman_composite_src_n_8_process_pixblock_tail_head + vst1.8 {d0, d1, d2, d3}, [DST_W, :128]! +.endm + +.macro pixman_composite_src_n_8_init + add DUMMY, sp, #ARGS_STACK_OFFSET + vld1.32 {d0[0]}, [DUMMY] + vsli.u64 d0, d0, #8 + vsli.u64 d0, d0, #16 + vsli.u64 d0, d0, #32 + vorr d1, d0, d0 + vorr q1, q0, q0 +.endm + +.macro pixman_composite_src_n_8_cleanup +.endm + +generate_composite_function \ + pixman_composite_src_n_8_asm_neon, 0, 0, 8, \ + FLAG_DST_WRITEONLY, \ + 32, /* number of pixels, processed in a single block */ \ + 0, /* prefetch distance */ \ + pixman_composite_src_n_8_init, \ + pixman_composite_src_n_8_cleanup, \ + pixman_composite_src_n_8_process_pixblock_head, \ + pixman_composite_src_n_8_process_pixblock_tail, \ + pixman_composite_src_n_8_process_pixblock_tail_head, \ + 0, /* dst_w_basereg */ \ + 0, /* dst_r_basereg */ \ + 0, /* src_basereg */ \ + 0 /* mask_basereg */ + +/******************************************************************************/ + +.macro pixman_composite_src_n_0565_process_pixblock_head +.endm + +.macro pixman_composite_src_n_0565_process_pixblock_tail +.endm + +.macro pixman_composite_src_n_0565_process_pixblock_tail_head + vst1.16 {d0, d1, d2, d3}, [DST_W, :128]! +.endm + +.macro pixman_composite_src_n_0565_init + add DUMMY, sp, #ARGS_STACK_OFFSET + vld1.32 {d0[0]}, [DUMMY] + vsli.u64 d0, d0, #16 + vsli.u64 d0, d0, #32 + vorr d1, d0, d0 + vorr q1, q0, q0 +.endm + +.macro pixman_composite_src_n_0565_cleanup +.endm + +generate_composite_function \ + pixman_composite_src_n_0565_asm_neon, 0, 0, 16, \ + FLAG_DST_WRITEONLY, \ + 16, /* number of pixels, processed in a single block */ \ + 0, /* prefetch distance */ \ + pixman_composite_src_n_0565_init, \ + pixman_composite_src_n_0565_cleanup, \ + pixman_composite_src_n_0565_process_pixblock_head, \ + pixman_composite_src_n_0565_process_pixblock_tail, \ + pixman_composite_src_n_0565_process_pixblock_tail_head, \ + 0, /* dst_w_basereg */ \ + 0, /* dst_r_basereg */ \ + 0, /* src_basereg */ \ + 0 /* mask_basereg */ + +/******************************************************************************/ + +.macro pixman_composite_src_n_8888_process_pixblock_head +.endm + +.macro pixman_composite_src_n_8888_process_pixblock_tail +.endm + +.macro pixman_composite_src_n_8888_process_pixblock_tail_head + vst1.32 {d0, d1, d2, d3}, [DST_W, :128]! +.endm + +.macro pixman_composite_src_n_8888_init + add DUMMY, sp, #ARGS_STACK_OFFSET + vld1.32 {d0[0]}, [DUMMY] + vsli.u64 d0, d0, #32 + vorr d1, d0, d0 + vorr q1, q0, q0 +.endm + +.macro pixman_composite_src_n_8888_cleanup +.endm + +generate_composite_function \ + pixman_composite_src_n_8888_asm_neon, 0, 0, 32, \ + FLAG_DST_WRITEONLY, \ + 8, /* number of pixels, processed in a single block */ \ + 0, /* prefetch distance */ \ + pixman_composite_src_n_8888_init, \ + pixman_composite_src_n_8888_cleanup, \ + pixman_composite_src_n_8888_process_pixblock_head, \ + pixman_composite_src_n_8888_process_pixblock_tail, \ + pixman_composite_src_n_8888_process_pixblock_tail_head, \ + 0, /* dst_w_basereg */ \ + 0, /* dst_r_basereg */ \ + 0, /* src_basereg */ \ + 0 /* mask_basereg */ + +/******************************************************************************/ + +.macro pixman_composite_src_8888_8888_process_pixblock_head +.endm + +.macro pixman_composite_src_8888_8888_process_pixblock_tail +.endm + +.macro pixman_composite_src_8888_8888_process_pixblock_tail_head + vst1.32 {d0, d1, d2, d3}, [DST_W, :128]! + vld1.32 {d0, d1, d2, d3}, [SRC]! + cache_preload 8, 8 +.endm + +generate_composite_function \ + pixman_composite_src_8888_8888_asm_neon, 32, 0, 32, \ + FLAG_DST_WRITEONLY, \ + 8, /* number of pixels, processed in a single block */ \ + 10, /* prefetch distance */ \ + default_init, \ + default_cleanup, \ + pixman_composite_src_8888_8888_process_pixblock_head, \ + pixman_composite_src_8888_8888_process_pixblock_tail, \ + pixman_composite_src_8888_8888_process_pixblock_tail_head, \ + 0, /* dst_w_basereg */ \ + 0, /* dst_r_basereg */ \ + 0, /* src_basereg */ \ + 0 /* mask_basereg */ + +/******************************************************************************/ + +.macro pixman_composite_src_x888_8888_process_pixblock_head + vorr q0, q0, q2 + vorr q1, q1, q2 +.endm + +.macro pixman_composite_src_x888_8888_process_pixblock_tail +.endm + +.macro pixman_composite_src_x888_8888_process_pixblock_tail_head + vst1.32 {d0, d1, d2, d3}, [DST_W, :128]! + vld1.32 {d0, d1, d2, d3}, [SRC]! + vorr q0, q0, q2 + vorr q1, q1, q2 + cache_preload 8, 8 +.endm + +.macro pixman_composite_src_x888_8888_init + vmov.u8 q2, #0xFF + vshl.u32 q2, q2, #24 +.endm + +generate_composite_function \ + pixman_composite_src_x888_8888_asm_neon, 32, 0, 32, \ + FLAG_DST_WRITEONLY, \ + 8, /* number of pixels, processed in a single block */ \ + 10, /* prefetch distance */ \ + pixman_composite_src_x888_8888_init, \ + default_cleanup, \ + pixman_composite_src_x888_8888_process_pixblock_head, \ + pixman_composite_src_x888_8888_process_pixblock_tail, \ + pixman_composite_src_x888_8888_process_pixblock_tail_head, \ + 0, /* dst_w_basereg */ \ + 0, /* dst_r_basereg */ \ + 0, /* src_basereg */ \ + 0 /* mask_basereg */ + +/******************************************************************************/ + +.macro pixman_composite_over_n_8_8888_process_pixblock_head + /* expecting deinterleaved source data in {d8, d9, d10, d11} */ + /* d8 - blue, d9 - green, d10 - red, d11 - alpha */ + /* and destination data in {d4, d5, d6, d7} */ + /* mask is in d24 (d25, d26, d27 are unused) */ + + /* in */ + vmull.u8 q0, d24, d8 + vmull.u8 q1, d24, d9 + vmull.u8 q6, d24, d10 + vmull.u8 q7, d24, d11 + vrshr.u16 q10, q0, #8 + vrshr.u16 q11, q1, #8 + vrshr.u16 q12, q6, #8 + vrshr.u16 q13, q7, #8 + vraddhn.u16 d0, q0, q10 + vraddhn.u16 d1, q1, q11 + vraddhn.u16 d2, q6, q12 + vraddhn.u16 d3, q7, q13 + vmvn.8 d24, d3 /* get inverted alpha */ + /* source: d0 - blue, d1 - green, d2 - red, d3 - alpha */ + /* destination: d4 - blue, d5 - green, d6 - red, d7 - alpha */ + /* now do alpha blending */ + vmull.u8 q8, d24, d4 + vmull.u8 q9, d24, d5 + vmull.u8 q10, d24, d6 + vmull.u8 q11, d24, d7 +.endm + +.macro pixman_composite_over_n_8_8888_process_pixblock_tail + vrshr.u16 q14, q8, #8 + vrshr.u16 q15, q9, #8 + vrshr.u16 q12, q10, #8 + vrshr.u16 q13, q11, #8 + vraddhn.u16 d28, q14, q8 + vraddhn.u16 d29, q15, q9 + vraddhn.u16 d30, q12, q10 + vraddhn.u16 d31, q13, q11 + vqadd.u8 q14, q0, q14 + vqadd.u8 q15, q1, q15 +.endm + +/* TODO: expand macros and do better instructions scheduling */ +.macro pixman_composite_over_n_8_8888_process_pixblock_tail_head + pixman_composite_over_n_8_8888_process_pixblock_tail + vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! + vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! + vld1.8 {d24}, [MASK]! + cache_preload 8, 8 + pixman_composite_over_n_8_8888_process_pixblock_head +.endm + +.macro pixman_composite_over_n_8_8888_init + add DUMMY, sp, #ARGS_STACK_OFFSET + vpush {d8-d15} + vld1.32 {d11[0]}, [DUMMY] + vdup.8 d8, d11[0] + vdup.8 d9, d11[1] + vdup.8 d10, d11[2] + vdup.8 d11, d11[3] +.endm + +.macro pixman_composite_over_n_8_8888_cleanup + vpop {d8-d15} +.endm + +generate_composite_function \ + pixman_composite_over_n_8_8888_asm_neon, 0, 8, 32, \ + FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ + 8, /* number of pixels, processed in a single block */ \ + 5, /* prefetch distance */ \ + pixman_composite_over_n_8_8888_init, \ + pixman_composite_over_n_8_8888_cleanup, \ + pixman_composite_over_n_8_8888_process_pixblock_head, \ + pixman_composite_over_n_8_8888_process_pixblock_tail, \ + pixman_composite_over_n_8_8888_process_pixblock_tail_head + +/******************************************************************************/ + +.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_head + /* + * 'combine_mask_ca' replacement + * + * input: solid src (n) in {d8, d9, d10, d11} + * dest in {d4, d5, d6, d7 } + * mask in {d24, d25, d26, d27} + * output: updated src in {d0, d1, d2, d3 } + * updated mask in {d24, d25, d26, d3 } + */ + vmull.u8 q0, d24, d8 + vmull.u8 q1, d25, d9 + vmull.u8 q6, d26, d10 + vmull.u8 q7, d27, d11 + vmull.u8 q9, d11, d25 + vmull.u8 q12, d11, d24 + vmull.u8 q13, d11, d26 + vrshr.u16 q8, q0, #8 + vrshr.u16 q10, q1, #8 + vrshr.u16 q11, q6, #8 + vraddhn.u16 d0, q0, q8 + vraddhn.u16 d1, q1, q10 + vraddhn.u16 d2, q6, q11 + vrshr.u16 q11, q12, #8 + vrshr.u16 q8, q9, #8 + vrshr.u16 q6, q13, #8 + vrshr.u16 q10, q7, #8 + vraddhn.u16 d24, q12, q11 + vraddhn.u16 d25, q9, q8 + vraddhn.u16 d26, q13, q6 + vraddhn.u16 d3, q7, q10 + /* + * 'combine_over_ca' replacement + * + * output: updated dest in {d28, d29, d30, d31} + */ + vmvn.8 d24, d24 + vmvn.8 d25, d25 + vmull.u8 q8, d24, d4 + vmull.u8 q9, d25, d5 + vmvn.8 d26, d26 + vmvn.8 d27, d3 + vmull.u8 q10, d26, d6 + vmull.u8 q11, d27, d7 +.endm + +.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_tail + /* ... continue 'combine_over_ca' replacement */ + vrshr.u16 q14, q8, #8 + vrshr.u16 q15, q9, #8 + vrshr.u16 q6, q10, #8 + vrshr.u16 q7, q11, #8 + vraddhn.u16 d28, q14, q8 + vraddhn.u16 d29, q15, q9 + vraddhn.u16 d30, q6, q10 + vraddhn.u16 d31, q7, q11 + vqadd.u8 q14, q0, q14 + vqadd.u8 q15, q1, q15 +.endm + +.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_tail_head + vrshr.u16 q14, q8, #8 + vrshr.u16 q15, q9, #8 + vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! + vrshr.u16 q6, q10, #8 + vrshr.u16 q7, q11, #8 + vraddhn.u16 d28, q14, q8 + vraddhn.u16 d29, q15, q9 + vraddhn.u16 d30, q6, q10 + vraddhn.u16 d31, q7, q11 + vld4.8 {d24, d25, d26, d27}, [MASK]! + vqadd.u8 q14, q0, q14 + vqadd.u8 q15, q1, q15 + cache_preload 8, 8 + pixman_composite_over_n_8888_8888_ca_process_pixblock_head + vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! +.endm + +.macro pixman_composite_over_n_8888_8888_ca_init + add DUMMY, sp, #ARGS_STACK_OFFSET + vpush {d8-d15} + vld1.32 {d11[0]}, [DUMMY] + vdup.8 d8, d11[0] + vdup.8 d9, d11[1] + vdup.8 d10, d11[2] + vdup.8 d11, d11[3] +.endm + +.macro pixman_composite_over_n_8888_8888_ca_cleanup + vpop {d8-d15} +.endm + +generate_composite_function \ + pixman_composite_over_n_8888_8888_ca_asm_neon, 0, 32, 32, \ + FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ + 8, /* number of pixels, processed in a single block */ \ + 5, /* prefetch distance */ \ + pixman_composite_over_n_8888_8888_ca_init, \ + pixman_composite_over_n_8888_8888_ca_cleanup, \ + pixman_composite_over_n_8888_8888_ca_process_pixblock_head, \ + pixman_composite_over_n_8888_8888_ca_process_pixblock_tail, \ + pixman_composite_over_n_8888_8888_ca_process_pixblock_tail_head + +/******************************************************************************/ + +.macro pixman_composite_add_n_8_8_process_pixblock_head + /* expecting source data in {d8, d9, d10, d11} */ + /* d8 - blue, d9 - green, d10 - red, d11 - alpha */ + /* and destination data in {d4, d5, d6, d7} */ + /* mask is in d24, d25, d26, d27 */ + vmull.u8 q0, d24, d11 + vmull.u8 q1, d25, d11 + vmull.u8 q6, d26, d11 + vmull.u8 q7, d27, d11 + vrshr.u16 q10, q0, #8 + vrshr.u16 q11, q1, #8 + vrshr.u16 q12, q6, #8 + vrshr.u16 q13, q7, #8 + vraddhn.u16 d0, q0, q10 + vraddhn.u16 d1, q1, q11 + vraddhn.u16 d2, q6, q12 + vraddhn.u16 d3, q7, q13 + vqadd.u8 q14, q0, q2 + vqadd.u8 q15, q1, q3 +.endm + +.macro pixman_composite_add_n_8_8_process_pixblock_tail +.endm + +/* TODO: expand macros and do better instructions scheduling */ +.macro pixman_composite_add_n_8_8_process_pixblock_tail_head + pixman_composite_add_n_8_8_process_pixblock_tail + vst1.8 {d28, d29, d30, d31}, [DST_W, :128]! + vld1.8 {d4, d5, d6, d7}, [DST_R, :128]! + vld1.8 {d24, d25, d26, d27}, [MASK]! + cache_preload 32, 32 + pixman_composite_add_n_8_8_process_pixblock_head +.endm + +.macro pixman_composite_add_n_8_8_init + add DUMMY, sp, #ARGS_STACK_OFFSET + vpush {d8-d15} + vld1.32 {d11[0]}, [DUMMY] + vdup.8 d11, d11[3] +.endm + +.macro pixman_composite_add_n_8_8_cleanup + vpop {d8-d15} +.endm + +generate_composite_function \ + pixman_composite_add_n_8_8_asm_neon, 0, 8, 8, \ + FLAG_DST_READWRITE, \ + 32, /* number of pixels, processed in a single block */ \ + 5, /* prefetch distance */ \ + pixman_composite_add_n_8_8_init, \ + pixman_composite_add_n_8_8_cleanup, \ + pixman_composite_add_n_8_8_process_pixblock_head, \ + pixman_composite_add_n_8_8_process_pixblock_tail, \ + pixman_composite_add_n_8_8_process_pixblock_tail_head + +/******************************************************************************/ + +.macro pixman_composite_add_8_8_8_process_pixblock_head + /* expecting source data in {d0, d1, d2, d3} */ + /* destination data in {d4, d5, d6, d7} */ + /* mask in {d24, d25, d26, d27} */ + vmull.u8 q8, d24, d0 + vmull.u8 q9, d25, d1 + vmull.u8 q10, d26, d2 + vmull.u8 q11, d27, d3 + vrshr.u16 q0, q8, #8 + vrshr.u16 q1, q9, #8 + vrshr.u16 q12, q10, #8 + vrshr.u16 q13, q11, #8 + vraddhn.u16 d0, q0, q8 + vraddhn.u16 d1, q1, q9 + vraddhn.u16 d2, q12, q10 + vraddhn.u16 d3, q13, q11 + vqadd.u8 q14, q0, q2 + vqadd.u8 q15, q1, q3 +.endm + +.macro pixman_composite_add_8_8_8_process_pixblock_tail +.endm + +/* TODO: expand macros and do better instructions scheduling */ +.macro pixman_composite_add_8_8_8_process_pixblock_tail_head + pixman_composite_add_8_8_8_process_pixblock_tail + vst1.8 {d28, d29, d30, d31}, [DST_W, :128]! + vld1.8 {d4, d5, d6, d7}, [DST_R, :128]! + vld1.8 {d24, d25, d26, d27}, [MASK]! + vld1.8 {d0, d1, d2, d3}, [SRC]! + cache_preload 32, 32 + pixman_composite_add_8_8_8_process_pixblock_head +.endm + +.macro pixman_composite_add_8_8_8_init +.endm + +.macro pixman_composite_add_8_8_8_cleanup +.endm + +generate_composite_function \ + pixman_composite_add_8_8_8_asm_neon, 8, 8, 8, \ + FLAG_DST_READWRITE, \ + 32, /* number of pixels, processed in a single block */ \ + 5, /* prefetch distance */ \ + pixman_composite_add_8_8_8_init, \ + pixman_composite_add_8_8_8_cleanup, \ + pixman_composite_add_8_8_8_process_pixblock_head, \ + pixman_composite_add_8_8_8_process_pixblock_tail, \ + pixman_composite_add_8_8_8_process_pixblock_tail_head + +/******************************************************************************/ + +.macro pixman_composite_add_8888_8888_8888_process_pixblock_head + /* expecting source data in {d0, d1, d2, d3} */ + /* destination data in {d4, d5, d6, d7} */ + /* mask in {d24, d25, d26, d27} */ + vmull.u8 q8, d27, d0 + vmull.u8 q9, d27, d1 + vmull.u8 q10, d27, d2 + vmull.u8 q11, d27, d3 + vrshr.u16 q0, q8, #8 + vrshr.u16 q1, q9, #8 + vrshr.u16 q12, q10, #8 + vrshr.u16 q13, q11, #8 + vraddhn.u16 d0, q0, q8 + vraddhn.u16 d1, q1, q9 + vraddhn.u16 d2, q12, q10 + vraddhn.u16 d3, q13, q11 + vqadd.u8 q14, q0, q2 + vqadd.u8 q15, q1, q3 +.endm + +.macro pixman_composite_add_8888_8888_8888_process_pixblock_tail +.endm + +/* TODO: expand macros and do better instructions scheduling */ +.macro pixman_composite_add_8888_8888_8888_process_pixblock_tail_head + pixman_composite_add_8888_8888_8888_process_pixblock_tail + vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! + vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! + vld4.8 {d24, d25, d26, d27}, [MASK]! + vld4.8 {d0, d1, d2, d3}, [SRC]! + cache_preload 8, 8 + pixman_composite_add_8888_8888_8888_process_pixblock_head +.endm + +generate_composite_function \ + pixman_composite_add_8888_8888_8888_asm_neon, 32, 32, 32, \ + FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ + 8, /* number of pixels, processed in a single block */ \ + 10, /* prefetch distance */ \ + default_init, \ + default_cleanup, \ + pixman_composite_add_8888_8888_8888_process_pixblock_head, \ + pixman_composite_add_8888_8888_8888_process_pixblock_tail, \ + pixman_composite_add_8888_8888_8888_process_pixblock_tail_head + +generate_composite_function_single_scanline \ + pixman_composite_scanline_add_mask_asm_neon, 32, 32, 32, \ + FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ + 8, /* number of pixels, processed in a single block */ \ + default_init, \ + default_cleanup, \ + pixman_composite_add_8888_8888_8888_process_pixblock_head, \ + pixman_composite_add_8888_8888_8888_process_pixblock_tail, \ + pixman_composite_add_8888_8888_8888_process_pixblock_tail_head + +/******************************************************************************/ + +.macro pixman_composite_out_reverse_8888_n_8888_process_pixblock_head + /* expecting source data in {d0, d1, d2, d3} */ + /* destination data in {d4, d5, d6, d7} */ + /* solid mask is in d15 */ + + /* 'in' */ + vmull.u8 q8, d15, d3 + vmull.u8 q6, d15, d2 + vmull.u8 q5, d15, d1 + vmull.u8 q4, d15, d0 + vrshr.u16 q13, q8, #8 + vrshr.u16 q12, q6, #8 + vrshr.u16 q11, q5, #8 + vrshr.u16 q10, q4, #8 + vraddhn.u16 d3, q8, q13 + vraddhn.u16 d2, q6, q12 + vraddhn.u16 d1, q5, q11 + vraddhn.u16 d0, q4, q10 + vmvn.8 d24, d3 /* get inverted alpha */ + /* now do alpha blending */ + vmull.u8 q8, d24, d4 + vmull.u8 q9, d24, d5 + vmull.u8 q10, d24, d6 + vmull.u8 q11, d24, d7 +.endm + +.macro pixman_composite_out_reverse_8888_n_8888_process_pixblock_tail + vrshr.u16 q14, q8, #8 + vrshr.u16 q15, q9, #8 + vrshr.u16 q12, q10, #8 + vrshr.u16 q13, q11, #8 + vraddhn.u16 d28, q14, q8 + vraddhn.u16 d29, q15, q9 + vraddhn.u16 d30, q12, q10 + vraddhn.u16 d31, q13, q11 +.endm + +.macro pixman_composite_out_reverse_8888_8888_8888_init + vpush {d8-d15} +.endm + +.macro pixman_composite_out_reverse_8888_8888_8888_cleanup + vpop {d8-d15} +.endm + +/* TODO: expand macros and do better instructions scheduling */ +.macro pixman_composite_out_reverse_8888_8888_8888_process_pixblock_tail_head + vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! + pixman_composite_out_reverse_8888_n_8888_process_pixblock_tail + vld4.8 {d0, d1, d2, d3}, [SRC]! + cache_preload 8, 8 + vld4.8 {d12, d13, d14, d15}, [MASK]! + pixman_composite_out_reverse_8888_n_8888_process_pixblock_head + vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! +.endm + +generate_composite_function_single_scanline \ + pixman_composite_scanline_out_reverse_mask_asm_neon, 32, 32, 32, \ + FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ + 8, /* number of pixels, processed in a single block */ \ + pixman_composite_out_reverse_8888_8888_8888_init, \ + pixman_composite_out_reverse_8888_8888_8888_cleanup, \ + pixman_composite_out_reverse_8888_n_8888_process_pixblock_head, \ + pixman_composite_out_reverse_8888_n_8888_process_pixblock_tail, \ + pixman_composite_out_reverse_8888_8888_8888_process_pixblock_tail_head \ + 28, /* dst_w_basereg */ \ + 4, /* dst_r_basereg */ \ + 0, /* src_basereg */ \ + 12 /* mask_basereg */ + +/******************************************************************************/ + +.macro pixman_composite_over_8888_n_8888_process_pixblock_head + pixman_composite_out_reverse_8888_n_8888_process_pixblock_head +.endm + +.macro pixman_composite_over_8888_n_8888_process_pixblock_tail + pixman_composite_out_reverse_8888_n_8888_process_pixblock_tail + vqadd.u8 q14, q0, q14 + vqadd.u8 q15, q1, q15 +.endm + +/* TODO: expand macros and do better instructions scheduling */ +.macro pixman_composite_over_8888_n_8888_process_pixblock_tail_head + vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! + pixman_composite_over_8888_n_8888_process_pixblock_tail + vld4.8 {d0, d1, d2, d3}, [SRC]! + cache_preload 8, 8 + pixman_composite_over_8888_n_8888_process_pixblock_head + vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! +.endm + +.macro pixman_composite_over_8888_n_8888_init + add DUMMY, sp, #48 + vpush {d8-d15} + vld1.32 {d15[0]}, [DUMMY] + vdup.8 d15, d15[3] +.endm + +.macro pixman_composite_over_8888_n_8888_cleanup + vpop {d8-d15} +.endm + +generate_composite_function \ + pixman_composite_over_8888_n_8888_asm_neon, 32, 0, 32, \ + FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ + 8, /* number of pixels, processed in a single block */ \ + 5, /* prefetch distance */ \ + pixman_composite_over_8888_n_8888_init, \ + pixman_composite_over_8888_n_8888_cleanup, \ + pixman_composite_over_8888_n_8888_process_pixblock_head, \ + pixman_composite_over_8888_n_8888_process_pixblock_tail, \ + pixman_composite_over_8888_n_8888_process_pixblock_tail_head + +/******************************************************************************/ + +/* TODO: expand macros and do better instructions scheduling */ +.macro pixman_composite_over_8888_8888_8888_process_pixblock_tail_head + vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! + pixman_composite_over_8888_n_8888_process_pixblock_tail + vld4.8 {d0, d1, d2, d3}, [SRC]! + cache_preload 8, 8 + vld4.8 {d12, d13, d14, d15}, [MASK]! + pixman_composite_over_8888_n_8888_process_pixblock_head + vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! +.endm + +.macro pixman_composite_over_8888_8888_8888_init + vpush {d8-d15} +.endm + +.macro pixman_composite_over_8888_8888_8888_cleanup + vpop {d8-d15} +.endm + +generate_composite_function \ + pixman_composite_over_8888_8888_8888_asm_neon, 32, 32, 32, \ + FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ + 8, /* number of pixels, processed in a single block */ \ + 5, /* prefetch distance */ \ + pixman_composite_over_8888_8888_8888_init, \ + pixman_composite_over_8888_8888_8888_cleanup, \ + pixman_composite_over_8888_n_8888_process_pixblock_head, \ + pixman_composite_over_8888_n_8888_process_pixblock_tail, \ + pixman_composite_over_8888_8888_8888_process_pixblock_tail_head \ + 28, /* dst_w_basereg */ \ + 4, /* dst_r_basereg */ \ + 0, /* src_basereg */ \ + 12 /* mask_basereg */ + +generate_composite_function_single_scanline \ + pixman_composite_scanline_over_mask_asm_neon, 32, 32, 32, \ + FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ + 8, /* number of pixels, processed in a single block */ \ + pixman_composite_over_8888_8888_8888_init, \ + pixman_composite_over_8888_8888_8888_cleanup, \ + pixman_composite_over_8888_n_8888_process_pixblock_head, \ + pixman_composite_over_8888_n_8888_process_pixblock_tail, \ + pixman_composite_over_8888_8888_8888_process_pixblock_tail_head \ + 28, /* dst_w_basereg */ \ + 4, /* dst_r_basereg */ \ + 0, /* src_basereg */ \ + 12 /* mask_basereg */ + +/******************************************************************************/ + +/* TODO: expand macros and do better instructions scheduling */ +.macro pixman_composite_over_8888_8_8888_process_pixblock_tail_head + vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! + pixman_composite_over_8888_n_8888_process_pixblock_tail + vld4.8 {d0, d1, d2, d3}, [SRC]! + cache_preload 8, 8 + vld1.8 {d15}, [MASK]! + pixman_composite_over_8888_n_8888_process_pixblock_head + vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! +.endm + +.macro pixman_composite_over_8888_8_8888_init + vpush {d8-d15} +.endm + +.macro pixman_composite_over_8888_8_8888_cleanup + vpop {d8-d15} +.endm + +generate_composite_function \ + pixman_composite_over_8888_8_8888_asm_neon, 32, 8, 32, \ + FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ + 8, /* number of pixels, processed in a single block */ \ + 5, /* prefetch distance */ \ + pixman_composite_over_8888_8_8888_init, \ + pixman_composite_over_8888_8_8888_cleanup, \ + pixman_composite_over_8888_n_8888_process_pixblock_head, \ + pixman_composite_over_8888_n_8888_process_pixblock_tail, \ + pixman_composite_over_8888_8_8888_process_pixblock_tail_head \ + 28, /* dst_w_basereg */ \ + 4, /* dst_r_basereg */ \ + 0, /* src_basereg */ \ + 15 /* mask_basereg */ + +/******************************************************************************/ + +.macro pixman_composite_src_0888_0888_process_pixblock_head +.endm + +.macro pixman_composite_src_0888_0888_process_pixblock_tail +.endm + +.macro pixman_composite_src_0888_0888_process_pixblock_tail_head + vst3.8 {d0, d1, d2}, [DST_W]! + vld3.8 {d0, d1, d2}, [SRC]! + cache_preload 8, 8 +.endm + +generate_composite_function \ + pixman_composite_src_0888_0888_asm_neon, 24, 0, 24, \ + FLAG_DST_WRITEONLY, \ + 8, /* number of pixels, processed in a single block */ \ + 10, /* prefetch distance */ \ + default_init, \ + default_cleanup, \ + pixman_composite_src_0888_0888_process_pixblock_head, \ + pixman_composite_src_0888_0888_process_pixblock_tail, \ + pixman_composite_src_0888_0888_process_pixblock_tail_head, \ + 0, /* dst_w_basereg */ \ + 0, /* dst_r_basereg */ \ + 0, /* src_basereg */ \ + 0 /* mask_basereg */ + +/******************************************************************************/ + +.macro pixman_composite_src_0888_8888_rev_process_pixblock_head + vswp d0, d2 +.endm + +.macro pixman_composite_src_0888_8888_rev_process_pixblock_tail +.endm + +.macro pixman_composite_src_0888_8888_rev_process_pixblock_tail_head + vst4.8 {d0, d1, d2, d3}, [DST_W]! + vld3.8 {d0, d1, d2}, [SRC]! + vswp d0, d2 + cache_preload 8, 8 +.endm + +.macro pixman_composite_src_0888_8888_rev_init + veor d3, d3, d3 +.endm + +generate_composite_function \ + pixman_composite_src_0888_8888_rev_asm_neon, 24, 0, 32, \ + FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \ + 8, /* number of pixels, processed in a single block */ \ + 10, /* prefetch distance */ \ + pixman_composite_src_0888_8888_rev_init, \ + default_cleanup, \ + pixman_composite_src_0888_8888_rev_process_pixblock_head, \ + pixman_composite_src_0888_8888_rev_process_pixblock_tail, \ + pixman_composite_src_0888_8888_rev_process_pixblock_tail_head, \ + 0, /* dst_w_basereg */ \ + 0, /* dst_r_basereg */ \ + 0, /* src_basereg */ \ + 0 /* mask_basereg */ + +/******************************************************************************/ + +.macro pixman_composite_src_0888_0565_rev_process_pixblock_head + vshll.u8 q8, d1, #8 + vshll.u8 q9, d2, #8 +.endm + +.macro pixman_composite_src_0888_0565_rev_process_pixblock_tail + vshll.u8 q14, d0, #8 + vsri.u16 q14, q8, #5 + vsri.u16 q14, q9, #11 +.endm + +.macro pixman_composite_src_0888_0565_rev_process_pixblock_tail_head + vshll.u8 q14, d0, #8 + vld3.8 {d0, d1, d2}, [SRC]! + vsri.u16 q14, q8, #5 + vsri.u16 q14, q9, #11 + vshll.u8 q8, d1, #8 + vst1.16 {d28, d29}, [DST_W, :128]! + vshll.u8 q9, d2, #8 +.endm + +generate_composite_function \ + pixman_composite_src_0888_0565_rev_asm_neon, 24, 0, 16, \ + FLAG_DST_WRITEONLY, \ + 8, /* number of pixels, processed in a single block */ \ + 10, /* prefetch distance */ \ + default_init, \ + default_cleanup, \ + pixman_composite_src_0888_0565_rev_process_pixblock_head, \ + pixman_composite_src_0888_0565_rev_process_pixblock_tail, \ + pixman_composite_src_0888_0565_rev_process_pixblock_tail_head, \ + 28, /* dst_w_basereg */ \ + 0, /* dst_r_basereg */ \ + 0, /* src_basereg */ \ + 0 /* mask_basereg */ + +/******************************************************************************/ + +.macro pixman_composite_src_pixbuf_8888_process_pixblock_head + vmull.u8 q8, d3, d0 + vmull.u8 q9, d3, d1 + vmull.u8 q10, d3, d2 +.endm + +.macro pixman_composite_src_pixbuf_8888_process_pixblock_tail + vrshr.u16 q11, q8, #8 + vswp d3, d31 + vrshr.u16 q12, q9, #8 + vrshr.u16 q13, q10, #8 + vraddhn.u16 d30, q11, q8 + vraddhn.u16 d29, q12, q9 + vraddhn.u16 d28, q13, q10 +.endm + +.macro pixman_composite_src_pixbuf_8888_process_pixblock_tail_head + vrshr.u16 q11, q8, #8 + vswp d3, d31 + vrshr.u16 q12, q9, #8 + vrshr.u16 q13, q10, #8 + vld4.8 {d0, d1, d2, d3}, [SRC]! + vraddhn.u16 d30, q11, q8 + PF add PF_X, PF_X, #8 + PF tst PF_CTL, #0xF + PF addne PF_X, PF_X, #8 + PF subne PF_CTL, PF_CTL, #1 + vraddhn.u16 d29, q12, q9 + vraddhn.u16 d28, q13, q10 + vmull.u8 q8, d3, d0 + vmull.u8 q9, d3, d1 + vmull.u8 q10, d3, d2 + vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! + PF cmp PF_X, ORIG_W + PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] + PF subge PF_X, PF_X, ORIG_W + PF subges PF_CTL, PF_CTL, #0x10 + PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! +.endm + +generate_composite_function \ + pixman_composite_src_pixbuf_8888_asm_neon, 32, 0, 32, \ + FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \ + 8, /* number of pixels, processed in a single block */ \ + 10, /* prefetch distance */ \ + default_init, \ + default_cleanup, \ + pixman_composite_src_pixbuf_8888_process_pixblock_head, \ + pixman_composite_src_pixbuf_8888_process_pixblock_tail, \ + pixman_composite_src_pixbuf_8888_process_pixblock_tail_head, \ + 28, /* dst_w_basereg */ \ + 0, /* dst_r_basereg */ \ + 0, /* src_basereg */ \ + 0 /* mask_basereg */ diff --git a/pixman/pixman/pixman-arm-neon.c b/pixman/pixman/pixman-arm-neon.c index 6808b3658..ce049b280 100644 --- a/pixman/pixman/pixman-arm-neon.c +++ b/pixman/pixman/pixman-arm-neon.c @@ -1,352 +1,354 @@ -/* - * Copyright © 2009 ARM Ltd, Movial Creative Technologies Oy - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of ARM Ltd not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. ARM Ltd makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY - * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN - * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING - * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - * - * Author: Ian Rickards (ian.rickards@arm.com) - * Author: Jonathan Morton (jonathan.morton@movial.com) - * Author: Markku Vire (markku.vire@movial.com) - * - */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include "pixman-private.h" -#include "pixman-arm-common.h" - -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_8888_8888, - uint32_t, 1, uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_x888_8888, - uint32_t, 1, uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_0565_0565, - uint16_t, 1, uint16_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_0888_0888, - uint8_t, 3, uint8_t, 3) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_8888_0565, - uint32_t, 1, uint16_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_0565_8888, - uint16_t, 1, uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_0888_8888_rev, - uint8_t, 3, uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_0888_0565_rev, - uint8_t, 3, uint16_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_pixbuf_8888, - uint32_t, 1, uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, add_8000_8000, - uint8_t, 1, uint8_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, add_8888_8888, - uint32_t, 1, uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, over_8888_0565, - uint32_t, 1, uint16_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, over_8888_8888, - uint32_t, 1, uint32_t, 1) - -PIXMAN_ARM_BIND_FAST_PATH_N_DST (neon, over_n_0565, - uint16_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_N_DST (neon, over_n_8888, - uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_N_DST (neon, over_reverse_n_8888, - uint32_t, 1) - -PIXMAN_ARM_BIND_FAST_PATH_N_MASK_DST (neon, over_n_8_0565, - uint8_t, 1, uint16_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_N_MASK_DST (neon, over_n_8_8888, - uint8_t, 1, uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_N_MASK_DST (neon, over_n_8888_8888_ca, - uint32_t, 1, uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_N_MASK_DST (neon, add_n_8_8, - uint8_t, 1, uint8_t, 1) - -PIXMAN_ARM_BIND_FAST_PATH_SRC_N_DST (neon, over_8888_n_8888, - uint32_t, 1, uint32_t, 1) - -PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST (neon, add_8_8_8, - uint8_t, 1, uint8_t, 1, uint8_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST (neon, add_8888_8888_8888, - uint32_t, 1, uint32_t, 1, uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST (neon, over_8888_8_8888, - uint32_t, 1, uint8_t, 1, uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST (neon, over_8888_8888_8888, - uint32_t, 1, uint32_t, 1, uint32_t, 1) - -void -pixman_composite_src_n_8_asm_neon (int32_t w, - int32_t h, - uint8_t *dst, - int32_t dst_stride, - uint8_t src); - -void -pixman_composite_src_n_0565_asm_neon (int32_t w, - int32_t h, - uint16_t *dst, - int32_t dst_stride, - uint16_t src); - -void -pixman_composite_src_n_8888_asm_neon (int32_t w, - int32_t h, - uint32_t *dst, - int32_t dst_stride, - uint32_t src); - -static pixman_bool_t -pixman_fill_neon (uint32_t *bits, - int stride, - int bpp, - int x, - int y, - int width, - int height, - uint32_t _xor) -{ - /* stride is always multiple of 32bit units in pixman */ - uint32_t byte_stride = stride * sizeof(uint32_t); - - switch (bpp) - { - case 8: - pixman_composite_src_n_8_asm_neon ( - width, - height, - (uint8_t *)(((char *) bits) + y * byte_stride + x), - byte_stride, - _xor & 0xff); - return TRUE; - case 16: - pixman_composite_src_n_0565_asm_neon ( - width, - height, - (uint16_t *)(((char *) bits) + y * byte_stride + x * 2), - byte_stride / 2, - _xor & 0xffff); - return TRUE; - case 32: - pixman_composite_src_n_8888_asm_neon ( - width, - height, - (uint32_t *)(((char *) bits) + y * byte_stride + x * 4), - byte_stride / 4, - _xor); - return TRUE; - default: - return FALSE; - } -} - -static pixman_bool_t -pixman_blt_neon (uint32_t *src_bits, - uint32_t *dst_bits, - int src_stride, - int dst_stride, - int src_bpp, - int dst_bpp, - int src_x, - int src_y, - int dst_x, - int dst_y, - int width, - int height) -{ - if (src_bpp != dst_bpp) - return FALSE; - - switch (src_bpp) - { - case 16: - pixman_composite_src_0565_0565_asm_neon ( - width, height, - (uint16_t *)(((char *) dst_bits) + - dst_y * dst_stride * 4 + dst_x * 2), dst_stride * 2, - (uint16_t *)(((char *) src_bits) + - src_y * src_stride * 4 + src_x * 2), src_stride * 2); - return TRUE; - case 32: - pixman_composite_src_8888_8888_asm_neon ( - width, height, - (uint32_t *)(((char *) dst_bits) + - dst_y * dst_stride * 4 + dst_x * 4), dst_stride, - (uint32_t *)(((char *) src_bits) + - src_y * src_stride * 4 + src_x * 4), src_stride); - return TRUE; - default: - return FALSE; - } -} - -static const pixman_fast_path_t arm_neon_fast_paths[] = -{ - PIXMAN_STD_FAST_PATH (SRC, r5g6b5, null, r5g6b5, neon_composite_src_0565_0565), - PIXMAN_STD_FAST_PATH (SRC, b5g6r5, null, b5g6r5, neon_composite_src_0565_0565), - PIXMAN_STD_FAST_PATH (SRC, a8r8g8b8, null, r5g6b5, neon_composite_src_8888_0565), - PIXMAN_STD_FAST_PATH (SRC, x8r8g8b8, null, r5g6b5, neon_composite_src_8888_0565), - PIXMAN_STD_FAST_PATH (SRC, a8b8g8r8, null, b5g6r5, neon_composite_src_8888_0565), - PIXMAN_STD_FAST_PATH (SRC, x8b8g8r8, null, b5g6r5, neon_composite_src_8888_0565), - PIXMAN_STD_FAST_PATH (SRC, r5g6b5, null, a8r8g8b8, neon_composite_src_0565_8888), - PIXMAN_STD_FAST_PATH (SRC, r5g6b5, null, x8r8g8b8, neon_composite_src_0565_8888), - PIXMAN_STD_FAST_PATH (SRC, b5g6r5, null, a8b8g8r8, neon_composite_src_0565_8888), - PIXMAN_STD_FAST_PATH (SRC, b5g6r5, null, x8b8g8r8, neon_composite_src_0565_8888), - PIXMAN_STD_FAST_PATH (SRC, a8r8g8b8, null, x8r8g8b8, neon_composite_src_8888_8888), - PIXMAN_STD_FAST_PATH (SRC, x8r8g8b8, null, x8r8g8b8, neon_composite_src_8888_8888), - PIXMAN_STD_FAST_PATH (SRC, a8b8g8r8, null, x8b8g8r8, neon_composite_src_8888_8888), - PIXMAN_STD_FAST_PATH (SRC, x8b8g8r8, null, x8b8g8r8, neon_composite_src_8888_8888), - PIXMAN_STD_FAST_PATH (SRC, a8r8g8b8, null, a8r8g8b8, neon_composite_src_8888_8888), - PIXMAN_STD_FAST_PATH (SRC, a8b8g8r8, null, a8b8g8r8, neon_composite_src_8888_8888), - PIXMAN_STD_FAST_PATH (SRC, x8r8g8b8, null, a8r8g8b8, neon_composite_src_x888_8888), - PIXMAN_STD_FAST_PATH (SRC, x8b8g8r8, null, a8b8g8r8, neon_composite_src_x888_8888), - PIXMAN_STD_FAST_PATH (SRC, r8g8b8, null, r8g8b8, neon_composite_src_0888_0888), - PIXMAN_STD_FAST_PATH (SRC, b8g8r8, null, x8r8g8b8, neon_composite_src_0888_8888_rev), - PIXMAN_STD_FAST_PATH (SRC, b8g8r8, null, r5g6b5, neon_composite_src_0888_0565_rev), - PIXMAN_STD_FAST_PATH (SRC, pixbuf, pixbuf, a8r8g8b8, neon_composite_src_pixbuf_8888), - PIXMAN_STD_FAST_PATH (OVER, solid, a8, r5g6b5, neon_composite_over_n_8_0565), - PIXMAN_STD_FAST_PATH (OVER, solid, a8, b5g6r5, neon_composite_over_n_8_0565), - PIXMAN_STD_FAST_PATH (OVER, solid, a8, a8r8g8b8, neon_composite_over_n_8_8888), - PIXMAN_STD_FAST_PATH (OVER, solid, a8, x8r8g8b8, neon_composite_over_n_8_8888), - PIXMAN_STD_FAST_PATH (OVER, solid, a8, a8b8g8r8, neon_composite_over_n_8_8888), - PIXMAN_STD_FAST_PATH (OVER, solid, a8, x8b8g8r8, neon_composite_over_n_8_8888), - PIXMAN_STD_FAST_PATH (OVER, solid, null, r5g6b5, neon_composite_over_n_0565), - PIXMAN_STD_FAST_PATH (OVER, solid, null, a8r8g8b8, neon_composite_over_n_8888), - PIXMAN_STD_FAST_PATH (OVER, solid, null, x8r8g8b8, neon_composite_over_n_8888), - PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8r8g8b8, a8r8g8b8, neon_composite_over_n_8888_8888_ca), - PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8r8g8b8, x8r8g8b8, neon_composite_over_n_8888_8888_ca), - PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8b8g8r8, a8b8g8r8, neon_composite_over_n_8888_8888_ca), - PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8b8g8r8, x8b8g8r8, neon_composite_over_n_8888_8888_ca), - PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid, a8r8g8b8, neon_composite_over_8888_n_8888), - PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid, x8r8g8b8, neon_composite_over_8888_n_8888), - PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, a8, a8r8g8b8, neon_composite_over_8888_8_8888), - PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, a8, x8r8g8b8, neon_composite_over_8888_8_8888), - PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, a8, a8b8g8r8, neon_composite_over_8888_8_8888), - PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, a8, x8b8g8r8, neon_composite_over_8888_8_8888), - PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, a8r8g8b8, a8r8g8b8, neon_composite_over_8888_8888_8888), - PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, r5g6b5, neon_composite_over_8888_0565), - PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, b5g6r5, neon_composite_over_8888_0565), - PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, a8r8g8b8, neon_composite_over_8888_8888), - PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, x8r8g8b8, neon_composite_over_8888_8888), - PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, a8b8g8r8, neon_composite_over_8888_8888), - PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, x8b8g8r8, neon_composite_over_8888_8888), - PIXMAN_STD_FAST_PATH (OVER, x8r8g8b8, null, a8r8g8b8, neon_composite_src_x888_8888), - PIXMAN_STD_FAST_PATH (OVER, x8b8g8r8, null, a8b8g8r8, neon_composite_src_x888_8888), - PIXMAN_STD_FAST_PATH (ADD, solid, a8, a8, neon_composite_add_n_8_8), - PIXMAN_STD_FAST_PATH (ADD, a8, a8, a8, neon_composite_add_8_8_8), - PIXMAN_STD_FAST_PATH (ADD, a8r8g8b8, a8r8g8b8, a8r8g8b8, neon_composite_add_8888_8888_8888), - PIXMAN_STD_FAST_PATH (ADD, a8, null, a8, neon_composite_add_8000_8000), - PIXMAN_STD_FAST_PATH (ADD, a8r8g8b8, null, a8r8g8b8, neon_composite_add_8888_8888), - PIXMAN_STD_FAST_PATH (ADD, a8b8g8r8, null, a8b8g8r8, neon_composite_add_8888_8888), - PIXMAN_STD_FAST_PATH (OVER_REVERSE, solid, null, a8r8g8b8, neon_composite_over_reverse_n_8888), - PIXMAN_STD_FAST_PATH (OVER_REVERSE, solid, null, a8b8g8r8, neon_composite_over_reverse_n_8888), - - { PIXMAN_OP_NONE }, -}; - -static pixman_bool_t -arm_neon_blt (pixman_implementation_t *imp, - uint32_t * src_bits, - uint32_t * dst_bits, - int src_stride, - int dst_stride, - int src_bpp, - int dst_bpp, - int src_x, - int src_y, - int dst_x, - int dst_y, - int width, - int height) -{ - if (!pixman_blt_neon ( - src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp, - src_x, src_y, dst_x, dst_y, width, height)) - - { - return _pixman_implementation_blt ( - imp->delegate, - src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp, - src_x, src_y, dst_x, dst_y, width, height); - } - - return TRUE; -} - -static pixman_bool_t -arm_neon_fill (pixman_implementation_t *imp, - uint32_t * bits, - int stride, - int bpp, - int x, - int y, - int width, - int height, - uint32_t xor) -{ - if (pixman_fill_neon (bits, stride, bpp, x, y, width, height, xor)) - return TRUE; - - return _pixman_implementation_fill ( - imp->delegate, bits, stride, bpp, x, y, width, height, xor); -} - -#define BIND_COMBINE_U(name) \ -void \ -pixman_composite_scanline_##name##_mask_asm_neon (int32_t w, \ - const uint32_t *dst, \ - const uint32_t *src, \ - const uint32_t *mask); \ - \ -void \ -pixman_composite_scanline_##name##_asm_neon (int32_t w, \ - const uint32_t *dst, \ - const uint32_t *src); \ - \ -static void \ -neon_combine_##name##_u (pixman_implementation_t *imp, \ - pixman_op_t op, \ - uint32_t * dest, \ - const uint32_t * src, \ - const uint32_t * mask, \ - int width) \ -{ \ - if (mask) \ - pixman_composite_scanline_##name##_mask_asm_neon (width, dest, \ - src, mask); \ - else \ - pixman_composite_scanline_##name##_asm_neon (width, dest, src); \ -} - -BIND_COMBINE_U (over) -BIND_COMBINE_U (add) - -pixman_implementation_t * -_pixman_implementation_create_arm_neon (void) -{ - pixman_implementation_t *general = _pixman_implementation_create_fast_path (); - pixman_implementation_t *imp = - _pixman_implementation_create (general, arm_neon_fast_paths); - - imp->combine_32[PIXMAN_OP_OVER] = neon_combine_over_u; - imp->combine_32[PIXMAN_OP_ADD] = neon_combine_add_u; - - imp->blt = arm_neon_blt; - imp->fill = arm_neon_fill; - - return imp; -} +/* + * Copyright © 2009 ARM Ltd, Movial Creative Technologies Oy + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of ARM Ltd not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. ARM Ltd makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY + * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + * + * Author: Ian Rickards (ian.rickards@arm.com) + * Author: Jonathan Morton (jonathan.morton@movial.com) + * Author: Markku Vire (markku.vire@movial.com) + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include "pixman-private.h" +#include "pixman-arm-common.h" + +PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_8888_8888, + uint32_t, 1, uint32_t, 1) +PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_x888_8888, + uint32_t, 1, uint32_t, 1) +PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_0565_0565, + uint16_t, 1, uint16_t, 1) +PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_0888_0888, + uint8_t, 3, uint8_t, 3) +PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_8888_0565, + uint32_t, 1, uint16_t, 1) +PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_0565_8888, + uint16_t, 1, uint32_t, 1) +PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_0888_8888_rev, + uint8_t, 3, uint32_t, 1) +PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_0888_0565_rev, + uint8_t, 3, uint16_t, 1) +PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_pixbuf_8888, + uint32_t, 1, uint32_t, 1) +PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, add_8000_8000, + uint8_t, 1, uint8_t, 1) +PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, add_8888_8888, + uint32_t, 1, uint32_t, 1) +PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, over_8888_0565, + uint32_t, 1, uint16_t, 1) +PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, over_8888_8888, + uint32_t, 1, uint32_t, 1) + +PIXMAN_ARM_BIND_FAST_PATH_N_DST (neon, over_n_0565, + uint16_t, 1) +PIXMAN_ARM_BIND_FAST_PATH_N_DST (neon, over_n_8888, + uint32_t, 1) +PIXMAN_ARM_BIND_FAST_PATH_N_DST (neon, over_reverse_n_8888, + uint32_t, 1) + +PIXMAN_ARM_BIND_FAST_PATH_N_MASK_DST (neon, over_n_8_0565, + uint8_t, 1, uint16_t, 1) +PIXMAN_ARM_BIND_FAST_PATH_N_MASK_DST (neon, over_n_8_8888, + uint8_t, 1, uint32_t, 1) +PIXMAN_ARM_BIND_FAST_PATH_N_MASK_DST (neon, over_n_8888_8888_ca, + uint32_t, 1, uint32_t, 1) +PIXMAN_ARM_BIND_FAST_PATH_N_MASK_DST (neon, add_n_8_8, + uint8_t, 1, uint8_t, 1) + +PIXMAN_ARM_BIND_FAST_PATH_SRC_N_DST (neon, over_8888_n_8888, + uint32_t, 1, uint32_t, 1) + +PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST (neon, add_8_8_8, + uint8_t, 1, uint8_t, 1, uint8_t, 1) +PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST (neon, add_8888_8888_8888, + uint32_t, 1, uint32_t, 1, uint32_t, 1) +PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST (neon, over_8888_8_8888, + uint32_t, 1, uint8_t, 1, uint32_t, 1) +PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST (neon, over_8888_8888_8888, + uint32_t, 1, uint32_t, 1, uint32_t, 1) + +void +pixman_composite_src_n_8_asm_neon (int32_t w, + int32_t h, + uint8_t *dst, + int32_t dst_stride, + uint8_t src); + +void +pixman_composite_src_n_0565_asm_neon (int32_t w, + int32_t h, + uint16_t *dst, + int32_t dst_stride, + uint16_t src); + +void +pixman_composite_src_n_8888_asm_neon (int32_t w, + int32_t h, + uint32_t *dst, + int32_t dst_stride, + uint32_t src); + +static pixman_bool_t +pixman_fill_neon (uint32_t *bits, + int stride, + int bpp, + int x, + int y, + int width, + int height, + uint32_t _xor) +{ + /* stride is always multiple of 32bit units in pixman */ + uint32_t byte_stride = stride * sizeof(uint32_t); + + switch (bpp) + { + case 8: + pixman_composite_src_n_8_asm_neon ( + width, + height, + (uint8_t *)(((char *) bits) + y * byte_stride + x), + byte_stride, + _xor & 0xff); + return TRUE; + case 16: + pixman_composite_src_n_0565_asm_neon ( + width, + height, + (uint16_t *)(((char *) bits) + y * byte_stride + x * 2), + byte_stride / 2, + _xor & 0xffff); + return TRUE; + case 32: + pixman_composite_src_n_8888_asm_neon ( + width, + height, + (uint32_t *)(((char *) bits) + y * byte_stride + x * 4), + byte_stride / 4, + _xor); + return TRUE; + default: + return FALSE; + } +} + +static pixman_bool_t +pixman_blt_neon (uint32_t *src_bits, + uint32_t *dst_bits, + int src_stride, + int dst_stride, + int src_bpp, + int dst_bpp, + int src_x, + int src_y, + int dst_x, + int dst_y, + int width, + int height) +{ + if (src_bpp != dst_bpp) + return FALSE; + + switch (src_bpp) + { + case 16: + pixman_composite_src_0565_0565_asm_neon ( + width, height, + (uint16_t *)(((char *) dst_bits) + + dst_y * dst_stride * 4 + dst_x * 2), dst_stride * 2, + (uint16_t *)(((char *) src_bits) + + src_y * src_stride * 4 + src_x * 2), src_stride * 2); + return TRUE; + case 32: + pixman_composite_src_8888_8888_asm_neon ( + width, height, + (uint32_t *)(((char *) dst_bits) + + dst_y * dst_stride * 4 + dst_x * 4), dst_stride, + (uint32_t *)(((char *) src_bits) + + src_y * src_stride * 4 + src_x * 4), src_stride); + return TRUE; + default: + return FALSE; + } +} + +static const pixman_fast_path_t arm_neon_fast_paths[] = +{ + PIXMAN_STD_FAST_PATH (SRC, r5g6b5, null, r5g6b5, neon_composite_src_0565_0565), + PIXMAN_STD_FAST_PATH (SRC, b5g6r5, null, b5g6r5, neon_composite_src_0565_0565), + PIXMAN_STD_FAST_PATH (SRC, a8r8g8b8, null, r5g6b5, neon_composite_src_8888_0565), + PIXMAN_STD_FAST_PATH (SRC, x8r8g8b8, null, r5g6b5, neon_composite_src_8888_0565), + PIXMAN_STD_FAST_PATH (SRC, a8b8g8r8, null, b5g6r5, neon_composite_src_8888_0565), + PIXMAN_STD_FAST_PATH (SRC, x8b8g8r8, null, b5g6r5, neon_composite_src_8888_0565), + PIXMAN_STD_FAST_PATH (SRC, r5g6b5, null, a8r8g8b8, neon_composite_src_0565_8888), + PIXMAN_STD_FAST_PATH (SRC, r5g6b5, null, x8r8g8b8, neon_composite_src_0565_8888), + PIXMAN_STD_FAST_PATH (SRC, b5g6r5, null, a8b8g8r8, neon_composite_src_0565_8888), + PIXMAN_STD_FAST_PATH (SRC, b5g6r5, null, x8b8g8r8, neon_composite_src_0565_8888), + PIXMAN_STD_FAST_PATH (SRC, a8r8g8b8, null, x8r8g8b8, neon_composite_src_8888_8888), + PIXMAN_STD_FAST_PATH (SRC, x8r8g8b8, null, x8r8g8b8, neon_composite_src_8888_8888), + PIXMAN_STD_FAST_PATH (SRC, a8b8g8r8, null, x8b8g8r8, neon_composite_src_8888_8888), + PIXMAN_STD_FAST_PATH (SRC, x8b8g8r8, null, x8b8g8r8, neon_composite_src_8888_8888), + PIXMAN_STD_FAST_PATH (SRC, a8r8g8b8, null, a8r8g8b8, neon_composite_src_8888_8888), + PIXMAN_STD_FAST_PATH (SRC, a8b8g8r8, null, a8b8g8r8, neon_composite_src_8888_8888), + PIXMAN_STD_FAST_PATH (SRC, x8r8g8b8, null, a8r8g8b8, neon_composite_src_x888_8888), + PIXMAN_STD_FAST_PATH (SRC, x8b8g8r8, null, a8b8g8r8, neon_composite_src_x888_8888), + PIXMAN_STD_FAST_PATH (SRC, r8g8b8, null, r8g8b8, neon_composite_src_0888_0888), + PIXMAN_STD_FAST_PATH (SRC, b8g8r8, null, x8r8g8b8, neon_composite_src_0888_8888_rev), + PIXMAN_STD_FAST_PATH (SRC, b8g8r8, null, r5g6b5, neon_composite_src_0888_0565_rev), + PIXMAN_STD_FAST_PATH (SRC, pixbuf, pixbuf, a8r8g8b8, neon_composite_src_pixbuf_8888), + PIXMAN_STD_FAST_PATH (OVER, solid, a8, r5g6b5, neon_composite_over_n_8_0565), + PIXMAN_STD_FAST_PATH (OVER, solid, a8, b5g6r5, neon_composite_over_n_8_0565), + PIXMAN_STD_FAST_PATH (OVER, solid, a8, a8r8g8b8, neon_composite_over_n_8_8888), + PIXMAN_STD_FAST_PATH (OVER, solid, a8, x8r8g8b8, neon_composite_over_n_8_8888), + PIXMAN_STD_FAST_PATH (OVER, solid, a8, a8b8g8r8, neon_composite_over_n_8_8888), + PIXMAN_STD_FAST_PATH (OVER, solid, a8, x8b8g8r8, neon_composite_over_n_8_8888), + PIXMAN_STD_FAST_PATH (OVER, solid, null, r5g6b5, neon_composite_over_n_0565), + PIXMAN_STD_FAST_PATH (OVER, solid, null, a8r8g8b8, neon_composite_over_n_8888), + PIXMAN_STD_FAST_PATH (OVER, solid, null, x8r8g8b8, neon_composite_over_n_8888), + PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8r8g8b8, a8r8g8b8, neon_composite_over_n_8888_8888_ca), + PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8r8g8b8, x8r8g8b8, neon_composite_over_n_8888_8888_ca), + PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8b8g8r8, a8b8g8r8, neon_composite_over_n_8888_8888_ca), + PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8b8g8r8, x8b8g8r8, neon_composite_over_n_8888_8888_ca), + PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid, a8r8g8b8, neon_composite_over_8888_n_8888), + PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid, x8r8g8b8, neon_composite_over_8888_n_8888), + PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, a8, a8r8g8b8, neon_composite_over_8888_8_8888), + PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, a8, x8r8g8b8, neon_composite_over_8888_8_8888), + PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, a8, a8b8g8r8, neon_composite_over_8888_8_8888), + PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, a8, x8b8g8r8, neon_composite_over_8888_8_8888), + PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, a8r8g8b8, a8r8g8b8, neon_composite_over_8888_8888_8888), + PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, r5g6b5, neon_composite_over_8888_0565), + PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, b5g6r5, neon_composite_over_8888_0565), + PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, a8r8g8b8, neon_composite_over_8888_8888), + PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, x8r8g8b8, neon_composite_over_8888_8888), + PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, a8b8g8r8, neon_composite_over_8888_8888), + PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, x8b8g8r8, neon_composite_over_8888_8888), + PIXMAN_STD_FAST_PATH (OVER, x8r8g8b8, null, a8r8g8b8, neon_composite_src_x888_8888), + PIXMAN_STD_FAST_PATH (OVER, x8b8g8r8, null, a8b8g8r8, neon_composite_src_x888_8888), + PIXMAN_STD_FAST_PATH (ADD, solid, a8, a8, neon_composite_add_n_8_8), + PIXMAN_STD_FAST_PATH (ADD, a8, a8, a8, neon_composite_add_8_8_8), + PIXMAN_STD_FAST_PATH (ADD, a8r8g8b8, a8r8g8b8, a8r8g8b8, neon_composite_add_8888_8888_8888), + PIXMAN_STD_FAST_PATH (ADD, a8, null, a8, neon_composite_add_8000_8000), + PIXMAN_STD_FAST_PATH (ADD, a8r8g8b8, null, a8r8g8b8, neon_composite_add_8888_8888), + PIXMAN_STD_FAST_PATH (ADD, a8b8g8r8, null, a8b8g8r8, neon_composite_add_8888_8888), + PIXMAN_STD_FAST_PATH (OVER_REVERSE, solid, null, a8r8g8b8, neon_composite_over_reverse_n_8888), + PIXMAN_STD_FAST_PATH (OVER_REVERSE, solid, null, a8b8g8r8, neon_composite_over_reverse_n_8888), + + { PIXMAN_OP_NONE }, +}; + +static pixman_bool_t +arm_neon_blt (pixman_implementation_t *imp, + uint32_t * src_bits, + uint32_t * dst_bits, + int src_stride, + int dst_stride, + int src_bpp, + int dst_bpp, + int src_x, + int src_y, + int dst_x, + int dst_y, + int width, + int height) +{ + if (!pixman_blt_neon ( + src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp, + src_x, src_y, dst_x, dst_y, width, height)) + + { + return _pixman_implementation_blt ( + imp->delegate, + src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp, + src_x, src_y, dst_x, dst_y, width, height); + } + + return TRUE; +} + +static pixman_bool_t +arm_neon_fill (pixman_implementation_t *imp, + uint32_t * bits, + int stride, + int bpp, + int x, + int y, + int width, + int height, + uint32_t xor) +{ + if (pixman_fill_neon (bits, stride, bpp, x, y, width, height, xor)) + return TRUE; + + return _pixman_implementation_fill ( + imp->delegate, bits, stride, bpp, x, y, width, height, xor); +} + +#define BIND_COMBINE_U(name) \ +void \ +pixman_composite_scanline_##name##_mask_asm_neon (int32_t w, \ + const uint32_t *dst, \ + const uint32_t *src, \ + const uint32_t *mask); \ + \ +void \ +pixman_composite_scanline_##name##_asm_neon (int32_t w, \ + const uint32_t *dst, \ + const uint32_t *src); \ + \ +static void \ +neon_combine_##name##_u (pixman_implementation_t *imp, \ + pixman_op_t op, \ + uint32_t * dest, \ + const uint32_t * src, \ + const uint32_t * mask, \ + int width) \ +{ \ + if (mask) \ + pixman_composite_scanline_##name##_mask_asm_neon (width, dest, \ + src, mask); \ + else \ + pixman_composite_scanline_##name##_asm_neon (width, dest, src); \ +} + +BIND_COMBINE_U (over) +BIND_COMBINE_U (add) +BIND_COMBINE_U (out_reverse) + +pixman_implementation_t * +_pixman_implementation_create_arm_neon (void) +{ + pixman_implementation_t *general = _pixman_implementation_create_fast_path (); + pixman_implementation_t *imp = + _pixman_implementation_create (general, arm_neon_fast_paths); + + imp->combine_32[PIXMAN_OP_OVER] = neon_combine_over_u; + imp->combine_32[PIXMAN_OP_ADD] = neon_combine_add_u; + imp->combine_32[PIXMAN_OP_OUT_REVERSE] = neon_combine_out_reverse_u; + + imp->blt = arm_neon_blt; + imp->fill = arm_neon_fill; + + return imp; +} diff --git a/pixman/pixman/pixman-fast-path.c b/pixman/pixman/pixman-fast-path.c index 8165db4c7..6c214fede 100644 --- a/pixman/pixman/pixman-fast-path.c +++ b/pixman/pixman/pixman-fast-path.c @@ -1591,13 +1591,6 @@ fast_composite_scaled_nearest_ ## scale_func_name ## _ ## OP (pixman_implementat if (w & 1) \ { \ x1 = vx >> 16; \ - vx += unit_x; \ - if (PIXMAN_REPEAT_ ## repeat_mode == PIXMAN_REPEAT_NORMAL) \ - { \ - /* This works because we know that unit_x is positive */ \ - while (vx >= max_vx) \ - vx -= max_vx; \ - } \ s1 = src[x1]; \ \ if (PIXMAN_OP_ ## OP == PIXMAN_OP_OVER) \ diff --git a/pixman/pixman/pixman-image.c b/pixman/pixman/pixman-image.c index 1cce9273d..3020f246c 100644 --- a/pixman/pixman/pixman-image.c +++ b/pixman/pixman/pixman-image.c @@ -101,6 +101,7 @@ _pixman_image_allocate (void) pixman_region32_init (&common->clip_region); + common->alpha_count = 0; common->have_clip_region = FALSE; common->clip_sources = FALSE; common->transform = NULL; @@ -408,12 +409,14 @@ compute_image_info (pixman_image_t *image) } } - if (image->common.repeat != PIXMAN_REPEAT_NONE && - !PIXMAN_FORMAT_A (image->bits.format) && + if (!PIXMAN_FORMAT_A (image->bits.format) && PIXMAN_FORMAT_TYPE (image->bits.format) != PIXMAN_TYPE_GRAY && PIXMAN_FORMAT_TYPE (image->bits.format) != PIXMAN_TYPE_COLOR) { - flags |= FAST_PATH_IS_OPAQUE; + flags |= FAST_PATH_SAMPLES_OPAQUE; + + if (image->common.repeat != PIXMAN_REPEAT_NONE) + flags |= FAST_PATH_IS_OPAQUE; } if (source_image_needs_out_of_bounds_workaround (&image->bits)) @@ -461,7 +464,7 @@ compute_image_info (pixman_image_t *image) image->common.filter == PIXMAN_FILTER_CONVOLUTION || image->common.component_alpha) { - flags &= ~FAST_PATH_IS_OPAQUE; + flags &= ~(FAST_PATH_IS_OPAQUE | FAST_PATH_SAMPLES_OPAQUE); } image->common.flags = flags; @@ -668,15 +671,41 @@ pixman_image_set_alpha_map (pixman_image_t *image, return_if_fail (!alpha_map || alpha_map->type == BITS); + if (alpha_map && common->alpha_count > 0) + { + /* If this image is being used as an alpha map itself, + * then you can't give it an alpha map of its own. + */ + return; + } + + if (alpha_map && alpha_map->common.alpha_map) + { + /* If the image has an alpha map of its own, + * then it can't be used as an alpha map itself + */ + return; + } + if (common->alpha_map != (bits_image_t *)alpha_map) { if (common->alpha_map) + { + common->alpha_map->common.alpha_count--; + pixman_image_unref ((pixman_image_t *)common->alpha_map); + } if (alpha_map) + { common->alpha_map = (bits_image_t *)pixman_image_ref (alpha_map); + + common->alpha_map->common.alpha_count++; + } else + { common->alpha_map = NULL; + } } common->alpha_origin_x = x; diff --git a/pixman/pixman/pixman-private.h b/pixman/pixman/pixman-private.h index 6774b1514..0a6cbd275 100644 --- a/pixman/pixman/pixman-private.h +++ b/pixman/pixman/pixman-private.h @@ -80,6 +80,7 @@ struct image_common image_type_t type; int32_t ref_count; pixman_region32_t clip_region; + int32_t alpha_count; /* How many times this image is being used as an alpha map */ pixman_bool_t have_clip_region; /* FALSE if there is no clip */ pixman_bool_t client_clip; /* Whether the source clip was set by a client */ @@ -570,6 +571,7 @@ _pixman_choose_implementation (void); #define FAST_PATH_BILINEAR_FILTER (1 << 20) #define FAST_PATH_NO_NORMAL_REPEAT (1 << 21) #define FAST_PATH_HAS_TRANSFORM (1 << 22) +#define FAST_PATH_SAMPLES_OPAQUE (1 << 23) #define FAST_PATH_PAD_REPEAT \ (FAST_PATH_NO_NONE_REPEAT | \ diff --git a/pixman/pixman/pixman.c b/pixman/pixman/pixman.c index 1dbfd83f8..819bb5146 100644 --- a/pixman/pixman/pixman.c +++ b/pixman/pixman/pixman.c @@ -884,6 +884,17 @@ do_composite (pixman_op_t op, if (!analyze_extent (mask, dest_x - mask_x, dest_y - mask_y, extents, &mask_flags)) goto out; + /* If the clip is within the source samples, and the samples are opaque, + * then the source is effectively opaque. + */ +#define BOTH (FAST_PATH_SAMPLES_OPAQUE | FAST_PATH_SAMPLES_COVER_CLIP) + + if ((src_flags & BOTH) == BOTH) + src_flags |= FAST_PATH_IS_OPAQUE; + + if ((mask_flags & BOTH) == BOTH) + mask_flags |= FAST_PATH_IS_OPAQUE; + /* * Check if we can replace our operator by a simpler one * if the src or dest are opaque. The output operator should be diff --git a/pixman/test/Makefile.am b/pixman/test/Makefile.am index efd9cd91a..d3e9d3fa0 100644 --- a/pixman/test/Makefile.am +++ b/pixman/test/Makefile.am @@ -13,6 +13,7 @@ TESTPROGRAMS = \ gradient-crash-test \ trap-crasher \ alphamap \ + alpha-loop \ scaling-crash-test \ blitters-test \ scaling-test \ @@ -39,6 +40,9 @@ scaling_test_SOURCES = scaling-test.c utils.c utils.h alphamap_LDADD = $(TEST_LDADD) alphamap_SOURCES = alphamap.c utils.c utils.h +alpha_loop_LDADD = $(TEST_LDADD) +alpha_loop_SOURCES = alpha-loop.c utils.c utils.h + # GTK using test programs if HAVE_GTK diff --git a/pixman/test/alpha-loop.c b/pixman/test/alpha-loop.c new file mode 100644 index 000000000..38fc21f5d --- /dev/null +++ b/pixman/test/alpha-loop.c @@ -0,0 +1,29 @@ +#include +#include +#include "utils.h" + +#define WIDTH 400 +#define HEIGHT 200 + +int +main (int argc, char **argv) +{ + uint8_t *alpha = make_random_bytes (WIDTH * HEIGHT); + uint32_t *src = (uint32_t *)make_random_bytes (WIDTH * HEIGHT * 4); + uint32_t *dest = (uint32_t *)make_random_bytes (WIDTH * HEIGHT * 4); + + pixman_image_t *a = pixman_image_create_bits (PIXMAN_a8, WIDTH, HEIGHT, (uint32_t *)alpha, WIDTH); + pixman_image_t *d = pixman_image_create_bits (PIXMAN_a8r8g8b8, WIDTH, HEIGHT, dest, WIDTH * 4); + pixman_image_t *s = pixman_image_create_bits (PIXMAN_a2r10g10b10, WIDTH, HEIGHT, src, WIDTH * 4); + + fail_after (5, "Infinite loop detected: 5 seconds without progress\n"); + + pixman_image_set_alpha_map (s, a, 0, 0); + pixman_image_set_alpha_map (a, s, 0, 0); + + pixman_image_composite (PIXMAN_OP_SRC, s, NULL, d, 0, 0, 0, 0, 0, 0, WIDTH, HEIGHT); + + pixman_image_unref (s); + + return 0; +} diff --git a/pixman/test/utils.c b/pixman/test/utils.c index 4b68debff..f5199268b 100644 --- a/pixman/test/utils.c +++ b/pixman/test/utils.c @@ -1,4 +1,9 @@ #include "utils.h" +#include + +#ifdef HAVE_UNISTD_H +#include +#endif /* Random number seed */ @@ -319,3 +324,31 @@ fuzzer_test_main (const char *test_name, return 0; } + +static const char *global_msg; + +static void +on_alarm (int signo) +{ + printf ("%s\n", global_msg); + exit (1); +} + +void +fail_after (int seconds, const char *msg) +{ +#ifdef HAVE_SIGACTION +#ifdef HAVE_ALARM + struct sigaction action; + + global_msg = msg; + + memset (&action, 0, sizeof (action)); + action.sa_handler = on_alarm; + + alarm (seconds); + + sigaction (SIGALRM, &action, NULL); +#endif +#endif +} diff --git a/pixman/test/utils.h b/pixman/test/utils.h index 39b49b2c1..a5b3c91c4 100644 --- a/pixman/test/utils.h +++ b/pixman/test/utils.h @@ -62,3 +62,6 @@ fuzzer_test_main (const char *test_name, uint32_t (*test_function)(int testnum, int verbose), int argc, const char *argv[]); + +void +fail_after (int seconds, const char *msg); diff --git a/xorg-server/Xext/xace.c b/xorg-server/Xext/xace.c index bc621ff85..28c51687c 100644 --- a/xorg-server/Xext/xace.c +++ b/xorg-server/Xext/xace.c @@ -87,7 +87,18 @@ void XaceHookAuditEnd(ClientPtr ptr, int result) */ int XaceHook(int hook, ...) { - pointer calldata; /* data passed to callback */ + union { + XaceResourceAccessRec res; + XaceDeviceAccessRec dev; + XaceSendAccessRec send; + XaceReceiveAccessRec recv; + XaceClientAccessRec client; + XaceExtAccessRec ext; + XaceServerAccessRec server; + XaceScreenAccessRec screen; + XaceAuthAvailRec auth; + XaceKeyAvailRec key; + } u; int *prv = NULL; /* points to return value from callback */ va_list ap; /* argument list */ va_start(ap, hook); @@ -99,117 +110,86 @@ int XaceHook(int hook, ...) */ switch (hook) { - case XACE_RESOURCE_ACCESS: { - XaceResourceAccessRec rec; - rec.client = va_arg(ap, ClientPtr); - rec.id = va_arg(ap, XID); - rec.rtype = va_arg(ap, RESTYPE); - rec.res = va_arg(ap, pointer); - rec.ptype = va_arg(ap, RESTYPE); - rec.parent = va_arg(ap, pointer); - rec.access_mode = va_arg(ap, Mask); - rec.status = Success; /* default allow */ - calldata = &rec; - prv = &rec.status; + case XACE_RESOURCE_ACCESS: + u.res.client = va_arg(ap, ClientPtr); + u.res.id = va_arg(ap, XID); + u.res.rtype = va_arg(ap, RESTYPE); + u.res.res = va_arg(ap, pointer); + u.res.ptype = va_arg(ap, RESTYPE); + u.res.parent = va_arg(ap, pointer); + u.res.access_mode = va_arg(ap, Mask); + u.res.status = Success; /* default allow */ + prv = &u.res.status; break; - } - case XACE_DEVICE_ACCESS: { - XaceDeviceAccessRec rec; - rec.client = va_arg(ap, ClientPtr); - rec.dev = va_arg(ap, DeviceIntPtr); - rec.access_mode = va_arg(ap, Mask); - rec.status = Success; /* default allow */ - calldata = &rec; - prv = &rec.status; + case XACE_DEVICE_ACCESS: + u.dev.client = va_arg(ap, ClientPtr); + u.dev.dev = va_arg(ap, DeviceIntPtr); + u.dev.access_mode = va_arg(ap, Mask); + u.dev.status = Success; /* default allow */ + prv = &u.dev.status; break; - } - case XACE_SEND_ACCESS: { - XaceSendAccessRec rec; - rec.client = va_arg(ap, ClientPtr); - rec.dev = va_arg(ap, DeviceIntPtr); - rec.pWin = va_arg(ap, WindowPtr); - rec.events = va_arg(ap, xEventPtr); - rec.count = va_arg(ap, int); - rec.status = Success; /* default allow */ - calldata = &rec; - prv = &rec.status; + case XACE_SEND_ACCESS: + u.send.client = va_arg(ap, ClientPtr); + u.send.dev = va_arg(ap, DeviceIntPtr); + u.send.pWin = va_arg(ap, WindowPtr); + u.send.events = va_arg(ap, xEventPtr); + u.send.count = va_arg(ap, int); + u.send.status = Success; /* default allow */ + prv = &u.send.status; break; - } - case XACE_RECEIVE_ACCESS: { - XaceReceiveAccessRec rec; - rec.client = va_arg(ap, ClientPtr); - rec.pWin = va_arg(ap, WindowPtr); - rec.events = va_arg(ap, xEventPtr); - rec.count = va_arg(ap, int); - rec.status = Success; /* default allow */ - calldata = &rec; - prv = &rec.status; + case XACE_RECEIVE_ACCESS: + u.recv.client = va_arg(ap, ClientPtr); + u.recv.pWin = va_arg(ap, WindowPtr); + u.recv.events = va_arg(ap, xEventPtr); + u.recv.count = va_arg(ap, int); + u.recv.status = Success; /* default allow */ + prv = &u.recv.status; break; - } - case XACE_CLIENT_ACCESS: { - XaceClientAccessRec rec; - rec.client = va_arg(ap, ClientPtr); - rec.target = va_arg(ap, ClientPtr); - rec.access_mode = va_arg(ap, Mask); - rec.status = Success; /* default allow */ - calldata = &rec; - prv = &rec.status; + case XACE_CLIENT_ACCESS: + u.client.client = va_arg(ap, ClientPtr); + u.client.target = va_arg(ap, ClientPtr); + u.client.access_mode = va_arg(ap, Mask); + u.client.status = Success; /* default allow */ + prv = &u.client.status; break; - } - case XACE_EXT_ACCESS: { - XaceExtAccessRec rec; - rec.client = va_arg(ap, ClientPtr); - rec.ext = va_arg(ap, ExtensionEntry*); - rec.access_mode = DixGetAttrAccess; - rec.status = Success; /* default allow */ - calldata = &rec; - prv = &rec.status; + case XACE_EXT_ACCESS: + u.ext.client = va_arg(ap, ClientPtr); + u.ext.ext = va_arg(ap, ExtensionEntry*); + u.ext.access_mode = DixGetAttrAccess; + u.ext.status = Success; /* default allow */ + prv = &u.ext.status; break; - } - case XACE_SERVER_ACCESS: { - XaceServerAccessRec rec; - rec.client = va_arg(ap, ClientPtr); - rec.access_mode = va_arg(ap, Mask); - rec.status = Success; /* default allow */ - calldata = &rec; - prv = &rec.status; + case XACE_SERVER_ACCESS: + u.server.client = va_arg(ap, ClientPtr); + u.server.access_mode = va_arg(ap, Mask); + u.server.status = Success; /* default allow */ + prv = &u.server.status; break; - } case XACE_SCREEN_ACCESS: - case XACE_SCREENSAVER_ACCESS: { - XaceScreenAccessRec rec; - rec.client = va_arg(ap, ClientPtr); - rec.screen = va_arg(ap, ScreenPtr); - rec.access_mode = va_arg(ap, Mask); - rec.status = Success; /* default allow */ - calldata = &rec; - prv = &rec.status; + case XACE_SCREENSAVER_ACCESS: + u.screen.client = va_arg(ap, ClientPtr); + u.screen.screen = va_arg(ap, ScreenPtr); + u.screen.access_mode = va_arg(ap, Mask); + u.screen.status = Success; /* default allow */ + prv = &u.screen.status; break; - } - case XACE_AUTH_AVAIL: { - XaceAuthAvailRec rec; - rec.client = va_arg(ap, ClientPtr); - rec.authId = va_arg(ap, XID); - calldata = &rec; + case XACE_AUTH_AVAIL: + u.auth.client = va_arg(ap, ClientPtr); + u.auth.authId = va_arg(ap, XID); break; - } - case XACE_KEY_AVAIL: { - XaceKeyAvailRec rec; - rec.event = va_arg(ap, xEventPtr); - rec.keybd = va_arg(ap, DeviceIntPtr); - rec.count = va_arg(ap, int); - calldata = &rec; + case XACE_KEY_AVAIL: + u.key.event = va_arg(ap, xEventPtr); + u.key.keybd = va_arg(ap, DeviceIntPtr); + u.key.count = va_arg(ap, int); break; - } - default: { + default: va_end(ap); return 0; /* unimplemented hook number */ - } } va_end(ap); /* call callbacks and return result, if any. */ - CallCallbacks(&XaceHooks[hook], calldata); + CallCallbacks(&XaceHooks[hook], &u); return prv ? *prv : Success; } diff --git a/xorg-server/Xi/exevents.c b/xorg-server/Xi/exevents.c index 0bc2ecc81..fcb7e584b 100644 --- a/xorg-server/Xi/exevents.c +++ b/xorg-server/Xi/exevents.c @@ -223,6 +223,7 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to) { classes = to->unused_classes; to->intfeed = classes->intfeed; + classes->intfeed = NULL; } i = &to->intfeed; @@ -258,6 +259,7 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to) { classes = to->unused_classes; to->stringfeed = classes->stringfeed; + classes->stringfeed = NULL; } s = &to->stringfeed; @@ -293,6 +295,7 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to) { classes = to->unused_classes; to->bell = classes->bell; + classes->bell = NULL; } b = &to->bell; @@ -329,6 +332,7 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to) { classes = to->unused_classes; to->leds = classes->leds; + classes->leds = NULL; } l = &to->leds; @@ -379,6 +383,7 @@ DeepCopyKeyboardClasses(DeviceIntPtr from, DeviceIntPtr to) to->kbdfeed = classes->kbdfeed; if (!to->kbdfeed) InitKeyboardDeviceStruct(to, NULL, NULL, NULL); + classes->kbdfeed = NULL; } k = &to->kbdfeed; @@ -506,6 +511,7 @@ DeepCopyPointerClasses(DeviceIntPtr from, DeviceIntPtr to) { classes = to->unused_classes; to->ptrfeed = classes->ptrfeed; + classes->ptrfeed = NULL; } p = &to->ptrfeed; diff --git a/xorg-server/configure.ac b/xorg-server/configure.ac index 50313b616..14b4f1bb2 100644 --- a/xorg-server/configure.ac +++ b/xorg-server/configure.ac @@ -26,8 +26,8 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ(2.57) -AC_INIT([xorg-server], 1.8.99.905, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) -RELEASE_DATE="2010-07-14" +AC_INIT([xorg-server], 1.8.99.906, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +RELEASE_DATE="2010-08-12" AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE diff --git a/xorg-server/dix/devices.c b/xorg-server/dix/devices.c index 42ea9c8d8..ec43f294a 100644 --- a/xorg-server/dix/devices.c +++ b/xorg-server/dix/devices.c @@ -2111,9 +2111,6 @@ ProcChangePointerControl(ClientPtr client) REQUEST(xChangePointerControlReq); REQUEST_SIZE_MATCH(xChangePointerControlReq); - if (!mouse->ptrfeed->CtrlProc) - return BadDevice; - ctrl = mouse->ptrfeed->ctrl; if ((stuff->doAccel != xTrue) && (stuff->doAccel != xFalse)) { client->errorValue = stuff->doAccel; @@ -2161,7 +2158,7 @@ ProcChangePointerControl(ClientPtr client) for (dev = inputInfo.devices; dev; dev = dev->next) { if ((dev == mouse || (!IsMaster(dev) && dev->u.master == mouse)) && - dev->ptrfeed && dev->ptrfeed->CtrlProc) { + dev->ptrfeed) { rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixManageAccess); if (rc != Success) return rc; @@ -2170,9 +2167,8 @@ ProcChangePointerControl(ClientPtr client) for (dev = inputInfo.devices; dev; dev = dev->next) { if ((dev == mouse || (!IsMaster(dev) && dev->u.master == mouse)) && - dev->ptrfeed && dev->ptrfeed->CtrlProc) { + dev->ptrfeed) { dev->ptrfeed->ctrl = ctrl; - (*dev->ptrfeed->CtrlProc)(dev, &mouse->ptrfeed->ctrl); } } diff --git a/xorg-server/dix/dixfonts.c b/xorg-server/dix/dixfonts.c index 1c9da1e26..dc4b32cc2 100644 --- a/xorg-server/dix/dixfonts.c +++ b/xorg-server/dix/dixfonts.c @@ -321,10 +321,10 @@ doOpenFont(ClientPtr client, OFclosurePtr c) continue; } if (err == Suspended) { - if (!c->slept) { - c->slept = TRUE; - ClientSleep(client, (ClientSleepProcPtr)doOpenFont, (pointer) c); - } + if (!ClientIsAsleep(client)) + ClientSleep(client, (ClientSleepProcPtr)doOpenFont, c); + else + goto xinerama_sleep; return TRUE; } break; @@ -373,8 +373,8 @@ bail: SendErrorToClient(c->client, X_OpenFont, 0, c->fontid, FontToXError(err)); } - if (c->slept) - ClientWakeup(c->client); + ClientWakeup(c->client); +xinerama_sleep: for (i = 0; i < c->num_fpes; i++) { FreeFPE(c->fpe_list[i]); } @@ -460,7 +460,6 @@ OpenFont(ClientPtr client, XID fid, Mask flags, unsigned lenfname, char *pfontna c->current_fpe = 0; c->num_fpes = num_fpes; c->fnamelen = lenfname; - c->slept = FALSE; c->flags = flags; c->non_cachable_font = cached; @@ -622,12 +621,12 @@ doListFontsAndAliases(ClientPtr client, LFclosurePtr c) c->names); if (err == Suspended) { - if (!c->slept) { - c->slept = TRUE; + if (!ClientIsAsleep(client)) ClientSleep(client, - (ClientSleepProcPtr)doListFontsAndAliases, - (pointer) c); - } + (ClientSleepProcPtr)doListFontsAndAliases, + c); + else + goto xinerama_sleep; return TRUE; } @@ -650,12 +649,12 @@ doListFontsAndAliases(ClientPtr client, LFclosurePtr c) c->current.patlen, c->current.max_names - c->names->nnames, &c->current.private); if (err == Suspended) { - if (!c->slept) { + if (!ClientIsAsleep(client)) ClientSleep(client, (ClientSleepProcPtr)doListFontsAndAliases, - (pointer) c); - c->slept = TRUE; - } + c); + else + goto xinerama_sleep; return TRUE; } if (err == Successful) @@ -668,12 +667,12 @@ doListFontsAndAliases(ClientPtr client, LFclosurePtr c) ((pointer) c->client, fpe, &name, &namelen, &tmpname, &resolvedlen, c->current.private); if (err == Suspended) { - if (!c->slept) { + if (ClientIsAsleep(client)) ClientSleep(client, (ClientSleepProcPtr)doListFontsAndAliases, - (pointer) c); - c->slept = TRUE; - } + c); + else + goto xinerama_sleep; return TRUE; } if (err == FontNameAlias) { @@ -822,8 +821,8 @@ finish: free(bufferStart); bail: - if (c->slept) - ClientWakeup(client); + ClientWakeup(client); +xinerama_sleep: for (i = 0; i < c->num_fpes; i++) FreeFPE(c->fpe_list[i]); free(c->fpe_list); @@ -881,7 +880,6 @@ ListFonts(ClientPtr client, unsigned char *pattern, unsigned length, c->current.list_started = FALSE; c->current.private = 0; c->haveSaved = FALSE; - c->slept = FALSE; c->savedName = 0; doListFontsAndAliases(client, c); return Success; @@ -928,11 +926,11 @@ doListFontsWithInfo(ClientPtr client, LFWIclosurePtr c) c->current.max_names, &c->current.private); if (err == Suspended) { - if (!c->slept) - { - ClientSleep(client, (ClientSleepProcPtr)doListFontsWithInfo, c); - c->slept = TRUE; - } + if (!ClientIsAsleep(client)) + ClientSleep(client, + (ClientSleepProcPtr)doListFontsWithInfo, c); + else + goto xinerama_sleep; return TRUE; } if (err == Successful) @@ -947,13 +945,11 @@ doListFontsWithInfo(ClientPtr client, LFWIclosurePtr c) &numFonts, c->current.private); if (err == Suspended) { - if (!c->slept) - { + if (!ClientIsAsleep(client)) ClientSleep(client, - (ClientSleepProcPtr)doListFontsWithInfo, - c); - c->slept = TRUE; - } + (ClientSleepProcPtr)doListFontsWithInfo, c); + else + goto xinerama_sleep; return TRUE; } } @@ -1098,8 +1094,8 @@ finish: - sizeof(xGenericReply)); WriteSwappedDataToClient(client, length, &finalReply); bail: - if (c->slept) - ClientWakeup(client); + ClientWakeup(client); +xinerama_sleep: for (i = 0; i < c->num_fpes; i++) FreeFPE(c->fpe_list[i]); free(c->reply); @@ -1154,7 +1150,6 @@ StartListFontsWithInfo(ClientPtr client, int length, unsigned char *pattern, c->current.private = 0; c->savedNumFonts = 0; c->haveSaved = FALSE; - c->slept = FALSE; c->savedName = 0; doListFontsWithInfo(client, c); return Success; @@ -1181,7 +1176,7 @@ doPolyText(ClientPtr client, PTclosurePtr c) fpe = c->pGC->font->fpe; (*fpe_functions[fpe->type].client_died) ((pointer) client, fpe); - if (c->slept) + if (ClientIsAsleep(client)) { /* Client has died, but we cannot bail out right now. We need to clean up after the work we did when going to @@ -1198,7 +1193,7 @@ doPolyText(ClientPtr client, PTclosurePtr c) } /* Make sure our drawable hasn't disappeared while we slept. */ - if (c->slept && c->pDraw) + if (ClientIsAsleep(client) && c->pDraw) { DrawablePtr pDraw; dixLookupDrawable(&pDraw, c->did, client, 0, DixWriteAccess); @@ -1212,7 +1207,7 @@ doPolyText(ClientPtr client, PTclosurePtr c) } } - client_state = c->slept ? SLEEPING : NEVER_SLEPT; + client_state = ClientIsAsleep(client) ? SLEEPING : NEVER_SLEPT; while (c->endReq - c->pElt > TextEltHeader) { @@ -1295,7 +1290,7 @@ doPolyText(ClientPtr client, PTclosurePtr c) if (lgerr == Suspended) { - if (!c->slept) { + if (!ClientIsAsleep(client)) { int len; GC *pGC; PTclosurePtr new_closure; @@ -1368,15 +1363,14 @@ doPolyText(ClientPtr client, PTclosurePtr c) c->pGC = pGC; ValidateGC(c->pDraw, c->pGC); - c->slept = TRUE; - ClientSleep(client, - (ClientSleepProcPtr)doPolyText, - (pointer) c); + ClientSleep(client, (ClientSleepProcPtr)doPolyText, c); /* Set up to perform steps 3 and 4 */ client_state = START_SLEEP; continue; /* on to steps 3 and 4 */ } + else + goto xinerama_sleep; return TRUE; } else if (lgerr != Successful) @@ -1419,9 +1413,10 @@ bail: #endif SendErrorToClient(c->client, c->reqType, 0, 0, err); } - if (c->slept) + if (ClientIsAsleep(client)) { ClientWakeup(c->client); +xinerama_sleep: ChangeGC(NullClient, c->pGC, clearGCmask, clearGC); /* Unreference the font from the scratch GC */ @@ -1460,7 +1455,6 @@ PolyText(ClientPtr client, DrawablePtr pDraw, GC *pGC, unsigned char *pElt, local_closure.pGC = pGC; local_closure.did = did; local_closure.err = Success; - local_closure.slept = FALSE; (void) doPolyText(client, &local_closure); return Success; @@ -1485,7 +1479,7 @@ doImageText(ClientPtr client, ITclosurePtr c) } /* Make sure our drawable hasn't disappeared while we slept. */ - if (c->slept && c->pDraw) + if (ClientIsAsleep(client) && c->pDraw) { DrawablePtr pDraw; dixLookupDrawable(&pDraw, c->did, client, 0, DixWriteAccess); @@ -1502,7 +1496,7 @@ doImageText(ClientPtr client, ITclosurePtr c) lgerr = LoadGlyphs(client, c->pGC->font, c->nChars, c->itemSize, c->data); if (lgerr == Suspended) { - if (!c->slept) { + if (!ClientIsAsleep(client)) { GC *pGC; unsigned char *data; ITclosurePtr new_closure; @@ -1555,9 +1549,10 @@ doImageText(ClientPtr client, ITclosurePtr c) c->pGC = pGC; ValidateGC(c->pDraw, c->pGC); - c->slept = TRUE; - ClientSleep(client, (ClientSleepProcPtr)doImageText, (pointer) c); + ClientSleep(client, (ClientSleepProcPtr)doImageText, c); } + else + goto xinerama_sleep; return TRUE; } else if (lgerr != Successful) @@ -1576,9 +1571,10 @@ bail: if (err != Success && c->client != serverClient) { SendErrorToClient(c->client, c->reqType, 0, 0, err); } - if (c->slept) + if (ClientIsAsleep(client)) { ClientWakeup(c->client); +xinerama_sleep: ChangeGC(NullClient, c->pGC, clearGCmask, clearGC); /* Unreference the font from the scratch GC */ @@ -1616,7 +1612,6 @@ ImageText(ClientPtr client, DrawablePtr pDraw, GC *pGC, int nChars, local_closure.itemSize = 2; } local_closure.did = did; - local_closure.slept = FALSE; (void) doImageText(client, &local_closure); return Success; diff --git a/xorg-server/dix/getevents.c b/xorg-server/dix/getevents.c index 3885cd771..559b20b55 100644 --- a/xorg-server/dix/getevents.c +++ b/xorg-server/dix/getevents.c @@ -652,8 +652,8 @@ clipValuators(DeviceIntPtr pDev, int first_valuator, int num_valuators, * events if a DCCE was generated. * @return The updated @events pointer. */ -static EventListPtr -updateFromMaster(EventListPtr events, DeviceIntPtr dev, int type, int *num_events) +EventListPtr +UpdateFromMaster(EventListPtr events, DeviceIntPtr dev, int type, int *num_events) { DeviceIntPtr master; @@ -929,7 +929,7 @@ GetKeyboardValuatorEvents(EventList *events, DeviceIntPtr pDev, int type, num_events = 1; - events = updateFromMaster(events, pDev, DEVCHANGE_KEYBOARD_EVENT, &num_events); + events = UpdateFromMaster(events, pDev, DEVCHANGE_KEYBOARD_EVENT, &num_events); /* Handle core repeating, via press/release/press/release. */ if (type == KeyPress && key_is_down(pDev, key_code, KEY_POSTED)) { @@ -1091,7 +1091,7 @@ GetPointerEvents(EventList *events, DeviceIntPtr pDev, int type, int buttons, (type == MotionNotify && num_valuators <= 0)) return 0; - events = updateFromMaster(events, pDev, DEVCHANGE_POINTER_EVENT, &num_events); + events = UpdateFromMaster(events, pDev, DEVCHANGE_POINTER_EVENT, &num_events); raw = (RawDeviceEvent*)events->event; events++; @@ -1206,7 +1206,7 @@ GetProximityEvents(EventList *events, DeviceIntPtr pDev, int type, (num_valuators + first_valuator) > pDev->valuator->numAxes) return 0; - events = updateFromMaster(events, pDev, DEVCHANGE_POINTER_EVENT, &num_events); + events = UpdateFromMaster(events, pDev, DEVCHANGE_POINTER_EVENT, &num_events); event = (DeviceEvent *) events->event; init_event(pDev, event, GetTimeInMillis()); diff --git a/xorg-server/doc/xml/Xserver-spec.xml b/xorg-server/doc/xml/Xserver-spec.xml index a457063bd..c8168f4f0 100644 --- a/xorg-server/doc/xml/Xserver-spec.xml +++ b/xorg-server/doc/xml/Xserver-spec.xml @@ -92,6 +92,13 @@ efw Revised for devPrivates changes + + 3.5 + July 2010 + ac + Revised for Xorg 1.9 devPrivates changes + and 1.8 CreateNewResourceType changes + Copyright © 1994 X Consortium, Inc., 2004 X.org Foundation, Inc. @@ -3753,7 +3760,7 @@ Also included in each GC is support for dynamic devPrivates, which the DDX can use for any purpose (see below). The DIX routines available for manipulating GCs are -CreateGC, ChangeGC, CopyGC, SetClipRects, SetDashes, and FreeGC. +CreateGC, ChangeGC, ChangeGCXIDs, CopyGC, SetClipRects, SetDashes, and FreeGC.
GCPtr CreateGC(pDrawable, mask, pval, pStatus) @@ -3762,10 +3769,17 @@ CreateGC, ChangeGC, CopyGC, SetClipRects, SetDashes, and FreeGC. XID *pval; int *pStatus; - int ChangeGC(pGC, mask, pval) + int ChangeGC(client, pGC, mask, pUnion) + ClientPtr client; GCPtr pGC; BITS32 mask; - XID *pval; + ChangeGCValPtr pUnion; + + int ChangeGCXIDs(client, pGC, mask, pC32) + ClientPtr client; + GCPtr pGC; + BITS32 mask; + CARD32 *pC32; int CopyGC(pgcSrc, pgcDst, mask) GCPtr pgcSrc; @@ -4808,32 +4822,68 @@ Two new extensibility concepts have been developed for release 4, Wrappers and devPrivates. These replace the R3 GCInterest queues, which were not a general enough mechanism for many extensions and only provided hooks into a single data structure. devPrivates have been revised substantially for -X.org X server relase 1.5. +X.Org X server release 1.5, and updated again for the 1.9 release.
devPrivates devPrivates provides a way to attach arbitrary private data to various server structures. Any structure which contains a devPrivates field of -type PrivateRec supports this mechanism. Private data can be allocated at -any time during an object's life cycle and callbacks are available to initialize and clean -up allocated space. +type PrivateRec supports this mechanism. Some structures allow +allocating space for private data after some objects have been created, others +require all space allocations be registered before any objects of that type +are created. Xserver/include/privates.h +lists which of these cases applies to each structure containing +devPrivates. + + +To request private space, use +
+ Bool dixRegisterPrivateKey(DevPrivateKey key, DevPrivateType type, unsigned size); +
+The first argument is a pointer to a DevPrivateKeyRec which +will serve as the unique identifier for the private data. Typically this is +the address of a static DevPrivateKeyRec in your code. +The second argument is the class of objects for which this key will apply. +The third argument is the size of the space being requested, or +0 to only allocate a pointer that the caller will manage. +If space is requested, this space will be automatically freed when the object +is destroyed. Note that a call to dixSetPrivate +that changes the pointer value may cause the space to be unreachable by the caller, however it will still be automatically freed. +The function returns TRUE unless memory allocation fails. +If the function is called more than once on the same key, all calls must use +the same value for size or the server will abort.
+ + +To request private space and have the server manage the key, use +
+ DevPrivateKey dixCreatePrivateKey(DevPrivateType type, unsigned size); +
+The type and size arguments are +the same as those to dixRegisterPrivateKey but this +function allocates a DevPrivateKeyRec and returns a pointer to it +instead of requiring the caller to pass a pointer to an existing structure. +The server will free it automatically when the privates system is restarted +at server reset time.
+ To attach a piece of private data to an object, use:
- int dixSetPrivate(PrivateRec **privates, const DevPrivateKey key, pointer val) + void dixSetPrivate(PrivateRec **privates, const DevPrivateKey key, pointer val)
-The first argument is the address of the devPrivates field -in the target structure. This field is managed privately by the DIX layer and -should not be directly modified. The second argument is some address value which -will serve as the unique identifier for the private data. Typically this is the address -of some global variable in your code. Only one piece of data with a given key can be attached to an object. However, you -can use the same key to store data in any object that supports the devPrivates mechanism. The third -argument is the value to store.
+The first argument is the address of the devPrivates +field in the target structure. This field is managed privately by the DIX +layer and should not be directly modified. The second argument is a pointer +to the DevPrivateKeyRec which you registered with +dixRegisterPrivateKey or allocated with +dixCreatePrivateKey. Only one +piece of data with a given key can be attached to an object, and in most cases +each key is specific to the type of object it was registered for. (An +exception is the PRIVATE_XSELINUX class which applies to multiple object types.) +The third argument is the value to store. -If private data with the given key is already associated with the object, dixSetPrivate will -overwrite the old value with the new one. Otherwise, new space will be allocated to hold the pointer value. -The function returns TRUE unless memory allocation fails, but note that since memory allocation only -occurs on the first reference to the private data, all subsequent calls are guaranteed to succeed. +If private data with the given key is already associated with the object, +dixSetPrivate will overwrite the old value with the +new one. To look up a piece of private data, use one of: @@ -4842,56 +4892,22 @@ To look up a piece of private data, use one of: pointer *dixLookupPrivateAddr(PrivateRec **privates, const DevPrivateKey key)
The first argument is the address of the devPrivates field -in the target structure. The second argument is the key to look up. If private data with the given key is already associated -with the object, dixLookupPrivate will return the stored pointer value while dixLookupPrivateAddr -will return the address of the stored pointer. Otherwise, new space will be first allocated to hold the pointer value -and it will be initialized to NULL. Both functions return NULL if memory allocation fails, but note that -since memory allocation only occurs on the first reference to the private data, all subsequent calls are guaranteed to succeed.
- - -To request pre-allocated private space, use -
- int dixRequestPrivate(const DevPrivateKey key, unsigned size) -
-The first argument is the key for which space is being requested. The second argument is the size of the space being requested. -After this function has been called, -future calls to dixLookupPrivate or dixLookupPrivateAddr that cause the private pointer -to be initially allocated will also allocate size bytes of space cleared to zero and initialize the private pointer to point -to this space instead of NULL. This space will be automatically freed. Note that a call to dixSetPrivate -that changes the pointer value may cause the space to be unreachable by the caller, however it will still be automatically freed. -The function returns TRUE unless memory allocation fails. If the function is called more than once, the largest value -of size is used.
- - -To set callbacks for initializing and cleaning up private space, use -
- typedef struct { - DevPrivateKey key; - pointer *value; - } PrivateCallbackRec; - - int dixRegisterPrivateInitFunc(const DevPrivateKey key, - CallbackProcPtr callback, - pointer userdata) - int dixRegisterPrivateDeleteFunc(const DevPrivateKey key, - CallbackProcPtr callback, - pointer userdata) -
-The first argument is the key for which the callbacks are being registered. The second argument is the callback function. The third argument -will be passed as the user data argument to the callback function when it is called. The call data argument to the callback is a pointer to -a structure of type PrivateCallbackRec.
- -The init callback is called immediately after new private space has been allocated for the given key. The delete callback is called immediately -before the private space is freed when the object is being destroyed. The PrivateCallbackRec structure contains the devPrivate key -and the address of the private pointer. The init callback may be used to initialize any pre-allocated space requested by -dixRequestPrivate, while the delete callback may be used to free any data stored there. However the callbacks are called even -if no pre-allocated space was requested. - - -When implementing new server resource objects that support devPrivates, there are three steps to perform: -Declare a field of type PrivateRec * in your structure; +in the target structure. The second argument is the key to look up. +If a non-zero size was given when the key was registered, or if private data +with the given key is already associated with the object, then +dixLookupPrivate will return the pointer value +while dixLookupPrivateAddr +will return the address of the pointer. + + +When implementing new server resource objects that support devPrivates, there +are four steps to perform: +Add a type value to the DevPrivateType enum in +Xserver/include/privates.h, +declare a field of type PrivateRec * in your structure; initialize this field to NULL when creating any objects; and -call the dixFreePrivates function, passing in the field value, when freeing any objects. +when freeing any objects call the dixFreePrivates or +dixFreeObjectWithPrivates function.
Wrappers diff --git a/xorg-server/doc/xml/xmlrules.in b/xorg-server/doc/xml/xmlrules.in index 667cc2ebb..1222bb5af 100644 --- a/xorg-server/doc/xml/xmlrules.in +++ b/xorg-server/doc/xml/xmlrules.in @@ -48,10 +48,12 @@ xorg.css: $(STYLESHEET_SRCDIR)/xorg.css endif if HAVE_XMLTO +if HAVE_XMLTO_TEXT BUILT_DOC_FILES += $(TXT_FILES) .xml.txt: @rm -f $@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) txt $< +endif BUILT_DOC_FILES += $(HTML_FILES) .xml.html: diff --git a/xorg-server/fb/fbpict.c b/xorg-server/fb/fbpict.c index d6dc30d2c..9e2c35c4b 100644 --- a/xorg-server/fb/fbpict.c +++ b/xorg-server/fb/fbpict.c @@ -332,8 +332,11 @@ create_bits_picture (PicturePtr pict, return image; } +static pixman_image_t * +image_from_pict_internal (PicturePtr pict, Bool has_clip, int *xoff, int *yoff, Bool is_alpha_map); + static void -set_image_properties (pixman_image_t *image, PicturePtr pict, Bool has_clip, int *xoff, int *yoff) +set_image_properties (pixman_image_t *image, PicturePtr pict, Bool has_clip, int *xoff, int *yoff, Bool is_alpha_map) { pixman_repeat_t repeat; pixman_filter_t filter; @@ -382,10 +385,13 @@ set_image_properties (pixman_image_t *image, PicturePtr pict, Bool has_clip, int pixman_image_set_repeat (image, repeat); - if (pict->alphaMap) + /* Fetch alpha map unless 'pict' is being used + * as the alpha map for this operation + */ + if (pict->alphaMap && !is_alpha_map) { int alpha_xoff, alpha_yoff; - pixman_image_t *alpha_map = image_from_pict (pict->alphaMap, FALSE, &alpha_xoff, &alpha_yoff); + pixman_image_t *alpha_map = image_from_pict_internal (pict->alphaMap, FALSE, &alpha_xoff, &alpha_yoff, TRUE); pixman_image_set_alpha_map ( image, alpha_map, pict->alphaOrigin.x, pict->alphaOrigin.y); @@ -417,8 +423,8 @@ set_image_properties (pixman_image_t *image, PicturePtr pict, Bool has_clip, int pixman_image_set_source_clipping (image, TRUE); } -pixman_image_t * -image_from_pict (PicturePtr pict, Bool has_clip, int *xoff, int *yoff) +static pixman_image_t * +image_from_pict_internal (PicturePtr pict, Bool has_clip, int *xoff, int *yoff, Bool is_alpha_map) { pixman_image_t *image = NULL; @@ -452,11 +458,17 @@ image_from_pict (PicturePtr pict, Bool has_clip, int *xoff, int *yoff) } if (image) - set_image_properties (image, pict, has_clip, xoff, yoff); + set_image_properties (image, pict, has_clip, xoff, yoff, is_alpha_map); return image; } +pixman_image_t * +image_from_pict (PicturePtr pict, Bool has_clip, int *xoff, int *yoff) +{ + return image_from_pict_internal (pict, has_clip, xoff, yoff, FALSE); +} + void free_pixman_pict (PicturePtr pict, pixman_image_t *image) { diff --git a/xorg-server/hw/xfree86/common/xf86Xinput.c b/xorg-server/hw/xfree86/common/xf86Xinput.c index 845bde87a..8ea50aa94 100644 --- a/xorg-server/hw/xfree86/common/xf86Xinput.c +++ b/xorg-server/hw/xfree86/common/xf86Xinput.c @@ -264,9 +264,6 @@ ApplyAccelerationSettings(DeviceIntPtr dev){ if (i >= 0) dev->ptrfeed->ctrl.threshold = i; - /* mostly a no-op anyway */ - (*dev->ptrfeed->CtrlProc)(dev, &dev->ptrfeed->ctrl); - xf86Msg(X_CONFIG, "%s: (accel) acceleration factor: %.3f\n", local->name, ((float)dev->ptrfeed->ctrl.num)/ ((float)dev->ptrfeed->ctrl.den)); diff --git a/xorg-server/hw/xfree86/parser/Input.c b/xorg-server/hw/xfree86/parser/Input.c index 8adbee9ae..739e49ba4 100644 --- a/xorg-server/hw/xfree86/parser/Input.c +++ b/xorg-server/hw/xfree86/parser/Input.c @@ -59,6 +59,7 @@ #include #endif +#include "os.h" #include "xf86Parser.h" #include "xf86tokens.h" #include "Configint.h" @@ -102,8 +103,10 @@ xf86parseInputSection (void) case DRIVER: if (xf86getSubToken (&(ptr->inp_comment)) != STRING) Error (QUOTE_MSG, "Driver"); - if (strcmp(val.str, "keyboard") == 0) - ptr->inp_driver = "kbd"; + if (strcmp(val.str, "keyboard") == 0) { + ptr->inp_driver = strdup("kbd"); + free(val.str); + } else ptr->inp_driver = val.str; break; diff --git a/xorg-server/hw/xfree86/parser/InputClass.c b/xorg-server/hw/xfree86/parser/InputClass.c index 85161c38a..ddf344a0f 100644 --- a/xorg-server/hw/xfree86/parser/InputClass.c +++ b/xorg-server/hw/xfree86/parser/InputClass.c @@ -111,8 +111,10 @@ xf86parseInputClassSection(void) case DRIVER: if (xf86getSubToken(&(ptr->comment)) != STRING) Error(QUOTE_MSG, "Driver"); - if (strcmp(val.str, "keyboard") == 0) - ptr->driver = "kbd"; + if (strcmp(val.str, "keyboard") == 0) { + ptr->driver = strdup("kbd"); + free(val.str); + } else ptr->driver = val.str; break; diff --git a/xorg-server/hw/xwin/glx/indirect.c b/xorg-server/hw/xwin/glx/indirect.c index 8bc289172..d2ed16e7c 100644 --- a/xorg-server/hw/xwin/glx/indirect.c +++ b/xorg-server/hw/xwin/glx/indirect.c @@ -375,10 +375,12 @@ static __GLXscreen *glxWinScreenProbe(ScreenPtr pScreen); static __GLXcontext *glxWinCreateContext(__GLXscreen *screen, __GLXconfig *modes, __GLXcontext *baseShareContext); -static __GLXdrawable *glxWinCreateDrawable(__GLXscreen *screen, +static __GLXdrawable *glxWinCreateDrawable(ClientPtr client, + __GLXscreen *screen, DrawablePtr pDraw, - int type, XID drawId, + int type, + XID glxDrawId, __GLXconfig *conf); static Bool glxWinRealizeWindow(WindowPtr pWin); @@ -901,10 +903,12 @@ glxWinDrawableDestroy(__GLXdrawable *base) } static __GLXdrawable * -glxWinCreateDrawable(__GLXscreen *screen, +glxWinCreateDrawable(ClientPtr client, + __GLXscreen *screen, DrawablePtr pDraw, - int type, XID drawId, + int type, + XID glxDrawId, __GLXconfig *conf) { __GLXWinDrawable *glxPriv; @@ -916,7 +920,7 @@ glxWinCreateDrawable(__GLXscreen *screen, memset(glxPriv, 0, sizeof *glxPriv); - if(!__glXDrawableInit(&glxPriv->base, screen, pDraw, type, drawId, conf)) { + if(!__glXDrawableInit(&glxPriv->base, screen, pDraw, type, glxDrawId, conf)) { free(glxPriv); return NULL; } diff --git a/xorg-server/include/closestr.h b/xorg-server/include/closestr.h index 2cd67b1d3..a64798608 100644 --- a/xorg-server/include/closestr.h +++ b/xorg-server/include/closestr.h @@ -1,156 +1,151 @@ -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -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 OPEN GROUP 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 Open Group 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 Open Group. - -*/ - - -#ifndef CLOSESTR_H -#define CLOSESTR_H - -#include -#include "closure.h" -#include "dix.h" -#include "misc.h" -#include "gcstruct.h" - -/* closure structures */ - -/* OpenFont */ - -typedef struct _OFclosure { - ClientPtr client; - short current_fpe; - short num_fpes; - FontPathElementPtr *fpe_list; - Mask flags; - Bool slept; - -/* XXX -- get these from request buffer instead? */ - char *origFontName; - int origFontNameLen; - XID fontid; - char *fontname; - int fnamelen; - FontPtr non_cachable_font; -} OFclosureRec; - -/* ListFontsWithInfo */ - -#define XLFDMAXFONTNAMELEN 256 -typedef struct _LFWIstate { - char pattern[XLFDMAXFONTNAMELEN]; - int patlen; - int current_fpe; - int max_names; - Bool list_started; - pointer private; -} LFWIstateRec, *LFWIstatePtr; - -typedef struct _LFWIclosure { - ClientPtr client; - int num_fpes; - FontPathElementPtr *fpe_list; - xListFontsWithInfoReply *reply; - int length; - LFWIstateRec current; - LFWIstateRec saved; - int savedNumFonts; - Bool haveSaved; - Bool slept; - char *savedName; -} LFWIclosureRec; - -/* ListFonts */ - -typedef struct _LFclosure { - ClientPtr client; - int num_fpes; - FontPathElementPtr *fpe_list; - FontNamesPtr names; - LFWIstateRec current; - LFWIstateRec saved; - Bool haveSaved; - Bool slept; - char *savedName; - int savedNameLen; -} LFclosureRec; - -/* PolyText */ - -typedef - int (* PolyTextPtr)( - DrawablePtr /* pDraw */, - GCPtr /* pGC */, - int /* x */, - int /* y */, - int /* count */, - void * /* chars or shorts */ - ); - -typedef struct _PTclosure { - ClientPtr client; - DrawablePtr pDraw; - GC *pGC; - unsigned char *pElt; - unsigned char *endReq; - unsigned char *data; - int xorg; - int yorg; - CARD8 reqType; - PolyTextPtr polyText; - int itemSize; - XID did; - int err; - Bool slept; -} PTclosureRec; - -/* ImageText */ - -typedef - void (* ImageTextPtr)( - DrawablePtr /* pDraw */, - GCPtr /* pGC */, - int /* x */, - int /* y */, - int /* count */, - void * /* chars or shorts */ - ); - -typedef struct _ITclosure { - ClientPtr client; - DrawablePtr pDraw; - GC *pGC; - BYTE nChars; - unsigned char *data; - int xorg; - int yorg; - CARD8 reqType; - ImageTextPtr imageText; - int itemSize; - XID did; - Bool slept; -} ITclosureRec; -#endif /* CLOSESTR_H */ +/* + +Copyright 1991, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +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 OPEN GROUP 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 Open Group 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 Open Group. + +*/ + + +#ifndef CLOSESTR_H +#define CLOSESTR_H + +#include +#include "closure.h" +#include "dix.h" +#include "misc.h" +#include "gcstruct.h" + +/* closure structures */ + +/* OpenFont */ + +typedef struct _OFclosure { + ClientPtr client; + short current_fpe; + short num_fpes; + FontPathElementPtr *fpe_list; + Mask flags; + +/* XXX -- get these from request buffer instead? */ + char *origFontName; + int origFontNameLen; + XID fontid; + char *fontname; + int fnamelen; + FontPtr non_cachable_font; +} OFclosureRec; + +/* ListFontsWithInfo */ + +#define XLFDMAXFONTNAMELEN 256 +typedef struct _LFWIstate { + char pattern[XLFDMAXFONTNAMELEN]; + int patlen; + int current_fpe; + int max_names; + Bool list_started; + pointer private; +} LFWIstateRec, *LFWIstatePtr; + +typedef struct _LFWIclosure { + ClientPtr client; + int num_fpes; + FontPathElementPtr *fpe_list; + xListFontsWithInfoReply *reply; + int length; + LFWIstateRec current; + LFWIstateRec saved; + int savedNumFonts; + Bool haveSaved; + char *savedName; +} LFWIclosureRec; + +/* ListFonts */ + +typedef struct _LFclosure { + ClientPtr client; + int num_fpes; + FontPathElementPtr *fpe_list; + FontNamesPtr names; + LFWIstateRec current; + LFWIstateRec saved; + Bool haveSaved; + char *savedName; + int savedNameLen; +} LFclosureRec; + +/* PolyText */ + +typedef + int (* PolyTextPtr)( + DrawablePtr /* pDraw */, + GCPtr /* pGC */, + int /* x */, + int /* y */, + int /* count */, + void * /* chars or shorts */ + ); + +typedef struct _PTclosure { + ClientPtr client; + DrawablePtr pDraw; + GC *pGC; + unsigned char *pElt; + unsigned char *endReq; + unsigned char *data; + int xorg; + int yorg; + CARD8 reqType; + PolyTextPtr polyText; + int itemSize; + XID did; + int err; +} PTclosureRec; + +/* ImageText */ + +typedef + void (* ImageTextPtr)( + DrawablePtr /* pDraw */, + GCPtr /* pGC */, + int /* x */, + int /* y */, + int /* count */, + void * /* chars or shorts */ + ); + +typedef struct _ITclosure { + ClientPtr client; + DrawablePtr pDraw; + GC *pGC; + BYTE nChars; + unsigned char *data; + int xorg; + int yorg; + CARD8 reqType; + ImageTextPtr imageText; + int itemSize; + XID did; +} ITclosureRec; +#endif /* CLOSESTR_H */ diff --git a/xorg-server/include/input.h b/xorg-server/include/input.h index 33b94fd3e..1930a308b 100644 --- a/xorg-server/include/input.h +++ b/xorg-server/include/input.h @@ -439,6 +439,12 @@ extern void CreateClassesChangedEvent(EventListPtr event, DeviceIntPtr master, DeviceIntPtr slave, int type); +extern EventListPtr UpdateFromMaster( + EventListPtr events, + DeviceIntPtr pDev, + int type, + int *num_events); + extern _X_EXPORT int GetPointerEvents( EventListPtr events, DeviceIntPtr pDev, diff --git a/xorg-server/include/privates.h b/xorg-server/include/privates.h index 9b578e467..c2b7b43ec 100644 --- a/xorg-server/include/privates.h +++ b/xorg-server/include/privates.h @@ -81,10 +81,10 @@ typedef struct _DevPrivateKeyRec { * you can get the address of the extra space and store whatever data you like * there. * - * You may call dixRegisterPrivate more than once on the same key, but the + * You may call dixRegisterPrivateKey more than once on the same key, but the * size and type must match or the server will abort. * - * dixRegisterPrivateIndex returns FALSE if it fails to allocate memory + * dixRegisterPrivateKey returns FALSE if it fails to allocate memory * during its operation. */ extern _X_EXPORT Bool diff --git a/xorg-server/miext/rootless/rootlessCommon.c b/xorg-server/miext/rootless/rootlessCommon.c index e97a53725..4f059801b 100644 --- a/xorg-server/miext/rootless/rootlessCommon.c +++ b/xorg-server/miext/rootless/rootlessCommon.c @@ -92,6 +92,9 @@ IsFramedWindow(WindowPtr pWin) { WindowPtr top; + if (!dixPrivateKeyRegistered(&rootlessWindowPrivateKeyRec)) + return FALSE; + if (!pWin->realized) return FALSE; top = TopLevelParent(pWin); diff --git a/xorg-server/xkb/xkbActions.c b/xorg-server/xkb/xkbActions.c index 24c7341ed..a60b20bbd 100644 --- a/xorg-server/xkb/xkbActions.c +++ b/xorg-server/xkb/xkbActions.c @@ -1332,35 +1332,53 @@ xkbStateNotify sn; return; } +/* + * The event is injected into the event processing, not the EQ. Thus, + * ensure that we restore the master after the event sequence to the + * original set of classes. Otherwise, the master remains on the XTEST + * classes and drops events that don't fit into the XTEST layout (e.g. + * events with more than 2 valuators). + * + * FIXME: EQ injection in the processing stage is not designed for, so this + * is a rather awkward hack. The event list returned by GetPointerEvents() + * and friends is always prefixed with a DCE if the last _posted_ device was + * different. For normal events, this sequence then resets the master during + * the processing stage. Since we inject the PointerKey events in the + * processing stage though, we need to manually reset to restore the + * previous order, because the events already in the EQ must be sent for the + * right device. + * So we post-fix the event list we get from GPE with a DCE back to the + * previous slave device. + * + * First one on drinking island wins! + */ static void -XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y) +InjectPointerKeyEvents(DeviceIntPtr dev, int type, int button, int flags, int num_valuators, int *valuators) { + ScreenPtr pScreen; EventListPtr events; int nevents, i; - DeviceIntPtr ptr; - ScreenPtr pScreen; + DeviceIntPtr ptr, mpointer, lastSlave = NULL; Bool saveWait; - int gpe_flags = 0; - if (IsMaster(dev)) - ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); - else if (!dev->u.master) + if (IsMaster(dev)) { + mpointer = GetMaster(dev, MASTER_POINTER); + lastSlave = mpointer->u.lastSlave; + ptr = GetXTestDevice(mpointer); + } else if (!dev->u.master) ptr = dev; else return; - if (flags & XkbSA_MoveAbsoluteX || flags & XkbSA_MoveAbsoluteY) - gpe_flags = POINTER_ABSOLUTE; - else - gpe_flags = POINTER_RELATIVE; - events = InitEventList(GetMaximumEventsNum()); + events = InitEventList(GetMaximumEventsNum() + 1); OsBlockSignals(); pScreen = miPointerGetScreen(ptr); saveWait = miPointerSetWaitForUpdate(pScreen, FALSE); - nevents = GetPointerEvents(events, ptr, - MotionNotify, 0, - gpe_flags, 0, 2, (int[]){x, y}); + nevents = GetPointerEvents(events, ptr, type, button, flags, 0, + num_valuators, valuators); + if (IsMaster(dev) && (lastSlave && lastSlave != ptr)) + UpdateFromMaster(&events[nevents], lastSlave, DEVCHANGE_POINTER_EVENT, &nevents); miPointerSetWaitForUpdate(pScreen, saveWait); OsReleaseSignals(); @@ -1368,14 +1386,31 @@ XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y) mieqProcessDeviceEvent(ptr, (InternalEvent*)events[i].event, NULL); FreeEventList(events, GetMaximumEventsNum()); + +} + +static void +XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y) +{ + int gpe_flags = 0; + + /* ignore attached SDs */ + if (!IsMaster(dev) && GetMaster(dev, MASTER_POINTER) != NULL) + return; + + if (flags & XkbSA_MoveAbsoluteX || flags & XkbSA_MoveAbsoluteY) + gpe_flags = POINTER_ABSOLUTE; + else + gpe_flags = POINTER_RELATIVE; + + InjectPointerKeyEvents(dev, MotionNotify, 0, gpe_flags, 2, (int[]){x, y}); } void XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button) { - EventListPtr events; - int nevents, i; DeviceIntPtr ptr; + int down; /* If dev is a slave device, and the SD is attached, do nothing. If we'd * post through the attached master pointer we'd get duplicate events. @@ -1385,24 +1420,18 @@ XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button) * if dev is a floating slave, post through the device itself. */ - if (IsMaster(dev)) - ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); - else if (!dev->u.master) + if (IsMaster(dev)) { + DeviceIntPtr mpointer = GetMaster(dev, MASTER_POINTER); + ptr = GetXTestDevice(mpointer); + } else if (!dev->u.master) ptr = dev; else return; - events = InitEventList(GetMaximumEventsNum()); - OsBlockSignals(); - nevents = GetPointerEvents(events, ptr, - press ? ButtonPress : ButtonRelease, button, - 0 /* flags */, 0 /* first */, - 0 /* num_val */, NULL); - OsReleaseSignals(); - - - for (i = 0; i < nevents; i++) - mieqProcessDeviceEvent(ptr, (InternalEvent*)events[i].event, NULL); + down = button_is_down(ptr, button, BUTTON_PROCESSED); + if (press == down) + return; - FreeEventList(events, GetMaximumEventsNum()); + InjectPointerKeyEvents(dev, press ? ButtonPress : ButtonRelease, + button, 0, 0, NULL); } diff --git a/xorg-server/xkeyboard-config/rules/base.extras.xml.in b/xorg-server/xkeyboard-config/rules/base.extras.xml.in index a17205e54..ca4d42c49 100644 --- a/xorg-server/xkeyboard-config/rules/base.extras.xml.in +++ b/xorg-server/xkeyboard-config/rules/base.extras.xml.in @@ -81,6 +81,22 @@ + + + ru + Rus + Russia + + + + + chu + Church Slavonic + chu + + + + diff --git a/xorg-server/xkeyboard-config/rules/extras/variantsMapping.lst b/xorg-server/xkeyboard-config/rules/extras/variantsMapping.lst index 36af488d1..fd0add719 100644 --- a/xorg-server/xkeyboard-config/rules/extras/variantsMapping.lst +++ b/xorg-server/xkeyboard-config/rules/extras/variantsMapping.lst @@ -1,4 +1,5 @@ rs combiningkeys extras/rs combiningkeys +ru chu extras/ru chu ir ave extras/ir ave us alt-intl-unicode extras/us alt-intl-unicode us crd extras/us crd diff --git a/xorg-server/xkeyboard-config/symbols/extras/Makefile.am b/xorg-server/xkeyboard-config/symbols/extras/Makefile.am index 7410ac24f..948060441 100644 --- a/xorg-server/xkeyboard-config/symbols/extras/Makefile.am +++ b/xorg-server/xkeyboard-config/symbols/extras/Makefile.am @@ -1,5 +1,5 @@ symbolsdir = $(xkb_base)/symbols/extras dist_symbols_DATA = apl \ ir \ - rs \ + rs ru \ us diff --git a/xorg-server/xkeyboard-config/symbols/extras/ru b/xorg-server/xkeyboard-config/symbols/extras/ru new file mode 100644 index 000000000..7e2404250 --- /dev/null +++ b/xorg-server/xkeyboard-config/symbols/extras/ru @@ -0,0 +1,59 @@ +// Church Slavonic language layout +// based on +// russian standard keyboard +// Aleksandr Andreev and Yuri Shardt +// Last Changes 2010/08/01. Contact + +partial alphanumeric_keys +xkb_symbols "chu" +{ + name[Group1]= "Russia - Church Slavonic"; + key { [ U0457, U0407, U0482, U20DD ] }; // ї Ї ҂ e.g: а⃝ where the last is a combining ten thousands sign + key { [ U0461, U0460, U047D, U047C] }; // ѡ Ѡ ѽ Ѽ + key { [ U0454, U0404, U0465, U0464] }; // є Є ѥ Ѥ + key { [ U046F, U046E, U0469, U0468] }; // ѯ Ѯ ѩ Ѩ + key { [ U0471, U0470, U046D, U046C] }; // ѱ Ѱ ѭ Ѭ + key { [ U0473, U0472, Cyrillic_ya, Cyrillic_YA] }; // ѳ Ѳ я Я (WHERE Я IS I+A, NOT SMALL YUS) + key { [ U0475, U0474, U0477, U0476] }; // ѵ Ѵ ѷ Ѷ + key { [ U047B, U047A, UA64D, UA64C] }; // ѻ Ѻ ꙍ Ꙍ + key { [ U047F, U047E, U046B, U046A] }; // ѿ Ѿ ѫ Ѫ + key { [ U0455, U0405, parenleft, U002A ] }; // ѕ Ѕ ( * + key { [ Cyrillic_u, Cyrillic_U, parenright, U0488 ] }; // у У ) NB: for diagraph Ouk, use Cyrillic_o + Cyrillic_u + key { [ U0483, U0486, U0487, U005F] }; // а҃ а҆ а҇, _ (titlo, psili, pokrytie, underscore) + key { [ U0301, U0300, U0484, UA67E] }; // а̀ а́ а҄ ꙾ (oxia, varia, kamora, kavyka) + key { [ Cyrillic_shorti, Cyrillic_SHORTI, U0456 ] }; + key { [ Cyrillic_tse, Cyrillic_TSE, U2DF0 ] }; + key { [ UA64B, UA64A, U2DF9 ] }; // Cyrillic monograph Uk (not U)! + key { [ Cyrillic_ka, Cyrillic_KA, U2DE6 ] }; + key { [ Cyrillic_ie, Cyrillic_IE, U2DF7 ] }; + key { [ Cyrillic_en, Cyrillic_EN, U2DE9 ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE, U2DE2 ] }; + key { [ Cyrillic_sha, Cyrillic_SHA, U2DF2 ] }; + key { [ Cyrillic_shcha, Cyrillic_SHCHA, U2DF3 ] }; + key { [ Cyrillic_ze, Cyrillic_ZE, U2DE5 ] }; + key { [ Cyrillic_ha, Cyrillic_HA, U2DEF ] }; + key { [Cyrillic_hardsign,Cyrillic_HARDSIGN, UA67D ] }; // Payerok + key { [backslash, slash, colon, question] }; // \ / : ? (note, for Slavonic question use semicolon + key { [ Cyrillic_ef, Cyrillic_EF ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU ] }; + key { [ Cyrillic_ve, Cyrillic_VE, U2DE1 ] }; + key { [ Cyrillic_a, Cyrillic_A, U2DF6 ] }; + key { [ Cyrillic_pe, Cyrillic_PE, U2DEB ] }; + key { [ Cyrillic_er, Cyrillic_ER, U2DEC ] }; + key { [ Cyrillic_o, Cyrillic_O, U2DEA ] }; + key { [ Cyrillic_el, Cyrillic_EL, U2DE7 ] }; + key { [ Cyrillic_de, Cyrillic_DE, U2DE3 ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE, U2DE4 ] }; + key { [ U0463, U0462, U2DFA ] }; // Yat + key { [ U0467, U0466, U2DFD ] }; // Small Yus + key { [ Cyrillic_che, Cyrillic_CHE, U2DF1 ] }; + key { [ Cyrillic_es, Cyrillic_ES, U2DED ] }; + key { [ Cyrillic_em, Cyrillic_EM, U2DE8 ] }; + key { [ Cyrillic_i, Cyrillic_I ] }; + key { [ Cyrillic_te, Cyrillic_TE, U2DEE ] }; + key { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] }; + key { [ Cyrillic_be, Cyrillic_BE, U2DE0 ] }; + key { [ Cyrillic_yu, Cyrillic_YU, U2DFB ] }; + key { [ period, comma, semicolon, exclam ] }; +}; + diff --git a/xorg-server/xkeyboard-config/symbols/inet b/xorg-server/xkeyboard-config/symbols/inet index 0fd549f76..b3b155bca 100644 --- a/xorg-server/xkeyboard-config/symbols/inet +++ b/xorg-server/xkeyboard-config/symbols/inet @@ -216,7 +216,10 @@ xkb_symbols "evdev" { key { [ XF86Tools ] }; key { [ XF86Launch5 ] }; - key { [ XF86MenuKB ] }; + key { [ XF86Launch6 ] }; + key { [ XF86Launch7 ] }; + key { [ XF86Launch8 ] }; + key { [ XF86Launch9 ] }; }; -- cgit v1.2.3