xf86-video-intel: 2 commits - src/sna/sna_video.c src/sna/sna_video_overlay.c src/sna/sna_video_textured.c
Chris Wilson
ickle at kemper.freedesktop.org
Wed Jun 12 06:35:19 PDT 2013
src/sna/sna_video.c | 15 ++++++++++++++-
src/sna/sna_video_overlay.c | 1 -
src/sna/sna_video_textured.c | 9 ++++++---
3 files changed, 20 insertions(+), 5 deletions(-)
New commits:
commit 1f180b89db412c5fa9fe95c8f6634be33a1d8581
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Wed Jun 12 14:23:32 2013 +0100
sna/video: Free the private video (adaptor/port) arrays upon CloseScreen
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_video.c b/src/sna/sna_video.c
index 6591c62..833e6f2 100644
--- a/src/sna/sna_video.c
+++ b/src/sna/sna_video.c
@@ -606,8 +606,21 @@ sna_xv_query_adaptors(ScreenPtr screen,
}
static Bool
-sna_xv_close_screen(ScreenPtr screen)
+sna_xv_close_screen(CLOSE_SCREEN_ARGS_DECL)
{
+ struct sna *sna = to_sna_from_screen(screen);
+ int i;
+
+ for (i = 0; i < sna->xv.num_adaptors; i++) {
+ free(sna->xv.adaptors[i].pPorts->devPriv.ptr);
+ free(sna->xv.adaptors[i].pPorts);
+ free(sna->xv.adaptors[i].pEncodings);
+ }
+ free(sna->xv.adaptors);
+
+ sna->xv.adaptors = NULL;
+ sna->xv.num_adaptors = 0;
+
return TRUE;
}
commit 04ea469d4f30f9bb25561f3d04f1463999c8d928
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Wed Jun 12 14:20:10 2013 +0100
sna/video: Catch allocation failure whilst setting up the TexturedAdaptor
Missing NULL check for calloc of the port private array.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_video_overlay.c b/src/sna/sna_video_overlay.c
index 5ec9c17..848c471 100644
--- a/src/sna/sna_video_overlay.c
+++ b/src/sna/sna_video_overlay.c
@@ -737,7 +737,6 @@ void sna_video_overlay_setup(struct sna *sna, ScreenPtr screen)
adaptor->nPorts = 1;
adaptor->pPorts = port;
-
adaptor->base_id = port->id = FakeClientID(0);
AddResource(port->id, XvGetRTPort(), port);
diff --git a/src/sna/sna_video_textured.c b/src/sna/sna_video_textured.c
index b9ccec0..cd5300f 100644
--- a/src/sna/sna_video_textured.c
+++ b/src/sna/sna_video_textured.c
@@ -350,11 +350,15 @@ void sna_video_textured_setup(struct sna *sna, ScreenPtr screen)
return;
video = calloc(nports, sizeof(struct sna_video));
- if ( video == NULL) {
+ adaptor->pPorts = calloc(nports, sizeof(XvPortRec));
+ if (video == NULL || adaptor->pPorts == NULL) {
+ free(video);
+ free(adaptor->pPorts);
sna->xv.num_adaptors--;
return;
}
+
adaptor->type = XvInputMask | XvImageMask;
adaptor->pScreen = screen;
adaptor->name = "Intel(R) Textured Video";
@@ -387,8 +391,6 @@ void sna_video_textured_setup(struct sna *sna, ScreenPtr screen)
adaptor->ddPutImage = sna_video_textured_put_image;
adaptor->ddQueryImageAttributes = sna_video_textured_query;
- adaptor->nPorts = nports;
- adaptor->pPorts = calloc(nports, sizeof(XvPortRec));
for (i = 0; i < nports; i++) {
struct sna_video *v = &video[i];
XvPortPtr port = &adaptor->pPorts[i];
@@ -413,6 +415,7 @@ void sna_video_textured_setup(struct sna *sna, ScreenPtr screen)
port->devPriv.ptr = v;
}
adaptor->base_id = adaptor->pPorts[0].id;
+ adaptor->nPorts = nports;
xvBrightness = MAKE_ATOM("XV_BRIGHTNESS");
xvContrast = MAKE_ATOM("XV_CONTRAST");
More information about the xorg-commit
mailing list