From fbab577ab8f940f2c52b81cc0d0b501d53b0d1fe Mon Sep 17 00:00:00 2001 From: Stefan Kost Date: Thu, 9 Sep 2010 21:42:46 +0300 Subject: [PATCH] aasink: fix context initialisation and freeing to not leak --- ext/aalib/gstaasink.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/ext/aalib/gstaasink.c b/ext/aalib/gstaasink.c index ea27a67..d5d4e2d 100644 --- a/ext/aalib/gstaasink.c +++ b/ext/aalib/gstaasink.c @@ -482,17 +482,18 @@ gst_aasink_get_property (GObject * object, guint prop_id, GValue * value, static gboolean gst_aasink_open (GstAASink * aasink) { - aa_recommendhidisplay (aa_drivers[aasink->aa_driver]->shortname); - - aasink->context = aa_autoinit (&aasink->ascii_surf); - if (aasink->context == NULL) { - GST_ELEMENT_ERROR (GST_ELEMENT (aasink), LIBRARY, TOO_LAZY, (NULL), - ("error opening aalib context")); - return FALSE; + if (!aasink->context) { + aa_recommendhidisplay (aa_drivers[aasink->aa_driver]->shortname); + + aasink->context = aa_autoinit (&aasink->ascii_surf); + if (aasink->context == NULL) { + GST_ELEMENT_ERROR (GST_ELEMENT (aasink), LIBRARY, TOO_LAZY, (NULL), + ("error opening aalib context")); + return FALSE; + } + aa_autoinitkbd (aasink->context, 0); + aa_resizehandler (aasink->context, (void *) aa_resize); } - aa_autoinitkbd (aasink->context, 0); - aa_resizehandler (aasink->context, (void *) aa_resize); - return TRUE; } @@ -500,6 +501,7 @@ static gboolean gst_aasink_close (GstAASink * aasink) { aa_close (aasink->context); + aasink->context = NULL; return TRUE; } -- 2.7.4