gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] [SCM] Gnash branch, master, updated. 51a444fa4ae77db8418c


From: Rob Savoye
Subject: [Gnash-commit] [SCM] Gnash branch, master, updated. 51a444fa4ae77db8418c6b3e5b36bc9d6977457f
Date: Fri, 13 Aug 2010 03:30:43 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Gnash".

The branch, master has been updated
       via  51a444fa4ae77db8418c6b3e5b36bc9d6977457f (commit)
      from  227fe508832457a0ce523dc16c924b6e9cce033a (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.savannah.gnu.org/cgit//commit/?id=51a444fa4ae77db8418c6b3e5b36bc9d6977457f


commit 51a444fa4ae77db8418c6b3e5b36bc9d6977457f
Author: Sandro Santilli <address@hidden>
Date:   Thu Aug 12 21:30:36 2010 -0600

    merge patches from bzr for media handler changes.

diff --git a/gui/gnash.cpp b/gui/gnash.cpp
index 04a5caa..787f84a 100644
--- a/gui/gnash.cpp
+++ b/gui/gnash.cpp
@@ -24,8 +24,10 @@
 
 #include <string>
 #include <iostream>
+#include <iterator>
 #include <ios>
 #include <boost/format.hpp>
+#include <boost/algorithm/string/join.hpp>
 #include <cstdlib>
 #include <sys/types.h>
 #include <fcntl.h>
@@ -88,9 +90,8 @@ gnash::Debugger& debugger = 
gnash::Debugger::getDefaultInstance();
 static void
 usage()
 {
-    std::ostringstream handlers;
-    gnash::media::MediaFactory::instance().listKeys(
-            std::ostream_iterator<std::string>(handlers, " "));
+    std::vector<std::string> handlers;
+    gnash::media::MediaFactory::instance().listKeys(back_inserter(handlers));
 
     cout << _("Usage: gnash [options] movie_file.swf\n")
     << "\n"
@@ -126,8 +127,9 @@ usage()
     << _("                           1 enable rendering, disable sound\n") 
     << _("                           2 enable sound, disable rendering\n") 
     << _("                           3 enable rendering and sound 
(default)\n") 
-    << _("  -M,  --media < ") << handlers.str() << ">\n"
-    << _("                           The media handler to use\n")
+    << _("  -M,  --media <") << boost::join(handlers, "|") << ">\n"
+    << _("                           The media handler to use")
+    << " (default " << handlers.front() << ")\n"
     // Only list the renderers that were configured in for this build
     << _("  -R,  --renderer <")
 #ifdef RENDERER_OPENGL
@@ -404,38 +406,12 @@ parseCommandLine(int argc, char* argv[], gnash::Player& 
player)
                     cout << rcfile.getFlashVersionString() << endl;
                     exit(EXIT_SUCCESS);          
                     break;
-             case 'M':
+              case 'M':
                     player.setMedia(parser.argument(i));
                     break;
-#if defined(RENDERER_AGG) || defined(RENDERER_OPENGL) || 
defined(RENDERER_CAIRO)
-             case 'R':
-                    switch (parser.argument<char>(i)) {
-                            // See if a renderer was specified
-#ifdef RENDERER_AGG
-                        case 'a':
-                            // Enable AGG as the rendering backend
-                            player.setRenderer("agg");
-                            break;
-#endif
-#ifdef RENDERER_OPENGL
-                        case 'o':
-                            // Enable OpenGL as the rendering backend
-                            player.setRenderer("opengl");
-                            break;
-#endif
-#ifdef RENDERER_CAIRO
-                        case 'c':
-                            // Enable Cairo as the rendering backend
-                            player.setRenderer("cairo");
-                            break;
-#endif
-                        default:
-                            gnash::log_error(_("ERROR: -R (--Renderer) must be 
followed by "
-                                               "agg, opengl, or cairo"));
-                            break;
-                    }
-                  break;
-#endif // any RENDERER_* set
+              case 'R':
+                    player.setRenderer(parser.argument(i));
+                    break;
               case 'r':
                     renderflag = true;
                     switch (parser.argument<char>(i)) {
diff --git a/gui/gtk/gtk_canvas.cpp b/gui/gtk/gtk_canvas.cpp
index 45aa1e6..60e1f76 100644
--- a/gui/gtk/gtk_canvas.cpp
+++ b/gui/gtk/gtk_canvas.cpp
@@ -215,7 +215,7 @@ gnash_canvas_setup(GnashCanvas *canvas, std::string& 
hwaccel,
 #elif defined (RENDERER_CAIRO)
         renderer = "cairo";
 #elif defined (RENDERER_OGL)
-        renderer = "ogl";
+        renderer = "opengl";
 #endif
     }
 
@@ -229,27 +229,36 @@ gnash_canvas_setup(GnashCanvas *canvas, std::string& 
hwaccel,
     // Global enable VA-API, if requested
     gnash::vaapi_set_is_enabled(hwaccel == "vaapi");
 #endif
+
     // Use the Cairo renderer. Cairo is also used by GTK2, so using
     // Cairo makes much sense. Unfortunately, our implementation seems
     // to have serious performance issues, although it does work.
-#ifdef RENDERER_CAIRO
     if (renderer == "cairo") {
+#ifdef RENDERER_CAIRO
         canvas->glue.reset(new gnash::GtkCairoGlue);
-    }
+#else
+        boost::format fmt = boost::format("Support for renderer %1% "
+                " was not built") % renderer;
+        throw gnash::GnashException(fmt.str());
 #endif
+    }
 
+    else if (renderer == "opengl") {
 #ifdef RENDERER_OPENGL
-    if (renderer == "opengl") {
         canvas->glue.reset(new gnash::GtkGlExtGlue);
+#else
+        boost::format fmt = boost::format("Support for renderer %1% "
+                " was not built") % renderer;
+        throw gnash::GnashException(fmt.str());
+#endif
+    }
+    else if (renderer == "agg") {
         // Use the AGG software library for rendering. While this runs
         // on any hardware platform, it does have performance issues
         // on low-end platforms without a GPU. So while AGG may render
         // streaming video over a network connection just fine,
         // anything below about 600Mhz CPU may have buffering and
         // rendering performance issues.
-    }
-#endif
-    if (renderer == "agg") {
         // Use LibVva, which works on Nvidia, AT, or Intel 965 GPUs
         // with AGG or OpenGL.
 #ifdef HAVE_VA_VA_H
@@ -267,12 +276,21 @@ gnash_canvas_setup(GnashCanvas *canvas, std::string& 
hwaccel,
             // Set the hardware acclerator to the next one to try
             // if initializing fails.
         } else 
-#endif
+#endif // HAVE_XV
         {
             canvas->glue.reset(new gnash::GtkAggGlue);
         }
+#else // ndef RENDERER_AGG
+        boost::format fmt = boost::format("Support for renderer %1% "
+                "was not built") % renderer;
+        throw gnash::GnashException(fmt.str());
 #endif
     }
+    else {
+        boost::format fmt = boost::format("Non-existent renderer %1% "
+            "specified") % renderer;
+        throw gnash::GnashException(fmt.str());
+    }
 
     // Initialize the canvas for rendering into
     initialized_renderer = canvas->glue->init(argc, argv);
diff --git a/libbase/rc.cpp b/libbase/rc.cpp
index 81fc1d5..a0e6c15 100644
--- a/libbase/rc.cpp
+++ b/libbase/rc.cpp
@@ -500,6 +500,11 @@ RcInitFile::parseFile(const std::string& filespec)
                 continue;
             }
             
+            if(noCaseCompare(variable, "MediaHandler")) {
+                _mediahandler = value;
+                continue;
+            }
+            
             if (noCaseCompare(variable, "CertDir") ) {
                 expandPath(value);
                 _certdir = value;
diff --git a/libbase/rc.h b/libbase/rc.h
index f4c4cf7..4579ff5 100644
--- a/libbase/rc.h
+++ b/libbase/rc.h
@@ -1,3 +1,4 @@
+// rc.h:  "Run Command" configuration file declarations, for Gnash.
 // 
 //   Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software
 //   Foundation, Inc
@@ -246,12 +247,18 @@ public:
     // Set the name of the hardware acclerator to use for video
     void setHWAccel(const std::string &x) { _hwaccel = x; }
 
-    // Get the name of the hardware acclerator to use for video
+    // Get the name of the renderer to draw the display
     const std::string& getRenderer() const { return _renderer; }
 
-    // Set the name of the hardware acclerator to use for video
+    // Set the name of the renderer to draw the display
     void setRenderer(const std::string& x) { _renderer = x; }
 
+    // Get the name of the media handler to use for video/audio
+    const std::string& getMediaHandler() const { return _mediahandler; }
+
+    // Set the name of the media handler to use for video/audio
+    void setMediaHandler(const std::string& x) { _mediahandler = x; }
+
     // Get the location of the sandbox for .sol files
     const std::string &getSOLSafeDir() const { return _solsandbox; }
 
@@ -580,15 +587,19 @@ protected:
     /// default value is true
     bool _ignoreShowMenu;
 
-    /// Whether to ue HW video decoding support, no value means disabled.
-    /// The only currently supported values are: none, vaapi,  or xv (omap)
-    /// support coming. 
+    /// Whether to use HW video decoding support, no value means disabled.
+    /// The only currently supported values are: none, vaapi, or xv.  omap
+    /// support is coming. 
     std::string _hwaccel;
 
     /// Which renderer backend to use, no value means use the default.
     /// The currently supported values are agg, opengl, or cairo. AGG
     /// being the default.
     std::string _renderer;
+
+    /// Which media player backend to use, no value means use the default.
+    /// The default is set in the MediaFactory initialization table.
+    std::string _mediahandler;
 };
 
 // End of gnash namespace 
diff --git a/libmedia/MediaHandler.h b/libmedia/MediaHandler.h
index 22365f0..18e14bb 100644
--- a/libmedia/MediaHandler.h
+++ b/libmedia/MediaHandler.h
@@ -90,7 +90,7 @@ public:
     /// Create a VideoDecoder for decoding what's specified in the VideoInfo
     //
     /// @param info VideoInfo class with all the info needed to decode
-    ///             the sound correctly.
+    ///             the image stream correctly.
     /// @return     Will always return a valid VideoDecoder or throw a
     ///             gnash::MediaException if a fatal error occurs.
     virtual std::auto_ptr<VideoDecoder>
diff --git a/libmedia/MediaParser.cpp b/libmedia/MediaParser.cpp
index 9a5c05b..5730b4f 100644
--- a/libmedia/MediaParser.cpp
+++ b/libmedia/MediaParser.cpp
@@ -411,7 +411,8 @@ MediaParser::parserLoop()
        while (!parserThreadKillRequested())
        {
                parseNextChunk();
-               gnashSleep(100); // no rush....
+               boost::mutex::scoped_lock lock(_qMutex);
+               waitIfNeeded(lock);
        }
 }
 
diff --git a/packaging/debian/rules b/packaging/debian/rules
index fd5df4a..288b200 100755
--- a/packaging/debian/rules
+++ b/packaging/debian/rules
@@ -143,9 +143,8 @@ CONFIGURE_FLAGS = CFLAGS="$(CFLAGS)" \
        --infodir=/usr/share/info \
        --disable-testsuite \
        --disable-rpath \
-       --enable-renderers=agg,cairo \
+       --enable-renderer=agg,cairo \
        --enable-cygnal \
-       --enable-docbook \
        --enable-python \
        --with-plugins-install=system \
        --disable-dependency-tracking \
diff --git a/testsuite/gnashrc.in b/testsuite/gnashrc.in
index b307a26..73d610c 100644
--- a/testsuite/gnashrc.in
+++ b/testsuite/gnashrc.in
@@ -47,4 +47,10 @@ set blacklist www.blacklistedserver.org
 # LocalConnection must be enabled for testing.
 set localconnection false
 
+# Use the default Renderer
+set Renderer
+
+# Use the default MediaHandler
+set MediaHandler
+
 # TODO: enable extensions ?
diff --git a/testsuite/libbase.all/TCXXRc.cpp b/testsuite/libbase.all/TCXXRc.cpp
index cc3ad3d..87005f4 100644
--- a/testsuite/libbase.all/TCXXRc.cpp
+++ b/testsuite/libbase.all/TCXXRc.cpp
@@ -264,6 +264,42 @@ main (int /*argc*/, char** /*argv*/) {
         }
     }
 
+    if (rc.getURLOpenerFormat() == "lynx %u") {
+        runtest.pass ("getURLOpenerFormat");
+    } else {
+        runtest.fail ("getURLOpenerFormat");
+    }
+
+    if (rc.getSOLSafeDir() == "/tmp/SharedObjects") {
+        runtest.pass ("getSOLSafeDir");
+    } else {
+        runtest.fail ("getSOLSafeDir");
+    }
+
+    if (rc.getSOLReadOnly() == true) {
+        runtest.pass ("getSOLReadOnly");
+    } else {
+        runtest.fail ("getSOLReadOnly");
+    }
+    
+    if (rc.ignoreShowMenu() == false) {
+        runtest.pass ("ignoreShowMenu");
+    } else {
+        runtest.fail ("ignoreShowMenu");
+    }
+
+    if ( rc.getRenderer().empty() ) {
+        runtest.pass ("getRenderer gives empty string");
+    } else {
+        runtest.fail ("getRenderer gives " + rc.getRenderer() );
+    }
+
+    if ( rc.getMediaHandler().empty() ) {
+        runtest.pass ("getMediaHandler gives empty string");
+    } else {
+        runtest.fail ("getMediaHandler gives " + rc.getMediaHandler() );
+    }
+
     // Parse a second file
     if (rc.parseFile("gnashrc-local")) {
 
@@ -304,30 +340,18 @@ main (int /*argc*/, char** /*argv*/) {
             }
         }
 
-    }
-
-    if (rc.getURLOpenerFormat() == "lynx %u") {
-        runtest.pass ("getURLOpenerFormat");
-    } else {
-        runtest.fail ("getURLOpenerFormat");
-    }
+        if ( rc.getRenderer() == std::string("fakeRenderer") ) {
+            runtest.pass ("getRenderer gives " + rc.getRenderer() );
+        } else {
+            runtest.fail ("getRenderer gives " + rc.getRenderer() );
+        }
 
-    if (rc.getSOLSafeDir() == "/tmp/SharedObjects") {
-        runtest.pass ("getSOLSafeDir");
-    } else {
-        runtest.fail ("getSOLSafeDir");
-    }
+        if ( rc.getMediaHandler() == std::string("fakeMediaHandler") ) {
+            runtest.pass ("getMediaHandler gives " + rc.getMediaHandler() );
+        } else {
+            runtest.fail ("getMediaHandler gives " + rc.getMediaHandler() );
+        }
 
-    if (rc.getSOLReadOnly() == true) {
-        runtest.pass ("getSOLReadOnly");
-    } else {
-        runtest.fail ("getSOLReadOnly");
-    }
-    
-    if (rc.ignoreShowMenu() == false) {
-        runtest.pass ("ignoreShowMenu");
-    } else {
-        runtest.fail ("ignoreShowMenu");
     }
 }
 
