mi: drop unused miCopyArea()
With removal of Xwin's NATIVEGDI (back a decade ago), the last caller is
gone, and it also doesn't seem to be called by any driver.
Fixes: 8465ee788f
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1502>
			
			
This commit is contained in:
		
							parent
							
								
									c90543968b
								
							
						
					
					
						commit
						e89ed59c94
					
				
							
								
								
									
										11
									
								
								mi/mi.h
								
								
								
								
							
							
						
						
									
										11
									
								
								mi/mi.h
								
								
								
								
							|  | @ -80,17 +80,6 @@ extern _X_EXPORT void miPolyArc(DrawablePtr /*pDraw */ , | |||
| 
 | ||||
| /* mibitblt.c */ | ||||
| 
 | ||||
| extern _X_EXPORT RegionPtr miCopyArea(DrawablePtr /*pSrcDrawable */ , | ||||
|                                       DrawablePtr /*pDstDrawable */ , | ||||
|                                       GCPtr /*pGC */ , | ||||
|                                       int /*xIn */ , | ||||
|                                       int /*yIn */ , | ||||
|                                       int /*widthSrc */ , | ||||
|                                       int /*heightSrc */ , | ||||
|                                       int /*xOut */ , | ||||
|                                       int       /*yOut */ | ||||
|     ); | ||||
| 
 | ||||
| extern _X_EXPORT void miGetImage(DrawablePtr /*pDraw */ , | ||||
|                                  int /*sx */ , | ||||
|                                  int /*sy */ , | ||||
|  |  | |||
							
								
								
									
										188
									
								
								mi/mibitblt.c
								
								
								
								
							
							
						
						
									
										188
									
								
								mi/mibitblt.c
								
								
								
								
							|  | @ -66,194 +66,6 @@ SOFTWARE. | |||
| #define ffs __builtin_ffs | ||||
| #endif | ||||
| 
 | ||||
| /* MICOPYAREA -- public entry for the CopyArea request
 | ||||
|  * For each rectangle in the source region | ||||
|  *     get the pixels with GetSpans | ||||
|  *     set them in the destination with SetSpans | ||||
|  * We let SetSpans worry about clipping to the destination. | ||||
|  */ | ||||
| _X_COLD RegionPtr | ||||
| miCopyArea(DrawablePtr pSrcDrawable, | ||||
|            DrawablePtr pDstDrawable, | ||||
|            GCPtr pGC, | ||||
|            int xIn, int yIn, int widthSrc, int heightSrc, int xOut, int yOut) | ||||
| { | ||||
|     DDXPointPtr ppt, pptFirst; | ||||
|     unsigned int *pwidthFirst, *pwidth, *pbits; | ||||
|     BoxRec srcBox, *prect; | ||||
| 
 | ||||
|     /* may be a new region, or just a copy */ | ||||
|     RegionPtr prgnSrcClip; | ||||
| 
 | ||||
|     /* non-0 if we've created a src clip */ | ||||
|     RegionPtr prgnExposed; | ||||
|     int realSrcClip = 0; | ||||
|     int srcx, srcy, dstx, dsty, i, j, y, width, height, xMin, xMax, yMin, yMax; | ||||
|     unsigned int *ordering; | ||||
|     int numRects; | ||||
|     BoxPtr boxes; | ||||
| 
 | ||||
|     srcx = xIn + pSrcDrawable->x; | ||||
|     srcy = yIn + pSrcDrawable->y; | ||||
| 
 | ||||
|     /* If the destination isn't realized, this is easy */ | ||||
|     if (pDstDrawable->type == DRAWABLE_WINDOW && | ||||
|         !((WindowPtr) pDstDrawable)->realized) | ||||
|         return NULL; | ||||
| 
 | ||||
|     /* clip the source */ | ||||
|     if (pSrcDrawable->type == DRAWABLE_PIXMAP) { | ||||
|         BoxRec box; | ||||
| 
 | ||||
|         box.x1 = pSrcDrawable->x; | ||||
|         box.y1 = pSrcDrawable->y; | ||||
|         box.x2 = pSrcDrawable->x + (int) pSrcDrawable->width; | ||||
|         box.y2 = pSrcDrawable->y + (int) pSrcDrawable->height; | ||||
| 
 | ||||
|         prgnSrcClip = RegionCreate(&box, 1); | ||||
|         realSrcClip = 1; | ||||
|     } | ||||
|     else { | ||||
|         if (pGC->subWindowMode == IncludeInferiors) { | ||||
|             prgnSrcClip = NotClippedByChildren((WindowPtr) pSrcDrawable); | ||||
|             realSrcClip = 1; | ||||
|         } | ||||
|         else | ||||
|             prgnSrcClip = &((WindowPtr) pSrcDrawable)->clipList; | ||||
|     } | ||||
| 
 | ||||
|     /* If the src drawable is a window, we need to translate the srcBox so
 | ||||
|      * that we can compare it with the window's clip region later on. */ | ||||
|     srcBox.x1 = srcx; | ||||
|     srcBox.y1 = srcy; | ||||
|     srcBox.x2 = srcx + widthSrc; | ||||
|     srcBox.y2 = srcy + heightSrc; | ||||
| 
 | ||||
|     dstx = xOut; | ||||
|     dsty = yOut; | ||||
|     if (pGC->miTranslate) { | ||||
|         dstx += pDstDrawable->x; | ||||
|         dsty += pDstDrawable->y; | ||||
|     } | ||||
| 
 | ||||
|     pptFirst = ppt = xallocarray(heightSrc, sizeof(DDXPointRec)); | ||||
|     pwidthFirst = pwidth = xallocarray(heightSrc, sizeof(unsigned int)); | ||||
|     numRects = RegionNumRects(prgnSrcClip); | ||||
|     boxes = RegionRects(prgnSrcClip); | ||||
|     ordering = xallocarray(numRects, sizeof(unsigned int)); | ||||
|     if (!pptFirst || !pwidthFirst || !ordering) { | ||||
|         free(ordering); | ||||
|         free(pwidthFirst); | ||||
|         free(pptFirst); | ||||
|         if (realSrcClip) | ||||
|             RegionDestroy(prgnSrcClip); | ||||
|         return NULL; | ||||
|     } | ||||
| 
 | ||||
|     /* If not the same drawable then order of move doesn't matter.
 | ||||
|        Following assumes that boxes are sorted from top | ||||
|        to bottom and left to right. | ||||
|      */ | ||||
|     if ((pSrcDrawable != pDstDrawable) && | ||||
|         ((pGC->subWindowMode != IncludeInferiors) || | ||||
|          (pSrcDrawable->type == DRAWABLE_PIXMAP) || | ||||
|          (pDstDrawable->type == DRAWABLE_PIXMAP))) | ||||
|         for (i = 0; i < numRects; i++) | ||||
|             ordering[i] = i; | ||||
|     else {                      /* within same drawable, must sequence moves carefully! */ | ||||
|         if (dsty <= srcBox.y1) {        /* Scroll up or stationary vertical.
 | ||||
|                                            Vertical order OK */ | ||||
|             if (dstx <= srcBox.x1)      /* Scroll left or stationary horizontal.
 | ||||
|                                            Horizontal order OK as well */ | ||||
|                 for (i = 0; i < numRects; i++) | ||||
|                     ordering[i] = i; | ||||
|             else {              /* scroll right. must reverse horizontal banding of rects. */ | ||||
|                 for (i = 0, j = 1, xMax = 0; i < numRects; j = i + 1, xMax = i) { | ||||
|                     /* find extent of current horizontal band */ | ||||
|                     y = boxes[i].y1;    /* band has this y coordinate */ | ||||
|                     while ((j < numRects) && (boxes[j].y1 == y)) | ||||
|                         j++; | ||||
|                     /* reverse the horizontal band in the output ordering */ | ||||
|                     for (j--; j >= xMax; j--, i++) | ||||
|                         ordering[i] = j; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         else {                  /* Scroll down. Must reverse vertical banding. */ | ||||
|             if (dstx < srcBox.x1) {     /* Scroll left. Horizontal order OK. */ | ||||
|                 for (i = numRects - 1, j = i - 1, yMin = i, yMax = 0; | ||||
|                      i >= 0; j = i - 1, yMin = i) { | ||||
|                     /* find extent of current horizontal band */ | ||||
|                     y = boxes[i].y1;    /* band has this y coordinate */ | ||||
|                     while ((j >= 0) && (boxes[j].y1 == y)) | ||||
|                         j--; | ||||
|                     /* reverse the horizontal band in the output ordering */ | ||||
|                     for (j++; j <= yMin; j++, i--, yMax++) | ||||
|                         ordering[yMax] = j; | ||||
|                 } | ||||
|             } | ||||
|             else                /* Scroll right or horizontal stationary.
 | ||||
|                                    Reverse horizontal order as well (if stationary, horizontal | ||||
|                                    order can be swapped without penalty and this is faster | ||||
|                                    to compute). */ | ||||
|                 for (i = 0, j = numRects - 1; i < numRects; i++, j--) | ||||
|                     ordering[i] = j; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     for (i = 0; i < numRects; i++) { | ||||
|         prect = &boxes[ordering[i]]; | ||||
|         xMin = max(prect->x1, srcBox.x1); | ||||
|         xMax = min(prect->x2, srcBox.x2); | ||||
|         yMin = max(prect->y1, srcBox.y1); | ||||
|         yMax = min(prect->y2, srcBox.y2); | ||||
|         /* is there anything visible here? */ | ||||
|         if (xMax <= xMin || yMax <= yMin) | ||||
|             continue; | ||||
| 
 | ||||
|         ppt = pptFirst; | ||||
|         pwidth = pwidthFirst; | ||||
|         y = yMin; | ||||
|         height = yMax - yMin; | ||||
|         width = xMax - xMin; | ||||
| 
 | ||||
|         for (j = 0; j < height; j++) { | ||||
|             /* We must untranslate before calling GetSpans */ | ||||
|             ppt->x = xMin; | ||||
|             ppt++->y = y++; | ||||
|             *pwidth++ = width; | ||||
|         } | ||||
|         pbits = xallocarray(height, PixmapBytePad(width, pSrcDrawable->depth)); | ||||
|         if (pbits) { | ||||
|             (*pSrcDrawable->pScreen->GetSpans) (pSrcDrawable, width, pptFirst, | ||||
|                                                 (int *) pwidthFirst, height, | ||||
|                                                 (char *) pbits); | ||||
|             ppt = pptFirst; | ||||
|             pwidth = pwidthFirst; | ||||
|             xMin -= (srcx - dstx); | ||||
|             y = yMin - (srcy - dsty); | ||||
|             for (j = 0; j < height; j++) { | ||||
|                 ppt->x = xMin; | ||||
|                 ppt++->y = y++; | ||||
|                 *pwidth++ = width; | ||||
|             } | ||||
| 
 | ||||
|             (*pGC->ops->SetSpans) (pDstDrawable, pGC, (char *) pbits, pptFirst, | ||||
|                                    (int *) pwidthFirst, height, TRUE); | ||||
|             free(pbits); | ||||
|         } | ||||
|     } | ||||
|     prgnExposed = miHandleExposures(pSrcDrawable, pDstDrawable, pGC, xIn, yIn, | ||||
|                                     widthSrc, heightSrc, xOut, yOut); | ||||
|     if (realSrcClip) | ||||
|         RegionDestroy(prgnSrcClip); | ||||
| 
 | ||||
|     free(ordering); | ||||
|     free(pwidthFirst); | ||||
|     free(pptFirst); | ||||
|     return prgnExposed; | ||||
| } | ||||
| 
 | ||||
| /* MIGETPLANE -- gets a bitmap representing one plane of pDraw
 | ||||
|  * A helper used for CopyPlane and XY format GetImage | ||||
|  * No clever strategy here, we grab a scanline at a time, pull out the | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue