gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] /srv/bzr/gnash/trunk r12370: Simplify -R handling, make g


From: Sandro Santilli
Subject: [Gnash-commit] /srv/bzr/gnash/trunk r12370: Simplify -R handling, make gtk gui more robust on rendering handling.
Date: Fri, 13 Aug 2010 00:27:56 +0200
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 12370
committer: Sandro Santilli <address@hidden>
branch nick: trunk
timestamp: Fri 2010-08-13 00:27:56 +0200
message:
  Simplify -R handling, make gtk gui more robust on rendering handling.
  Other guis seem just to be ignoring that switch... a RendererFactory would be 
nice to think about
modified:
  gui/gnash.cpp
  gui/gtk/gtk_canvas.cpp
=== modified file 'gui/gnash.cpp'
--- a/gui/gnash.cpp     2010-08-12 21:50:47 +0000
+++ b/gui/gnash.cpp     2010-08-12 22:27:56 +0000
@@ -406,38 +406,12 @@
                     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)) {

=== modified file 'gui/gtk/gtk_canvas.cpp'
--- a/gui/gtk/gtk_canvas.cpp    2010-08-04 08:50:32 +0000
+++ b/gui/gtk/gtk_canvas.cpp    2010-08-12 22:27:56 +0000
@@ -215,7 +215,7 @@
 #elif defined (RENDERER_CAIRO)
         renderer = "cairo";
 #elif defined (RENDERER_OGL)
-        renderer = "ogl";
+        renderer = "opengl";
 #endif
     }
 
@@ -229,27 +229,36 @@
     // 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.
+    if (renderer == "cairo") {
 #ifdef RENDERER_CAIRO
-    if (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
     }
-#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 @@
             // 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);


reply via email to

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