diff --git a/testsuite/libbase.all/gnashrc-local.in 
b/testsuite/libbase.all/gnashrc-local.in
index da4384e..6dad1f0 100644
--- a/testsuite/libbase.all/gnashrc-local.in
+++ b/testsuite/libbase.all/gnashrc-local.in
@@ -7,5 +7,8 @@ append blacklist www.gnashdev.org www.wikipedia.de
 
 append localSandboxPath /tmp/gnash
 
-# Use XVideo
-set XVideo true
+# Use arbitrary renderer
+set Renderer fakeRenderer
+
+# Use arbitrary renderer
+set MediaHandler fakeMediaHandler
diff --git a/testsuite/libbase.all/gnashrc.in b/testsuite/libbase.all/gnashrc.in
index fdba774..7fe3b81 100644
--- a/testsuite/libbase.all/gnashrc.in
+++ b/testsuite/libbase.all/gnashrc.in
@@ -105,3 +105,9 @@ set CertDir /test/etc/pki/tls/
 
 # Stage.showMenu ignore behavior
 set ignoreShowMenu false
+
+# Use default renderer
+set Renderer
+
+# Use default media handler
+set MediaHandler
diff --git a/utilities/processor.cpp b/utilities/processor.cpp
index 8495f45..868c5d1 100644
--- a/utilities/processor.cpp
+++ b/utilities/processor.cpp
@@ -353,7 +353,8 @@ main(int argc, char *argv[])
     boost::shared_ptr<gnash::media::MediaHandler> mediaHandler;
     boost::shared_ptr<sound::sound_handler> soundHandler;
 
