From 6c11d48cabf127d254620a110e1deaa952b7f8f7 Mon Sep 17 00:00:00 2001
From: Philip Gladstone <philipjsg@users.sourceforge.net>
Date: Sat, 30 Nov 2002 17:17:58 +0000
Subject: [PATCH] Added a release function to free up the context. Also removed
 the dummy declarations at the bottom of the file. This type checking is now
 handled by the header file.

Originally committed as revision 1295 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 vhook/fish.c   |  8 +++++---
 vhook/imlib2.c | 16 +++++++++++++---
 vhook/null.c   | 11 ++++++++---
 3 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/vhook/fish.c b/vhook/fish.c
index 86ae1a474be..2de265feb19 100644
--- a/vhook/fish.c
+++ b/vhook/fish.c
@@ -82,6 +82,11 @@ static void dorange(const char *s, int *first, int *second, int maxval)
         *second = maxval;
 }
 
+void Release(void *ctx)
+{
+    if (ctx)
+        av_free(ctx);
+}
 
 int Configure(void **ctxp, int argc, char *argv[])
 {
@@ -325,6 +330,3 @@ void Process(void *ctx, AVPicture *picture, enum PixelFormat pix_fmt, int width,
     }
 }
 
-/* To ensure correct typing */
-FrameHookConfigureFn ConfigureFn = Configure;
-FrameHookProcessFn ProcessFn = Process;
diff --git a/vhook/imlib2.c b/vhook/imlib2.c
index fcc09e17f36..576b45d004c 100644
--- a/vhook/imlib2.c
+++ b/vhook/imlib2.c
@@ -72,6 +72,19 @@ typedef struct _CachedImage {
     int height;
 } CachedImage;
 
+void Release(void *ctx)
+{
+    ContextInfo *ci;
+    ci = (ContextInfo *) ctx;
+
+    if (ci->cache) {
+        imlib_context_set_image(ci->cache->image);
+        imlib_free_image();
+        av_free(ci->cache);
+    }
+    if (ctx)
+        av_free(ctx);
+}
 
 int Configure(void **ctxp, int argc, char *argv[])
 {
@@ -261,6 +274,3 @@ done:
     ;
 }
 
-/* To ensure correct typing */
-FrameHookConfigureFn ConfigureFn = Configure;
-FrameHookProcessFn ProcessFn = Process;
diff --git a/vhook/null.c b/vhook/null.c
index 1fcb04b1c6b..da35d6e8459 100644
--- a/vhook/null.c
+++ b/vhook/null.c
@@ -24,6 +24,14 @@ typedef struct {
     int dummy;
 } ContextInfo;
 
+void Release(void *ctx)
+{
+    ContextInfo *ci;
+    ci = (ContextInfo *) ctx;
+
+    if (ctx)
+        av_free(ctx);
+}
 
 int Configure(void **ctxp, int argc, char *argv[])
 {
@@ -68,6 +76,3 @@ void Process(void *ctx, AVPicture *picture, enum PixelFormat pix_fmt, int width,
     av_free(buf);
 }
 
-/* To ensure correct typing */
-FrameHookConfigureFn ConfigureFn = Configure;
-FrameHookProcessFn ProcessFn = Process;
-- 
GitLab