[Top][All Lists]
[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__
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog gui/gnash.cpp plugin/plugin.cpp...,
Sandro Santilli <=