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 */ | /* 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 */ , | extern _X_EXPORT void miGetImage(DrawablePtr /*pDraw */ , | ||||||
|                                  int /*sx */ , |                                  int /*sx */ , | ||||||
|                                  int /*sy */ , |                                  int /*sy */ , | ||||||
|  |  | ||||||
							
								
								
									
										188
									
								
								mi/mibitblt.c
								
								
								
								
							
							
						
						
									
										188
									
								
								mi/mibitblt.c
								
								
								
								
							|  | @ -66,194 +66,6 @@ SOFTWARE. | ||||||
| #define ffs __builtin_ffs | #define ffs __builtin_ffs | ||||||
| #endif | #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
 | /* MIGETPLANE -- gets a bitmap representing one plane of pDraw
 | ||||||
|  * A helper used for CopyPlane and XY format GetImage |  * A helper used for CopyPlane and XY format GetImage | ||||||
|  * No clever strategy here, we grab a scanline at a time, pull out the |  * No clever strategy here, we grab a scanline at a time, pull out the | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue