[PATCH 15/16] use dixDestroyPixmap() instead of direct driver call

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Direct calls to ScreenRec->DestroyPixmap() blocks cleaning up the wrapping
jungle, so use the proper dix function instead.

See: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1754

Signed-off-by: Enrico Weigelt, metux IT consult <info@xxxxxxxxx>
---
 src/sna/sna_accel.c        |  8 ++++----
 src/sna/sna_display.c      |  6 +++---
 src/sna/sna_display_fake.c |  2 +-
 src/sna/sna_dri2.c         |  2 +-
 src/sna/sna_dri3.c         |  2 +-
 src/sna/sna_driver.c       |  4 ++--
 src/sna/sna_glyphs.c       |  2 +-
 src/sna/sna_render.c       | 14 +++++++-------
 src/sna/sna_video_sprite.c |  4 ++--
 src/uxa/i915_video.c       |  4 ++--
 src/uxa/intel_display.c    | 10 +++++-----
 src/uxa/intel_dri.c        | 14 +++++++-------
 src/uxa/intel_uxa.c        | 10 +++++-----
 src/uxa/uxa-glyphs.c       | 12 ++++++------
 src/uxa/uxa-render.c       | 24 ++++++++++++------------
 src/uxa/uxa.c              |  5 ++---
 16 files changed, 61 insertions(+), 62 deletions(-)

diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 90a61ab3..e3c57edd 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -982,7 +982,7 @@ fallback:

 		if (!screen->ModifyPixmapHeader(pixmap, width, height, depth,
 						bpp, pitch, addr)) {
-			screen->DestroyPixmap(pixmap);
+			dixDestroyPixmap(pixmap, 0);
 			return NULL;
 		}

@@ -6871,10 +6871,10 @@ discard_cow:
 						    box, n, 0)) {
 				DBG(("%s: fallback - accelerated copy boxes failed\n",
 				     __FUNCTION__));
-				tmp->drawable.pScreen->DestroyPixmap(tmp);
+				dixDestroyPixmap(tmp, 0);
 				goto fallback;
 			}
-			tmp->drawable.pScreen->DestroyPixmap(tmp);
+			dixDestroyPixmap(tmp, 0);

 			if (damage)
 				sna_damage_add_to_pixmap(damage, region, dst_pixmap);
@@ -18011,7 +18011,7 @@ sna_set_screen_pixmap(PixmapPtr pixmap)
 	pixmap->refcnt++;

 	if (old_front)
-		screen->DestroyPixmap(old_front);
+		dixDestroyPixmap(old_front, 0);
 }

 static Bool
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index d4adf34f..33a7e70f 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -6046,7 +6046,7 @@ sna_mode_resize(ScrnInfoPtr scrn, int width, int height)
 	screen->SetScreenPixmap(new_front);
 	assert(screen->GetScreenPixmap(screen) == new_front);
 	assert(sna->front == new_front);
-	screen->DestroyPixmap(new_front); /* owned by screen now */
+	dixDestroyPixmap(new_front, 0); /* owned by screen now */

 	scrn->virtualX = width;
 	scrn->virtualY = height;
@@ -8918,7 +8918,7 @@ sna_crtc_redisplay__fallback(xf86CrtcPtr crtc, RegionPtr region, struct kgem_bo
 free_src:
 	FreePicture(src, None);
 free_pixmap:
-	screen->DestroyPixmap(pixmap);
+	dixDestroyPixmap(pixmap, 0);
 }

 static void
@@ -9028,7 +9028,7 @@ sna_crtc_redisplay__composite(xf86CrtcPtr crtc, RegionPtr region, struct kgem_bo
 free_src:
 	FreePicture(src, None);
 free_pixmap:
-	screen->DestroyPixmap(pixmap);
+	dixDestroyPixmap(pixmap, 0);
 }

 static void
diff --git a/src/sna/sna_display_fake.c b/src/sna/sna_display_fake.c
index 401e9a06..ed26199c 100644
--- a/src/sna/sna_display_fake.c
+++ b/src/sna/sna_display_fake.c
@@ -215,7 +215,7 @@ sna_mode_resize(ScrnInfoPtr scrn, int width, int height)
 	assert(screen->GetScreenPixmap(screen) == new_front);
 	assert(to_sna_from_screen(screen)->front == new_front);

-	screen->DestroyPixmap(new_front);
+	dixDestroyPixmap(new_front, 0);

 	return TRUE;
 }
