diff options
Diffstat (limited to 'ext')
-rw-r--r-- | ext/ming/config.m4 | 17 | ||||
-rw-r--r-- | ext/ming/ming.c | 53 |
2 files changed, 58 insertions, 12 deletions
diff --git a/ext/ming/config.m4 b/ext/ming/config.m4 index 52013d3673..bc92e239a9 100644 --- a/ext/ming/config.m4 +++ b/ext/ming/config.m4 @@ -40,6 +40,10 @@ if test "$PHP_MING" != "no"; then PHP_ADD_INCLUDE($MING_INC_DIR) PHP_ADD_LIBRARY_WITH_PATH(ming, $MING_DIR/$PHP_LIBDIR, MING_SHARED_LIBADD) + PHP_CHECK_LIBRARY(ming, SWFPrebuiltClip, [ AC_DEFINE(HAVE_SWFPREBUILTCLIP, 1, [ ]) ], [], []) + + old_CPPFLAGS=$CPPFLAGS + CPPFLAGS=-I$MING_INC_DIR AC_MSG_CHECKING([for destroySWFBlock]) AC_TRY_RUN([ #include "ming.h" @@ -58,11 +62,7 @@ int main() { AC_MSG_RESULT([unknown]) ]) - PHP_CHECK_LIBRARY(ming, SWFPrebuiltClip, [ AC_DEFINE(HAVE_SWFPREBUILTCLIP, 1, [ ]) ], [], []) - dnl Check Ming version (FIXME: if/when ming has some better way to detect the version..) - old_CPPFLAGS=$CPPFLAGS - CPPFLAGS=-I$MING_INC_DIR AC_EGREP_CPP(yes, [ #include <ming.h> #ifdef SWF_SOUND_COMPRESSION @@ -73,6 +73,15 @@ yes dnl FIXME: This is now unconditional..better check coming later. AC_DEFINE(HAVE_MING_ZLIB, 1, [ ]) ]) + + dnl Check if SWFMovie_output() accepts the 4th parameter + AC_TRY_COMPILE([ +#include <ming.h> + ], [ +int main(void) { SWFMovie_output(NULL, NULL, NULL, 0); return 0; } + ], [ + AC_DEFINE(HAVE_MING_MOVIE_LEVEL, 1, [ ]) + ], []) CPPFLAGS=$old_CPPFLAGS PHP_NEW_EXTENSION(ming, ming.c, $ext_shared) diff --git a/ext/ming/ming.c b/ext/ming/ming.c index 8a4fd9ecb5..06ceb3773e 100644 --- a/ext/ming/ming.c +++ b/ext/ming/ming.c @@ -2218,7 +2218,7 @@ static void phpByteOutputMethod(byte b, void *data) PHP_METHOD(swfmovie, output) { SWFMovie movie = getMovie(getThis() TSRMLS_CC); -#if defined(HAVE_MING_ZLIB) && defined(HAVE_NEW_MING) +#if defined(HAVE_MING_ZLIB) && !defined(HAVE_NEW_MING) zval **zlimit = NULL; int limit = -1; int argc = ZEND_NUM_ARGS(); @@ -2244,6 +2244,25 @@ PHP_METHOD(swfmovie, output) Ming_setSWFCompression(oldval); } RETURN_LONG(out); +#elif defined(HAVE_NEW_MING) && defined(HAVE_MING_MOVIE_LEVEL) + zval **zlimit = NULL; + int limit = -1; + int argc = ZEND_NUM_ARGS(); + + if(argc) { + if (zend_get_parameters_ex(1, &zlimit) == FAILURE) { + WRONG_PARAM_COUNT; + } + + convert_to_long_ex(zlimit); + limit = Z_LVAL_PP(zlimit); + + if ((limit < 0) || (limit > 9)) { + php_error(E_WARNING,"compression level must be within 0..9"); + RETURN_FALSE; + } + } + RETURN_LONG(SWFMovie_output(movie, &phpByteOutputMethod, NULL, limit)); #else RETURN_LONG(SWFMovie_output(movie, &phpByteOutputMethod, NULL)); #endif @@ -2263,9 +2282,11 @@ static void phpStreamOutputMethod(byte b, void * data) PHP_METHOD(swfmovie, saveToFile) { zval **x; -#if defined(HAVE_MING_ZLIB) && defined(HAVE_NEW_MING) +#if defined(HAVE_MING_ZLIB) || defined(HAVE_NEW_MING) zval **zlimit = NULL; int limit = -1; +#endif +#if defined(HAVE_MING_ZLIB) && !defined(HAVE_NEW_MING) int oldval = INT_MIN; long out; #endif @@ -2278,7 +2299,7 @@ PHP_METHOD(swfmovie, saveToFile) WRONG_PARAM_COUNT; break; case 2: -#if defined(HAVE_MING_ZLIB) && defined(HAVE_NEW_MING) +#if defined(HAVE_MING_ZLIB) || defined(HAVE_NEW_MING) if (zend_get_parameters_ex(2, &x, &zlimit) == FAILURE) WRONG_PARAM_COUNT; convert_to_long_ex(zlimit); @@ -2287,6 +2308,8 @@ PHP_METHOD(swfmovie, saveToFile) php_error(E_WARNING,"compression level must be within 0..9"); RETURN_FALSE; } +#endif +#if defined(HAVE_MING_ZLIB) && !defined(HAVE_NEW_MING) oldval = Ming_setSWFCompression(limit); #endif break; @@ -2295,11 +2318,13 @@ PHP_METHOD(swfmovie, saveToFile) } ZEND_FETCH_RESOURCE(what, php_stream *, x, -1,"File-Handle",php_file_le_stream()); -#if defined(HAVE_MING_ZLIB) && defined(HAVE_NEW_MING) +#if defined(HAVE_MING_ZLIB) && !defined(HAVE_NEW_MING) out = SWFMovie_output(getMovie(getThis() TSRMLS_CC), &phpStreamOutputMethod, what); if (oldval >= -1 && oldval <=9) Ming_setSWFCompression(oldval); RETURN_LONG(out); +#elif defined(HAVE_NEW_MING) && defined(HAVE_MING_MOVIE_LEVEL) + RETURN_LONG(SWFMovie_output(movie, &phpStreamOutputMethod, what, limit)); #else RETURN_LONG(SWFMovie_output(movie, &phpStreamOutputMethod, what)); #endif @@ -2311,9 +2336,11 @@ PHP_METHOD(swfmovie, saveToFile) PHP_METHOD(swfmovie, save) { zval **x; -#if defined(HAVE_MING_ZLIB) && defined(HAVE_NEW_MING) +#if defined(HAVE_MING_ZLIB) || defined(HAVE_NEW_MING) zval **zlimit = NULL; int limit = -1; +#endif +#if defined(HAVE_MING_ZLIB) && !defined(HAVE_NEW_MING) int oldval = INT_MIN; #endif long retval; @@ -2326,7 +2353,7 @@ PHP_METHOD(swfmovie, save) } break; case 2: -#if defined(HAVE_MING_ZLIB) && defined(HAVE_NEW_MING) +#if defined(HAVE_MING_ZLIB) || defined(HAVE_NEW_MING) if (zend_get_parameters_ex(2, &x, &zlimit) == FAILURE) { WRONG_PARAM_COUNT; } @@ -2336,6 +2363,8 @@ PHP_METHOD(swfmovie, save) php_error(E_WARNING,"compression level must be within 0..9"); RETURN_FALSE; } +#endif +#if defined(HAVE_MING_ZLIB) && !defined(HAVE_NEW_MING) oldval = Ming_setSWFCompression(limit); #endif break; @@ -2345,12 +2374,16 @@ PHP_METHOD(swfmovie, save) if (Z_TYPE_PP(x) == IS_RESOURCE) { ZEND_FETCH_RESOURCE(stream, php_stream *, x, -1,"File-Handle",php_file_le_stream()); +#if defined(HAVE_NEW_MING) && defined(HAVE_MING_MOVIE_LEVEL) + RETURN_LONG(SWFMovie_output(getMovie(getThis() TSRMLS_CC), &phpStreamOutputMethod, stream, limit)); +#else RETVAL_LONG(SWFMovie_output(getMovie(getThis() TSRMLS_CC), &phpStreamOutputMethod, stream)); -#if defined(HAVE_MING_ZLIB) && defined(HAVE_NEW_MING) +#if defined(HAVE_MING_ZLIB) && !defined(HAVE_NEW_MING) if(oldval >= -1 && oldval <=9) Ming_setSWFCompression(oldval); #endif return; +#endif } convert_to_string_ex(x); @@ -2360,9 +2393,13 @@ PHP_METHOD(swfmovie, save) RETURN_FALSE; } +#if defined(HAVE_NEW_MING) && defined(HAVE_MING_MOVIE_LEVEL) + retval = SWFMovie_output(getMovie(getThis() TSRMLS_CC), &phpStreamOutputMethod, (void *)stream, limit); +#else retval = SWFMovie_output(getMovie(getThis() TSRMLS_CC), &phpStreamOutputMethod, (void *)stream); +#endif php_stream_close(stream); -#if defined(HAVE_MING_ZLIB) && defined(HAVE_NEW_MING) +#if defined(HAVE_MING_ZLIB) && !defined(HAVE_NEW_MING) if(oldval >= -1 && oldval <=9) Ming_setSWFCompression(oldval); #endif |