gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog gui/gnash.cpp plugin/plugin.cpp...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog gui/gnash.cpp plugin/plugin.cpp...
Date: Fri, 08 Sep 2006 13:59:17 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  06/09/08 13:59:17

Modified files:
        .              : ChangeLog 
        gui            : gnash.cpp 
        plugin         : plugin.cpp plugin.h 

Log message:
                * gui/gnash.cpp: FlashVars == flashvars (this is how the browser
                  sends parameters)
                * plugin/plugin.cpp, plugin/plugin.h: added support for
                  passing parameters.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.812&r2=1.813
http://cvs.savannah.gnu.org/viewcvs/gnash/gui/gnash.cpp?cvsroot=gnash&r1=1.35&r2=1.36
http://cvs.savannah.gnu.org/viewcvs/gnash/plugin/plugin.cpp?cvsroot=gnash&r1=1.47&r2=1.48
http://cvs.savannah.gnu.org/viewcvs/gnash/plugin/plugin.h?cvsroot=gnash&r1=1.18&r2=1.19

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.812
retrieving revision 1.813
diff -u -b -r1.812 -r1.813
--- ChangeLog   8 Sep 2006 11:14:47 -0000       1.812
+++ ChangeLog   8 Sep 2006 13:59:17 -0000       1.813
@@ -1,5 +1,9 @@
 2006-09-08 Sandro Santilli  <address@hidden>
 
+       * gui/gnash.cpp: FlashVars == flashvars (this is how the browser
+         sends parameters)
+       * plugin/plugin.cpp, plugin/plugin.h: added support for
+         passing parameters.
        * plugin/player.h: removed obsoleted file
 
 2006-09-08 Markus Gothe <address@hidden>

Index: gui/gnash.cpp
===================================================================
RCS file: /sources/gnash/gnash/gui/gnash.cpp,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -b -r1.35 -r1.36
--- gui/gnash.cpp       2 Sep 2006 16:00:29 -0000       1.35
+++ gui/gnash.cpp       8 Sep 2006 13:59:17 -0000       1.36
@@ -437,9 +437,19 @@
     gnash::movie_interface *m = create_library_movie_inst(md);
     assert(m);
 
-    if ( params["FlashVars"] != "" )
+    // Parse parameters
+    for ( map<string,string>::const_iterator it=params.begin(),
+               itEnd=params.end(); it != itEnd; ++it)
     {
-       setFlashVars(*m, params["FlashVars"]);
+       // todo: use a case-insensitive string type
+       if ( it->first == "flashvars" || it->first == "FlashVars" )
+       {
+               setFlashVars(*m, it->second);
+               continue;
+       }
+
+        log_warning("Unused parameter %s = %s",
+               it->first.c_str(), it->second.c_str());
     }
 
 

Index: plugin/plugin.cpp
===================================================================
RCS file: /sources/gnash/gnash/plugin/plugin.cpp,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -b -r1.47 -r1.48
--- plugin/plugin.cpp   2 Sep 2006 00:45:56 -0000       1.47
+++ plugin/plugin.cpp   8 Sep 2006 13:59:17 -0000       1.48
@@ -72,6 +72,7 @@
 #include <fcntl.h>
 #include <cerrno>
 #include <string>
+#include <vector>
 
 // Mozilla SDK headers
 #include "prinit.h"
@@ -224,7 +225,7 @@
     if(!aCreateDataStruct)
       return NULL;
 
-    return new nsPluginInstance(aCreateDataStruct->instance);
+    return new nsPluginInstance(aCreateDataStruct);
 }
 
 /// \brief destroy our plugin instance object
@@ -242,12 +243,19 @@
 //
 
 /// \brief Constructor
-nsPluginInstance::nsPluginInstance(NPP aInstance)
+nsPluginInstance::nsPluginInstance(nsPluginCreateData* data)
   : nsPluginInstanceBase(),
-    _instance(aInstance),
+    _instance(data->instance),
     _window(0),
     _childpid(0)
 {
+       for (size_t i=0, n=data->argc; i<n; ++i)
+       {
+               string name ( data->argn[i] );
+               string val ( data->argv[i] );
+               //log_msg("PARAM: %s = %s", name.c_str(), val.c_str());
+               _params[name] = val;
+       }
 }
 
 /// \brief Destructor
@@ -567,21 +575,52 @@
     // We are the child
 
     // setup the command line
+
     const size_t buf_size = 30;
     char xid[buf_size], width[buf_size], height[buf_size];
     snprintf(xid, buf_size, "%ld", win);
     snprintf(width, buf_size, "%d", _width);
     snprintf(height, buf_size, "%d", _height);
 
-    char * const argv[] = {
-      const_cast<char*>( procname.c_str() ),
-      "-x", xid,
-      "-j", width,
-      "-k", height,
-      "-u", const_cast<char*>( _swf_url.c_str() ),
-      const_cast<char*>( filespec.c_str() ),
-      0
-    };
+    // Write -P values 
+    vector<string> paramvalues;
+    paramvalues.reserve(_params.size());
+    for ( map<string,string>::const_iterator it=_params.begin(),
+               itEnd=_params.end();
+               it != itEnd; ++it)
+    {
+        const string& nam=it->first; 
+        const string& val=it->second;
+
+        string param = nam + string("=") + val;
+        paramvalues.push_back(param);
+    }
+
+    size_t maxargc = 12 + paramvalues.size()*2;
+    char *argv[maxargc];
+
+    size_t argc = 0;
+    argv[argc++] = const_cast<char*>( procname.c_str() );
+    argv[argc++] = "-v";
+    argv[argc++] = "-x";
+    argv[argc++] = xid;
+    argv[argc++] = "-j";
+    argv[argc++] = width;
+    argv[argc++] = "-k";
+    argv[argc++] = height;
+    argv[argc++] = "-u";
+    argv[argc++] = const_cast<char*>( _swf_url.c_str() );
+
+    for ( size_t i=0, n=paramvalues.size(); i<n; ++i)
+    {
+        argv[argc++] = "-P";
+        argv[argc++] = const_cast<char*>( paramvalues[i].c_str() );
+    }
+
+    argv[argc++] = const_cast<char*>( filespec.c_str() );
+    argv[argc++] = 0;
+
+    assert(argc <= maxargc);
 
     // Start the desired executable and go away
     dbglogfile << "Starting process: ";

Index: plugin/plugin.h
===================================================================
RCS file: /sources/gnash/gnash/plugin/plugin.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- plugin/plugin.h     2 Sep 2006 00:45:56 -0000       1.18
+++ plugin/plugin.h     8 Sep 2006 13:59:17 -0000       1.19
@@ -72,7 +72,7 @@
 class nsPluginInstance : public nsPluginInstanceBase
 {
 public:
-    nsPluginInstance(NPP aInstance);
+    nsPluginInstance(nsPluginCreateData* );
     virtual ~nsPluginInstance();
 
     // We are required to implement these three methods.
@@ -96,6 +96,11 @@
     int startProc(std::string filespec, Window win);
 
 private:
+
+    // EMBED or OBJECT attributes / parameters
+    // @@ this should likely replace the _options element below
+    std::map<std::string, std::string> _params;
+
     NPP                                _instance;
     Window                             _window;
     std::string                        _swf_url;
@@ -105,6 +110,7 @@
     std::map<std::string, std::string> _options;
     int                                _streamfd;
     pid_t                              _childpid;
+
 };
 
 // end of __PLUGIN_H__




reply via email to

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