summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zdenek.kabelac@gmail.com>2009-04-21 18:58:23 -0700
committerEric Anholt <eric@anholt.net>2009-04-21 19:54:21 -0700
commitceb3a2eaf9090d67e4dfcbed188125108ceab78d (patch)
tree2a6078c29304e84ba8241768cab419b547a08f3d
parent701c6bef14b5d464847cc42c5ccb66fdeb157f1a (diff)
Remember allocated offscreenImages memory for freeing it in CloseScreen()
Signed-off-by: Zdenek Kabelac <zkabelac@redhat.com> [anholt: renamed the member to match the variable name] Signed-off-by: Eric Anholt <eric@anholt.net>
-rw-r--r--src/i830.h1
-rw-r--r--src/i830_driver.c2
-rw-r--r--src/i830_video.c3
3 files changed, 5 insertions, 1 deletions
diff --git a/src/i830.h b/src/i830.h
index b252f56c..5772f1d2 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -431,6 +431,7 @@ typedef struct _I830Rec {
#ifdef I830_XV
/* For Xvideo */
i830_memory *overlay_regs;
+ void *offscreenImages; /**< remembered memory block for release */
#endif
#ifdef INTEL_XVMC
/* For XvMC */
diff --git a/src/i830_driver.c b/src/i830_driver.c
index f1ea5115..2249a990 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -3700,6 +3700,8 @@ I830CloseScreen(int scrnIndex, ScreenPtr pScreen)
#ifdef I830_XV
i965_free_video(pScrn);
+ free(pI830->offscreenImages);
+ pI830->offscreenImages = NULL;
#endif
dri_bufmgr_destroy(pI830->bufmgr);
diff --git a/src/i830_video.c b/src/i830_video.c
index a62d7a13..f73c1f7f 100644
--- a/src/i830_video.c
+++ b/src/i830_video.c
@@ -2886,11 +2886,12 @@ I830InitOffscreenImages(ScreenPtr pScreen)
ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
I830Ptr pI830 = I830PTR(pScrn);
- /* need to free this someplace */
if (!(offscreenImages = xalloc(sizeof(XF86OffscreenImageRec)))) {
return;
}
+ pI830->offscreenImages = offscreenImages;
+
offscreenImages[0].image = &Images[0];
offscreenImages[0].flags = VIDEO_OVERLAID_IMAGES /*| VIDEO_CLIP_TO_VIEWPORT*/;
offscreenImages[0].alloc_surface = I830AllocateSurface;