Merge branch 'DRTVWR-512' of https://bitbucket.org/lindenlab/viewer
commit
77f56fa7bf
|
|
@ -68,6 +68,7 @@ indra/web/doc/asset-upload/plugins/verify-texture
|
|||
installed.xml
|
||||
libraries
|
||||
tarfile_tmp
|
||||
trivial_change_force_build
|
||||
web/config.*
|
||||
web/locale.*
|
||||
web/secondlife.com.*
|
||||
|
|
|
|||
|
|
@ -826,9 +826,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>23aeaf23e7db2484a1850017141860dd</string>
|
||||
<string>a915603d09b7f7b0813d14746ecf5778</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/34069/283470/dullahan-1.1.1320_3.3626.1895.g7001d56-darwin64-525361.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/60398/567501/dullahan-1.6.9.202005220807_81.3.10_gb223419_chromium-81.0.4044.138-darwin64-542723.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -850,9 +850,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>43c03679c3847754b407532efe5d4392</string>
|
||||
<string>326f6675b24c191c2d0796eebb33b4b0</string>
|
||||
<key>url</key>
|
||||
<string>http://downloads.phoenixviewer.com/dullahan-1.7.0.202005292352_81.3.10_gb223419_chromium-81.0.4044.138-windows-201512310.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/60400/567512/dullahan-1.6.9.202005221511_81.3.10_gb223419_chromium-81.0.4044.138-windows-542723.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -862,16 +862,16 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>13574736220c05de847980f851f42827</string>
|
||||
<string>b3aa1515f8630cf6e6cc7d2cf1faffe6</string>
|
||||
<key>url</key>
|
||||
<string>http://downloads.phoenixviewer.com/dullahan-1.7.0.202005292352_81.3.10_gb223419_chromium-81.0.4044.138-windows64-201512301.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/60399/567513/dullahan-1.6.9.202005221511_81.3.10_gb223419_chromium-81.0.4044.138-windows64-542723.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>1.1.1320_3.3626.1895.g7001d56</string>
|
||||
<string>1.6.9.202005221511_81.3.10_gb223419_chromium-81.0.4044.138</string>
|
||||
</map>
|
||||
<key>elfio</key>
|
||||
<map>
|
||||
|
|
|
|||
|
|
@ -1148,6 +1148,10 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)
|
|||
mDebugMessageLevel = message.getValue("message_level");
|
||||
mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_DEBUG_MESSAGE);
|
||||
}
|
||||
else if (message_name == "tooltip_text")
|
||||
{
|
||||
mHoverText = message.getValue("tooltip");
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS("Plugin") << "Unknown " << message_name << " class message: " << message_name << LL_ENDL;
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ private:
|
|||
void onConsoleMessageCallback(std::string message, std::string source, int line);
|
||||
void onStatusMessageCallback(std::string value);
|
||||
void onTitleChangeCallback(std::string title);
|
||||
void onTooltipCallback(std::string text);
|
||||
void onLoadStartCallback();
|
||||
void onRequestExitCallback();
|
||||
void onLoadEndCallback(int httpStatusCode);
|
||||
|
|
@ -72,6 +73,7 @@ private:
|
|||
bool onHTTPAuthCallback(const std::string host, const std::string realm, std::string& username, std::string& password);
|
||||
void onCursorChangedCallback(dullahan::ECursorType type);
|
||||
const std::vector<std::string> onFileDialog(dullahan::EFileDialogType dialog_type, const std::string dialog_title, const std::string default_file, const std::string dialog_accept_filter, bool& use_default);
|
||||
bool onJSDialogCallback(const std::string origin_url, const std::string message_text, const std::string default_prompt_text);
|
||||
|
||||
void postDebugMessage(const std::string& msg);
|
||||
void authResponse(LLPluginMessage &message);
|
||||
|
|
@ -88,6 +90,8 @@ private:
|
|||
bool mPluginsEnabled;
|
||||
bool mJavascriptEnabled;
|
||||
bool mDisableGPU;
|
||||
bool mDisableNetworkService;
|
||||
bool mUseMockKeyChain;
|
||||
std::string mUserAgentSubtring;
|
||||
std::string mAuthUsername;
|
||||
std::string mAuthPassword;
|
||||
|
|
@ -96,7 +100,6 @@ private:
|
|||
bool mCanCopy;
|
||||
bool mCanPaste;
|
||||
std::string mCachePath;
|
||||
std::string mCookiePath;
|
||||
std::string mCefLogFile;
|
||||
bool mCefLogVerbose;
|
||||
std::vector<std::string> mPickedFiles;
|
||||
|
|
@ -120,6 +123,8 @@ MediaPluginBase(host_send_func, host_user_data)
|
|||
mPluginsEnabled = false;
|
||||
mJavascriptEnabled = true;
|
||||
mDisableGPU = false;
|
||||
mDisableNetworkService = true;
|
||||
mUseMockKeyChain = true;
|
||||
mUserAgentSubtring = "";
|
||||
mAuthUsername = "";
|
||||
mAuthPassword = "";
|
||||
|
|
@ -128,7 +133,6 @@ MediaPluginBase(host_send_func, host_user_data)
|
|||
mCanCopy = false;
|
||||
mCanPaste = false;
|
||||
mCachePath = "";
|
||||
mCookiePath = "";
|
||||
mCefLogFile = "";
|
||||
mCefLogVerbose = false;
|
||||
mPickedFiles.clear();
|
||||
|
|
@ -209,6 +213,12 @@ void MediaPluginCEF::onTitleChangeCallback(std::string title)
|
|||
sendMessage(message);
|
||||
}
|
||||
|
||||
void MediaPluginCEF::onTooltipCallback(std::string text)
|
||||
{
|
||||
LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "tooltip_text");
|
||||
message.setValue("tooltip", text);
|
||||
sendMessage(message);
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
void MediaPluginCEF::onLoadStartCallback()
|
||||
|
|
@ -356,6 +366,14 @@ const std::vector<std::string> MediaPluginCEF::onFileDialog(dullahan::EFileDialo
|
|||
return std::vector<std::string>();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
bool MediaPluginCEF::onJSDialogCallback(const std::string origin_url, const std::string message_text, const std::string default_prompt_text)
|
||||
{
|
||||
// return true indicates we suppress the JavaScript alert UI entirely
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
void MediaPluginCEF::onCursorChangedCallback(dullahan::ECursorType type)
|
||||
|
|
@ -432,6 +450,8 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
|
|||
{
|
||||
mCEFLib->update();
|
||||
|
||||
mVolumeCatcher.pump();
|
||||
|
||||
// this seems bad but unless the state changes (it won't until we figure out
|
||||
// how to get CEF to tell us if copy/cut/paste is available) then this function
|
||||
// will return immediately
|
||||
|
|
@ -492,6 +512,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
|
|||
mCEFLib->setOnConsoleMessageCallback(std::bind(&MediaPluginCEF::onConsoleMessageCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
|
||||
mCEFLib->setOnStatusMessageCallback(std::bind(&MediaPluginCEF::onStatusMessageCallback, this, std::placeholders::_1));
|
||||
mCEFLib->setOnTitleChangeCallback(std::bind(&MediaPluginCEF::onTitleChangeCallback, this, std::placeholders::_1));
|
||||
mCEFLib->setOnTooltipCallback(std::bind(&MediaPluginCEF::onTooltipCallback, this, std::placeholders::_1));
|
||||
mCEFLib->setOnLoadStartCallback(std::bind(&MediaPluginCEF::onLoadStartCallback, this));
|
||||
mCEFLib->setOnLoadEndCallback(std::bind(&MediaPluginCEF::onLoadEndCallback, this, std::placeholders::_1));
|
||||
mCEFLib->setOnLoadErrorCallback(std::bind(&MediaPluginCEF::onLoadError, this, std::placeholders::_1, std::placeholders::_2));
|
||||
|
|
@ -501,17 +522,19 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
|
|||
mCEFLib->setOnFileDialogCallback(std::bind(&MediaPluginCEF::onFileDialog, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5));
|
||||
mCEFLib->setOnCursorChangedCallback(std::bind(&MediaPluginCEF::onCursorChangedCallback, this, std::placeholders::_1));
|
||||
mCEFLib->setOnRequestExitCallback(std::bind(&MediaPluginCEF::onRequestExitCallback, this));
|
||||
|
||||
mCEFLib->setOnJSDialogCallback(std::bind(&MediaPluginCEF::onJSDialogCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
|
||||
|
||||
dullahan::dullahan_settings settings;
|
||||
settings.accept_language_list = mHostLanguage;
|
||||
settings.background_color = 0xffffffff;
|
||||
settings.cache_enabled = true;
|
||||
settings.cache_path = mCachePath;
|
||||
#if (DULLAHAN_VERSION_MAJOR*100+DULLAHAN_VERSION_MINOR) < 106
|
||||
settings.cookie_store_path = mCookiePath;
|
||||
#endif
|
||||
settings.cookies_enabled = mCookiesEnabled;
|
||||
settings.disable_gpu = mDisableGPU;
|
||||
#if LL_DARWIN
|
||||
settings.disable_network_service = mDisableNetworkService;
|
||||
settings.use_mock_keychain = mUseMockKeyChain;
|
||||
#endif
|
||||
settings.flash_enabled = mPluginsEnabled;
|
||||
settings.flip_mouse_y = false;
|
||||
settings.flip_pixels_y = true;
|
||||
|
|
@ -570,7 +593,6 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
|
|||
std::string user_data_path_cookies = message_in.getValue("cookies_path");
|
||||
|
||||
mCachePath = user_data_path_cache + "cef_cache";
|
||||
mCookiePath = user_data_path_cookies + "cef_cookies";
|
||||
mCefLogFile = message_in.getValue("cef_log_file");
|
||||
mCefLogVerbose = message_in.getValueBoolean("cef_verbose_log");
|
||||
}
|
||||
|
|
@ -670,10 +692,9 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
|
|||
else if (message_name == "scroll_event")
|
||||
{
|
||||
// Mouse coordinates for cef to be able to scroll 'containers'
|
||||
#if (DULLAHAN_VERSION_MAJOR*100+DULLAHAN_VERSION_MINOR) >= 106
|
||||
S32 x = message_in.getValueS32("x");
|
||||
S32 y = message_in.getValueS32("y");
|
||||
#endif
|
||||
|
||||
// Wheel's clicks
|
||||
S32 delta_x = message_in.getValueS32("clicks_x");
|
||||
S32 delta_y = message_in.getValueS32("clicks_y");
|
||||
|
|
@ -681,11 +702,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
|
|||
delta_x *= -scaling_factor;
|
||||
delta_y *= -scaling_factor;
|
||||
|
||||
#if (DULLAHAN_VERSION_MAJOR*100+DULLAHAN_VERSION_MINOR) >= 106
|
||||
mCEFLib->mouseWheel(x, y, delta_x, delta_y);
|
||||
#else
|
||||
mCEFLib->mouseWheel(delta_x, delta_y);
|
||||
#endif
|
||||
}
|
||||
else if (message_name == "text_event")
|
||||
{
|
||||
|
|
|
|||
|
|
@ -11159,7 +11159,7 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>0.125</real>
|
||||
<real>0.02</real>
|
||||
</map>
|
||||
<key>MediaRollOffMin</key>
|
||||
<map>
|
||||
|
|
@ -11170,7 +11170,7 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>10.0</real>
|
||||
<real>40.0</real>
|
||||
</map>
|
||||
<key>MediaRollOffMax</key>
|
||||
<map>
|
||||
|
|
@ -11181,7 +11181,7 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>30.0</real>
|
||||
<real>80.0</real>
|
||||
</map>
|
||||
<key>RecentItemsSortOrder</key>
|
||||
<map>
|
||||
|
|
|
|||
|
|
@ -144,7 +144,6 @@
|
|||
#include "llcoros.h"
|
||||
#include "llexception.h"
|
||||
//#if !LL_LINUX
|
||||
#include "cef/dullahan.h"
|
||||
#include "cef/dullahan_version.h"
|
||||
#include "vlc/libvlc_version.h"
|
||||
//#endif // LL_LINUX
|
||||
|
|
@ -3869,12 +3868,16 @@ LLSD LLAppViewer::getViewerInfo() const
|
|||
cef_ver_codec << ".";
|
||||
cef_ver_codec << DULLAHAN_VERSION_MINOR;
|
||||
cef_ver_codec << ".";
|
||||
cef_ver_codec << DULLAHAN_VERSION_POINT;
|
||||
cef_ver_codec << ".";
|
||||
cef_ver_codec << DULLAHAN_VERSION_BUILD;
|
||||
|
||||
cef_ver_codec << " / CEF: ";
|
||||
cef_ver_codec << std::endl;
|
||||
cef_ver_codec << " CEF: ";
|
||||
cef_ver_codec << CEF_VERSION;
|
||||
|
||||
cef_ver_codec << " / Chromium: ";
|
||||
cef_ver_codec << std::endl;
|
||||
cef_ver_codec << " Chromium: ";
|
||||
cef_ver_codec << CHROME_VERSION_MAJOR;
|
||||
cef_ver_codec << ".";
|
||||
cef_ver_codec << CHROME_VERSION_MINOR;
|
||||
|
|
|
|||
|
|
@ -831,8 +831,32 @@ void LLPanelPrimMediaControls::draw()
|
|||
|
||||
BOOL LLPanelPrimMediaControls::handleScrollWheel(S32 x, S32 y, S32 clicks)
|
||||
{
|
||||
mInactivityTimer.start();
|
||||
return LLViewerMediaFocus::getInstance()->handleScrollWheel(x, y, clicks);
|
||||
mInactivityTimer.start();
|
||||
BOOL res = FALSE;
|
||||
|
||||
// Unlike other mouse events, we need to handle scroll here otherwise
|
||||
// it will be intercepted by camera and won't reach toolpie
|
||||
if (LLViewerMediaFocus::getInstance()->isHoveringOverFocused())
|
||||
{
|
||||
// either let toolpie handle this or expose mHoverPick.mUVCoords in some way
|
||||
res = LLToolPie::getInstance()->handleScrollWheel(x, y, clicks);
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
BOOL LLPanelPrimMediaControls::handleScrollHWheel(S32 x, S32 y, S32 clicks)
|
||||
{
|
||||
mInactivityTimer.start();
|
||||
BOOL res = FALSE;
|
||||
|
||||
if (LLViewerMediaFocus::getInstance()->isHoveringOverFocused())
|
||||
{
|
||||
// either let toolpie handle this or expose mHoverPick.mUVCoords in some way
|
||||
res = LLToolPie::getInstance()->handleScrollHWheel(x, y, clicks);
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
BOOL LLPanelPrimMediaControls::handleMouseDown(S32 x, S32 y, MASK mask)
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ public:
|
|||
/*virtual*/ BOOL postBuild();
|
||||
virtual void draw();
|
||||
virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
|
||||
virtual BOOL handleScrollHWheel(S32 x, S32 y, S32 clicks);
|
||||
|
||||
virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
|
||||
virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
|
||||
|
|
|
|||
|
|
@ -221,14 +221,31 @@ BOOL LLToolPie::handleRightMouseUp(S32 x, S32 y, MASK mask)
|
|||
return LLTool::handleRightMouseUp(x, y, mask);
|
||||
}
|
||||
|
||||
BOOL LLToolPie::handleScrollWheelAny(S32 x, S32 y, S32 clicks_x, S32 clicks_y)
|
||||
{
|
||||
BOOL res = FALSE;
|
||||
// mHoverPick should have updated on its own and we should have a face
|
||||
// in LLViewerMediaFocus in case of media, so just reuse mHoverPick
|
||||
if (mHoverPick.mUVCoords.mV[VX] >= 0.f && mHoverPick.mUVCoords.mV[VY] >= 0.f)
|
||||
{
|
||||
res = LLViewerMediaFocus::getInstance()->handleScrollWheel(mHoverPick.mUVCoords, clicks_x, clicks_y);
|
||||
}
|
||||
else
|
||||
{
|
||||
// this won't provide correct coordinates in case of object selection
|
||||
res = LLViewerMediaFocus::getInstance()->handleScrollWheel(x, y, clicks_x, clicks_y);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
BOOL LLToolPie::handleScrollWheel(S32 x, S32 y, S32 clicks)
|
||||
{
|
||||
return LLViewerMediaFocus::getInstance()->handleScrollWheel(x, y, clicks);
|
||||
return handleScrollWheelAny(x, y, 0, clicks);
|
||||
}
|
||||
|
||||
BOOL LLToolPie::handleScrollHWheel(S32 x, S32 y, S32 clicks)
|
||||
{
|
||||
return LLViewerMediaFocus::getInstance()->handleScrollWheel(x, y, clicks);
|
||||
return handleScrollWheelAny(x, y, clicks, 0);
|
||||
}
|
||||
|
||||
// True if you selected an object.
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ public:
|
|||
virtual BOOL handleRightMouseUp(S32 x, S32 y, MASK mask);
|
||||
virtual BOOL handleHover(S32 x, S32 y, MASK mask);
|
||||
virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
|
||||
BOOL handleScrollWheelAny(S32 x, S32 y, S32 clicks_x, S32 clicks_y);
|
||||
virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
|
||||
virtual BOOL handleScrollHWheel(S32 x, S32 y, S32 clicks);
|
||||
virtual BOOL handleToolTip(S32 x, S32 y, MASK mask);
|
||||
|
|
|
|||
|
|
@ -2349,6 +2349,18 @@ void LLViewerMediaImpl::mouseDoubleClick(S32 x, S32 y, MASK mask, S32 button)
|
|||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
void LLViewerMediaImpl::scrollWheel(const LLVector2& texture_coords, S32 scroll_x, S32 scroll_y, MASK mask)
|
||||
{
|
||||
if (mMediaSource)
|
||||
{
|
||||
S32 x, y;
|
||||
scaleTextureCoords(texture_coords, &x, &y);
|
||||
|
||||
scrollWheel(x, y, scroll_x, scroll_y, mask);
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
void LLViewerMediaImpl::scrollWheel(S32 x, S32 y, S32 scroll_x, S32 scroll_y, MASK mask)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -235,6 +235,7 @@ public:
|
|||
void mouseMove(const LLVector2& texture_coords, MASK mask);
|
||||
void mouseDoubleClick(const LLVector2& texture_coords, MASK mask);
|
||||
void mouseDoubleClick(S32 x, S32 y, MASK mask, S32 button = 0);
|
||||
void scrollWheel(const LLVector2& texture_coords, S32 scroll_x, S32 scroll_y, MASK mask);
|
||||
void scrollWheel(S32 x, S32 y, S32 scroll_x, S32 scroll_y, MASK mask);
|
||||
void mouseCapture();
|
||||
|
||||
|
|
|
|||
|
|
@ -371,13 +371,26 @@ BOOL LLViewerMediaFocus::handleUnicodeChar(llwchar uni_char, BOOL called_from_pa
|
|||
media_impl->handleUnicodeCharHere(uni_char);
|
||||
return true;
|
||||
}
|
||||
BOOL LLViewerMediaFocus::handleScrollWheel(S32 x, S32 y, S32 clicks)
|
||||
|
||||
BOOL LLViewerMediaFocus::handleScrollWheel(const LLVector2& texture_coords, S32 clicks_x, S32 clicks_y)
|
||||
{
|
||||
BOOL retval = FALSE;
|
||||
LLViewerMediaImpl* media_impl = getFocusedMediaImpl();
|
||||
if (media_impl && media_impl->hasMedia())
|
||||
{
|
||||
media_impl->scrollWheel(texture_coords, clicks_x, clicks_y, gKeyboard->currentMask(TRUE));
|
||||
retval = TRUE;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
BOOL LLViewerMediaFocus::handleScrollWheel(S32 x, S32 y, S32 clicks_x, S32 clicks_y)
|
||||
{
|
||||
BOOL retval = FALSE;
|
||||
LLViewerMediaImpl* media_impl = getFocusedMediaImpl();
|
||||
if(media_impl && media_impl->hasMedia())
|
||||
{
|
||||
media_impl->scrollWheel(x, y, 0, clicks, gKeyboard->currentMask(TRUE));
|
||||
media_impl->scrollWheel(x, y, clicks_x, clicks_y, gKeyboard->currentMask(TRUE));
|
||||
retval = TRUE;
|
||||
}
|
||||
return retval;
|
||||
|
|
|
|||
|
|
@ -58,7 +58,8 @@ public:
|
|||
/*virtual*/ BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent);
|
||||
/*virtual*/ BOOL handleKeyUp(KEY key, MASK mask, BOOL called_from_parent);
|
||||
/*virtual*/ BOOL handleUnicodeChar(llwchar uni_char, BOOL called_from_parent);
|
||||
BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
|
||||
BOOL handleScrollWheel(const LLVector2& texture_coords, S32 clicks_x, S32 clicks_y);
|
||||
BOOL handleScrollWheel(S32 x, S32 y, S32 clicks_x, S32 clicks_y);
|
||||
|
||||
void update();
|
||||
|
||||
|
|
@ -67,7 +68,8 @@ public:
|
|||
|
||||
bool isFocusedOnFace(LLPointer<LLViewerObject> objectp, S32 face);
|
||||
bool isHoveringOverFace(LLPointer<LLViewerObject> objectp, S32 face);
|
||||
|
||||
bool isHoveringOverFocused() { return mFocusedObjectID == mHoverObjectID && mFocusedObjectFace == mHoverObjectFace; };
|
||||
|
||||
// These look up (by uuid) and return the values that were set with setFocusFace. They will return null if the objects have been destroyed.
|
||||
LLViewerMediaImpl* getFocusedMediaImpl();
|
||||
LLViewerObject* getFocusedObject();
|
||||
|
|
|
|||
|
|
@ -140,6 +140,7 @@ void LLViewerParcelMedia::update(LLParcel* parcel)
|
|||
if(mMediaImpl.isNull())
|
||||
|
||||
{
|
||||
play(parcel);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -204,6 +205,12 @@ void LLViewerParcelMedia::play(LLParcel* parcel)
|
|||
if (!gSavedSettings.getBOOL("AudioStreamingMedia"))
|
||||
return;
|
||||
|
||||
// This test appears all over the code and really should be facotred out into a single
|
||||
// call that returns true/false (with option ask dialog) but that is outside of scope
|
||||
// for this work so we'll just directly.
|
||||
if (gSavedSettings.getS32("ParcelMediaAutoPlayEnable") == 0 )
|
||||
return;
|
||||
|
||||
std::string media_url = parcel->getMediaURL();
|
||||
std::string media_current_url = parcel->getMediaCurrentURL();
|
||||
std::string mime_type = parcel->getMediaType();
|
||||
|
|
|
|||
|
|
@ -690,13 +690,11 @@ class WindowsManifest(ViewerManifest):
|
|||
config = 'debug' if self.args['configuration'].lower() == 'debug' else 'release'
|
||||
with self.prefix(src=os.path.join(pkgdir, 'bin', config)):
|
||||
self.path("chrome_elf.dll")
|
||||
self.fs_try_path("d3dcompiler_43.dll") # <FS:ND> d3dcompiler_43.dll was removed in the latest cef versions
|
||||
self.path("d3dcompiler_47.dll")
|
||||
self.path("libcef.dll")
|
||||
self.path("libEGL.dll")
|
||||
self.path("libGLESv2.dll")
|
||||
self.path("dullahan_host.exe")
|
||||
self.fs_try_path("natives_blob.bin") # <FS:ND> natives_blob.bin was removed in the latest cef versions
|
||||
self.path("snapshot_blob.bin")
|
||||
self.path("v8_context_snapshot.bin")
|
||||
|
||||
|
|
@ -916,6 +914,7 @@ class WindowsManifest(ViewerManifest):
|
|||
#for exe in (
|
||||
# self.final_exe(),
|
||||
# "SLVersionChecker.exe",
|
||||
# "llplugin/dullahan_host.exe",
|
||||
# ):
|
||||
# self.sign(exe)
|
||||
|
||||
|
|
@ -951,13 +950,13 @@ class WindowsManifest(ViewerManifest):
|
|||
|
||||
def sign(self, exe):
|
||||
sign_py = os.environ.get('SIGN', r'C:\buildscripts\code-signing\sign.py')
|
||||
python = os.environ.get('PYTHON', 'python')
|
||||
python = os.environ.get('PYTHON', sys.executable)
|
||||
if os.path.exists(sign_py):
|
||||
dst_path = self.dst_path_of(exe)
|
||||
print "about to run signing of: ", dst_path
|
||||
self.run_command([python, sign_py, dst_path])
|
||||
else:
|
||||
print "Skipping code signing of %s: %s not found" % (exe, sign_py)
|
||||
print "Skipping code signing of %s %s: %s not found" % (self.dst_path_of(exe), exe, sign_py)
|
||||
|
||||
def escape_slashes(self, path):
|
||||
return path.replace('\\', '\\\\\\\\')
|
||||
|
|
@ -1229,46 +1228,68 @@ class DarwinManifest(ViewerManifest):
|
|||
# # $viewer_app/Contents/Frameworks/Chromium Embedded Framework.framework
|
||||
# SLPlugin_framework = self.relsymlinkf(CEF_framework, catch=False)
|
||||
|
||||
# # copy DullahanHelper.app
|
||||
# self.path2basename(relpkgdir, 'DullahanHelper.app')
|
||||
|
||||
# # and fix that up with a Frameworks/CEF symlink too
|
||||
# with self.prefix(dst=os.path.join(
|
||||
# 'DullahanHelper.app', 'Contents', 'Frameworks')):
|
||||
# # from Dullahan Helper.app/Contents/Frameworks/Chromium Embedded
|
||||
# # Framework.framework back to
|
||||
# # SLPlugin.app/Contents/Frameworks/Chromium Embedded Framework.framework
|
||||
# # Since SLPlugin_framework is itself a
|
||||
# # symlink, don't let relsymlinkf() resolve --
|
||||
# # explicitly call relpath(symlink=True) and
|
||||
# # create that symlink here.
|
||||
# DullahanHelper_framework = \
|
||||
# self.symlinkf(self.relpath(SLPlugin_framework, symlink=True),
|
||||
# catch=False)
|
||||
# It might seem simpler just to symlink Frameworks back to
|
||||
# the parent of Chromimum Embedded Framework.framework. But
|
||||
# that would create a symlink cycle, which breaks our
|
||||
# packaging step. So make a symlink from Chromium Embedded
|
||||
# Framework.framework to the directory of the same name, which
|
||||
# is NOT an ancestor of the symlink.
|
||||
|
||||
# # change_command includes install_name_tool, the
|
||||
# # -change subcommand and the old framework rpath
|
||||
# # stamped into the executable. To use it with
|
||||
# # run_command(), we must still append the new
|
||||
# # framework path and the pathname of the
|
||||
# # executable to change.
|
||||
# change_command = [
|
||||
# 'install_name_tool', '-change',
|
||||
# '@rpath/Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework']
|
||||
# from SLPlugin.app/Contents/Frameworks/Chromium Embedded
|
||||
# Framework.framework back to
|
||||
# $viewer_app/Contents/Frameworks/Chromium Embedded Framework.framework
|
||||
# SLPlugin_framework = self.relsymlinkf(CEF_framework, catch=False)
|
||||
|
||||
# with self.prefix(dst=os.path.join(
|
||||
# 'DullahanHelper.app', 'Contents', 'MacOS')):
|
||||
# # Now self.get_dst_prefix() is, at runtime,
|
||||
# # @executable_path. Locate the helper app
|
||||
# # framework (which is a symlink) from here.
|
||||
# newpath = os.path.join(
|
||||
# '@executable_path',
|
||||
# self.relpath(DullahanHelper_framework, symlink=True),
|
||||
# frameworkname)
|
||||
# # and restamp the DullahanHelper executable
|
||||
# self.run_command(
|
||||
# change_command +
|
||||
# [newpath, self.dst_path_of('DullahanHelper')])
|
||||
# # for all the multiple CEF/Dullahan (as of CEF 76) helper app bundles we need:
|
||||
# for helper in (
|
||||
# "DullahanHelper",
|
||||
# "DullahanHelper (GPU)",
|
||||
# "DullahanHelper (Renderer)",
|
||||
# "DullahanHelper (Plugin)",
|
||||
# ):
|
||||
# # app is the directory name of the app bundle, with app/Contents/MacOS/helper as the executable
|
||||
# app = helper + ".app"
|
||||
|
||||
# # copy DullahanHelper.app
|
||||
# self.path2basename(relpkgdir, app)
|
||||
|
||||
# # and fix that up with a Frameworks/CEF symlink too
|
||||
# with self.prefix(dst=os.path.join(
|
||||
# app, 'Contents', 'Frameworks')):
|
||||
# # from Dullahan Helper *.app/Contents/Frameworks/Chromium Embedded
|
||||
# # Framework.framework back to
|
||||
# # SLPlugin.app/Contents/Frameworks/Chromium Embedded Framework.framework
|
||||
# # Since SLPlugin_framework is itself a
|
||||
# # symlink, don't let relsymlinkf() resolve --
|
||||
# # explicitly call relpath(symlink=True) and
|
||||
# # create that symlink here.
|
||||
# helper_framework = \
|
||||
# self.symlinkf(self.relpath(SLPlugin_framework, symlink=True), catch=False)
|
||||
|
||||
# # change_command includes install_name_tool, the
|
||||
# # -change subcommand and the old framework rpath
|
||||
# # stamped into the executable. To use it with
|
||||
# # run_command(), we must still append the new
|
||||
# # framework path and the pathname of the
|
||||
# # executable to change.
|
||||
# change_command = [
|
||||
# 'install_name_tool', '-change',
|
||||
# '@rpath/Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework']
|
||||
|
||||
# with self.prefix(dst=os.path.join(
|
||||
# app, 'Contents', 'MacOS')):
|
||||
# # Now self.get_dst_prefix() is, at runtime,
|
||||
# # @executable_path. Locate the helper app
|
||||
# # framework (which is a symlink) from here.
|
||||
# newpath = os.path.join(
|
||||
# '@executable_path',
|
||||
# self.relpath(helper_framework, symlink=True),
|
||||
# frameworkname)
|
||||
# # and restamp the Dullahan Helper executable itself
|
||||
# self.run_command(
|
||||
# change_command +
|
||||
# [newpath, self.dst_path_of(helper)])
|
||||
|
||||
# # SLPlugin plugins
|
||||
# with self.prefix(dst="llplugin"):
|
||||
|
|
|
|||
Loading…
Reference in New Issue