]> granicus.if.org Git - php/commitdiff
- Fixed bug #35461 (Ming extension fails to compile with ming 0.3beta1)
authorfoobar <sniper@php.net>
Wed, 21 Dec 2005 21:43:26 +0000 (21:43 +0000)
committerfoobar <sniper@php.net>
Wed, 21 Dec 2005 21:43:26 +0000 (21:43 +0000)
ext/ming/config.m4
ext/ming/ming.c

index 52013d3673a4c834b88c719aa05a79fb6201db37..bc92e239a99c0e37c66f2cd48072111d3b2aac23 100644 (file)
@@ -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)
index 8a4fd9ecb5f4c9be3fe1462db7a73aede14d56d5..06ceb3773ec1a73b5905a71ceb4a4830ccdc83bc 100644 (file)
@@ -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