From 6cecf393b3a5941fcd10bb9236d1a318a9e3373c Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Kempf <jb@videolan.org>
Date: Mon, 8 Aug 2011 23:23:48 +0200
Subject: [PATCH] Contribs: add Goom

---
 contrib/src/goom/SHA512SUMS               |   1 +
 contrib/src/goom/goom2k4-0-memleaks.patch | 141 ++++++++++++++++++++++
 contrib/src/goom/goom2k4-0-mmx.patch      |  14 +++
 contrib/src/goom/goom2k4-0-win32.patch    |  68 +++++++++++
 contrib/src/goom/goom2k4-autotools.patch  |  18 +++
 contrib/src/goom/goom2k4-noxmmx.patch     |  20 +++
 contrib/src/goom/goom2k4-osx.patch        |  11 ++
 contrib/src/goom/goom2k4-xmmslibdir.patch |  11 ++
 contrib/src/goom/rules.mak                |  33 +++++
 9 files changed, 317 insertions(+)
 create mode 100644 contrib/src/goom/SHA512SUMS
 create mode 100644 contrib/src/goom/goom2k4-0-memleaks.patch
 create mode 100644 contrib/src/goom/goom2k4-0-mmx.patch
 create mode 100644 contrib/src/goom/goom2k4-0-win32.patch
 create mode 100644 contrib/src/goom/goom2k4-autotools.patch
 create mode 100644 contrib/src/goom/goom2k4-noxmmx.patch
 create mode 100644 contrib/src/goom/goom2k4-osx.patch
 create mode 100644 contrib/src/goom/goom2k4-xmmslibdir.patch
 create mode 100644 contrib/src/goom/rules.mak