diff --git a/src/sna/sna_dri2.c b/src/sna/sna_dri2.c
index ee4b89db..f5f47554 100644
--- a/src/sna/sna_dri2.c
+++ b/src/sna/sna_dri2.c
@@ -934,7 +934,7 @@ static void _sna_dri2_destroy_buffer(struct sna *sna,
 		sna_watch_flush(sna, -1);

 		sna_pixmap_set_buffer(pixmap, NULL);
-		pixmap->drawable.pScreen->DestroyPixmap(pixmap);
+		dixDestroyPixmap(pixmap, 0);
 	}

 	sna_dri2_cache_bo(sna, draw,
diff --git a/src/sna/sna_dri3.c b/src/sna/sna_dri3.c
index ce4970ae..cea1efc7 100644
--- a/src/sna/sna_dri3.c
+++ b/src/sna/sna_dri3.c
@@ -284,7 +284,7 @@ static PixmapPtr sna_dri3_pixmap_from_fd(ScreenPtr screen,
 	return pixmap;

 free_pixmap:
-	screen->DestroyPixmap(pixmap);
+	dixDestroyPixmap(pixmap, 0);
 free_bo:
 	kgem_bo_destroy(&sna->kgem, bo);
 	return NULL;
diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
index 137f29e8..66e8731e 100644
--- a/src/sna/sna_driver.c
+++ b/src/sna/sna_driver.c
@@ -266,7 +266,7 @@ static Bool sna_create_screen_resources(ScreenPtr screen)
 	screen->SetScreenPixmap(new_front);
 	assert(screen->GetScreenPixmap(screen) == new_front);
 	assert(sna->front == new_front);
-	screen->DestroyPixmap(new_front); /* transfer ownership to screen */
+	dixDestroyPixmap(new_front, 0); /* transfer ownership to screen */

 	sna_mode_set_primary(sna);

@@ -1011,7 +1011,7 @@ static Bool sna_early_close_screen(CLOSE_SCREEN_ARGS_DECL)
 	}

 	if (sna->front) {
-		screen->DestroyPixmap(sna->front);
+		dixDestroyPixmap(sna->front, 0);
 		sna->front = NULL;
 	}

diff --git a/src/sna/sna_glyphs.c b/src/sna/sna_glyphs.c
index ebc061b5..a3894518 100644
--- a/src/sna/sna_glyphs.c
+++ b/src/sna/sna_glyphs.c
@@ -260,7 +260,7 @@ bool sna_glyphs_create(struct sna *sna)
 						serverClient, &error);
 		}

-		screen->DestroyPixmap(pixmap);
+		dixDestroyPixmap(pixmap, 0);
 		if (!picture)
 			goto bail;

diff --git a/src/sna/sna_render.c b/src/sna/sna_render.c
index 904d4400..a0fdabcb 100644
--- a/src/sna/sna_render.c
+++ b/src/sna/sna_render.c
@@ -875,7 +875,7 @@ cleanup_src:
 cleanup_dst:
 	FreePicture(tmp_dst, 0);
 cleanup_tmp:
-	screen->DestroyPixmap(tmp);
+	dixDestroyPixmap(tmp, 0);
 	return ret;
 }

@@ -1348,7 +1348,7 @@ sna_render_picture_convolve(struct sna *sna,
 		tmp = CreatePicture(0, &pixmap->drawable,
 				PictureMatchFormat(screen, depth, channel->pict_format),
 				0, NULL, serverClient, &error);
-	screen->DestroyPixmap(pixmap);
+	dixDestroyPixmap(pixmap, 0);
 	if (tmp == NULL)
 		return -1;

@@ -1429,7 +1429,7 @@ sna_render_picture_flatten(struct sna *sna,
 	tmp = CreatePicture(0, &pixmap->drawable,
 			    PictureMatchFormat(screen, 32, PICT_a8r8g8b8),
 			    0, NULL, serverClient, &error);
-	screen->DestroyPixmap(pixmap);
+	dixDestroyPixmap(pixmap, 0);
 	if (tmp == NULL)
 		return false;

@@ -1811,7 +1811,7 @@ sna_render_picture_convert(struct sna *sna,
 						       channel->pict_format),
 				    0, NULL, serverClient, &error);
 		if (dst == NULL) {
-			screen->DestroyPixmap(tmp);
+			dixDestroyPixmap(tmp, 0);
 			return 0;
 		}

@@ -1822,7 +1822,7 @@ sna_render_picture_convert(struct sna *sna,
 				    0, NULL, serverClient, &error);
 		if (src == NULL) {
 			FreePicture(dst, 0);
-			screen->DestroyPixmap(tmp);
+			dixDestroyPixmap(tmp, 0);
 			return 0;
 		}

@@ -1839,7 +1839,7 @@ sna_render_picture_convert(struct sna *sna,

 		channel->bo = __sna_pixmap_get_bo(tmp);
 		kgem_bo_reference(channel->bo);
-		screen->DestroyPixmap(tmp);
+		dixDestroyPixmap(tmp, 0);
 	} else {
 		pixman_image_t *src, *dst;
 		void *ptr;
@@ -2173,7 +2173,7 @@ copy_overlap(struct sna *sna, uint8_t alu,
 				      draw, bo, dst_dx, dst_dy,
 				      box, n, 0));

-	screen->DestroyPixmap(tmp);
+	dixDestroyPixmap(tmp, 0);
 	return ret;
 }
 bool
