On Mon, Jan 28, 2013 at 07:03:57PM +0100, Marc-André Lureau wrote: > Set SPICE_PROXY environment variable accordingly. > --- > SpiceXPI/src/plugin/nsISpicec.idl | 1 + > SpiceXPI/src/plugin/nsScriptablePeer.cpp | 9 ++++++++- > SpiceXPI/src/plugin/nsScriptablePeer.h | 1 + > SpiceXPI/src/plugin/plugin.cpp | 14 ++++++++++++++ > SpiceXPI/src/plugin/plugin.h | 5 +++++ > 5 files changed, 29 insertions(+), 1 deletion(-) > > diff --git a/SpiceXPI/src/plugin/nsISpicec.idl b/SpiceXPI/src/plugin/nsISpicec.idl > index 001b387..ce4c677 100644 > --- a/SpiceXPI/src/plugin/nsISpicec.idl > +++ b/SpiceXPI/src/plugin/nsISpicec.idl > @@ -65,6 +65,7 @@ interface nsISpicec : nsISupports { > attribute string ColorDepth; > attribute string DisableEffects; > attribute string TrustStore; > + attribute string Proxy; > > void connect(); > void show(); > diff --git a/SpiceXPI/src/plugin/nsScriptablePeer.cpp b/SpiceXPI/src/plugin/nsScriptablePeer.cpp > index 622659c..249e7a3 100644 > --- a/SpiceXPI/src/plugin/nsScriptablePeer.cpp > +++ b/SpiceXPI/src/plugin/nsScriptablePeer.cpp > @@ -88,6 +88,7 @@ NPIdentifier ScriptablePluginObject::m_id_set_language_strings; > NPIdentifier ScriptablePluginObject::m_id_set_usb_filter; > NPIdentifier ScriptablePluginObject::m_id_connect_status; > NPIdentifier ScriptablePluginObject::m_id_plugin_instance; > +NPIdentifier ScriptablePluginObject::m_id_proxy; > > NPObject *AllocateScriptablePluginObject(NPP npp, NPClass *aClass) > { > @@ -140,6 +141,7 @@ void ScriptablePluginObject::Init() > m_id_set_usb_filter = NPN_GetStringIdentifier("SetUsbFilter"); > m_id_connect_status = NPN_GetStringIdentifier("ConnectedStatus"); > m_id_plugin_instance = NPN_GetStringIdentifier("PluginInstance"); > + m_id_proxy = NPN_GetStringIdentifier("Proxy"); > m_id_set = true; > } > > @@ -176,7 +178,8 @@ bool ScriptablePluginObject::HasProperty(NPIdentifier name) > name == m_id_usb_listen_port || > name == m_id_usb_auto_share || > name == m_id_color_depth || > - name == m_id_disable_effects); > + name == m_id_disable_effects || > + name == m_id_proxy); > } > > bool ScriptablePluginObject::GetProperty(NPIdentifier name, NPVariant *result) > @@ -230,6 +233,8 @@ bool ScriptablePluginObject::GetProperty(NPIdentifier name, NPVariant *result) > STRINGZ_TO_NPVARIANT(m_plugin->GetColorDepth(), *result); > else if (name == m_id_disable_effects) > STRINGZ_TO_NPVARIANT(m_plugin->GetDisableEffects(), *result); > + else if (name == m_id_proxy) > + STRINGZ_TO_NPVARIANT(m_plugin->GetProxy(), *result); > else > return false; > > @@ -316,6 +321,8 @@ bool ScriptablePluginObject::SetProperty(NPIdentifier name, const NPVariant *val > m_plugin->SetColorDepth(str.c_str()); > else if (name == m_id_disable_effects) > m_plugin->SetDisableEffects(str.c_str()); > + else if (name == m_id_proxy) > + m_plugin->SetProxy(str.c_str()); > else > return false; > > diff --git a/SpiceXPI/src/plugin/nsScriptablePeer.h b/SpiceXPI/src/plugin/nsScriptablePeer.h > index 44bd53c..7488726 100644 > --- a/SpiceXPI/src/plugin/nsScriptablePeer.h > +++ b/SpiceXPI/src/plugin/nsScriptablePeer.h > @@ -105,6 +105,7 @@ private: > static NPIdentifier m_id_set_usb_filter; > static NPIdentifier m_id_connect_status; > static NPIdentifier m_id_plugin_instance; > + static NPIdentifier m_id_proxy; > }; > > #define DECLARE_NPOBJECT_CLASS_WITH_BASE(_class, ctor) \ > diff --git a/SpiceXPI/src/plugin/plugin.cpp b/SpiceXPI/src/plugin/plugin.cpp > index 8233885..fa04726 100644 > --- a/SpiceXPI/src/plugin/plugin.cpp > +++ b/SpiceXPI/src/plugin/plugin.cpp > @@ -249,6 +249,7 @@ NPBool nsPluginInstance::init(NPWindow *aWindow) > m_trust_store_file.clear(); > m_color_depth.clear(); > m_disable_effects.clear(); > + m_proxy.clear(); > > m_fullscreen = PR_FALSE; > m_smartcard = PR_FALSE; > @@ -544,6 +545,17 @@ void nsPluginInstance::SetDisableEffects(const char *aDisableEffects) > m_disable_effects = aDisableEffects; > } > > +/* attribute string Proxy; */ > +char *nsPluginInstance::GetProxy() const > +{ > + return stringCopy(m_proxy); > +} > + > +void nsPluginInstance::SetProxy(const char *aProxy) > +{ > + m_proxy = aProxy; > +} > + > void nsPluginInstance::WriteToPipe(const void *data, uint32_t size) > { > m_external_controller.Write(data, size); > @@ -633,6 +645,8 @@ void nsPluginInstance::Connect() > > gchar **env = g_get_environ(); > env = g_environ_setenv(env, "SPICE_XPI_SOCKET", socket_file.c_str(), TRUE); > + if (!m_proxy.empty()) > + env = g_environ_setenv(env, "SPICE_PROXY", m_proxy.c_str(), TRUE); Same concern with g_environ_setenv as with the previous patch > > execle("/usr/libexec/spice-xpi-client", > "/usr/libexec/spice-xpi-client", NULL, > diff --git a/SpiceXPI/src/plugin/plugin.h b/SpiceXPI/src/plugin/plugin.h > index 38a8c82..07296a8 100644 > --- a/SpiceXPI/src/plugin/plugin.h > +++ b/SpiceXPI/src/plugin/plugin.h > @@ -168,6 +168,10 @@ public: > char *GetDisableEffects() const; > void SetDisableEffects(const char *aDisableEffects); > > + /* attribute ing Proxy; */ Any idea what the 'ing' stands for? At first I thought this was a typo, but this is present in all other attributes. Patch looks good apart from these small points. Christophe
Attachment:
pgpVcbZKf6deU.pgp
Description: PGP signature
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel