summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYounes Manton <younes.m@gmail.com>2009-01-13 22:58:43 -0500
committerYounes Manton <younes.m@gmail.com>2009-01-18 21:40:10 -0500
commit11f91936f21c1ab0b38f0f84bb2cbf82f9cadece (patch)
treeec93e2fcf98e33d295e18b2a3e139f21244c7b4f /src
parentc35dc4a741d4147a5da8bbe834a38a4c2ce627d1 (diff)
g3dvl: Return BadAlloc if we can't create an XvMC surface.
Diffstat (limited to 'src')
-rw-r--r--src/gallium/state_trackers/g3dvl/vl_surface.c6
-rw-r--r--src/xvmc/surface.c15
2 files changed, 13 insertions, 8 deletions
diff --git a/src/gallium/state_trackers/g3dvl/vl_surface.c b/src/gallium/state_trackers/g3dvl/vl_surface.c
index 911469f966..612438f2ac 100644
--- a/src/gallium/state_trackers/g3dvl/vl_surface.c
+++ b/src/gallium/state_trackers/g3dvl/vl_surface.c
@@ -51,6 +51,12 @@ int vlCreateSurface
sfc->texture = vlGetPipeScreen(screen)->texture_create(vlGetPipeScreen(screen), &template);
+ if (!sfc->texture)
+ {
+ FREE(sfc);
+ return 1;
+ }
+
*surface = sfc;
return 0;
diff --git a/src/xvmc/surface.c b/src/xvmc/surface.c
index 67c179e66d..7c5f45bd34 100644
--- a/src/xvmc/surface.c
+++ b/src/xvmc/surface.c
@@ -73,14 +73,13 @@ Status XvMCCreateSurface(Display *display, XvMCContext *context, XvMCSurface *su
assert(display == vlGetNativeDisplay(vlGetDisplay(vlContextGetScreen(vl_ctx))));
- vlCreateSurface
- (
- vlContextGetScreen(vl_ctx),
- context->width,
- context->height,
- vlGetPictureFormat(vl_ctx),
- &vl_sfc
- );
+ if (vlCreateSurface(vlContextGetScreen(vl_ctx),
+ context->width, context->height,
+ vlGetPictureFormat(vl_ctx),
+ &vl_sfc))
+ {
+ return BadAlloc;
+ }
vlBindToContext(vl_sfc, vl_ctx);