-    mediaHandler.reset(media::MediaFactory::instance().get(""));
+    std::string mh = rcfile.getMediaHandler();
+    mediaHandler.reset(media::MediaFactory::instance().get(mh));
     soundHandler.reset(new sound::NullSoundHandler(mediaHandler.get()));
 
     boost::shared_ptr<StreamProvider> sp(new StreamProvider);

-----------------------------------------------------------------------

Summary of changes:
 gui/gnash.cpp                          |   46 +++++----------------
 gui/gtk/gtk_canvas.cpp                 |   34 ++++++++++++----
 libbase/rc.cpp                         |    5 ++
 libbase/rc.h                           |   21 +++++++--
 libmedia/MediaHandler.h                |    2 +-
 libmedia/MediaParser.cpp               |    3 +-
 packaging/debian/rules                 |    3 +-
 testsuite/gnashrc.in                   |    6 +++
 testsuite/libbase.all/TCXXRc.cpp       |   68 +++++++++++++++++++++----------
 testsuite/libbase.all/gnashrc-local.in |    7 ++-
 testsuite/libbase.all/gnashrc.in       |    6 +++
 utilities/processor.cpp                |    3 +-
 12 files changed, 127 insertions(+), 77 deletions(-)


hooks/post-receive
-- 
Gnash



reply via email to

[Prev in Thread] Current Thread [Next in Thread]