diff --git a/contrib/src/goom/SHA512SUMS b/contrib/src/goom/SHA512SUMS
new file mode 100644
index 000000000000..604cfb1989d3
--- /dev/null
+++ b/contrib/src/goom/SHA512SUMS
@@ -0,0 +1 @@
+790e3ab8dee122320ad8b3ae15f6a1cd2780222d5ae97979f614f16ba73b4b853960e7945ef9053ad9eddf9e29e69d0c52f0875d07c5c6c7cee41d764bf4ea5f  goom-2k4-0-src.tar.gz
diff --git a/contrib/src/goom/goom2k4-0-memleaks.patch b/contrib/src/goom/goom2k4-0-memleaks.patch
new file mode 100644
index 000000000000..3b881d770975
--- /dev/null
+++ b/contrib/src/goom/goom2k4-0-memleaks.patch
@@ -0,0 +1,141 @@
+diff -Naur goom-origin/src/convolve_fx.c goom/src/convolve_fx.c
+--- goom-origin/src/convolve_fx.c	2005-02-07 14:46:42.000000000 +0100
++++ goom/src/convolve_fx.c	2009-03-23 11:16:13.000000000 +0100
+@@ -107,7 +107,9 @@
+ }
+ 
+ static void convolve_free(VisualFX *_this) {
+-  free (_this->fx_data);
++  ConvData *data = _this->fx_data;
++  free (data->params.params);
++  free (data);
+ }
+ 
+ static void create_output_with_brightness(VisualFX *_this, Pixel *src, Pixel *dest,
+diff -Naur goom-origin/src/filters.c goom/src/filters.c
+--- goom-origin/src/filters.c	2005-02-07 14:46:41.000000000 +0100
++++ goom/src/filters.c	2009-03-23 10:46:34.000000000 +0100
+@@ -731,6 +731,12 @@
+ 
+ static void zoomFilterVisualFXWrapper_free (struct _VISUAL_FX *_this)
+ {
++    ZoomFilterFXWrapperData *data = (ZoomFilterFXWrapperData*)_this->fx_data;
++    if (data->brutS) free (data->freebrutS);
++    if (data->brutD) free (data->freebrutD);
++    if (data->brutT) free (data->freebrutT);
++    free (data->firedec);
++    free (data->params.params);
+     free(_this->fx_data);
+ }
+ 
+diff -Naur goom-origin/src/flying_stars_fx.c goom/src/flying_stars_fx.c
+--- goom-origin/src/flying_stars_fx.c	2005-02-07 14:46:41.000000000 +0100
++++ goom/src/flying_stars_fx.c	2009-03-23 11:18:57.000000000 +0100
+@@ -129,7 +129,10 @@
+ }
+ 
+ static void fs_free(VisualFX *_this) {
+-	free (_this->fx_data);
++        FSData *data = (FSData*)_this->fx_data;
++        free (data->stars);
++        free (data->params.params);
++	free (data);
+ }
+ 
+ 
+diff -Naur goom-origin/src/gfontlib.c goom/src/gfontlib.c
+--- goom-origin/src/gfontlib.c	2005-02-07 14:46:41.000000000 +0100
++++ goom/src/gfontlib.c	2009-03-23 09:06:27.000000000 +0100
+@@ -126,6 +126,8 @@
+         small_font_width [32] = font_width [32]/2;
+         font_chars [32] = 0;
+         small_font_chars [32] = 0;
++        free( gfont );
++        free( font_pos );
+ }
+ 
+ void    goom_draw_text (Pixel * buf,int resolx,int resoly,
+diff -Naur goom-origin/src/goom_core.c goom/src/goom_core.c
+--- goom-origin/src/goom_core.c	2005-02-07 14:46:41.000000000 +0100
++++ goom/src/goom_core.c	2009-03-23 11:21:11.000000000 +0100
+@@ -765,6 +765,15 @@
+     goomInfo->star_fx.free(&goomInfo->star_fx);
+     goomInfo->tentacles_fx.free(&goomInfo->tentacles_fx);
+     goomInfo->zoomFilter_fx.free(&goomInfo->zoomFilter_fx);
++
++    // Release info visual
++    free (goomInfo->params);
++    free (goomInfo->sound.params.params);
++
++    // Release PluginInfo
++    free (goomInfo->visuals);
++    gsl_free (goomInfo->scanner);
++    gsl_free (goomInfo->main_scanner);
+     
+     free(goomInfo);
+ }
+diff -Naur goom-origin/src/goomsl.c goom/src/goomsl.c
+--- goom-origin/src/goomsl.c	2005-02-07 14:46:41.000000000 +0100
++++ goom/src/goomsl.c	2009-03-23 11:07:25.000000000 +0100
+@@ -90,6 +90,7 @@
+ 
+ void iflow_free(InstructionFlow *_this)
+ { /* {{{ */
++  free(_this->instr);
+   goom_hash_free(_this->labels);
+   free(_this); /*TODO: finir cette fonction */
+ } /* }}} */
+@@ -1422,8 +1423,12 @@
+ void gsl_free(GoomSL *gss)
+ { /* {{{ */
+   iflow_free(gss->iflow);
+-  free(gss->vars);
+-  free(gss->functions);
++  goom_hash_free(gss->vars);
++  goom_hash_free(gss->functions);
++  goom_hash_free(gss->structIDS);
++  free(gss->gsl_struct);
++  goom_heap_delete(gss->data_heap);
++  free(gss->ptrArray);
+   free(gss);
+ } /* }}} */
+ 
+diff -Naur goom-origin/src/lines.c goom/src/lines.c
+--- goom-origin/src/lines.c	2005-02-07 14:46:41.000000000 +0100
++++ goom/src/lines.c	2009-03-23 10:28:26.000000000 +0100
+@@ -199,6 +199,7 @@
+ goom_lines_free (GMLine ** l)
+ {
+ 	free ((*l)->points);
++	free ((*l)->points2);
+ 	free (*l);
+ 	l = NULL;
+ }
+diff -Naur goom-origin/src/tentacle3d.c goom/src/tentacle3d.c
+--- goom-origin/src/tentacle3d.c	2005-02-07 14:46:41.000000000 +0100
++++ goom/src/tentacle3d.c	2009-03-23 11:13:38.000000000 +0100
+@@ -90,7 +90,9 @@
+ }
+ 
+ static void tentacle_fx_free(VisualFX *_this) {
+-	tentacle_free((TentacleFXData*)_this->fx_data);
++        TentacleFXData *data = (TentacleFXData*)_this->fx_data;
++        free(data->params.params);
++	tentacle_free(data);
+ 	free(_this->fx_data);
+ }
+ 
+@@ -106,6 +108,13 @@
+ 
+ static void tentacle_free (TentacleFXData *data) {
+ 	/* TODO : un vrai FREE GRID!! */
++        int tmp;
++        for (tmp=0;tmp<nbgrid;tmp++){
++            grid3d *g = data->grille[tmp];
++            free (g->surf.vertex);
++            free (g->surf.svertex);
++            free (g);
++        }
+ 	free (data->vals);
+ }
+ 
diff --git a/contrib/src/goom/goom2k4-0-mmx.patch b/contrib/src/goom/goom2k4-0-mmx.patch
new file mode 100644
index 000000000000..48366d6c5a88
--- /dev/null
+++ b/contrib/src/goom/goom2k4-0-mmx.patch
@@ -0,0 +1,14 @@
+diff -ruN goom.orig/src/xmmx.c goom/src/xmmx.c
+--- goom.orig/src/xmmx.c	2006-10-01 22:10:15.000000000 +0200
++++ goom/src/xmmx.c	2006-10-01 23:45:59.000000000 +0200
+@@ -69,8 +69,8 @@
+ 		 */
+ 
+ 		asm volatile
+-      ("#1 \n\t movq %[brutS], %%mm0"
+-       "#1 \n\t movq %[brutD], %%mm1"
++      ("#1 \n\t movq (%[brutS]), %%mm0"
++       "#1 \n\t movq (%[brutD]), %%mm1"
+        "#1 \n\t psubd   %%mm0, %%mm1" /* mm1 = D - S */
+        "#1 \n\t movq    %%mm1, %%mm2" /* mm2 = D - S */
+        "#1 \n\t pslld     $16, %%mm1"
diff --git a/contrib/src/goom/goom2k4-0-win32.patch b/contrib/src/goom/goom2k4-0-win32.patch
new file mode 100644
index 000000000000..208cf284cf73
--- /dev/null
+++ b/contrib/src/goom/goom2k4-0-win32.patch
@@ -0,0 +1,68 @@
+diff -Naur goom-orig/configure.in goom/configure.in
+--- goom-2k4-0-src/configure.in.orig	2005-02-07 14:46:41.000000000 +0100
++++ goom-2k4-0-src/configure.in	2011-08-08 23:18:39.204832964 +0200
+@@ -1,6 +1,5 @@
+ AC_INIT(README)
+ 
+-AM_DISABLE_STATIC
+ AM_INIT_AUTOMAKE(SDL_Goom, 2k4)
+ 
+ ACLOCAL="$ACLOCAL -I m4"
+@@ -76,24 +75,7 @@
+ AM_CONDITIONAL(MACTARGET,test "x$MACTARGET" = "xyes")
+ 
+ 
+-AC_CHECK_HEADER(pthread.h,,AC_MSG_ERROR([*** POSIX thread support not installed - please install first ***]))
+-
+-PTHREAD_LIBS=error
+-AC_CHECK_LIB(pthread, pthread_attr_init, PTHREAD_LIBS="-lpthread")
+-
+-if test "x$PTHREAD_LIBS" = xerror; then
+-    AC_CHECK_LIB(pthreads, pthread_attr_init, PTHREAD_LIBS="-lpthreads")
+-fi
+-
+-if test "x$PTHREAD_LIBS" = xerror; then
+-    AC_CHECK_LIB(c_r, pthread_attr_init, PTHREAD_LIBS="-lc_r")
+-fi
+-
+-if test "x$PTHREAD_LIBS" = xerror; then
+-    AC_CHECK_FUNC(pthread_attr_init, PTHREAD_LIBS="")
+-fi
+-
+-AC_SUBST(PTHREAD_LIBS)
++dnl AC_SUBST(PTHREAD_LIBS)
+ 
+ dnl rm -f mmx_zoom.s
+ dnl 	echo -n checking for nasm...
+diff -Naur goom-orig/src/filters.c goom/src/filters.c
+--- goom-orig/src/filters.c	2005-02-07 14:46:41.000000000 +0100
++++ goom/src/filters.c	2005-08-26 16:31:17.000000000 +0200
+@@ -201,8 +201,8 @@
+     /* Noise */
+     if (data->noisify)
+     {
+-        vx += (((float)random()) / ((float)RAND_MAX) - 0.5f) / 50.0f;
+-        vy += (((float)random()) / ((float)RAND_MAX) - 0.5f) / 50.0f;
++        vx += (((float)rand()) / ((float)RAND_MAX) - 0.5f) / 50.0f;
++        vy += (((float)rand()) / ((float)RAND_MAX) - 0.5f) / 50.0f;
+     }
+     
+     /* Hypercos */
+diff -Naur goom-orig/src/goom_core.c goom/src/goom_core.c
+--- goom-orig/src/goom_core.c	2005-02-07 14:46:41.000000000 +0100
++++ goom/src/goom_core.c	2005-08-26 16:33:01.000000000 +0200
+@@ -40,11 +40,11 @@
+ static void init_buffers(PluginInfo *goomInfo, int buffsize)
+ {
+     goomInfo->pixel = (guint32 *) malloc (buffsize * sizeof (guint32) + 128);
+-    bzero (goomInfo->pixel, buffsize * sizeof (guint32) + 128);
++    memset (goomInfo->pixel, 0, buffsize * sizeof (guint32) + 128);
+     goomInfo->back = (guint32 *) malloc (buffsize * sizeof (guint32) + 128);
+-    bzero (goomInfo->back, buffsize * sizeof (guint32) + 128);
++    memset (goomInfo->back, 0, buffsize * sizeof (guint32) + 128);
+     goomInfo->conv = (Pixel *) malloc (buffsize * sizeof (guint32) + 128);
+-    bzero (goomInfo->conv, buffsize * sizeof (guint32) + 128);
++    memset (goomInfo->conv, 0, buffsize * sizeof (guint32) + 128);
+ 
+     goomInfo->outputBuf = goomInfo->conv;
+     
diff --git a/contrib/src/goom/goom2k4-autotools.patch b/contrib/src/goom/goom2k4-autotools.patch
new file mode 100644
index 000000000000..62b7ad852915
--- /dev/null
+++ b/contrib/src/goom/goom2k4-autotools.patch
@@ -0,0 +1,18 @@
+--- goom/src/Makefile.am	2005-02-07 14:46:41.000000000 +0100
++++ goom.new/src/Makefile.am	2009-08-19 09:21:57.000000000 +0200
+@@ -16,7 +16,7 @@
+ goom2_libdir = $(libdir)
+ 
+ goom2_library_includedir=$(includedir)/goom
+-goom2_library_include_HEADERS = goom.h goom_plugin_info.h goom_typedefs.h goom_graphic.h goom_config_param.h goom_visual_fx.h goom_filters.h goom_tools.h goomsl.h goomsl_hash.h goomsl_heap.h goom_tools.h goom_config.h
++goom2_library_include_HEADERS = goom.h goom_plugin_info.h goom_typedefs.h goom_graphic.h goom_config_param.h goom_visual_fx.h goom_filters.h goom_tools.h goomsl.h goomsl_hash.h goomsl_heap.h goom_config.h
+ libgoom2_la_LDFLAGS = -export-dynamic -export-symbols-regex "goom.*" 
+ libgoom2_la_SOURCES = \
+ 	goomsl_yacc.y goomsl_lex.l goomsl.c goomsl_hash.c goomsl_heap.c \
+--- goom/Makefile.am.orig	2010-10-31 21:43:45.514184001 +0100
++++ goom/Makefile.am	2010-10-31 21:44:01.382194251 +0100
+@@ -1,3 +1,4 @@
++ACLOCAL_AMFLAGS = -I m4
+ SUBDIRS = src xmms-goom sdl-goom @MACFOLDER@
+ 
+ #.pc file
diff --git a/contrib/src/goom/goom2k4-noxmmx.patch b/contrib/src/goom/goom2k4-noxmmx.patch
new file mode 100644
index 000000000000..d9f07a2ce45f
--- /dev/null
+++ b/contrib/src/goom/goom2k4-noxmmx.patch
@@ -0,0 +1,20 @@
+--- goom/src/plugin_info.c	2005-02-07 14:46:41.000000000 +0100
++++ goom.new/src/plugin_info.c	2011-01-23 15:37:37.524184437 +0100
+@@ -31,6 +31,7 @@
+ /*    p->methods.create_output_with_brightness = create_output_with_brightness;*/
+ 
+ #ifdef CPU_X86
++#if 0
+ 	if (cpuFlavour & CPU_OPTION_XMMX) {
+ #ifdef VERBOSE
+ 		printf ("Extented MMX detected. Using the fastest methods !\n");
+@@ -38,7 +39,8 @@
+ 		p->methods.draw_line = draw_line_mmx;
+ 		p->methods.zoom_filter = zoom_filter_xmmx;
+ 	}
+-	else if (cpuFlavour & CPU_OPTION_MMX) {
++#endif
++	if (cpuFlavour & CPU_OPTION_MMX) {
+ #ifdef VERBOSE
+ 		printf ("MMX detected. Using fast methods !\n");
+ #endif
diff --git a/contrib/src/goom/goom2k4-osx.patch b/contrib/src/goom/goom2k4-osx.patch
new file mode 100644
index 000000000000..1ab4db1e2fd1
--- /dev/null
+++ b/contrib/src/goom/goom2k4-osx.patch
@@ -0,0 +1,11 @@
+--- goom/configure.in.orig	2010-11-01 00:05:11.000000000 +0100
++++ goom/configure.in	2010-11-01 00:05:16.000000000 +0100
+@@ -43,8 +43,6 @@
+ dnl HOST
+ case "$host" in
+ *-apple-darwin*)
+-	MACTARGET="yes"
+-	MACFOLDER="mac"
+ 	AC_SUBST(MACFOLDER)
+   	CCAS='$(CC)'
+   	AC_SUBST(CCAS)
diff --git a/contrib/src/goom/goom2k4-xmmslibdir.patch b/contrib/src/goom/goom2k4-xmmslibdir.patch
new file mode 100644
index 000000000000..3459caa909db
--- /dev/null
+++ b/contrib/src/goom/goom2k4-xmmslibdir.patch
@@ -0,0 +1,11 @@
+--- goom/xmms-goom/Makefile.am	2005-02-07 22:46:42.000000000 +0900
++++ goom.new/xmms-goom/Makefile.am	2011-04-16 02:03:15.420291009 +0900
+@@ -2,7 +2,7 @@
+ 
+ if HAVE_XMMS
+ xmms_lib_LTLIBRARIES = libxmmsgoom2.la
+-xmms_libdir = $(XMMS_VISUALIZATION_PLUGIN_DIR)
++xmms_libdir = $(libdir)
+ libxmmsgoom2_la_LIBADD = $(top_builddir)/src/libgoom2.la $(XMMS_LIBS)
+ libxmmsgoom2_la_SOURCES = xmms_goom.c
+ INCLUDES=-DDATADIR=\"@XMMS_DATA_DIR@\" @XMMS_CFLAGS@ -Wall -I../src/
diff --git a/contrib/src/goom/rules.mak b/contrib/src/goom/rules.mak
new file mode 100644
index 000000000000..9b974849d85d
--- /dev/null
+++ b/contrib/src/goom/rules.mak
@@ -0,0 +1,33 @@
+# goom
+
+GOOM_VERSION := 2k4-0
+GOOM_URL := $(CONTRIB_VIDEOLAN)/goom-$(GOOM_VERSION)-src.tar.gz
+
+PKGS += goom
+
+$(TARBALLS)/goom-$(GOOM_VERSION)-src.tar.gz:
+	$(call download,$(GOOM_URL))
+
+.sum-goom: goom-$(GOOM_VERSION)-src.tar.gz
+
+goom: goom-$(GOOM_VERSION)-src.tar.gz .sum-goom
+	$(UNPACK)
+	mv goom2k4-0 goom-2k4-0-src
+	$(APPLY) $(SRC)/goom/goom2k4-0-memleaks.patch
+	$(APPLY) $(SRC)/goom/goom2k4-autotools.patch
+	$(APPLY) $(SRC)/goom/goom2k4-noxmmx.patch
+	$(APPLY) $(SRC)/goom/goom2k4-xmmslibdir.patch
+	$(APPLY) $(SRC)/goom/goom2k4-0-mmx.patch
+ifdef HAVE_WIN32
+	$(APPLY) $(SRC)/goom/goom2k4-0-win32.patch
+endif
+ifdef HAVE_MACOSX
+	$(APPLY) $(SRC)/goom/goom2k4-osx.patch
+endif
+	$(MOVE)
+
+.goom: goom
+	$(RECONF)
+	cd $< && $(HOSTVARS) ./configure $(HOSTCONF) --disable-glibtest --disable-gtktest
+	cd $< && $(MAKE) install
+	touch $@
-- 
GitLab