diff --git a/src/sna/sna_video_sprite.c b/src/sna/sna_video_sprite.c
index 2d012b95..7d9a13e1 100644
--- a/src/sna/sna_video_sprite.c
+++ b/src/sna/sna_video_sprite.c
@@ -666,7 +666,7 @@ off:
 			}

 			if (!sna->render.video(sna, video, &frame, &r, scaled)) {
-				screen->DestroyPixmap(scaled);
+				dixDestroyPixmap(scaled, 0);
 				ret = BadAlloc;
 				goto err;
 			}
@@ -685,7 +685,7 @@ off:
 			frame.height = frame.image.y2;
 			frame.pitch[0] = frame.bo->pitch;

-			screen->DestroyPixmap(scaled);
+			dixDestroyPixmap(scaled, 0);
 			cache_bo = false;
 		}

diff --git a/src/uxa/i915_video.c b/src/uxa/i915_video.c
index a2fb50cf..6f7ae91e 100644
--- a/src/uxa/i915_video.c
+++ b/src/uxa/i915_video.c
@@ -79,7 +79,7 @@ I915DisplayVideoTextured(ScrnInfoPtr scrn,
 			return;

 		if (intel_uxa_get_pixmap_bo(target) == NULL) {
-			screen->DestroyPixmap(target);
+			dixDestroyPixmap(target, 0);
 			return;
 		}

@@ -485,7 +485,7 @@ I915DisplayVideoTextured(ScrnInfoPtr scrn,
 			FreeScratchGC(gc);
 		}

-		target->drawable.pScreen->DestroyPixmap(target);
+		dixDestroyPixmap(target, 0);
 	}

 	intel_uxa_debug_flush(scrn);
diff --git a/src/uxa/intel_display.c b/src/uxa/intel_display.c
index 2a544779..17198ffc 100644
--- a/src/uxa/intel_display.c
+++ b/src/uxa/intel_display.c
@@ -563,7 +563,7 @@ intel_create_pixmap_header(ScreenPtr pScreen, int width, int height, int depth,
                 {
                         return pixmap;
                 }
-                (*pScreen->DestroyPixmap) (pixmap);
+                dixDestroyPixmap(pixmap, 0);
         }
         return NullPixmap;
 }
@@ -620,7 +620,7 @@ intel_crtc_shadow_destroy(xf86CrtcPtr crtc, PixmapPtr rotate_pixmap, void *data)

 	if (rotate_pixmap) {
                 intel_set_pixmap_bo(rotate_pixmap, NULL);
-                rotate_pixmap->drawable.pScreen->DestroyPixmap(rotate_pixmap);
+                dixDestroyPixmap(rotate_pixmap, 0);
 	}

 	if (data) {
@@ -2408,7 +2408,7 @@ intel_create_pixmap_for_bo(ScreenPtr pScreen, dri_bo *bo,
 					 width, height,
 					 depth, bpp,
 					 pitch, NULL)) {
-		pScreen->DestroyPixmap(pixmap);
+		dixDestroyPixmap(pixmap, 0);
 		return NullPixmap;
 	}

@@ -2515,9 +2515,9 @@ void intel_copy_fb(ScrnInfoPtr scrn)
 #endif

 cleanup_dst:
-	(*pScreen->DestroyPixmap)(dst);
+	dixDestroyPixmap(dst, 0);
 cleanup_src:
-	(*pScreen->DestroyPixmap)(src);
+	dixDestroyPixmap(src, 0);
 }

 void
