diff options
author | Oz Linden <oz@lindenlab.com> | 2011-02-17 18:52:15 -0500 |
---|---|---|
committer | Oz Linden <oz@lindenlab.com> | 2011-02-17 18:52:15 -0500 |
commit | 65ca5968cd59663c3567287c14ce506e37c085c4 (patch) | |
tree | b74325f43d5757fdab1ce607b4f6aff94529e7b3 /indra/llplugin/llplugininstance.cpp | |
parent | 49e28d324066add8cca44e27806b8077d3b0c542 (diff) | |
parent | cba34d7d4cdb0339113a4798965d595645d5cb49 (diff) |
Automated merge with file:///Users/oz/Work/viewer-vs2010
Diffstat (limited to 'indra/llplugin/llplugininstance.cpp')
-rw-r--r-- | indra/llplugin/llplugininstance.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/indra/llplugin/llplugininstance.cpp b/indra/llplugin/llplugininstance.cpp index c326961db4..7cde82a20e 100644 --- a/indra/llplugin/llplugininstance.cpp +++ b/indra/llplugin/llplugininstance.cpp @@ -32,6 +32,10 @@ #include "llapr.h" +#if LL_WINDOWS +#include "direct.h" // needed for _chdir() +#endif + /** Virtual destructor. */ LLPluginInstanceMessageListener::~LLPluginInstanceMessageListener() { @@ -73,10 +77,24 @@ LLPluginInstance::~LLPluginInstance() * @param[in] plugin_file Name of plugin dll/dylib/so. TODO:DOC is this correct? see .h * @return 0 if successful, APR error code or error code from the plugin's init function on failure. */ -int LLPluginInstance::load(std::string &plugin_file) +int LLPluginInstance::load(const std::string& plugin_dir, std::string &plugin_file) { pluginInitFunction init_function = NULL; + if ( plugin_dir.length() ) + { +#if LL_WINDOWS + // VWR-21275: + // *SOME* Windows systems fail to load the Qt plugins if the current working + // directory is not the same as the directory with the Qt DLLs in. + // This should not cause any run time issues since we are changing the cwd for the + // plugin shell process and not the viewer. + // Changing back to the previous directory is not necessary since the plugin shell + // quits once the plugin exits. + _chdir( plugin_dir.c_str() ); +#endif + }; + int result = apr_dso_load(&mDSOHandle, plugin_file.c_str(), gAPRPoolp); |