free memory used by the x11 grabber when closing it.
authorLuigi Rizzo <rizzo@icir.org>
Mon, 14 Jul 2008 16:50:54 +0000 (16:50 +0000)
committerLuigi Rizzo <rizzo@icir.org>
Mon, 14 Jul 2008 16:50:54 +0000 (16:50 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@130733 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/vgrabbers.c

index 470a19f..4afc12f 100644 (file)
@@ -69,6 +69,8 @@ struct grab_x11_desc {
        struct fbuf_t   b;              /* geometry and pointer into the XImage */
 };
 
+static void *grab_x11_close(void *desc);       /* forward declaration */
+
 /*! \brief open the grabber.
  * We use the special name 'X11' to indicate this grabber.
  */
@@ -127,12 +129,7 @@ static void *grab_x11_open(const char *name, struct fbuf_t *geom, int fps)
        return v;
 
 error:
-       /* XXX maybe XDestroy (v->image) ? */
-       if (v->dpy)
-               XCloseDisplay(v->dpy);
-       v->dpy = NULL;
-       ast_free(v);
-       return NULL;
+       return grab_x11_close(v);
 }
 
 static struct fbuf_t *grab_x11_read(void *desc)
@@ -170,7 +167,8 @@ static void *grab_x11_close(void *desc)
 {
        struct grab_x11_desc *v = desc;
 
-       XCloseDisplay(v->dpy);
+       if (v->dpy)
+               XCloseDisplay(v->dpy);
        v->dpy = NULL;
        v->image = NULL;
        ast_free(v);