diff --git a/src/uxa/intel_dri.c b/src/uxa/intel_dri.c
index d91ed295..ddce265c 100644
--- a/src/uxa/intel_dri.c
+++ b/src/uxa/intel_dri.c
@@ -210,7 +210,7 @@ I830DRI2CreateBuffers(DrawablePtr drawable, unsigned int *attachments,
 			    intel_get_pixmap_bo(pixmap) == NULL)
 			{
 				if (pixmap)
-					screen->DestroyPixmap(pixmap);
+					dixDestroyPixmap(pixmap, 0);
 				goto unwind;
 			}
 		}
@@ -228,7 +228,7 @@ I830DRI2CreateBuffers(DrawablePtr drawable, unsigned int *attachments,

 		if ((buffers[i].name = pixmap_flink(pixmap)) == 0) {
 			/* failed to name buffer */
-			screen->DestroyPixmap(pixmap);
+			dixDestroyPixmap(pixmap, 0);
 			goto unwind;
 		}
 	}
@@ -237,7 +237,7 @@ I830DRI2CreateBuffers(DrawablePtr drawable, unsigned int *attachments,

 unwind:
 	while (i--)
-		screen->DestroyPixmap(privates[i].pixmap);
+		dixDestroyPixmap(privates[i].pixmap, 0);
 	free(privates);
 	free(buffers);
 	return NULL;
@@ -252,7 +252,7 @@ I830DRI2DestroyBuffers(DrawablePtr drawable, DRI2BufferPtr buffers, int count)

 	for (i = 0; i < count; i++) {
 		private = buffers[i].driverPrivate;
-		screen->DestroyPixmap(private->pixmap);
+		dixDestroyPixmap(private->pixmap, 0);
 	}

 	if (buffers) {
@@ -353,7 +353,7 @@ I830DRI2CreateBuffer(DrawablePtr drawable, unsigned int attachment,
 					      hint);
 		if (pixmap == NULL || intel_get_pixmap_bo(pixmap) == NULL) {
 			if (pixmap)
-				screen->DestroyPixmap(pixmap);
+				dixDestroyPixmap(pixmap, 0);
 			free(privates);
 			free(buffer);
 			return NULL;
@@ -371,7 +371,7 @@ I830DRI2CreateBuffer(DrawablePtr drawable, unsigned int attachment,

 	if ((buffer->name = pixmap_flink(pixmap)) == 0) {
 		/* failed to name buffer */
-		screen->DestroyPixmap(pixmap);
+		dixDestroyPixmap(pixmap, 0);
 		free(privates);
 		free(buffer);
 		return NULL;
@@ -386,7 +386,7 @@ static void I830DRI2DestroyBuffer(DrawablePtr drawable, DRI2Buffer2Ptr buffer)
 		I830DRI2BufferPrivatePtr private = buffer->driverPrivate;
 		if (--private->refcnt == 0) {
 			ScreenPtr screen = private->pixmap->drawable.pScreen;
-			screen->DestroyPixmap(private->pixmap);
+			dixDestroyPixmap(private->pixmap, 0);

 			free(private);
 			free(buffer);
diff --git a/src/uxa/intel_uxa.c b/src/uxa/intel_uxa.c
index ec32a723..3ab70a30 100644
--- a/src/uxa/intel_uxa.c
+++ b/src/uxa/intel_uxa.c
@@ -811,7 +811,7 @@ static Bool intel_uxa_put_image(PixmapPtr pixmap,
 				return FALSE;

 			if (!intel_uxa_pixmap_is_offscreen(scratch)) {
-				screen->DestroyPixmap(scratch);
+				dixDestroyPixmap(scratch, 0);
 				return FALSE;
 			}

@@ -830,7 +830,7 @@ static Bool intel_uxa_put_image(PixmapPtr pixmap,
 					ret = FALSE;
 			}

-			(*screen->DestroyPixmap)(scratch);
+			dixDestroyPixmap(scratch, 0);
 			return ret;
 		}
 	}
@@ -896,13 +896,13 @@ static Bool intel_uxa_get_image(PixmapPtr pixmap,
 			return FALSE;

 		if (!intel_uxa_pixmap_is_offscreen(scratch)) {
-			screen->DestroyPixmap(scratch);
+			dixDestroyPixmap(scratch, 0);
 			return FALSE;
 		}

 		gc = GetScratchGC(pixmap->drawable.depth, screen);
 		if (!gc) {
-			screen->DestroyPixmap(scratch);
+			dixDestroyPixmap(scratch, 0);
 			return FALSE;
 		}

@@ -923,7 +923,7 @@ static Bool intel_uxa_get_image(PixmapPtr pixmap,
 	ret = intel_uxa_pixmap_get_image(pixmap, x, y, w, h, dst, dst_pitch);

 	if (scratch)
-		scratch->drawable.pScreen->DestroyPixmap(scratch);
+		dixDestroyPixmap(scratch, 0);

 	return ret;
 }
diff --git a/src/uxa/uxa-glyphs.c b/src/uxa/uxa-glyphs.c
index d24ba518..ac33178d 100644
--- a/src/uxa/uxa-glyphs.c
+++ b/src/uxa/uxa-glyphs.c
@@ -172,7 +172,7 @@ static Bool uxa_realize_glyph_caches(ScreenPtr pScreen)
 			goto bail;
 		if (!uxa_pixmap_is_offscreen(pixmap)) {
 			/* Presume shadow is in-effect */
-			pScreen->DestroyPixmap(pixmap);
+			dixDestroyPixmap(pixmap, 0);
 			uxa_unrealize_glyph_caches(pScreen);
 			return TRUE;
 		}
@@ -182,7 +182,7 @@ static Bool uxa_realize_glyph_caches(ScreenPtr pScreen)
 					CPComponentAlpha, &component_alpha,
 					serverClient, &error);

-		pScreen->DestroyPixmap(pixmap);
+		dixDestroyPixmap(pixmap, 0);

 		if (!picture)
 			goto bail;
@@ -293,7 +293,7 @@ uxa_glyph_cache_upload_glyph(ScreenPtr screen,
 		      x, y);

 	if (scratch != pGlyphPixmap)
-		screen->DestroyPixmap(scratch);
+		dixDestroyPixmap(scratch, 0);

 	FreeScratchGC(gc);
 }
@@ -769,7 +769,7 @@ uxa_glyphs_via_mask(CARD8 op,
 		return 1;

 	if (!uxa_pixmap_is_offscreen(pixmap)) {
-		screen->DestroyPixmap(pixmap);
+		dixDestroyPixmap(pixmap, 0);
 		return -1;
 	}

@@ -780,7 +780,7 @@ uxa_glyphs_via_mask(CARD8 op,
 	if (!white_pixmap) {
 		if (white)
 			FreePicture(white, 0);
-		screen->DestroyPixmap(pixmap);
+		dixDestroyPixmap(pixmap, 0);
 		return -1;
 	}

@@ -790,7 +790,7 @@ uxa_glyphs_via_mask(CARD8 op,
 	mask = CreatePicture(0, &pixmap->drawable,
 			      maskFormat, CPComponentAlpha,
 			      &component_alpha, serverClient, &error);
-	screen->DestroyPixmap(pixmap);
+	dixDestroyPixmap(pixmap, 0);

 	if (!mask) {
 		FreePicture(white, 0);
diff --git a/src/uxa/uxa-render.c b/src/uxa/uxa-render.c
index 0c3e8560..ea3e9d4a 100644
--- a/src/uxa/uxa-render.c
+++ b/src/uxa/uxa-render.c
@@ -479,7 +479,7 @@ uxa_picture_for_pixman_format(ScreenPtr screen,
 		return 0;

 	if (!uxa_pixmap_is_offscreen(pixmap)) {
-		screen->DestroyPixmap(pixmap);
+		dixDestroyPixmap(pixmap, 0);
 		return 0;
 	}

@@ -488,7 +488,7 @@ uxa_picture_for_pixman_format(ScreenPtr screen,
 						   PIXMAN_FORMAT_DEPTH(format),
 						   format),
 				0, 0, serverClient, &error);
-	screen->DestroyPixmap(pixmap);
+	dixDestroyPixmap(pixmap, 0);
 	if (!picture)
 		return 0;

@@ -592,7 +592,7 @@ uxa_create_solid(ScreenPtr screen, uint32_t color)
 		return 0;

 	if (!uxa_prepare_access((DrawablePtr)pixmap, UXA_ACCESS_RW)) {
-		(*screen->DestroyPixmap)(pixmap);
+		dixDestroyPixmap(pixmap, 0);
 		return 0;
 	}
 	*((uint32_t *)pixmap->devPrivate.ptr) = color;
@@ -601,7 +601,7 @@ uxa_create_solid(ScreenPtr screen, uint32_t color)
 	picture = CreatePicture(0, &pixmap->drawable,
 				PictureMatchFormat(screen, 32, PICT_a8r8g8b8),
 				CPRepeat, &repeat, serverClient, &error);
-	(*screen->DestroyPixmap)(pixmap);
+	dixDestroyPixmap(pixmap, 0);

 	return picture;
 }
@@ -828,13 +828,13 @@ uxa_acquire_drawable(ScreenPtr pScreen,

 	/* Skip the copy if the result remains in memory and not a bo */
 	if (!uxa_pixmap_is_offscreen(pPixmap)) {
-		pScreen->DestroyPixmap(pPixmap);
+		dixDestroyPixmap(pPixmap, 0);
 		return 0;
 	}

 	pGC = GetScratchGC(depth, pScreen);
 	if (!pGC) {
-		pScreen->DestroyPixmap(pPixmap);
+		dixDestroyPixmap(pPixmap, 0);
 		return 0;
 	}

@@ -846,7 +846,7 @@ uxa_acquire_drawable(ScreenPtr pScreen,
 	pDst = CreatePicture(0, &pPixmap->drawable,
 			     PictureMatchFormat(pScreen, depth, pSrc->format),
 			     0, 0, serverClient, &error);
-	pScreen->DestroyPixmap(pPixmap);
+	dixDestroyPixmap(pPixmap, 0);
 	if (!pDst)
 		return 0;

@@ -978,7 +978,7 @@ uxa_try_driver_composite(CARD8 op,

 		gc = GetScratchGC(depth, screen);
 		if (!gc) {
-			screen->DestroyPixmap(pixmap);
+			dixDestroyPixmap(pixmap, 0);
 			return 0;
 		}

@@ -993,7 +993,7 @@ uxa_try_driver_composite(CARD8 op,
 		localDst = CreatePicture(0, &pixmap->drawable,
 					 PictureMatchFormat(screen, depth, pDst->format),
 					 0, 0, serverClient, &error);
-		screen->DestroyPixmap(pixmap);
+		dixDestroyPixmap(pixmap, 0);

 		if (!localDst)
 			return 0;
@@ -1238,7 +1238,7 @@ uxa_try_magic_two_pass_composite_helper(CARD8 op,

 		gc = GetScratchGC(depth, screen);
 		if (!gc) {
-			screen->DestroyPixmap(pixmap);
+			dixDestroyPixmap(pixmap, 0);
 			return 0;
 		}

@@ -1253,7 +1253,7 @@ uxa_try_magic_two_pass_composite_helper(CARD8 op,
 		localDst = CreatePicture(0, &pixmap->drawable,
 					 PictureMatchFormat(screen, depth, pDst->format),
 					 0, 0, serverClient, &error);
-		screen->DestroyPixmap(pixmap);
+		dixDestroyPixmap(pixmap, 0);

 		if (!localDst)
 			return 0;
@@ -1574,7 +1574,7 @@ uxa_create_alpha_picture(ScreenPtr pScreen,
 		return 0;
 	pPicture = CreatePicture(0, &pPixmap->drawable, pPictFormat,
 				 0, 0, serverClient, &error);
-	(*pScreen->DestroyPixmap) (pPixmap);
+	dixDestroyPixmap(pPixmap, 0);
 	return pPicture;
 }

diff --git a/src/uxa/uxa.c b/src/uxa/uxa.c
index b682dfd9..125dc0c4 100644
--- a/src/uxa/uxa.c
+++ b/src/uxa/uxa.c
@@ -191,7 +191,7 @@ uxa_validate_gc(GCPtr pGC, unsigned long changes, DrawablePtr pDrawable)

 #ifdef FB_24_32BIT
 	if ((changes & GCTile) && fbGetRotatedPixmap(pGC)) {
-		(*pGC->pScreen->DestroyPixmap) (fbGetRotatedPixmap(pGC));
+		dixDestroyPixmap(fbGetRotatedPixmap(pGC), 0);
 		fbGetRotatedPixmap(pGC) = 0;
 	}

@@ -205,8 +205,7 @@ uxa_validate_gc(GCPtr pGC, unsigned long changes, DrawablePtr pDrawable)
 			    pNewTile->drawable.bitsPerPixel !=
 			    pDrawable->bitsPerPixel) {
 				if (pNewTile)
-					(*pGC->pScreen->
-					 DestroyPixmap) (pNewTile);
+					dixDestroyPixmap(pNewTile, 0);
 				/* fb24_32ReformatTile will do direct access
 				 * of a newly-allocated pixmap.  This isn't a
 				 * problem yet, since we don't put pixmaps in
--
2.39.5




[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux