From: <tr...@us...> - 2009-12-14 08:57:25
|
Revision: 2263 http://pkgbuild.svn.sourceforge.net/pkgbuild/?rev=2263&view=rev Author: trisk Date: 2009-12-14 08:57:11 +0000 (Mon, 14 Dec 2009) Log Message: ----------- 2009-12-14 Albert Lee <tr...@op...> * SFEagg.spec: *NEW* Anti-Grain Geometry (AGG) rendering engine * SFEgnash.spec: *NEW* Gnash - GNU Flash movie player * patches/agg-01-disable_gpc.diff: Disable gpc. * patches/agg-02-rpath.diff: Remove GNU ld -rpath option. * patches/agg-03-fix_recursion_crash.diff: Fix crash caused by infinite recursion. * patches/agg-04-libm.diff: Check if math library is required. * patches/gnash-01-stdc.diff: Fix uses of C library functions. * patches/gnash-02-sunpro.diff: Sun Studio support. * patches/gnash-03-gnashrc.diff: Improved $GNASHRC list parsing. * patches/gnash-04-plugin.diff: Portability and other fixes for plugin. Modified Paths: -------------- spec-files-extra/trunk/ChangeLog Added Paths: ----------- spec-files-extra/trunk/SFEagg.spec spec-files-extra/trunk/SFEgnash.spec spec-files-extra/trunk/patches/agg-01-disable_gpc.diff spec-files-extra/trunk/patches/agg-02-rpath.diff spec-files-extra/trunk/patches/agg-03-fix_recursion_crash.diff spec-files-extra/trunk/patches/agg-04-libm.diff spec-files-extra/trunk/patches/gnash-01-stdc.diff spec-files-extra/trunk/patches/gnash-02-sunpro.diff spec-files-extra/trunk/patches/gnash-03-gnashrc.diff spec-files-extra/trunk/patches/gnash-04-plugin.diff Modified: spec-files-extra/trunk/ChangeLog =================================================================== --- spec-files-extra/trunk/ChangeLog 2009-12-14 08:07:24 UTC (rev 2262) +++ spec-files-extra/trunk/ChangeLog 2009-12-14 08:57:11 UTC (rev 2263) @@ -1,3 +1,17 @@ +2009-12-14 Albert Lee <tr...@op...> + + * SFEagg.spec: *NEW* Anti-Grain Geometry (AGG) rendering engine + * SFEgnash.spec: *NEW* Gnash - GNU Flash movie player + * patches/agg-01-disable_gpc.diff: Disable gpc. + * patches/agg-02-rpath.diff: Remove GNU ld -rpath option. + * patches/agg-03-fix_recursion_crash.diff: Fix crash caused by infinite + recursion. + * patches/agg-04-libm.diff: Check if math library is required. + * patches/gnash-01-stdc.diff: Fix uses of C library functions. + * patches/gnash-02-sunpro.diff: Sun Studio support. + * patches/gnash-03-gnashrc.diff: Improved $GNASHRC list parsing. + * patches/gnash-04-plugin.diff: Portability and other fixes for plugin. + 2009-12-14 Wang Xin <jed...@su...> Update the patch to make it upstreamable. Added: spec-files-extra/trunk/SFEagg.spec =================================================================== --- spec-files-extra/trunk/SFEagg.spec (rev 0) +++ spec-files-extra/trunk/SFEagg.spec 2009-12-14 08:57:11 UTC (rev 2263) @@ -0,0 +1,106 @@ +# Copyright 2009 Sun Microsystems, Inc. +# This file and all modifications and additions to the pristine +# package are under the same license as the package itself. +# +# Owner: trisk +# +%include Solaris.inc + +Name: SFEagg +Summary: Anti-Grain Geometry (AGG) rendering engine +Version: 2.5 +Source: http://www.antigrain.com/agg-%{version}.tar.gz +# some patches from http://patch-tracker.debian.org/package/agg/ +Patch1: agg-01-disable_gpc.diff +Patch2: agg-02-rpath.diff +Patch3: agg-03-fix_recursion_crash.diff +Patch4: agg-04-libm.diff +Url: http://www.antigrain.com/ +License: GPLv2+ +SUNW_BaseDir: %{_basedir} +BuildRoot: %{_tmppath}/%{name}-%{version}-build + +%include default-depend.inc +BuildRequires: SUNWgnome-common-devel +BuildRequires: SUNWlibsdl-devel + +%package devel +Summary: %{summary} - development files +SUNW_BaseDir: %{_basedir} +%include default-depend.inc +Requires: SUNWlibsdl +Requires: SUNWfreetype2 +Requires: SUNWxwinc + +%prep +%setup -q -n agg-%{version} +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 + +%build + +CPUS=`/usr/sbin/psrinfo | grep on-line | wc -l | tr -d ' '` +if test "x$CPUS" = "x" -o $CPUS = 0; then + CPUS=1 +fi + +export CPPFLAGS="-I%{xorg_inc}" +export CFLAGS="%optflags -xlibmil" +# we are doing this for Gnash... feel free to convert this to a base-spec +export CXXFLAGS="%cxx_optflags -xO4 -library=stlport4 -staticlib=stlport4 \ + -norunpath -mt -xlibmil -xlibmopt -features=tmplife -features=tmplrefstatic" +export LDFLAGS="%_ldflags %{xorg_lib_path}" + +aclocal +# for stlport +ed -s aclocal.m4 <<'/EOF/' >/dev/null +,s/-lCstd// +w +q +/EOF/ +autoheader +autoconf +libtoolize --copy --force +automake -a -c --foreign --ignore-deps +./configure \ + --prefix=%{_prefix} \ + --disable-examples \ + --disable-gpc \ + --x-includes=%{_includedir} \ + --x-libraries=%{_libdir} + +gmake -j $CPUS + +%install +rm -rf $RPM_BUILD_ROOT + +gmake install DESTDIR=$RPM_BUILD_ROOT + +find $RPM_BUILD_ROOT -type f -name "*.la" -exec rm -f {} ';' +#find $RPM_BUILD_ROOT -type f -name "*.a" -exec rm -f {} ';' + +rm -f $RPM_BUILD_ROOT%{_libdir}/libagg*.so.* +rm -f $RPM_BUILD_ROOT%{_libdir}/libagg*.so + +%clean +rm -rf $RPM_BUILD_ROOT + +%files + +%files devel +%defattr (-, root, bin) +%dir %attr (0755, root, bin) %{_includedir} +%{_includedir}/* +%dir %attr (0755, root, bin) %{_libdir} +%{_libdir}/lib*.a +%dir %attr (0755, root, other) %{_libdir}/pkgconfig +%{_libdir}/pkgconfig/* +%dir %attr (0755, root, sys) %{_datadir} +%dir %attr (0755, root, other) %{_datadir}/aclocal +%{_datadir}/aclocal/* + +%changelog +* Tue Dec 01 2009 - Albert Lee <tr...@op...> +- Initial spec. Added: spec-files-extra/trunk/SFEgnash.spec =================================================================== --- spec-files-extra/trunk/SFEgnash.spec (rev 0) +++ spec-files-extra/trunk/SFEgnash.spec 2009-12-14 08:57:11 UTC (rev 2263) @@ -0,0 +1,202 @@ +# Copyright 2009 Sun Microsystems, Inc. +# This file and all modifications and additions to the pristine +# package are under the same license as the package itself. +# +# Owner: trisk +# +%include Solaris.inc + +%define SUNWglib2 %(/usr/bin/pkginfo -q SUNWglib2 && echo 1 || echo 0) + +Name: SFEgnash +Summary: Gnash - GNU Flash movie player +Version: 0.8.6 +Source: http://ftp.gnu.org/pub/gnu/gnash/%{version}/gnash-%{version}.tar.bz2 +Patch1: gnash-01-stdc.diff +Patch2: gnash-02-sunpro.diff +Patch3: gnash-03-gnashrc.diff +Patch4: gnash-04-plugin.diff +Url: http://www.gnashdev.org/ +License: GPLv3+ +SUNW_BaseDir: %{_basedir} +BuildRoot: %{_tmppath}/%{name}-%{version}-build + +# cairo performance is poor +%define _with_agg 1 + +%include default-depend.inc +BuildRequires: SUNWgnome-common-devel +BuildRequires: SUNWgnu-gettext +BuildRequires: SFEboost-devel +Requires: SFEboost +Requires: SUNWlxml +Requires: SUNWbzip +Requires: SUNWzlib +BuildRequires: SUNWjpg-devel +Requires: SUNWjpg +BuildRequires: SFEgiflib-devel +Requires: SFEgiflib +BuildRequires: SUNWpng-devel +Requires: SUNWpng +Requires: SUNWfontconfig +Requires: SUNWfreetype2 +Requires: SUNWspeex +Requires: SUNWcurl + +%if %{?_with_agg:1}%{?!_with_agg} +%define renderer agg +BuildRequires: SFEagg-devel +%else +%define renderer cairo +%if %SUNWglib2 +BuildRequires: SUNWcairo-devel +Requires: SUNWcairo +%endif +%endif + +%if %SUNWglib2 +BuildRequires: SUNWglib2-devel +Requires: SUNWglib2 +BuildRequires: SUNWgtk2-devel +Requires: SUNWgtk2 +%else +BuildRequires: SUNWgnome-base-libs-devel +Requires: SUNWgnome-base-libs +%endif + +BuildRequires: SUNWgnome-media-devel +Requires: SUNWgnome-media +BuildRequires: SUNWlibsdl-devel +Requires: SUNWlibsdl +Requires: SUNWxorg-clientlibs + +Requires: %{name}-root + +%package root +Summary: %{summary} - root +SUNW_BaseDir: / +%include default-depend.inc + +%package devel +Summary: %{summary} - development files +SUNW_BaseDir: %{_basedir} +%include default-depend.inc +Requires: %{name} + +%if %build_l10n +%package l10n +Summary: %{summary} - l10n files +SUNW_BaseDir: %{_basedir} +%include default-depend.inc +Requires: %{name} +%endif + +%prep +%setup -q -n gnash-%{version} +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 + +%build + +CPUS=`/usr/sbin/psrinfo | grep on-line | wc -l | tr -d ' '` +if test "x$CPUS" = "x" -o $CPUS = 0; then + CPUS=1 +fi + +export ACLOCAL_FLAGS="-I %{_datadir}/aclocal" +# Necessary for mmap, clock_gettime, sigwait +export CPPFLAGS="-D_XOPEN_SOURCE=500 -D__EXTENSIONS__" +export CFLAGS="%optflags -xlibmil" +# libtool strips -staticlib=stlport4 +export CXXFLAGS="%cxx_optflags -library=stlport4 -staticlib=stlport4 \ + -XCClinker -staticlib=stlport4 \ + -norunpath -mt -xlibmil -xlibmopt -features=tmplife -features=tmplrefstatic" +export LDFLAGS="%_ldflags" + +for dir in macros cygnal libltdl/m4; do + [ -d "$dir" ] && aclocalincludes="-I $dir $aclocalincludes" +done +aclocal $aclocalincludes $ACLOCAL_FLAGS +automake -a -c -f +autoconf +./configure \ + --prefix=%{_prefix} \ + --sysconfdir=%{_sysconfdir} \ + --mandir=%{_mandir} \ + --disable-jemalloc \ + --enable-avm2 \ + --enable-gui=gtk \ + --enable-renderer=%{renderer} \ + --enable-media=gst \ + --disable-testsuite \ + --disable-glext \ + --with-plugins-install=system + +gmake -j $CPUS + +%install +rm -rf $RPM_BUILD_ROOT + +gmake install DESTDIR=$RPM_BUILD_ROOT +gmake install-plugins DESTDIR=$RPM_BUILD_ROOT + +find $RPM_BUILD_ROOT -type f -name "*.la" -exec rm -f {} ';' +find $RPM_BUILD_ROOT -type f -name "*.a" -exec rm -f {} ';' + +%if %build_l10n +%else +rm -rf $RPM_BUILD_ROOT%{_localedir} +%endif + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr (-, root, bin) +%dir %attr (0755, root, bin) %{_bindir} +%{_bindir}/* +%dir %attr (0755, root, bin) %{_libdir} +%dir %attr (0755, root, bin) %{_libdir}/gnash +%{_libdir}/gnash/* +%dir %attr (0755, root, bin) %{_libdir}/firefox +%dir %attr (0755, root, bin) %{_libdir}/firefox/plugins +%{_libdir}/firefox/plugins/* +%dir %attr (0755, root, sys) %{_datadir} +%dir %attr (0755, root, sys) %{_datadir}/gnash +%{_datadir}/gnash/* +%dir %attr (0755, root, other) %{_docdir} +%dir %attr (0755, root, other) %{_docdir}/gnash +%{_docdir}/gnash/* +%dir %attr(0755, root, bin) %{_mandir} +%dir %attr(0755, root, bin) %{_mandir}/* +%{_mandir}/*/* + +%files root +%defattr (-, root, sys) +%attr (0755, root, sys) %dir %{_sysconfdir} +%{_sysconfdir}/gnash*rc + +%files devel +%defattr (-, root, bin) +%defattr (-, root, bin) +%dir %attr (0755, root, bin) %{_prefix} +%dir %attr (0755, root, bin) %{_includedir} +%{_includedir}/* +%dir %attr (0755, root, bin) %{_libdir} +%dir %attr (0755, root, other) %{_libdir}/pkgconfig +%{_libdir}/pkgconfig/* + +%if %build_l10n +%files l10n +%defattr (-, root, other) +%dir %attr (0755, root, bin) %{_prefix} +%dir %attr (0755, root, sys) %{_datadir} +%dir %attr (0755, root, other) %{_datadir}/locale +%{_datadir}/locale/* +%endif + +%changelog +* Tue Dec 01 2009 - Albert Lee <tr...@op...> +- Initial spec. Added: spec-files-extra/trunk/patches/agg-01-disable_gpc.diff =================================================================== --- spec-files-extra/trunk/patches/agg-01-disable_gpc.diff (rev 0) +++ spec-files-extra/trunk/patches/agg-01-disable_gpc.diff 2009-12-14 08:57:11 UTC (rev 2263) @@ -0,0 +1,18 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 01_disable_gpc.dpatch by <andrea@nightsong> +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +diff -urNad debian.source~/Makefile.am debian.source/Makefile.am +--- debian.source~/Makefile.am 2007-10-10 16:13:11.000000000 +0200 ++++ debian.source/Makefile.am 2007-10-10 16:26:51.000000000 +0200 +@@ -1,4 +1,7 @@ ++SUBDIRS = src font_freetype font_win32_tt include examples ++if ENABLE_GPC + SUBDIRS = gpc src font_freetype font_win32_tt include examples ++endif + + pkgconfigdir = $(libdir)/pkgconfig + pkgconfig_DATA = libagg.pc Added: spec-files-extra/trunk/patches/agg-02-rpath.diff =================================================================== --- spec-files-extra/trunk/patches/agg-02-rpath.diff (rev 0) +++ spec-files-extra/trunk/patches/agg-02-rpath.diff 2009-12-14 08:57:11 UTC (rev 2263) @@ -0,0 +1,12 @@ +diff -urNad agg-2.3~/libagg.pc.in agg-2.3/libagg.pc.in +--- agg-2.3~/libagg.pc.in 2005-02-18 03:27:48.000000000 +0100 ++++ agg-2.3/libagg.pc.in 2006-03-01 18:08:26.906950512 +0100 +@@ -6,5 +6,5 @@ + Name: libagg + Description: Anti Grain Geometry - A High Quality Rendering Engine for C++ + Version: @VERSION@ +-Libs: -L${libdir} -Wl,-rpath,${exec_prefix}/lib -lagg ++Libs: -L${libdir} -lagg + Cflags: -I${includedir} + + Added: spec-files-extra/trunk/patches/agg-03-fix_recursion_crash.diff =================================================================== --- spec-files-extra/trunk/patches/agg-03-fix_recursion_crash.diff (rev 0) +++ spec-files-extra/trunk/patches/agg-03-fix_recursion_crash.diff 2009-12-14 08:57:11 UTC (rev 2263) @@ -0,0 +1,25 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 06_fix_recursion_crash.dpatch by Brian Murray <br...@ub...> +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Ubuntu: http://launchpad.net/bugs/344849 +## DP: Patch: https://trac.mapnik.org/ticket/253 +## DP: Description: Avoid a crash caused by an infinite recursion when drawing extremely long lines + +@DPATCH@ +diff -urNad agg-2.5+dfsg1~/include/agg_rasterizer_cells_aa.h agg-2.5+dfsg1/include/agg_rasterizer_cells_aa.h +--- agg-2.5+dfsg1~/include/agg_rasterizer_cells_aa.h 2007-10-10 15:06:16.000000000 -0700 ++++ agg-2.5+dfsg1/include/agg_rasterizer_cells_aa.h 2009-04-02 18:34:07.000000000 -0700 +@@ -333,6 +333,12 @@ + { + int cx = (x1 + x2) >> 1; + int cy = (y1 + y2) >> 1; ++ ++ // Bail if values are so large they are likely to wrap ++ if ((abs(x1) >= INT_MAX/2) || (abs(y1) >= INT_MAX/2) || ++ (abs(x2) >= INT_MAX/2) || (abs(y2) >= INT_MAX/2)) ++ return; ++ + line(x1, y1, cx, cy); + line(cx, cy, x2, y2); + } Added: spec-files-extra/trunk/patches/agg-04-libm.diff =================================================================== --- spec-files-extra/trunk/patches/agg-04-libm.diff (rev 0) +++ spec-files-extra/trunk/patches/agg-04-libm.diff 2009-12-14 08:57:11 UTC (rev 2263) @@ -0,0 +1,12 @@ +--- agg-2.5.orig/configure.in 2006-10-09 00:06:36.000000000 -0400 ++++ agg-2.5/configure.in 2009-12-10 20:21:30.410763640 -0500 +@@ -36,6 +36,9 @@ + fi + AM_CONDITIONAL(ENABLE_CTRL,test x$enable_ctrl != xno) + ++# check if math library is required ++AC_SEARCH_LIBS(atan2, m) ++ + # used as platform library in examples: + # todo, make the PREFERED_PLATFORM selectable, after the set of possible + # Platforms to link the examples have been evaluated. Added: spec-files-extra/trunk/patches/gnash-01-stdc.diff =================================================================== --- spec-files-extra/trunk/patches/gnash-01-stdc.diff (rev 0) +++ spec-files-extra/trunk/patches/gnash-01-stdc.diff 2009-12-14 08:57:11 UTC (rev 2263) @@ -0,0 +1,296 @@ +--- gnash-0.8.6.orig/configure.ac 2009-09-13 20:13:12.000000000 -0400 ++++ gnash-0.8.6/configure.ac 2009-12-14 01:54:30.289061434 -0500 +@@ -1479,6 +1479,7 @@ + AC_CHECK_HEADERS(signal.h) + AC_CHECK_HEADERS(unistd.h) + AC_CHECK_HEADERS(sys/time.h) ++AC_CHECK_HEADERS(ieeefp.h) + dnl libcurl3-dev on Ubuntu has a dependency on lber, and Gnash won't link + dnl on most machines without it. While it isn't diretly used by Gnash at all, + dnl it's to work around an Ubuntu packaging bug. +@@ -1563,30 +1564,36 @@ + dnl AC_CHECK_FUNCS(strcasecmp stricmp) + dnl AC_CHECK_FUNCS(vsnprintf) + +-dnl These two tests need the math library or they won't link +-dnl on OpenBSD, even if the functions exist. +-save_LIBS=$LIBS +-LIBS="$LIBS -lm" + AC_CACHE_CHECK([for finite], ac_cv_finite, +- [AC_TRY_LINK([#include <math.h>], ++ [AC_TRY_COMPILE([ ++ #include <math.h> ++ #ifdef HAVE_IEEEFP_H ++ #include <ieeefp.h> ++ #endif], + [double x; int y; y = finite(x);], + ac_cv_finite=yes, + ac_cv_finite=no + )]) + if test x"$ac_cv_finite" = x"yes"; then +- AC_DEFINE(HAVE_FINITE, [1], [Has finite]) ++ AC_SEARCH_LIBS(finite, m, ++ [AC_DEFINE(HAVE_FINITE, [1], [Has finite])] ++ ) + fi + ++AC_LANG_PUSH(C++) + AC_CACHE_CHECK([for isfinite], ac_cv_isfinite, +- [AC_TRY_LINK([#include <math.h>], +- [double x; int y; y = isfinite(x);], ++ [AC_TRY_COMPILE([#include <cmath>], ++ [using namespace std; double x; int y; y = isfinite(x);], + ac_cv_isfinite=yes, + ac_cv_isfinite=no + )]) ++AC_LANG_POP(C++) + if test x"$ac_cv_isfinite" = x"yes"; then ++ dnl Don't give up if isfinite is not found in -lm ++ dnl isfinite is defined as a macro in C99. ++ AC_SEARCH_LIBS(isfinite, m) + AC_DEFINE(HAVE_ISFINITE, [1], [Has isfinite]) + fi +-LIBS=$save_LIBS + + AC_LANG_PUSH(C++) + AC_CACHE_CHECK([whether $CXX implements __PRETTY_FUNCTION__], ac_cv_implements___PRETTY_FUNCTION__, [ +--- gnash-0.8.6.orig/macros/pthreads.m4 2009-09-13 19:22:18.000000000 -0400 ++++ gnash-0.8.6/macros/pthreads.m4 2009-12-09 06:02:42.098671923 -0500 +@@ -118,7 +118,6 @@ + -*) + AC_MSG_CHECKING([whether pthreads work with $flag]) + PTHREAD_CFLAGS="$flag" +- CXXFLAGS="$CXXFLAGS $flag" + PTHREAD_LIBS="" + ;; + +@@ -149,8 +148,10 @@ + + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" ++ save_CXXFLAGS="$CXXFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" ++ CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS" + + dnl Check for various functions. We must include pthread.h, + dnl since some functions may be macros. (On the Sequent, we +@@ -169,6 +170,7 @@ + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" ++ CXXFLAGS="$save_CXXFLAGS" + + AC_MSG_RESULT($pthreads) + if test "x$pthreads" = xyes; then +--- gnash-0.8.6.orig/libbase/GnashImageJpeg.h 2009-09-13 19:22:16.000000000 -0400 ++++ gnash-0.8.6/libbase/GnashImageJpeg.h 2009-12-09 06:43:52.911549122 -0500 +@@ -58,7 +58,7 @@ + + const char* _errorOccurred; + +- jmp_buf _jmpBuf; ++ std::jmp_buf _jmpBuf; + + // State needed for input. + jpeg::jpeg_decompress_struct m_cinfo; +--- gnash-0.8.6.orig/libbase/URL.cpp 2009-09-13 19:22:16.000000000 -0400 ++++ gnash-0.8.6/libbase/URL.cpp 2009-12-09 06:49:34.761880069 -0500 +@@ -182,7 +182,7 @@ + + if (!dir) { + std::stringstream err; +- err << "getcwd failed: " << strerror(errno); ++ err << "getcwd failed: " << std::strerror(errno); + throw gnash::GnashException(err.str()); + } + +--- gnash-0.8.6.orig/libcore/SWFMatrix.cpp 2009-09-13 19:22:16.000000000 -0400 ++++ gnash-0.8.6/libcore/SWFMatrix.cpp 2009-12-07 17:16:03.846022059 -0500 +@@ -192,8 +192,8 @@ + // Set the scale & rotation part of the SWFMatrix. + // angle in radians. + { +- double cos_angle = cos(angle); +- double sin_angle = sin(angle); ++ double cos_angle = std::cos(angle); ++ double sin_angle = std::sin(angle); + sx = DoubleToFixed16(x_scale * cos_angle); + shy = DoubleToFixed16(y_scale * -sin_angle); + shx = DoubleToFixed16(x_scale * sin_angle); +@@ -203,9 +203,9 @@ + void + SWFMatrix::set_x_scale(double xscale) + { +- double rot_x = atan2((double)shx, (double)sx); +- sx = DoubleToFixed16(xscale * cos(rot_x)); +- shx = DoubleToFixed16(xscale * sin(rot_x)); ++ double rot_x = std::atan2((double)shx, (double)sx); ++ sx = DoubleToFixed16(xscale * std::cos(rot_x)); ++ shx = DoubleToFixed16(xscale * std::sin(rot_x)); + } + + void +@@ -227,15 +227,15 @@ + void + SWFMatrix::set_rotation(double rotation) + { +- double rot_x = atan2((double)shx, (double)sx); +- double rot_y = atan2((double)(-shy), (double)sy); ++ double rot_x = std::atan2((double)shx, (double)sx); ++ double rot_y = std::atan2((double)(-shy), (double)sy); + double scale_x = get_x_scale(); + double scale_y = get_y_scale(); + +- sx = DoubleToFixed16(scale_x * cos(rotation)); +- shx = DoubleToFixed16(scale_x * sin(rotation)); +- shy = -DoubleToFixed16(scale_y * sin(rot_y - rot_x + rotation)); +- sy = DoubleToFixed16(scale_y * cos(rot_y - rot_x + rotation)); ++ sx = DoubleToFixed16(scale_x * std::cos(rotation)); ++ shx = DoubleToFixed16(scale_x * std::sin(rotation)); ++ shy = -DoubleToFixed16(scale_y * std::sin(rot_y - rot_x + rotation)); ++ sy = DoubleToFixed16(scale_y * std::cos(rot_y - rot_x + rotation)); + } + + void +@@ -334,20 +334,20 @@ + double + SWFMatrix::get_x_scale() const + { +- return sqrt(((double)sx * sx + (double)shx * shx)) / 65536.0; ++ return std::sqrt(((double)sx * sx + (double)shx * shx)) / 65536.0; + } + + double + SWFMatrix::get_y_scale() const + { +- return sqrt(((double)sy * sy + (double)shy * shy)) / 65536.0; ++ return std::sqrt(((double)sy * sy + (double)shy * shy)) / 65536.0; + } + + double + SWFMatrix::get_rotation() const + { + // more successes in misc-ming.all/SWFMatrix_test.c +- return atan2(static_cast<double>(shx), sx); ++ return std::atan2(static_cast<double>(shx), sx); + } + + // private +--- gnash-0.8.6.orig/libcore/asobj/flash/media/Microphone_as.cpp 2009-09-13 19:22:17.000000000 -0400 ++++ gnash-0.8.6/libcore/asobj/flash/media/Microphone_as.cpp 2009-12-08 21:53:00.552333428 -0500 +@@ -339,7 +339,7 @@ + return as_value(50.0); + } else { + gain = ((ptr->get_gain())*(0.8333333333333)) + 50; +- gain = round(gain); ++ gain = std::floor(gain + 0.5); + return as_value(gain); + } + #endif +--- gnash-0.8.6.orig/libmedia/AudioResampler.cpp 2009-09-13 19:22:17.000000000 -0400 ++++ gnash-0.8.6/libmedia/AudioResampler.cpp 2009-12-07 16:23:49.776539235 -0500 +@@ -81,7 +81,7 @@ + if (inc == 1 && dup == 1) + { + // No tranformation required +- memcpy(out_data, data, output_sample_count * sizeof(boost::int16_t)); ++ std::memcpy(out_data, data, output_sample_count * sizeof(boost::int16_t)); + } + else if (inc > 1) + { +--- gnash-0.8.6.orig/libmedia/AudioDecoderNellymoser.cpp 2009-09-13 19:22:17.000000000 -0400 ++++ gnash-0.8.6/libmedia/AudioDecoderNellymoser.cpp 2009-12-12 16:29:45.971821439 -0500 +@@ -57,6 +57,8 @@ + namespace gnash { + namespace media { + ++const double sqrt1_2 = 0.70710678118654752440; ++ + float nelly_neg_unpack_table[64] = { + -0.0061359000, -0.0306748003, -0.0551952012, -0.0796824023, -0.1041216031, + -0.1284981072, -0.1527972072, -0.1770042032, -0.2011045963, -0.2250839025, +@@ -674,7 +676,7 @@ + for (i = 0; i < 23; i++) { + if (i > 0) + val += nelly_delta_table[get_bits(block, &bit_offset, 5)]; +- pval = pow(2, val/2048); ++ pval = std::pow(2, val/2048); + for (j = 0; j < nelly_copy_count[i]; j++) { + *bptr = val; + *pptr = pval; +@@ -695,7 +697,7 @@ + + for (j = 0; j < NELLY_FILL_LEN; j++) { + if (bits[j] <= 0) { +- buf[j] = M_SQRT1_2*pows[j]; ++ buf[j] = sqrt1_2*pows[j]; + + + if (gimme_random() % 2) +--- gnash-0.8.6.orig/utilities/processor.cpp 2009-09-13 19:22:22.000000000 -0400 ++++ gnash-0.8.6/utilities/processor.cpp 2009-12-08 22:44:01.081502556 -0500 +@@ -35,7 +35,7 @@ + #include <ctime> + + #ifdef ENABLE_NLS +-#include <locale> ++#include <clocale> + #endif + + #include "MovieFactory.h" +--- gnash-0.8.6.orig/utilities/dumpshm.cpp 2009-09-13 19:22:22.000000000 -0400 ++++ gnash-0.8.6/utilities/dumpshm.cpp 2009-12-09 00:11:16.015435791 -0500 +@@ -60,7 +60,7 @@ + #include <cerrno> + + #ifdef ENABLE_NLS +-# include <locale> ++# include <clocale> + #endif + + #include "log.h" +--- gnash-0.8.6.orig/utilities/soldumper.cpp 2009-09-13 19:22:22.000000000 -0400 ++++ gnash-0.8.6/utilities/soldumper.cpp 2009-12-08 22:42:33.201198924 -0500 +@@ -25,7 +25,7 @@ + #include <cstring> + + #ifdef ENABLE_NLS +-# include <locale> ++# include <clocale> + #endif + + extern "C"{ +--- gnash-0.8.6.orig/utilities/flvdumper.cpp 2009-09-13 19:22:22.000000000 -0400 ++++ gnash-0.8.6/utilities/flvdumper.cpp 2009-12-09 00:12:48.772507206 -0500 +@@ -31,7 +31,7 @@ + #include <vector> + + #ifdef ENABLE_NLS +-# include <locale> ++# include <clocale> + #endif + + #include "log.h" +--- gnash-0.8.6.orig/gui/gnash.cpp 2009-09-13 19:22:16.000000000 -0400 ++++ gnash-0.8.6/gui/gnash.cpp 2009-12-09 00:15:07.840459783 -0500 +@@ -51,7 +51,7 @@ + #include <ios> + + #ifdef ENABLE_NLS +-# include <locale> ++# include <clocale> + #endif + + #ifdef GUI_ALP +--- gnash-0.8.6.orig/cygnal/cvm.cpp 2009-09-13 19:22:15.000000000 -0400 ++++ gnash-0.8.6/cygnal/cvm.cpp 2009-12-09 05:43:27.186532583 -0500 +@@ -34,7 +34,7 @@ + #include <ctime> + + #ifdef ENABLE_NLS +-#include <locale> ++#include <clocale> + #endif + + #include "gettext.h" Added: spec-files-extra/trunk/patches/gnash-02-sunpro.diff =================================================================== --- spec-files-extra/trunk/patches/gnash-02-sunpro.diff (rev 0) +++ spec-files-extra/trunk/patches/gnash-02-sunpro.diff 2009-12-14 08:57:11 UTC (rev 2263) @@ -0,0 +1,332 @@ +--- gnash-0.8.6.orig/libbase/log.h 2009-09-13 19:22:16.000000000 -0400 ++++ gnash-0.8.6/libbase/log.h 2009-12-13 12:47:42.039054367 -0500 +@@ -285,7 +285,7 @@ + /// Use "g++ -E log.h" or "cpp log.h" to check. + #define LOG_TEMPLATES(z, n, data)\ + template<BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(n), typename T)>\ +-void log_##data(BOOST_PP_REPEAT(BOOST_PP_INC(n), TOKENIZE_ARGS, t)) \ ++inline void log_##data(BOOST_PP_REPEAT(BOOST_PP_INC(n), TOKENIZE_ARGS, t)) \ + {\ + if (LogFile::getDefaultInstance().getVerbosity() == 0) return; \ + boost::format f(t0); \ +@@ -315,6 +315,7 @@ + BOOST_PP_SEQ_FOR_EACH(GENERATE_LOG_TYPES, _, LOG_TYPES) + + #undef TOKENIZE_FORMAT ++#undef TOKENIZE_ARGS + #undef GENERATE_LOG_TYPES + #undef LOG_TEMPLATES + #undef ARG_NUMBER +@@ -445,10 +446,10 @@ + #define GNASH_REPORT_RETURN + #else + #define GNASH_REPORT_FUNCTION \ +- log_debug("entering") ++ gnash::log_debug("entering") + + #define GNASH_REPORT_RETURN \ +- log_debug("returning") ++ gnash::log_debug("returning") + #endif + + } +--- gnash-0.8.6.orig/libcore/movie_root.cpp 2009-09-13 19:22:17.000000000 -0400 ++++ gnash-0.8.6/libcore/movie_root.cpp 2009-12-07 20:16:00.328812604 -0500 +@@ -2246,11 +2246,10 @@ + /// If the method is MovieClip::METHOD_NONE, we send no data. + if (method == MovieClip::METHOD_GET) + { +- std::string varsToSend(urlstr); + /// GET: append data to query string. + std::string qs = url.querystring(); +- if ( qs.empty() ) varsToSend.insert(0, 1, '?'); +- else varsToSend.insert(0, 1, '&'); ++ std::string varsToSend(qs.empty() ? "&" : "?"); ++ varsToSend.append(urlstr); + url.set_querystring(qs + varsToSend); + } + +--- gnash-0.8.6.orig/libcore/swf/DefaultTagLoaders.cpp 2009-09-13 19:22:17.000000000 -0400 ++++ gnash-0.8.6/libcore/swf/DefaultTagLoaders.cpp 2009-12-08 14:27:15.782474269 -0500 +@@ -59,6 +59,8 @@ + namespace gnash { + namespace SWF { + ++typedef TagLoadersTable::Loaders::value_type TagPair; ++ + namespace { + class AddLoader + { +@@ -67,7 +69,7 @@ + : + _table(table) + {} +- void operator()(const TagLoadersTable::Loaders::value_type& p) ++ void operator()(const TagPair& p) + { + _table.registerLoader(p.first, p.second); + } +@@ -80,152 +82,152 @@ + addDefaultLoaders(TagLoadersTable& table) + { + +- const std::map<TagType, TagLoadersTable::TagLoader> tags = +- boost::assign::map_list_of ++ const std::vector<TagPair> tags = ++ boost::assign::list_of + +- (SWF::END, end_loader) +- (SWF::DEFINESHAPE, DefineShapeTag::loader) +- (SWF::FREECHARACTER, fixme_loader) // 03 +- (SWF::PLACEOBJECT, PlaceObject2Tag::loader) +- (SWF::REMOVEOBJECT, RemoveObjectTag::loader) // 05 +- (SWF::DEFINEBITS, define_bits_jpeg_loader) +- (SWF::DEFINEBUTTON, DefineButtonTag::loader) +- (SWF::JPEGTABLES, jpeg_tables_loader) +- (SWF::SETBACKGROUNDCOLOR, SetBackgroundColorTag::loader) +- (SWF::DEFINEFONT, DefineFontTag::loader) +- (SWF::DEFINETEXT, DefineTextTag::loader) +- (SWF::DOACTION, DoActionTag::loader) +- (SWF::DEFINEFONTINFO, DefineFontInfoTag::loader) ++ (TagPair(SWF::END, end_loader)) ++ (TagPair(SWF::DEFINESHAPE, DefineShapeTag::loader)) ++ (TagPair(SWF::FREECHARACTER, fixme_loader)) // 03 ++ (TagPair(SWF::PLACEOBJECT, PlaceObject2Tag::loader)) ++ (TagPair(SWF::REMOVEOBJECT, RemoveObjectTag::loader)) // 05 ++ (TagPair(SWF::DEFINEBITS, define_bits_jpeg_loader)) ++ (TagPair(SWF::DEFINEBUTTON, DefineButtonTag::loader)) ++ (TagPair(SWF::JPEGTABLES, jpeg_tables_loader)) ++ (TagPair(SWF::SETBACKGROUNDCOLOR, SetBackgroundColorTag::loader)) ++ (TagPair(SWF::DEFINEFONT, DefineFontTag::loader)) ++ (TagPair(SWF::DEFINETEXT, DefineTextTag::loader)) ++ (TagPair(SWF::DOACTION, DoActionTag::loader)) ++ (TagPair(SWF::DEFINEFONTINFO, DefineFontInfoTag::loader)) + // 62 +- (SWF::DEFINEFONTINFO2, DefineFontInfoTag::loader) +- (SWF::DEFINESOUND, define_sound_loader) +- (SWF::STARTSOUND, StartSoundTag::loader) ++ (TagPair(SWF::DEFINEFONTINFO2, DefineFontInfoTag::loader)) ++ (TagPair(SWF::DEFINESOUND, define_sound_loader)) ++ (TagPair(SWF::STARTSOUND, StartSoundTag::loader)) + // 89 +- (SWF::STARTSOUND2, StartSound2Tag::loader) ++ (TagPair(SWF::STARTSOUND2, StartSound2Tag::loader)) + +- (SWF::STOPSOUND, fixme_loader) // 16 ++ (TagPair(SWF::STOPSOUND, fixme_loader)) // 16 + + // 17 +- (SWF::DEFINEBUTTONSOUND, DefineButtonSoundTag::loader) ++ (TagPair(SWF::DEFINEBUTTONSOUND, DefineButtonSoundTag::loader)) + // 18 +- (SWF::SOUNDSTREAMHEAD, sound_stream_head_loader) ++ (TagPair(SWF::SOUNDSTREAMHEAD, sound_stream_head_loader)) + // 19 +- (SWF::SOUNDSTREAMBLOCK, StreamSoundBlockTag::loader) +- (SWF::DEFINELOSSLESS, define_bits_lossless_2_loader) +- (SWF::DEFINEBITSJPEG2, define_bits_jpeg2_loader) +- (SWF::DEFINESHAPE2, DefineShapeTag::loader) +- (SWF::DEFINEBUTTONCXFORM, DefineButtonCxformTag::loader) // 23 ++ (TagPair(SWF::SOUNDSTREAMBLOCK, StreamSoundBlockTag::loader)) ++ (TagPair(SWF::DEFINELOSSLESS, define_bits_lossless_2_loader)) ++ (TagPair(SWF::DEFINEBITSJPEG2, define_bits_jpeg2_loader)) ++ (TagPair(SWF::DEFINESHAPE2, DefineShapeTag::loader)) ++ (TagPair(SWF::DEFINEBUTTONCXFORM, DefineButtonCxformTag::loader)) // 23 + // "protect" tag; we're not an authoring tool so we don't care. + // (might be nice to dump the password instead..) +- (SWF::PROTECT, null_loader) +- (SWF::PATHSAREPOSTSCRIPT, fixme_loader) // 25 +- (SWF::PLACEOBJECT2, PlaceObject2Tag::loader) ++ (TagPair(SWF::PROTECT, null_loader)) ++ (TagPair(SWF::PATHSAREPOSTSCRIPT, fixme_loader)) // 25 ++ (TagPair(SWF::PLACEOBJECT2, PlaceObject2Tag::loader)) + // 27 - _UNKNOWN_ unimplemented +- (SWF::REMOVEOBJECT2, RemoveObjectTag::loader) // 28 +- (SWF::SYNCFRAME, fixme_loader) // 29 ++ (TagPair(SWF::REMOVEOBJECT2, RemoveObjectTag::loader)) // 28 ++ (TagPair(SWF::SYNCFRAME, fixme_loader)) // 29 + // 30 - _UNKNOWN_ unimplemented +- (SWF::FREEALL, fixme_loader) // 31 +- (SWF::DEFINESHAPE3, DefineShapeTag::loader) +- (SWF::DEFINETEXT2, DefineText2Tag::loader) ++ (TagPair(SWF::FREEALL, fixme_loader)) // 31 ++ (TagPair(SWF::DEFINESHAPE3, DefineShapeTag::loader)) ++ (TagPair(SWF::DEFINETEXT2, DefineText2Tag::loader)) + // 37 +- (SWF::DEFINEBUTTON2, DefineButton2Tag::loader) +- (SWF::DEFINEBITSJPEG3, define_bits_jpeg3_loader) +- (SWF::DEFINELOSSLESS2, define_bits_lossless_2_loader) +- (SWF::DEFINEEDITTEXT, DefineEditTextTag::loader) +- (SWF::DEFINEVIDEO, fixme_loader) // 38 +- (SWF::DEFINESPRITE, sprite_loader) +- (SWF::NAMECHARACTER, fixme_loader) // 40 +- (SWF::SERIALNUMBER, serialnumber_loader) // 41 +- (SWF::DEFINETEXTFORMAT, fixme_loader) // 42 +- (SWF::FRAMELABEL, frame_label_loader) // 43 ++ (TagPair(SWF::DEFINEBUTTON2, DefineButton2Tag::loader)) ++ (TagPair(SWF::DEFINEBITSJPEG3, define_bits_jpeg3_loader)) ++ (TagPair(SWF::DEFINELOSSLESS2, define_bits_lossless_2_loader)) ++ (TagPair(SWF::DEFINEEDITTEXT, DefineEditTextTag::loader)) ++ (TagPair(SWF::DEFINEVIDEO, fixme_loader)) // 38 ++ (TagPair(SWF::DEFINESPRITE, sprite_loader)) ++ (TagPair(SWF::NAMECHARACTER, fixme_loader)) // 40 ++ (TagPair(SWF::SERIALNUMBER, serialnumber_loader)) // 41 ++ (TagPair(SWF::DEFINETEXTFORMAT, fixme_loader)) // 42 ++ (TagPair(SWF::FRAMELABEL, frame_label_loader)) // 43 + + // TODO: Implement, but fixme_loader breaks tests. +- (SWF::DEFINEBEHAVIOR, fixme_loader) // 44 ++ (TagPair(SWF::DEFINEBEHAVIOR, fixme_loader)) // 44 + +- (SWF::SOUNDSTREAMHEAD2, sound_stream_head_loader) // 45 ++ (TagPair(SWF::SOUNDSTREAMHEAD2, sound_stream_head_loader)) // 45 + // 46 +- (SWF::DEFINEMORPHSHAPE, DefineMorphShapeTag::loader) +- (SWF::FRAMETAG, fixme_loader) // 47 ++ (TagPair(SWF::DEFINEMORPHSHAPE, DefineMorphShapeTag::loader)) ++ (TagPair(SWF::FRAMETAG, fixme_loader)) // 47 + // 48 +- (SWF::DEFINEFONT2, DefineFontTag::loader) +- (SWF::GENCOMMAND, fixme_loader) // 49 +- (SWF::DEFINECOMMANDOBJ, fixme_loader) // 50 +- (SWF::CHARACTERSET, fixme_loader) // 51 +- (SWF::FONTREF, fixme_loader) // 52 ++ (TagPair(SWF::DEFINEFONT2, DefineFontTag::loader)) ++ (TagPair(SWF::GENCOMMAND, fixme_loader)) // 49 ++ (TagPair(SWF::DEFINECOMMANDOBJ, fixme_loader)) // 50 ++ (TagPair(SWF::CHARACTERSET, fixme_loader)) // 51 ++ (TagPair(SWF::FONTREF, fixme_loader)) // 52 + + // TODO: Implement, but fixme_loader breaks tests. +- (SWF::DEFINEFUNCTION, fixme_loader) // 53 +- (SWF::PLACEFUNCTION, fixme_loader) // 54 +- (SWF::GENTAGOBJECT, fixme_loader) // 55 ++ (TagPair(SWF::DEFINEFUNCTION, fixme_loader)) // 53 ++ (TagPair(SWF::PLACEFUNCTION, fixme_loader)) // 54 ++ (TagPair(SWF::GENTAGOBJECT, fixme_loader)) // 55 + +- (SWF::EXPORTASSETS, export_loader) // 56 +- (SWF::IMPORTASSETS, import_loader) // 57 ++ (TagPair(SWF::EXPORTASSETS, export_loader)) // 56 ++ (TagPair(SWF::IMPORTASSETS, import_loader)) // 57 + + // We're not an authoring tool so we don't care. + // (might be nice to dump the password instead..) +- (SWF::ENABLEDEBUGGER, null_loader) // 58 ++ (TagPair(SWF::ENABLEDEBUGGER, null_loader)) // 58 + + // 59 +- (SWF::INITACTION, DoInitActionTag::loader) ++ (TagPair(SWF::INITACTION, DoInitActionTag::loader)) + // 60 +- (SWF::DEFINEVIDEOSTREAM, DefineVideoStreamTag::loader) ++ (TagPair(SWF::DEFINEVIDEOSTREAM, DefineVideoStreamTag::loader)) + // 61 +- (SWF::VIDEOFRAME, VideoFrameTag::loader) ++ (TagPair(SWF::VIDEOFRAME, VideoFrameTag::loader)) + + // 62, DEFINEFONTINFO2 is done above. + // We're not an authoring tool. +- (SWF::DEBUGID, null_loader) // 63 ++ (TagPair(SWF::DEBUGID, null_loader)) // 63 + + // We're not an authoring tool so we don't care. + // (might be nice to dump the password instead..) +- (SWF::ENABLEDEBUGGER2, null_loader) // 64 +- (SWF::SCRIPTLIMITS, ScriptLimitsTag::loader) //65 ++ (TagPair(SWF::ENABLEDEBUGGER2, null_loader)) // 64 ++ (TagPair(SWF::SCRIPTLIMITS, ScriptLimitsTag::loader)) //65 + + // TODO: Fix this, but probably not critical. +- (SWF::SETTABINDEX, SetTabIndexTag::loader) //66 ++ (TagPair(SWF::SETTABINDEX, SetTabIndexTag::loader)) //66 + + // TODO: Alexis reference says these are 83, 84. The 67, 68 comes from + // Tamarin. Figure out which one is correct (possibly both are). + // 67 +- (SWF::DEFINESHAPE4_, DefineShapeTag::loader) ++ (TagPair(SWF::DEFINESHAPE4_, DefineShapeTag::loader)) + // 68 +- (SWF::DEFINEMORPHSHAPE2_, DefineMorphShapeTag::loader) ++ (TagPair(SWF::DEFINEMORPHSHAPE2_, DefineMorphShapeTag::loader)) + // 69 +- (SWF::FILEATTRIBUTES, file_attributes_loader) ++ (TagPair(SWF::FILEATTRIBUTES, file_attributes_loader)) + // 70 +- (SWF::PLACEOBJECT3, PlaceObject2Tag::loader) ++ (TagPair(SWF::PLACEOBJECT3, PlaceObject2Tag::loader)) + // 71 +- (SWF::IMPORTASSETS2, import_loader) ++ (TagPair(SWF::IMPORTASSETS2, import_loader)) + // 73 +- (SWF::DEFINEALIGNZONES, DefineFontAlignZonesTag::loader) ++ (TagPair(SWF::DEFINEALIGNZONES, DefineFontAlignZonesTag::loader)) + // 74 +- (SWF::CSMTEXTSETTINGS, CSMTextSettingsTag::loader) ++ (TagPair(SWF::CSMTEXTSETTINGS, CSMTextSettingsTag::loader)) + // 75 +- (SWF::DEFINEFONT3, DefineFontTag::loader) ++ (TagPair(SWF::DEFINEFONT3, DefineFontTag::loader)) + // 77 +- (SWF::METADATA, metadata_loader) ++ (TagPair(SWF::METADATA, metadata_loader)) + // 78 +- (SWF::DEFINESCALINGGRID, DefineScalingGridTag::loader) ++ (TagPair(SWF::DEFINESCALINGGRID, DefineScalingGridTag::loader)) + // 83 +- (SWF::DEFINESHAPE4, DefineShapeTag::loader) ++ (TagPair(SWF::DEFINESHAPE4, DefineShapeTag::loader)) + // 84 +- (SWF::DEFINEMORPHSHAPE2, DefineMorphShapeTag::loader) ++ (TagPair(SWF::DEFINEMORPHSHAPE2, DefineMorphShapeTag::loader)) + // 88 +- (SWF::DEFINEFONTNAME, DefineFontNameTag::loader) ++ (TagPair(SWF::DEFINEFONTNAME, DefineFontNameTag::loader)) + // 777 +- (SWF::REFLEX, reflex_loader) ++ (TagPair(SWF::REFLEX, reflex_loader)) + + #ifdef ENABLE_AVM2 + // The following tags are AVM2 only. + // 72 -- AS3 codeblock. +- (SWF::DOABC, DoABCTag::loader) ++ (TagPair(SWF::DOABC, DoABCTag::loader)) + // 76 +- (SWF::SYMBOLCLASS, SymbolClassTag::loader) ++ (TagPair(SWF::SYMBOLCLASS, SymbolClassTag::loader)) + // 82 +- (SWF::DOABCDEFINE, DoABCTag::loader) ++ (TagPair(SWF::DOABCDEFINE, DoABCTag::loader)) + // 86 +- (SWF::DEFINESCENEANDFRAMELABELDATA, +- DefineSceneAndFrameLabelDataTag::loader) ++ (TagPair(SWF::DEFINESCENEANDFRAMELABELDATA, ++ DefineSceneAndFrameLabelDataTag::loader)) + #endif + ; + +--- gnash-0.8.6.orig/libcore/as_value.cpp 2009-09-13 19:22:17.000000000 -0400 ++++ gnash-0.8.6/libcore/as_value.cpp 2009-12-09 00:05:30.187055696 -0500 +@@ -2385,7 +2385,7 @@ + } + + bool +-as_value::readAMF0(const boost::uint8_t *&b, const boost::uint8_t *end, ++as_value::readAMF0(const boost::uint8_t *&b, const boost::uint8_t *const end, + int inType, std::vector<as_object*>& objRefs, VM& vm) + { + return amf0_read_value(b, end, *this, inType, objRefs, vm); +--- gnash-0.8.6.orig/libmedia/gst/VideoInputGst.cpp 2009-09-13 19:22:17.000000000 -0400 ++++ gnash-0.8.6/libmedia/gst/VideoInputGst.cpp 2009-12-07 16:28:59.164119222 -0500 +@@ -948,9 +948,9 @@ + { + + for (int i = 0; i < webcam->_currentFormat->numFramerates; ++i) { +- int val = std::ceil( ++ int val = std::ceil(static_cast<double>( + webcam->_currentFormat->framerates[i].numerator / +- webcam->_currentFormat->framerates[i].denominator); ++ webcam->_currentFormat->framerates[i].denominator)); + if (val == fps) { + return true; + } Added: spec-files-extra/trunk/patches/gnash-03-gnashrc.diff =================================================================== --- spec-files-extra/trunk/patches/gnash-03-gnashrc.diff (rev 0) +++ spec-files-extra/trunk/patches/gnash-03-gnashrc.diff 2009-12-14 08:57:11 UTC (rev 2263) @@ -0,0 +1,39 @@ +--- gnash-0.8.6.orig/libbase/rc.cpp 2009-09-13 19:22:16.000000000 -0400 ++++ gnash-0.8.6/libbase/rc.cpp 2009-12-10 11:49:46.065126344 -0500 +@@ -37,7 +37,7 @@ + #include <limits> + #include <cstdlib> // getenv + #include <string> +-#include <vector> ++#include <list> + #include <iostream> + #include <fstream> + #include <sstream> +@@ -164,18 +164,23 @@ + } + + // Check the GNASHRC environment variable +- // TODO: keep note of the already-parsed files +- // to avoid parsign multiple times ? +- // (would mess up user-reguested order) ++ // Parse each file only once + char *gnashrc = std::getenv("GNASHRC"); + if (gnashrc) + { + std::string paths(gnashrc); +- + Tok t(paths, Sep(":")); + ++ std::list<std::string> l; ++ + for (Tok::iterator i = t.begin(), e = t.end(); i != e; ++i) + { ++ l.remove(*i); ++ l.push_back(*i); ++ } ++ ++ for (std::list<std::string>::const_iterator i = l.begin(), e = l.end(); i != e; ++i) ++ { + parseFile(*i); + } + } Added: spec-files-extra/trunk/patches/gnash-04-plugin.diff =================================================================== --- spec-files-extra/trunk/patches/gnash-04-plugin.diff (rev 0) +++ spec-files-extra/trunk/patches/gnash-04-plugin.diff 2009-12-14 08:57:11 UTC (rev 2263) @@ -0,0 +1,350 @@ +--- gnash-0.8.6.orig/plugin/mozilla-sdk/include/prcpucfg-glibc.h 2009-09-13 19:22:18.000000000 -0400 ++++ gnash-0.8.6/plugin/mozilla-sdk/include/prcpucfg-glibc.h 2009-12-10 00:03:56.385049958 -0500 +@@ -19,6 +19,7 @@ + /* + * This file is used by not only Linux but also other glibc systems + * such as GNU/Hurd and GNU/k*BSD. ++ * Gnash now uses it for all other Unix-like platforms as well. + */ + + #ifndef nspr_cpucfg___ +@@ -28,7 +29,17 @@ + #define LINUX + #endif + +-#define PR_AF_INET6 10 /* same as AF_INET6 */ ++#if defined(__sgi) || defined(sgi) || defined(__sgi__) ++ ++#ifndef IRIX ++ #define IRIX ++#endif ++ ++#ifndef _SGI_MP_SOURCE ++ #define _SGI_MP_SOURCE ++#endif ++ ++#endif + + #if defined(__powerpc64__) + +@@ -213,7 +224,7 @@ + #define PR_BYTES_PER_WORD_LOG2 3 + #define PR_BYTES_PER_DWORD_LOG2 3 + +-#elif defined(__x86_64__) ++#elif defined(__x86_64__) || defined(__x86_64) || defined(__amd64__) + + #define IS_LITTLE_ENDIAN 1 + #undef IS_BIG_ENDIAN +@@ -304,55 +315,58 @@ + #define PR_BYTES_PER_WORD_LOG2 2 + #define PR_BYTES_PER_DWORD_LOG2 3 + +-#elif defined(__sparc__) ++#elif defined(__sparc__) || defined(sparc) + + #undef IS_LITTLE_ENDIAN + #define IS_BIG_ENDIAN 1 + ++#if defined(__sparcv9) || defined(__arch64__) ++#define IS_64 ++#endif ++ ++#ifdef IS_64 ++ + #define PR_BYTES_PER_BYTE 1 + #define PR_BYTES_PER_SHORT 2 + #define PR_BYTES_PER_INT 4 + #define PR_BYTES_PER_INT64 8 +-#define PR_BYTES_PER_LONG 4 ++#define PR_BYTES_PER_LONG 8 + #define PR_BYTES_PER_FLOAT 4 + #define PR_BYTES_PER_DOUBLE 8 +-#define PR_BYTES_PER_WORD 4 ++#define PR_BYTES_PER_WORD 8 + #define PR_BYTES_PER_DWORD 8 + + #define PR_BITS_PER_BYTE 8 + #define PR_BITS_PER_SHORT 16 + #define PR_BITS_PER_INT 32 + #define PR_BITS_PER_INT64 64 +-#define PR_BITS_PER_LONG 32 ++#define PR_BITS_PER_LONG 64 + #define PR_BITS_PER_FLOAT 32 + #define PR_BITS_PER_DOUBLE 64 +-#define PR_BITS_PER_WORD 32 ++#define PR_BITS_PER_WORD 64 + + #define PR_BITS_PER_BYTE_LOG2 3 + #define PR_BITS_PER_SHORT_LOG2 4 + #define PR_BITS_PER_INT_LOG2 5 + #define PR_BITS_PER_INT64_LOG2 6 +-#define PR_BITS_PER_LONG_LOG2 5 ++#define PR_BITS_PER_LONG_LOG2 6 + #define PR_BITS_PER_FLOAT_LOG2 5 + #define PR_BITS_PER_DOUBLE_LOG2 6 +-#define PR_BITS_PER_WORD_LOG2 5 ++#define PR_BITS_PER_WORD_LOG2 6 + + #define PR_ALIGN_OF_SHORT 2 + #define PR_ALIGN_OF_INT 4 +-#define PR_ALIGN_OF_LONG 4 ++#define PR_ALIGN_OF_LONG 8 + #define PR_ALIGN_OF_INT64 8 + #define PR_ALIGN_OF_FLOAT 4 + #define PR_ALIGN_OF_DOUBLE 8 +-#define PR_ALIGN_OF_POINTER 4 +-#define PR_ALIGN_OF_WORD 4 +- +-#define PR_BYTES_PER_WORD_LOG2 2 +-#define PR_BYTES_PER_DWORD_LOG2 3 ++#define PR_ALIGN_OF_POINTER 8 ++#define PR_ALIGN_OF_WORD 8 + +-#elif defined(__i386__) ++#define PR_BYTES_PER_WORD_LOG2 3 ++#define PR_BYTES_PER_DWORD_LOG2 3 + +-#define IS_LITTLE_ENDIAN 1 +-#undef IS_BIG_ENDIAN ++#else /* IS_64 */ + + #define PR_BYTES_PER_BYTE 1 + #define PR_BYTES_PER_SHORT 2 +@@ -385,30 +399,21 @@ + #define PR_ALIGN_OF_SHORT 2 + #define PR_ALIGN_OF_INT 4 + #define PR_ALIGN_OF_LONG 4 +-#define PR_ALIGN_OF_INT64 4 ++#define PR_ALIGN_OF_INT64 8 + #define PR_ALIGN_OF_FLOAT 4 +-#define PR_ALIGN_OF_DOUBLE 4 ++#define PR_ALIGN_OF_DOUBLE 8 + #define PR_ALIGN_OF_POINTER 4 + #define PR_ALIGN_OF_WORD 4 + + #define PR_BYTES_PER_WORD_LOG2 2 + #define PR_BYTES_PER_DWORD_LOG2 3 + +-#elif defined(__sgi) || defined(sgi) || defined(__sgi__) ++#endif /* IS_64 */ + +-#ifndef IRIX +- #define IRIX +-#endif +- +-#ifndef _SGI_MP_SOURCE +- #define _SGI_MP_SOURCE +-#endif +- +-#undef IS_LITTLE_ENDIAN +-#define IS_BIG_ENDIAN 1 ++#elif defined(__i386__) || defined(i386) + +-#undef PR_AF_INET6 +-#define PR_AF_INET6 24 /* same as AF_INET6 */ ++#define IS_LITTLE_ENDIAN 1 ++#undef IS_BIG_ENDIAN + + #define PR_BYTES_PER_BYTE 1 + #define PR_BYTES_PER_SHORT 2 +@@ -438,31 +443,24 @@ + #define PR_BITS_PER_DOUBLE_LOG2 6 + #define PR_BITS_PER_WORD_LOG2 5 + +-#define PR_BYTES_PER_WORD_LOG2 2 +-#define PR_BYTES_PER_DWORD_LOG2 3 +- + #define PR_ALIGN_OF_SHORT 2 + #define PR_ALIGN_OF_INT 4 + #define PR_ALIGN_OF_LONG 4 +-#define PR_ALIGN_OF_INT64 8 ++#define PR_ALIGN_OF_INT64 4 + #define PR_ALIGN_OF_FLOAT 4 +-#define PR_ALIGN_OF_DOUBLE 8 ++#define PR_ALIGN_OF_DOUBLE 4 + #define PR_ALIGN_OF_POINTER 4 + #define PR_ALIGN_OF_WORD 4 + +-#define HAVE_LONG_LONG +-#define HAVE_ALIGNED_DOUBLES +-#define HAVE_ALIGNED_LONGLONGS +- +-#define _PR_POLL_BACKCOMPAT +- ++#define PR_BYTES_PER_WORD_LOG2 2 ++#define PR_BYTES_PER_DWORD_LOG2 3 + +-#elif defined(__mips__) ++#elif defined(__mips__) || defined(__mips) + +-#ifdef __MIPSEB__ ++#if defined(__MIPSEB__) || defined(__MIPSEB) + #define IS_BIG_ENDIAN 1 + #undef IS_LITTLE_ENDIAN +-#elif defined(__MIPSEL__) ++#elif defined(__MIPSEL__) || defined(__MIPSEL) + #define IS_LITTLE_ENDIAN 1 + #undef IS_BIG_ENDIAN + #else +@@ -699,9 +697,13 @@ + #define HAVE_LONG_LONG + #if PR_ALIGN_OF_DOUBLE == 8 + #define HAVE_ALIGNED_DOUBLES ++#else ++#undef HAVE_ALIGNED_DOUBLES + #endif + #if PR_ALIGN_OF_INT64 == 8 + #define HAVE_ALIGNED_LONGLONGS ++#else ++#undef HAVE_ALIGNED_LONGLONGS + #endif + + #ifndef NO_NSPR_10_SUPPORT +--- gnash-0.8.6.orig/plugin/plugin.cpp 2009-09-13 19:22:18.000000000 -0400 ++++ gnash-0.8.6/plugin/plugin.cpp 2009-12-10 21:58:46.637940745 -0500 +@@ -21,6 +21,7 @@ + #endif + + #include <cstdlib> // getenv ++#include <stdlib.h> // putenv + + #define MIME_TYPES_HANDLED "application/x-shockwave-flash" + // The name must be this value to get flash movies that check the +@@ -60,6 +61,7 @@ + #include "plugin.h" + #include <csignal> + #include "GnashSystemIOHeaders.h" ++#include "StringPredicates.h" + #include <cstdio> + #include <cstddef> + #include <cstring> +@@ -68,6 +70,7 @@ + #include <sys/wait.h> + #include <fcntl.h> + #include <cerrno> ++#include <climits> + #include <string> + #include <vector> + #include <iostream> +@@ -97,6 +100,10 @@ + # include <nsStringAPI.h> + #endif // HAVE_XPCOM + ++#ifndef PATH_MAX ++#define PATH_MAX 1024 ++#endif ++ + extern NPNetscapeFuncs NPNFuncs; + + NPBool plugInitialized = FALSE; +@@ -272,43 +279,43 @@ + } + + // Append SYSCONFDIR/gnashpluginrc and ~/.gnashpluginrc to GNASHRC +- do { +- // TODO: extract content in a set, add to set +- // and serialize back (to avoid duplicates) + +- std::string newGnashRc; +- char *gnashrc = std::getenv("GNASHRC"); +- if ( gnashrc ) +- { +- newGnashRc.assign(gnashrc); +- newGnashRc.append(":"); +- } ++ std::string newGnashRc("GNASHRC="); + +- newGnashRc.append(SYSCONFDIR); +- newGnashRc.append("/gnashpluginrc"); ++ newGnashRc.append(SYSCONFDIR); ++ newGnashRc.append("/gnashpluginrc"); + +- char *home = std::getenv("HOME"); +- if ( home ) +- { +- newGnashRc.append(":"); +- newGnashRc.append(home); +- newGnashRc.append("/.gnashpluginrc"); +- } +- else +- { +- std::cout << "WARNING: NPAPI plugin could not find user home dir" << std::endl; +- } ++ char *home = std::getenv("HOME"); ++ if ( home ) ++ { ++ newGnashRc.append(":"); ++ newGnashRc.append(home); ++ newGnashRc.append("/.gnashpluginrc"); ++ } ++ else ++ { ++ std::cout << "WARNING: NPAPI plugin could not find user home dir" << std::endl; ++ } + +- if ( setenv("GNASHRC", newGnashRc.c_str(), 1) ) +- { +- std::cout << "WARNING: NPAPI plugin could not append to the GNASHRC env variable" << std::endl; +- } +-#if GNASH_PLUGIN_DEBUG > 1 +- else std::cout << "NOTE: NPAPI plugin set GNASHRC to " << newGnashRc << std::endl; +-#endif ++ char *gnashrc = std::getenv("GNASHRC"); ++ if ( gnashrc ) ++ { ++ newGnashRc.append(":"); ++ newGnashRc.append(gnashrc); ++ } + +- } while (0); ++ // putenv doesn't copy the string in standards-conforming implementations ++ gnashrc = new char[PATH_MAX]; ++ std::strncpy(gnashrc, newGnashRc.c_str(), PATH_MAX); ++ gnashrc[PATH_MAX-1] = '\0'; + ++ if ( putenv(gnashrc) ) ++ { ++ std::cout << "WARNING: NPAPI plugin could not append to the GNASHRC env variable" << std::endl; ++ } ++#if GNASH_PLUGIN_DEBUG > 1 ++ else std::cout << "NOTE: NPAPI plugin set GNASHRC to " << newGnashRc << std::endl; ++#endif + + /* Success */ + +@@ -429,6 +436,7 @@ + for (size_t i=0, n=data->argc; i<n; ++i) + { + std::string name, val; ++ gnash::StringNoCaseEqual noCaseCompare; + + if (data->argn[i]) + { +@@ -440,7 +448,7 @@ + val = data->argv[i]; + } + +- if ( ! strcasecmp(name.c_str(), "name") ) ++ if (noCaseCompare(name, "name")) + { + _name = val; + } +@@ -808,7 +816,7 @@ + return false; + } + +- if ( ! strncmp(buf, "GET ", 4) ) ++ if ( ! std::strncmp(buf, "GET ", 4) ) + { + char* target = buf + 4; + if ( ! *target ) +@@ -842,7 +850,7 @@ + return true; + + } +- else if ( ! strncmp(buf, "INVOKE ", 7) ) ++ else if ( ! std::strncmp(buf, "INVOKE ", 7) ) + { + char* command = buf + 7; + if ( ! *command ) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |