Merge with viewer64.
commit
127809e241
166
autobuild.xml
166
autobuild.xml
|
|
@ -750,6 +750,60 @@
|
|||
<key>version</key>
|
||||
<string>1.500564</string>
|
||||
</map>
|
||||
<key>dullahan</key>
|
||||
<map>
|
||||
<key>copyright</key>
|
||||
<string>Copyright (c) 2017, Linden Research, Inc.</string>
|
||||
<key>description</key>
|
||||
<string>A headless browser SDK that uses the Chromium Embedded Framework (CEF). It is designed to make it easier to write applications that render modern web content directly to a memory buffer, inject synthesized mouse and keyboard events as well as interact with web based features like JavaScript or cookies.</string>
|
||||
<key>license</key>
|
||||
<string>MPL</string>
|
||||
<key>license_file</key>
|
||||
<string>LICENSES/LICENSE.txt</string>
|
||||
<key>name</key>
|
||||
<string>dullahan</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>darwin64</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>66ba275f79d3dfcb6943a9cbe5dd6d94</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3188/7675/dullahan-1.0.620_3.2704.1434.gec3e9ed-darwin64-503177.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
</map>
|
||||
<key>windows</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>fe07cd0dc8d706975850be45e3c1e752</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3190/7682/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows-503177.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
</map>
|
||||
<key>windows64</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>2385864496065bac20ee35d0afddb84f</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3191/7687/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows64-503177.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>1.0.620_3.2704.1434.gec3e9ed</string>
|
||||
</map>
|
||||
<key>elfio</key>
|
||||
<map>
|
||||
<key>license</key>
|
||||
|
|
@ -1655,9 +1709,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>2a33d85c5afa07612e8c4f314ab29545</string>
|
||||
<string>4e7fef9c6ae9b7ccf19b7fdb96912b9c</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/478/1016/jpeglib-8c.500387-darwin64-500387.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3152/7571/jpeglib-8c.503140-darwin64-503140.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -1691,9 +1745,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>543e25c3819399f37e0453db5eea558a</string>
|
||||
<string>00523662f6a7388377166e9415e113e9</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/497/1062/jpeglib-8c.500387-windows-500387.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3153/7557/jpeglib-8c.503140-windows-503140.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -1703,16 +1757,16 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>dbc2baf28f83d1646d7e2f66ead2a1a4</string>
|
||||
<string>70ed49ed2317b6dba9af1f186956ac79</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/494/1049/jpeglib-8c.500387-windows64-500387.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3154/7558/jpeglib-8c.503140-windows64-503140.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>8c.500387</string>
|
||||
<string>8c.503140</string>
|
||||
</map>
|
||||
<key>jsoncpp</key>
|
||||
<map>
|
||||
|
|
@ -2302,104 +2356,6 @@
|
|||
<key>version</key>
|
||||
<string>0.0.1</string>
|
||||
</map>
|
||||
<key>llceflib</key>
|
||||
<map>
|
||||
<key>copyright</key>
|
||||
<string>Copyright (c) 2014, Linden Research, Inc.</string>
|
||||
<key>description</key>
|
||||
<string>LLCefLib implements a headless web browser, rendering modern web content to a memory buffer and providing an API for injecting mouse and keyboard events. It uses the Chromium Embedded Framework (https://bitbucket.org/chromiumembedded/cef)</string>
|
||||
<key>license</key>
|
||||
<string>LGPL</string>
|
||||
<key>license_file</key>
|
||||
<string>LICENSES/LICENSE-source.txt</string>
|
||||
<key>name</key>
|
||||
<string>llceflib</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>darwin</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>0f8170db50edda729816c943487480d2</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>http://downloads.phoenixviewer.com/llceflib-1.5.3.201610292046-r200-darwin-201610292046-r200.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
</map>
|
||||
<key>darwin64</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>3af1210d90aeb9f4d5deea6020ee0d55</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1611/3591/llceflib-1.6.0.501600-darwin64-501600.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
</map>
|
||||
<key>windows</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>9d19271829a372e028dd3c75605ded9c</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1518/3437/llceflib-1.6.0.501501-windows-501501.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
</map>
|
||||
<key>linux</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>c44de63a011a1c7abde062fbffa747df</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>http://downloads.phoenixviewer.com/llceflib-1.0-linux-201611192300.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
</map>
|
||||
<key>linux64</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>ec944718ce98d77aab36d4d422fde2aa</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>http://downloads.phoenixviewer.com/llceflib-1.0-linux-x64-201611192255-r72.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
</map>
|
||||
<key>windows64</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>da1835b11be4442f22fef36820ad46ac</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1517/3434/llceflib-1.6.0.501501-windows64-501501.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>1.6.0.501600</string>
|
||||
</map>
|
||||
<key>llphysicsextensions_source</key>
|
||||
<map>
|
||||
<key>copyright</key>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ if (USESYSTEMLIBS)
|
|||
set(CEFPLUGIN OFF CACHE BOOL
|
||||
"CEFPLUGIN support for the llplugin/llmedia test apps.")
|
||||
else (USESYSTEMLIBS)
|
||||
use_prebuilt_binary(llceflib)
|
||||
use_prebuilt_binary(dullahan)
|
||||
set(CEFPLUGIN ON CACHE BOOL
|
||||
"CEFPLUGIN support for the llplugin/llmedia test apps.")
|
||||
set(CEF_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/cef)
|
||||
|
|
@ -16,7 +16,7 @@ if (WINDOWS)
|
|||
set(CEF_PLUGIN_LIBRARIES
|
||||
libcef.lib
|
||||
libcef_dll_wrapper.lib
|
||||
llceflib.lib
|
||||
dullahan.lib
|
||||
)
|
||||
elseif (DARWIN)
|
||||
FIND_LIBRARY(APPKIT_LIBRARY AppKit)
|
||||
|
|
@ -31,7 +31,7 @@ elseif (DARWIN)
|
|||
|
||||
set(CEF_PLUGIN_LIBRARIES
|
||||
${ARCH_PREBUILT_DIRS_RELEASE}/libcef_dll_wrapper.a
|
||||
${ARCH_PREBUILT_DIRS_RELEASE}/libLLCefLib.a
|
||||
${ARCH_PREBUILT_DIRS_RELEASE}/libdullahan.a
|
||||
${APPKIT_LIBRARY}
|
||||
${CEF_LIBRARY}
|
||||
)
|
||||
|
|
|
|||
|
|
@ -98,6 +98,7 @@ std::string report_kdu_exception(kdu_exception mb)
|
|||
}
|
||||
} // anonymous namespace
|
||||
|
||||
|
||||
class kdc_flow_control {
|
||||
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -1811,7 +1811,7 @@ void LLWindowMacOSX::openFile(const std::string& file_name )
|
|||
LLSD LLWindowMacOSX::getNativeKeyData()
|
||||
{
|
||||
LLSD result = LLSD::emptyMap();
|
||||
#if 1
|
||||
|
||||
if(mRawKeyEvent)
|
||||
{
|
||||
result["event_type"] = LLSD::Integer(mRawKeyEvent->mEventType);
|
||||
|
|
@ -1821,7 +1821,6 @@ LLSD LLWindowMacOSX::getNativeKeyData()
|
|||
result["event_umodchars"] = (mRawKeyEvent->mEventUnmodChars) ? LLSD(LLSD::Integer(mRawKeyEvent->mEventUnmodChars)) : LLSD();
|
||||
result["event_isrepeat"] = LLSD::Boolean(mRawKeyEvent->mEventRepeat);
|
||||
}
|
||||
#endif
|
||||
|
||||
LL_DEBUGS() << "native key data is: " << result << LL_ENDL;
|
||||
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ if (WINDOWS)
|
|||
set_target_properties(
|
||||
media_plugin_cef
|
||||
PROPERTIES
|
||||
LINK_FLAGS "/MANIFEST:NO /SAFESEH:NO /LTCG /NODEFAULTLIB:LIBCMT /IGNORE:4099"
|
||||
LINK_FLAGS "/MANIFEST:NO /SAFESEH:NO /NODEFAULTLIB:LIBCMT /IGNORE:4099"
|
||||
LINK_FLAGS_DEBUG "/MANIFEST:NO /SAFESEH:NO /NODEFAULTLIB:LIBCMTD /IGNORE:4099"
|
||||
)
|
||||
endif (WINDOWS)
|
||||
|
|
@ -94,6 +94,9 @@ if (DARWIN)
|
|||
LINK_FLAGS "-stdlib=libc++ -exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/../base/media_plugin_base.exp"
|
||||
)
|
||||
|
||||
## turns on C++11 using Cmake
|
||||
target_compile_features(media_plugin_cef PRIVATE cxx_range_for)
|
||||
|
||||
add_custom_command(TARGET media_plugin_cef
|
||||
POST_BUILD COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "@executable_path/Chromium Embedded Framework"
|
||||
"@executable_path/../../../../Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework"
|
||||
|
|
|
|||
|
|
@ -36,10 +36,9 @@
|
|||
#include "llpluginmessageclasses.h"
|
||||
#include "media_plugin_base.h"
|
||||
|
||||
#include "boost/function.hpp"
|
||||
#include "boost/bind.hpp"
|
||||
#include "llCEFLib.h"
|
||||
//#include "volume_catcher.h"
|
||||
#include <functional>
|
||||
|
||||
#include "dullahan.h"
|
||||
|
||||
// <FS:ND> This comes from llCEFLib.h, but older version do not have this define.
|
||||
// In that case do a hardcoded fallback to 2 until packages have been updated.
|
||||
|
|
@ -63,7 +62,7 @@ public:
|
|||
private:
|
||||
bool init();
|
||||
|
||||
void onPageChangedCallback(unsigned char* pixels, int x, int y, int width, int height, bool is_popup);
|
||||
void onPageChangedCallback(const unsigned char* pixels, int x, int y, const int width, const int height, bool is_popup);
|
||||
void onCustomSchemeURLCallback(std::string url);
|
||||
void onConsoleMessageCallback(std::string message, std::string source, int line);
|
||||
void onStatusMessageCallback(std::string value);
|
||||
|
|
@ -74,17 +73,15 @@ private:
|
|||
void onAddressChangeCallback(std::string url);
|
||||
void onNavigateURLCallback(std::string url, std::string target);
|
||||
bool onHTTPAuthCallback(const std::string host, const std::string realm, std::string& username, std::string& password);
|
||||
void onCursorChangedCallback(LLCEFLib::ECursorType type, unsigned int handle);
|
||||
void onCursorChangedCallback(dullahan::ECursorType type);
|
||||
void onFileDownloadCallback(std::string filename);
|
||||
const std::string onFileDialogCallback();
|
||||
|
||||
void postDebugMessage(const std::string& msg);
|
||||
void authResponse(LLPluginMessage &message);
|
||||
|
||||
LLCEFLib::EKeyboardModifier decodeModifiers(std::string &modifiers);
|
||||
void deserializeKeyboardData(LLSD native_key_data, uint32_t& native_scan_code, uint32_t& native_virtual_key, uint32_t& native_modifiers);
|
||||
void keyEvent(LLCEFLib::EKeyEvent key_event, int key, LLCEFLib::EKeyboardModifier modifiers, LLSD native_key_data);
|
||||
void unicodeInput(const std::string &utf8str, LLCEFLib::EKeyboardModifier modifiers, LLSD native_key_data);
|
||||
void keyEvent(dullahan::EKeyEvent key_event, LLSD native_key_data);
|
||||
void unicodeInput(LLSD native_key_data);
|
||||
|
||||
void checkEditState();
|
||||
void setVolume(F32 vol);
|
||||
|
|
@ -104,7 +101,7 @@ private:
|
|||
std::string mCachePath;
|
||||
std::string mCookiePath;
|
||||
std::string mPickedFile;
|
||||
LLCEFLib* mLLCEFLib;
|
||||
dullahan* mCEFLib;
|
||||
|
||||
U8 *mPopupBuffer;
|
||||
U32 mPopupW;
|
||||
|
|
@ -137,7 +134,7 @@ MediaPluginBase(host_send_func, host_user_data)
|
|||
mCachePath = "";
|
||||
mCookiePath = "";
|
||||
mPickedFile = "";
|
||||
mLLCEFLib = new LLCEFLib();
|
||||
mCEFLib = new dullahan();
|
||||
|
||||
mPopupBuffer = NULL;
|
||||
mPopupW = 0;
|
||||
|
|
@ -171,7 +168,7 @@ void MediaPluginCEF::postDebugMessage(const std::string& msg)
|
|||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
void MediaPluginCEF::onPageChangedCallback(unsigned char* pixels, int x, int y, int width, int height, bool is_popup)
|
||||
void MediaPluginCEF::onPageChangedCallback(const unsigned char* pixels, int x, int y, const int width, const int height, bool is_popup)
|
||||
{
|
||||
if( is_popup )
|
||||
{
|
||||
|
|
@ -259,8 +256,8 @@ void MediaPluginCEF::onLoadStartCallback()
|
|||
{
|
||||
LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "navigate_begin");
|
||||
//message.setValue("uri", event.getEventUri()); // not easily available here in CEF - needed?
|
||||
message.setValueBoolean("history_back_available", mLLCEFLib->canGoBack());
|
||||
message.setValueBoolean("history_forward_available", mLLCEFLib->canGoForward());
|
||||
message.setValueBoolean("history_back_available", mCEFLib->canGoBack());
|
||||
message.setValueBoolean("history_forward_available", mCEFLib->canGoForward());
|
||||
sendMessage(message);
|
||||
}
|
||||
|
||||
|
|
@ -268,7 +265,7 @@ void MediaPluginCEF::onLoadStartCallback()
|
|||
//
|
||||
void MediaPluginCEF::onRequestExitCallback()
|
||||
{
|
||||
mLLCEFLib->shutdown();
|
||||
mCEFLib->shutdown();
|
||||
|
||||
LLPluginMessage message("base", "goodbye");
|
||||
sendMessage(message);
|
||||
|
|
@ -281,8 +278,8 @@ void MediaPluginCEF::onLoadEndCallback(int httpStatusCode)
|
|||
LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "navigate_complete");
|
||||
//message.setValue("uri", event.getEventUri()); // not easily available here in CEF - needed?
|
||||
message.setValueS32("result_code", httpStatusCode);
|
||||
message.setValueBoolean("history_back_available", mLLCEFLib->canGoBack());
|
||||
message.setValueBoolean("history_forward_available", mLLCEFLib->canGoForward());
|
||||
message.setValueBoolean("history_back_available", mCEFLib->canGoBack());
|
||||
message.setValueBoolean("history_forward_available", mCEFLib->canGoForward());
|
||||
sendMessage(message);
|
||||
}
|
||||
|
||||
|
|
@ -365,25 +362,25 @@ const std::string MediaPluginCEF::onFileDialogCallback()
|
|||
return mPickedFile;
|
||||
}
|
||||
|
||||
void MediaPluginCEF::onCursorChangedCallback(LLCEFLib::ECursorType type, unsigned int handle)
|
||||
void MediaPluginCEF::onCursorChangedCallback(dullahan::ECursorType type)
|
||||
{
|
||||
std::string name = "";
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case LLCEFLib::CT_POINTER:
|
||||
case dullahan::CT_POINTER:
|
||||
name = "arrow";
|
||||
break;
|
||||
case LLCEFLib::CT_IBEAM:
|
||||
case dullahan::CT_IBEAM:
|
||||
name = "ibeam";
|
||||
break;
|
||||
case LLCEFLib::CT_NORTHSOUTHRESIZE:
|
||||
case dullahan::CT_NORTHSOUTHRESIZE:
|
||||
name = "splitv";
|
||||
break;
|
||||
case LLCEFLib::CT_EASTWESTRESIZE:
|
||||
case dullahan::CT_EASTWESTRESIZE:
|
||||
name = "splith";
|
||||
break;
|
||||
case LLCEFLib::CT_HAND:
|
||||
case dullahan::CT_HAND:
|
||||
name = "hand";
|
||||
break;
|
||||
|
||||
|
|
@ -435,7 +432,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
|
|||
}
|
||||
else if (message_name == "idle")
|
||||
{
|
||||
mLLCEFLib->update();
|
||||
mCEFLib->update();
|
||||
|
||||
// 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
|
||||
|
|
@ -444,7 +441,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
|
|||
}
|
||||
else if (message_name == "cleanup")
|
||||
{
|
||||
mLLCEFLib->requestExit();
|
||||
mCEFLib->requestExit();
|
||||
}
|
||||
else if (message_name == "shm_added")
|
||||
{
|
||||
|
|
@ -486,47 +483,50 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
|
|||
{
|
||||
if (message_name == "init")
|
||||
{
|
||||
// event callbacks from LLCefLib
|
||||
mLLCEFLib->setOnPageChangedCallback(boost::bind(&MediaPluginCEF::onPageChangedCallback, this, _1, _2, _3, _4, _5, _6));
|
||||
mLLCEFLib->setOnCustomSchemeURLCallback(boost::bind(&MediaPluginCEF::onCustomSchemeURLCallback, this, _1));
|
||||
mLLCEFLib->setOnConsoleMessageCallback(boost::bind(&MediaPluginCEF::onConsoleMessageCallback, this, _1, _2, _3));
|
||||
mLLCEFLib->setOnStatusMessageCallback(boost::bind(&MediaPluginCEF::onStatusMessageCallback, this, _1));
|
||||
mLLCEFLib->setOnTitleChangeCallback(boost::bind(&MediaPluginCEF::onTitleChangeCallback, this, _1));
|
||||
mLLCEFLib->setOnLoadStartCallback(boost::bind(&MediaPluginCEF::onLoadStartCallback, this));
|
||||
mLLCEFLib->setOnLoadEndCallback(boost::bind(&MediaPluginCEF::onLoadEndCallback, this, _1));
|
||||
mLLCEFLib->setOnAddressChangeCallback(boost::bind(&MediaPluginCEF::onAddressChangeCallback, this, _1));
|
||||
mLLCEFLib->setOnNavigateURLCallback(boost::bind(&MediaPluginCEF::onNavigateURLCallback, this, _1, _2));
|
||||
mLLCEFLib->setOnHTTPAuthCallback(boost::bind(&MediaPluginCEF::onHTTPAuthCallback, this, _1, _2, _3, _4));
|
||||
mLLCEFLib->setOnFileDownloadCallback(boost::bind(&MediaPluginCEF::onFileDownloadCallback, this, _1));
|
||||
mLLCEFLib->setOnFileDialogCallback(boost::bind(&MediaPluginCEF::onFileDialogCallback, this));
|
||||
mLLCEFLib->setOnCursorChangedCallback(boost::bind(&MediaPluginCEF::onCursorChangedCallback, this, _1, _2));
|
||||
mLLCEFLib->setOnRequestExitCallback(boost::bind(&MediaPluginCEF::onRequestExitCallback, this));
|
||||
// event callbacks from Dullahan
|
||||
mCEFLib->setOnPageChangedCallback(std::bind(&MediaPluginCEF::onPageChangedCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5, std::placeholders::_6));
|
||||
mCEFLib->setOnCustomSchemeURLCallback(std::bind(&MediaPluginCEF::onCustomSchemeURLCallback, this, std::placeholders::_1));
|
||||
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->setOnLoadStartCallback(std::bind(&MediaPluginCEF::onLoadStartCallback, this));
|
||||
mCEFLib->setOnLoadEndCallback(std::bind(&MediaPluginCEF::onLoadEndCallback, this, std::placeholders::_1));
|
||||
mCEFLib->setOnAddressChangeCallback(std::bind(&MediaPluginCEF::onAddressChangeCallback, this, std::placeholders::_1));
|
||||
mCEFLib->setOnNavigateURLCallback(std::bind(&MediaPluginCEF::onNavigateURLCallback, this, std::placeholders::_1, std::placeholders::_2));
|
||||
mCEFLib->setOnHTTPAuthCallback(std::bind(&MediaPluginCEF::onHTTPAuthCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4));
|
||||
mCEFLib->setOnFileDownloadCallback(std::bind(&MediaPluginCEF::onFileDownloadCallback, this, std::placeholders::_1));
|
||||
mCEFLib->setOnFileDialogCallback(std::bind(&MediaPluginCEF::onFileDialogCallback, this));
|
||||
mCEFLib->setOnCursorChangedCallback(std::bind(&MediaPluginCEF::onCursorChangedCallback, this, std::placeholders::_1));
|
||||
mCEFLib->setOnRequestExitCallback(std::bind(&MediaPluginCEF::onRequestExitCallback, this));
|
||||
|
||||
LLCEFLib::LLCEFLibSettings settings;
|
||||
settings.initial_width = 1024;
|
||||
settings.initial_height = 1024;
|
||||
// The LLCEFLibSettings struct in the Windows 32-bit
|
||||
// llceflib's build 500907 does not have a page_zoom_factor
|
||||
// member. Set below.
|
||||
//settings.page_zoom_factor = message_in.getValueReal("factor");
|
||||
settings.plugins_enabled = mPluginsEnabled;
|
||||
settings.media_stream_enabled = false; // MAINT-6060 - WebRTC media removed until we can add granualrity/query UI
|
||||
settings.javascript_enabled = mJavascriptEnabled;
|
||||
settings.cookies_enabled = mCookiesEnabled;
|
||||
settings.cookie_store_path = mCookiePath;
|
||||
dullahan::dullahan_settings settings;
|
||||
settings.accept_language_list = mHostLanguage;
|
||||
settings.background_color = 0xffffff;
|
||||
settings.cache_enabled = true;
|
||||
settings.cache_path = mCachePath;
|
||||
settings.accept_language_list = mHostLanguage;
|
||||
settings.user_agent_substring = mLLCEFLib->makeCompatibleUserAgentString(mUserAgentSubtring);
|
||||
settings.cookie_store_path = mCookiePath;
|
||||
settings.cookies_enabled = mCookiesEnabled;
|
||||
settings.flash_enabled = mPluginsEnabled;
|
||||
settings.flip_mouse_y = false;
|
||||
settings.flip_pixels_y = true;
|
||||
settings.frame_rate = 60;
|
||||
settings.initial_height = 1024;
|
||||
settings.initial_width = 1024;
|
||||
settings.java_enabled = false;
|
||||
settings.javascript_enabled = mJavascriptEnabled;
|
||||
settings.media_stream_enabled = false; // MAINT-6060 - WebRTC media removed until we can add granualrity/query UI
|
||||
settings.plugins_enabled = mPluginsEnabled;
|
||||
settings.user_agent_substring = mCEFLib->makeCompatibleUserAgentString(mUserAgentSubtring);
|
||||
settings.webgl_enabled = true;
|
||||
|
||||
bool result = mLLCEFLib->init(settings);
|
||||
bool result = mCEFLib->init(settings);
|
||||
if (!result)
|
||||
{
|
||||
// if this fails, the media system in viewer will put up a message
|
||||
}
|
||||
|
||||
// now we can set page zoom factor
|
||||
mLLCEFLib->setPageZoom(message_in.getValueReal("factor"));
|
||||
mCEFLib->setPageZoom(message_in.getValueReal("factor"));
|
||||
|
||||
// Plugin gets to decide the texture parameters to use.
|
||||
mDepth = 4;
|
||||
|
|
@ -570,7 +570,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
|
|||
};
|
||||
};
|
||||
|
||||
mLLCEFLib->setSize(mWidth, mHeight);
|
||||
mCEFLib->setSize(mWidth, mHeight);
|
||||
|
||||
LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "size_change_response");
|
||||
message.setValue("name", name);
|
||||
|
|
@ -588,7 +588,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
|
|||
else if (message_name == "load_uri")
|
||||
{
|
||||
std::string uri = message_in.getValue("uri");
|
||||
mLLCEFLib->navigate(uri);
|
||||
mCEFLib->navigate(uri);
|
||||
}
|
||||
else if (message_name == "set_cookie")
|
||||
{
|
||||
|
|
@ -599,7 +599,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
|
|||
std::string path = message_in.getValue("path");
|
||||
bool httponly = message_in.getValueBoolean("httponly");
|
||||
bool secure = message_in.getValueBoolean("secure");
|
||||
mLLCEFLib->setCookie(uri, name, value, domain, path, httponly, secure);
|
||||
mCEFLib->setCookie(uri, name, value, domain, path, httponly, secure);
|
||||
}
|
||||
else if (message_name == "mouse_event")
|
||||
{
|
||||
|
|
@ -608,18 +608,16 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
|
|||
S32 x = message_in.getValueS32("x");
|
||||
S32 y = message_in.getValueS32("y");
|
||||
|
||||
y = mHeight - y;
|
||||
|
||||
// only even send left mouse button events to LLCEFLib
|
||||
// only even send left mouse button events to the CEF library
|
||||
// (partially prompted by crash in OS X CEF when sending right button events)
|
||||
// we catch the right click in viewer and display our own context menu anyway
|
||||
S32 button = message_in.getValueS32("button");
|
||||
LLCEFLib::EMouseButton btn = LLCEFLib::MB_MOUSE_BUTTON_LEFT;
|
||||
dullahan::EMouseButton btn = dullahan::MB_MOUSE_BUTTON_LEFT;
|
||||
|
||||
if (event == "down" && button == 0)
|
||||
{
|
||||
mLLCEFLib->mouseButton(btn, LLCEFLib::ME_MOUSE_DOWN, x, y);
|
||||
mLLCEFLib->setFocus(true);
|
||||
mCEFLib->mouseButton(btn, dullahan::ME_MOUSE_DOWN, x, y);
|
||||
mCEFLib->setFocus();
|
||||
|
||||
std::stringstream str;
|
||||
str << "Mouse down at = " << x << ", " << y;
|
||||
|
|
@ -627,7 +625,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
|
|||
}
|
||||
else if (event == "up" && button == 0)
|
||||
{
|
||||
mLLCEFLib->mouseButton(btn, LLCEFLib::ME_MOUSE_UP, x, y);
|
||||
mCEFLib->mouseButton(btn, dullahan::ME_MOUSE_UP, x, y);
|
||||
|
||||
std::stringstream str;
|
||||
str << "Mouse up at = " << x << ", " << y;
|
||||
|
|
@ -635,11 +633,11 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
|
|||
}
|
||||
else if (event == "double_click")
|
||||
{
|
||||
mLLCEFLib->mouseButton(btn, LLCEFLib::ME_MOUSE_DOUBLE_CLICK, x, y);
|
||||
mCEFLib->mouseButton(btn, dullahan::ME_MOUSE_DOUBLE_CLICK, x, y);
|
||||
}
|
||||
else
|
||||
{
|
||||
mLLCEFLib->mouseMove(x, y);
|
||||
mCEFLib->mouseMove(x, y);
|
||||
}
|
||||
}
|
||||
else if (message_name == "scroll_event")
|
||||
|
|
@ -649,69 +647,48 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
|
|||
const int scaling_factor = 40;
|
||||
y *= -scaling_factor;
|
||||
|
||||
mLLCEFLib->mouseWheel(x, y);
|
||||
mCEFLib->mouseWheel(x, y);
|
||||
}
|
||||
else if (message_name == "text_event")
|
||||
{
|
||||
std::string text = message_in.getValue("text");
|
||||
std::string modifiers = message_in.getValue("modifiers");
|
||||
LLSD native_key_data = message_in.getValueLLSD("native_key_data");
|
||||
|
||||
unicodeInput(text, decodeModifiers(modifiers), native_key_data);
|
||||
unicodeInput(native_key_data);
|
||||
}
|
||||
else if (message_name == "key_event")
|
||||
{
|
||||
#if LL_DARWIN
|
||||
std::string event = message_in.getValue("event");
|
||||
S32 key = message_in.getValueS32("key");
|
||||
LLSD native_key_data = message_in.getValueLLSD("native_key_data");
|
||||
|
||||
#if 0
|
||||
if (event == "down")
|
||||
{
|
||||
//mLLCEFLib->keyPress(key, true);
|
||||
mLLCEFLib->keyboardEvent(LLCEFLib::KE_KEY_DOWN, (uint32_t)key, 0, LLCEFLib::KM_MODIFIER_NONE, 0, 0, 0);
|
||||
|
||||
}
|
||||
else if (event == "up")
|
||||
{
|
||||
//mLLCEFLib->keyPress(key, false);
|
||||
mLLCEFLib->keyboardEvent(LLCEFLib::KE_KEY_UP, (uint32_t)key, 0, LLCEFLib::KM_MODIFIER_NONE, 0, 0, 0);
|
||||
}
|
||||
#else
|
||||
// Treat unknown events as key-up for safety.
|
||||
LLCEFLib::EKeyEvent key_event = LLCEFLib::KE_KEY_UP;
|
||||
dullahan::EKeyEvent key_event = dullahan::KE_KEY_UP;
|
||||
if (event == "down")
|
||||
{
|
||||
key_event = LLCEFLib::KE_KEY_DOWN;
|
||||
key_event = dullahan::KE_KEY_DOWN;
|
||||
}
|
||||
else if (event == "repeat")
|
||||
{
|
||||
key_event = LLCEFLib::KE_KEY_REPEAT;
|
||||
key_event = dullahan::KE_KEY_REPEAT;
|
||||
}
|
||||
|
||||
keyEvent(key_event, key, LLCEFLib::KM_MODIFIER_NONE, native_key_data);
|
||||
keyEvent(key_event, native_key_data);
|
||||
|
||||
#endif
|
||||
//#elif LL_WINDOWS // <FS:ND/> Windows & Linux
|
||||
#else
|
||||
std::string event = message_in.getValue("event");
|
||||
S32 key = message_in.getValueS32("key");
|
||||
std::string modifiers = message_in.getValue("modifiers");
|
||||
LLSD native_key_data = message_in.getValueLLSD("native_key_data");
|
||||
|
||||
// Treat unknown events as key-up for safety.
|
||||
LLCEFLib::EKeyEvent key_event = LLCEFLib::KE_KEY_UP;
|
||||
dullahan::EKeyEvent key_event = dullahan::KE_KEY_UP;
|
||||
if (event == "down")
|
||||
{
|
||||
key_event = LLCEFLib::KE_KEY_DOWN;
|
||||
key_event = dullahan::KE_KEY_DOWN;
|
||||
}
|
||||
else if (event == "repeat")
|
||||
{
|
||||
key_event = LLCEFLib::KE_KEY_REPEAT;
|
||||
key_event = dullahan::KE_KEY_REPEAT;
|
||||
}
|
||||
|
||||
keyEvent(key_event, key, decodeModifiers(modifiers), native_key_data);
|
||||
keyEvent(key_event, native_key_data);
|
||||
#endif
|
||||
}
|
||||
else if (message_name == "enable_media_plugin_debugging")
|
||||
|
|
@ -728,15 +705,15 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
|
|||
}
|
||||
if (message_name == "edit_cut")
|
||||
{
|
||||
mLLCEFLib->editCut();
|
||||
mCEFLib->editCut();
|
||||
}
|
||||
if (message_name == "edit_copy")
|
||||
{
|
||||
mLLCEFLib->editCopy();
|
||||
mCEFLib->editCopy();
|
||||
}
|
||||
if (message_name == "edit_paste")
|
||||
{
|
||||
mLLCEFLib->editPaste();
|
||||
mCEFLib->editPaste();
|
||||
}
|
||||
}
|
||||
else if (message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER)
|
||||
|
|
@ -744,24 +721,24 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
|
|||
if (message_name == "set_page_zoom_factor")
|
||||
{
|
||||
F32 factor = (F32)message_in.getValueReal("factor");
|
||||
mLLCEFLib->setPageZoom(factor);
|
||||
mCEFLib->setPageZoom(factor);
|
||||
}
|
||||
if (message_name == "browse_stop")
|
||||
{
|
||||
mLLCEFLib->stop();
|
||||
mCEFLib->stop();
|
||||
}
|
||||
else if (message_name == "browse_reload")
|
||||
{
|
||||
bool ignore_cache = true;
|
||||
mLLCEFLib->reload(ignore_cache);
|
||||
mCEFLib->reload(ignore_cache);
|
||||
}
|
||||
else if (message_name == "browse_forward")
|
||||
{
|
||||
mLLCEFLib->goForward();
|
||||
mCEFLib->goForward();
|
||||
}
|
||||
else if (message_name == "browse_back")
|
||||
{
|
||||
mLLCEFLib->goBack();
|
||||
mCEFLib->goBack();
|
||||
}
|
||||
else if (message_name == "cookies_enabled")
|
||||
{
|
||||
|
|
@ -773,7 +750,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
|
|||
}
|
||||
else if (message_name == "show_web_inspector")
|
||||
{
|
||||
mLLCEFLib->showDevTools(true);
|
||||
mCEFLib->showDevTools();
|
||||
}
|
||||
else if (message_name == "plugins_enabled")
|
||||
{
|
||||
|
|
@ -798,127 +775,61 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
|
|||
}
|
||||
}
|
||||
|
||||
LLCEFLib::EKeyboardModifier MediaPluginCEF::decodeModifiers(std::string &modifiers)
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
if (modifiers.find("shift") != std::string::npos)
|
||||
result |= LLCEFLib::KM_MODIFIER_SHIFT;
|
||||
|
||||
if (modifiers.find("alt") != std::string::npos)
|
||||
result |= LLCEFLib::KM_MODIFIER_ALT;
|
||||
|
||||
if (modifiers.find("control") != std::string::npos)
|
||||
result |= LLCEFLib::KM_MODIFIER_CONTROL;
|
||||
|
||||
if (modifiers.find("meta") != std::string::npos)
|
||||
result |= LLCEFLib::KM_MODIFIER_META;
|
||||
|
||||
return (LLCEFLib::EKeyboardModifier)result;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
void MediaPluginCEF::deserializeKeyboardData(LLSD native_key_data, uint32_t& native_scan_code, uint32_t& native_virtual_key, uint32_t& native_modifiers)
|
||||
{
|
||||
native_scan_code = 0;
|
||||
native_virtual_key = 0;
|
||||
native_modifiers = 0;
|
||||
|
||||
if (native_key_data.isMap())
|
||||
{
|
||||
#if LL_DARWIN
|
||||
native_scan_code = (uint32_t)(native_key_data["char_code"].asInteger());
|
||||
native_virtual_key = (uint32_t)(native_key_data["key_code"].asInteger());
|
||||
native_modifiers = (uint32_t)(native_key_data["modifiers"].asInteger());
|
||||
#elif LL_WINDOWS
|
||||
native_scan_code = (uint32_t)(native_key_data["scan_code"].asInteger());
|
||||
native_virtual_key = (uint32_t)(native_key_data["virtual_key"].asInteger());
|
||||
// TODO: I don't think we need to do anything with native modifiers here -- please verify
|
||||
#endif
|
||||
|
||||
#if LL_LINUX
|
||||
native_scan_code = (uint32_t)(native_key_data["sdl_sym"].asInteger());
|
||||
native_virtual_key = (uint32_t)(native_key_data["virtual_key"].asInteger());
|
||||
native_modifiers = (uint32_t)(native_key_data["cef_modifiers"].asInteger());
|
||||
|
||||
if( native_scan_code == '\n' )
|
||||
native_scan_code = '\r';
|
||||
#endif
|
||||
};
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
void MediaPluginCEF::keyEvent(LLCEFLib::EKeyEvent key_event, int key, LLCEFLib::EKeyboardModifier modifiers_x, LLSD native_key_data = LLSD::emptyMap())
|
||||
void MediaPluginCEF::keyEvent(dullahan::EKeyEvent key_event, LLSD native_key_data = LLSD::emptyMap())
|
||||
{
|
||||
#if LL_DARWIN
|
||||
if (!native_key_data.has("event_type") ||
|
||||
!native_key_data.has("event_modifiers") ||
|
||||
!native_key_data.has("event_keycode") ||
|
||||
!native_key_data.has("event_isrepeat"))
|
||||
return;
|
||||
|
||||
uint32_t eventType = native_key_data["event_type"].asInteger();
|
||||
if (!eventType)
|
||||
return;
|
||||
uint32_t eventModifiers = native_key_data["event_modifiers"].asInteger();
|
||||
uint32_t eventKeycode = native_key_data["event_keycode"].asInteger();
|
||||
char eventChars = static_cast<char>(native_key_data["event_chars"].isUndefined() ? 0 : native_key_data["event_chars"].asInteger());
|
||||
char eventUChars = static_cast<char>(native_key_data["event_umodchars"].isUndefined() ? 0 : native_key_data["event_umodchars"].asInteger());
|
||||
bool eventIsRepeat = native_key_data["event_isrepeat"].asBoolean();
|
||||
|
||||
mLLCEFLib->keyboardEventOSX(eventType, eventModifiers, (eventChars) ? &eventChars : NULL,
|
||||
(eventUChars) ? &eventUChars : NULL, eventIsRepeat, eventKeycode);
|
||||
U32 event_modifiers = native_key_data["event_modifiers"].asInteger();
|
||||
U32 event_keycode = native_key_data["event_keycode"].asInteger();
|
||||
U32 event_chars = native_key_data["event_chars"].asInteger();
|
||||
U32 event_umodchars = native_key_data["event_umodchars"].asInteger();
|
||||
bool event_isrepeat = native_key_data["event_isrepeat"].asBoolean();
|
||||
|
||||
mCEFLib->nativeKeyboardEventOSX(key_event, event_modifiers,
|
||||
event_keycode, event_chars,
|
||||
event_umodchars, event_isrepeat);
|
||||
#elif LL_WINDOWS
|
||||
U32 msg = ll_U32_from_sd(native_key_data["msg"]);
|
||||
U32 wparam = ll_U32_from_sd(native_key_data["w_param"]);
|
||||
U64 lparam = ll_U32_from_sd(native_key_data["l_param"]);
|
||||
|
||||
mLLCEFLib->nativeKeyboardEvent(msg, wparam, lparam);
|
||||
mCEFLib->nativeKeyboardEventWin(msg, wparam, lparam);
|
||||
#endif
|
||||
|
||||
// <FS:ND> Keyboard handling for Linux.
|
||||
#if LL_LINUX
|
||||
uint32_t native_scan_code = 0;
|
||||
uint32_t native_virtual_key = 0;
|
||||
uint32_t native_modifiers = 0;
|
||||
deserializeKeyboardData(native_key_data, native_scan_code, native_virtual_key, native_modifiers);
|
||||
uint32_t native_scan_code = (uint32_t)(native_key_data["sdl_sym"].asInteger());
|
||||
uint32_t native_virtual_key = (uint32_t)(native_key_data["virtual_key"].asInteger());
|
||||
uint32_t native_modifiers = (uint32_t)(native_key_data["cef_modifiers"].asInteger());
|
||||
|
||||
if( native_scan_code == '\n' )
|
||||
native_scan_code = '\r';
|
||||
mLLCEFLib->nativeKeyboardEvent(key_event, native_scan_code, native_virtual_key, native_modifiers);
|
||||
#endif
|
||||
// </FS:ND>
|
||||
}
|
||||
|
||||
void MediaPluginCEF::unicodeInput(const std::string &utf8str, LLCEFLib::EKeyboardModifier modifiers, LLSD native_key_data = LLSD::emptyMap())
|
||||
void MediaPluginCEF::unicodeInput(LLSD native_key_data = LLSD::emptyMap())
|
||||
{
|
||||
#if LL_DARWIN
|
||||
//mLLCEFLib->keyPress(utf8str[0], true);
|
||||
//mLLCEFLib->keyboardEvent(LLCEFLib::KE_KEY_DOWN, (uint32_t)(utf8str[0]), 0, LLCEFLib::KM_MODIFIER_NONE, 0, 0, 0);
|
||||
if (!native_key_data.has("event_chars") || !native_key_data.has("event_umodchars") ||
|
||||
!native_key_data.has("event_keycode") || !native_key_data.has("event_modifiers"))
|
||||
return;
|
||||
uint32_t unicodeChar = native_key_data["event_chars"].asInteger();
|
||||
uint32_t unmodifiedChar = native_key_data["event_umodchars"].asInteger();
|
||||
uint32_t keyCode = native_key_data["event_keycode"].asInteger();
|
||||
uint32_t rawmodifiers = native_key_data["event_modifiers"].asInteger();
|
||||
|
||||
mLLCEFLib->injectUnicodeText(unicodeChar, unmodifiedChar, keyCode, rawmodifiers);
|
||||
|
||||
// code to send keys here doesn't seem to be required for Darwin - in fact,
|
||||
// not having reliable key event type info here means we don't know what to send anyway
|
||||
#elif LL_WINDOWS
|
||||
U32 msg = ll_U32_from_sd(native_key_data["msg"]);
|
||||
U32 wparam = ll_U32_from_sd(native_key_data["w_param"]);
|
||||
U64 lparam = ll_U32_from_sd(native_key_data["l_param"]);
|
||||
mLLCEFLib->nativeKeyboardEvent(msg, wparam, lparam);
|
||||
mCEFLib->nativeKeyboardEventWin(msg, wparam, lparam);
|
||||
#endif
|
||||
|
||||
// <FS:ND> Keyboard handling for Linux.
|
||||
#if LL_LINUX && FS_CEFLIB_VERSION <= 7
|
||||
uint32_t native_scan_code = 0;
|
||||
uint32_t native_virtual_key = 0;
|
||||
uint32_t native_modifiers = 0;
|
||||
deserializeKeyboardData(native_key_data, native_scan_code, native_virtual_key, native_modifiers);
|
||||
uint32_t native_scan_code = (uint32_t)(native_key_data["sdl_sym"].asInteger());
|
||||
uint32_t native_virtual_key = (uint32_t)(native_key_data["virtual_key"].asInteger());
|
||||
uint32_t native_modifiers = (uint32_t)(native_key_data["cef_modifiers"].asInteger());
|
||||
|
||||
if( native_scan_code == '\n' )
|
||||
native_scan_code = '\r';
|
||||
|
||||
mLLCEFLib->nativeKeyboardEvent(LLCEFLib::KE_KEY_DOWN, native_scan_code, native_virtual_key, native_modifiers);
|
||||
mLLCEFLib->nativeKeyboardEvent(LLCEFLib::KE_KEY_UP, native_scan_code, native_virtual_key, native_modifiers);
|
||||
|
|
@ -930,9 +841,9 @@ void MediaPluginCEF::unicodeInput(const std::string &utf8str, LLCEFLib::EKeyboar
|
|||
//
|
||||
void MediaPluginCEF::checkEditState()
|
||||
{
|
||||
bool can_cut = mLLCEFLib->editCanCut();
|
||||
bool can_copy = mLLCEFLib->editCanCopy();
|
||||
bool can_paste = mLLCEFLib->editCanPaste();
|
||||
bool can_cut = mCEFLib->editCanCut();
|
||||
bool can_copy = mCEFLib->editCanCopy();
|
||||
bool can_paste = mCEFLib->editCanPaste();
|
||||
|
||||
if ((can_cut != mCanCut) || (can_copy != mCanCopy) || (can_paste != mCanPaste))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -78,8 +78,6 @@ if (WINDOWS)
|
|||
set_target_properties(
|
||||
media_plugin_libvlc
|
||||
PROPERTIES
|
||||
# <FS:Ansariel> Remove linker warning about LTCG switch to improve linker performance
|
||||
#LINK_FLAGS "/MANIFEST:NO /SAFESEH:NO /LTCG /NODEFAULTLIB:LIBCMT"
|
||||
LINK_FLAGS "/MANIFEST:NO /SAFESEH:NO /NODEFAULTLIB:LIBCMT"
|
||||
)
|
||||
endif (WINDOWS)
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ SetOverwrite on # Overwrite files by default
|
|||
|
||||
;;InstallDir "$PROGRAMFILES\${INSTNAME}"
|
||||
;;InstallDirRegKey HKEY_LOCAL_MACHINE "SOFTWARE\The Phoenix Firestorm Project\${INSTNAME}" ""
|
||||
InstallDir "$%%INSTALL_DIR%%\${INSTNAME}"
|
||||
InstallDir "%%$PROGRAMFILES%%\${INSTNAME}"
|
||||
InstallDirRegKey HKEY_LOCAL_MACHINE "%%INSTALL_DIR_REGKEY%%" ""
|
||||
UninstallText $(UninstallTextMsg)
|
||||
DirText $(DirectoryChooseTitle) $(DirectoryChooseSetup)
|
||||
|
|
@ -164,15 +164,9 @@ FunctionEnd
|
|||
;; entry to the language ID selector below
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function .onInit
|
||||
%%ENGAGEREGISTRY%%
|
||||
Call CheckCPUFlags # Make sure we have SSE2 support
|
||||
Call CheckWindowsVersion # Don't install On unsupported systems
|
||||
|
||||
${If} ${RunningX64}
|
||||
${AndIf} ${FS64BIT} == "1"
|
||||
${DisableX64FSRedirection}
|
||||
SetRegView 64
|
||||
${EndIf}
|
||||
|
||||
Push $0
|
||||
${GetParameters} $COMMANDLINE # Get our command line
|
||||
|
||||
|
|
@ -240,12 +234,7 @@ FunctionEnd
|
|||
;; Prep Uninstaller Section
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function un.onInit
|
||||
${If} ${RunningX64}
|
||||
${AndIf} ${FS64BIT} == "1"
|
||||
${DisableX64FSRedirection}
|
||||
SetRegView 64
|
||||
${EndIf}
|
||||
|
||||
%%ENGAGEREGISTRY%%
|
||||
# Read language from registry and set for uninstaller. Key will be removed on successful uninstall
|
||||
ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\The Phoenix Firestorm Project\${INSTNAME}" "InstallerLanguage"
|
||||
IfErrors lbl_end
|
||||
|
|
|
|||
|
|
@ -140,11 +140,8 @@
|
|||
#include "llcoros.h"
|
||||
#include "llexception.h"
|
||||
//#if !LL_LINUX
|
||||
#include "cef/llceflib.h"
|
||||
#if defined(LL_WINDOWS) || defined(LL_LINUX)
|
||||
#include "cef/dullahan.h"
|
||||
#include "vlc/libvlc_version.h"
|
||||
#endif // LL_WINDOWS
|
||||
//#endif
|
||||
//#endif // LL_LINUX
|
||||
|
||||
// Third party library includes
|
||||
|
|
@ -4044,23 +4041,31 @@ LLSD LLAppViewer::getViewerInfo() const
|
|||
}
|
||||
|
||||
//#if !LL_LINUX
|
||||
info["LLCEFLIB_VERSION"] = LLCEFLIB_VERSION;
|
||||
std::ostringstream cef_ver_codec;
|
||||
cef_ver_codec << "Dullahan: ";
|
||||
cef_ver_codec << DULLAHAN_VERSION_MAJOR;
|
||||
cef_ver_codec << ".";
|
||||
cef_ver_codec << DULLAHAN_VERSION_MINOR;
|
||||
cef_ver_codec << ".";
|
||||
cef_ver_codec << DULLAHAN_VERSION_BUILD;
|
||||
cef_ver_codec << " - CEF: ";
|
||||
cef_ver_codec << CEF_VERSION;
|
||||
info["LIBCEF_VERSION"] = cef_ver_codec.str();
|
||||
//#else
|
||||
// info["LLCEFLIB_VERSION"] = "Undefined";
|
||||
//
|
||||
// info["LIBCEF_VERSION"] = "Undefined";
|
||||
//#endif
|
||||
|
||||
#if defined(LL_WINDOWS) || defined(LL_LINUX)
|
||||
std::ostringstream ver_codec;
|
||||
ver_codec << LIBVLC_VERSION_MAJOR;
|
||||
ver_codec << ".";
|
||||
ver_codec << LIBVLC_VERSION_MINOR;
|
||||
ver_codec << ".";
|
||||
ver_codec << LIBVLC_VERSION_REVISION;
|
||||
info["LIBVLC_VERSION"] = ver_codec.str();
|
||||
#else
|
||||
info["LIBVLC_VERSION"] = "Undefined";
|
||||
#endif
|
||||
//#if !LL_LINUX
|
||||
std::ostringstream vlc_ver_codec;
|
||||
vlc_ver_codec << LIBVLC_VERSION_MAJOR;
|
||||
vlc_ver_codec << ".";
|
||||
vlc_ver_codec << LIBVLC_VERSION_MINOR;
|
||||
vlc_ver_codec << ".";
|
||||
vlc_ver_codec << LIBVLC_VERSION_REVISION;
|
||||
info["LIBVLC_VERSION"] = vlc_ver_codec.str();
|
||||
//#else
|
||||
// info["LIBVLC_VERSION"] = "Undefined";
|
||||
//#endif
|
||||
|
||||
S32 packets_in = LLViewerStats::instance().getRecording().getSum(LLStatViewer::PACKETS_IN);
|
||||
if (packets_in > 0)
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ RestrainedLove API: [RLV_VERSION]
|
|||
libcurl Version: [LIBCURL_VERSION]
|
||||
J2C Decoder Version: [J2C_VERSION]
|
||||
Audio Driver Version: [AUDIO_DRIVER_VERSION]
|
||||
Qt Webkit Version: [QT_WEBKIT_VERSION]
|
||||
CEF Version: [LIBCEF_VERSION]
|
||||
LibVLC Version: [LIBVLC_VERSION]
|
||||
Voice Server Version: [VOICE_VERSION]
|
||||
</floater.string>
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
Grafikinitialisierung fehlgeschlagen. Bitte aktualisieren Sie Ihren Grafiktreiber.
|
||||
</string>
|
||||
<string name="AboutHeader">
|
||||
[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) [BUILD_TYPE]
|
||||
[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([ADDRESS_SIZE]bit) ([CHANNEL]) [BUILD_TYPE]
|
||||
[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
|
||||
</string>
|
||||
<string name="AboutCompiler">
|
||||
|
|
@ -86,7 +86,7 @@ RestrainedLove API: [RLV_VERSION]
|
|||
libcurl-Version: [LIBCURL_VERSION]
|
||||
J2C-Decoderversion: [J2C_VERSION]
|
||||
Audio-Treiberversion: [AUDIO_DRIVER_VERSION]
|
||||
LLCEFLib/CEF-Version: [LLCEFLIB_VERSION]
|
||||
CEF-Version: [LIBCEF_VERSION]
|
||||
LibVLC-Version: [LIBVLC_VERSION]
|
||||
Voice-Serverversion: [VOICE_VERSION]
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ RestrainedLove API: [RLV_VERSION]
|
|||
libcurl Version: [LIBCURL_VERSION]
|
||||
J2C Decoder Version: [J2C_VERSION]
|
||||
Audio Driver Version: [AUDIO_DRIVER_VERSION]
|
||||
LLCEFLib/CEF Version: [LLCEFLIB_VERSION]
|
||||
CEF Version: [LIBCEF_VERSION]
|
||||
LibVLC Version: [LIBVLC_VERSION]
|
||||
Voice Server Version: [VOICE_VERSION]
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
Error de inicialización de gráficos. Actualiza tu controlador de gráficos.
|
||||
</string>
|
||||
<string name="AboutHeader">
|
||||
[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL])
|
||||
[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([ADDRESS_SIZE]bit) ([CHANNEL])
|
||||
[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
|
||||
</string>
|
||||
<string name="BuildConfig">
|
||||
|
|
@ -67,7 +67,7 @@ Tarjeta gráfica: [GRAPHICS_CARD]
|
|||
Versión de libcurl: [LIBCURL_VERSION]
|
||||
Versión de J2C Decoder: [J2C_VERSION]
|
||||
Versión de Audio Driver: [AUDIO_DRIVER_VERSION]
|
||||
Versión de LLCEFLib/CEF: [LLCEFLIB_VERSION]
|
||||
Versión de CEF: [LIBCEF_VERSION]
|
||||
Versión de LibVLC: [LIBVLC_VERSION]
|
||||
Versión del servidor de voz: [VOICE_VERSION]
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
Échec d'initialisation des graphiques. Veuillez mettre votre pilote graphique à jour.
|
||||
</string>
|
||||
<string name="AboutHeader">
|
||||
[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL])
|
||||
[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([ADDRESS_SIZE]bit) ([CHANNEL])
|
||||
[[VIEWER_RELEASE_NOTES_URL] [Notes de version]]
|
||||
</string>
|
||||
<string name="AboutCompiler">
|
||||
|
|
@ -59,7 +59,7 @@ Carte graphique : [GRAPHICS_CARD]
|
|||
Version libcurl : [LIBCURL_VERSION]
|
||||
Version J2C Decoder : [J2C_VERSION]
|
||||
Version Audio Driver : [AUDIO_DRIVER_VERSION]
|
||||
Version LLCEFLib/CEF : [LLCEFLIB_VERSION]
|
||||
Version CEF : [LIBCEF_VERSION]
|
||||
Version LibVLC : [LIBVLC_VERSION]
|
||||
Version serveur vocal : [VOICE_VERSION]
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
Inizializzazione grafica non riuscita. Aggiorna il driver della scheda grafica!
|
||||
</string>
|
||||
<string name="AboutHeader">
|
||||
[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL])
|
||||
[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([ADDRESS_SIZE]bit) ([CHANNEL])
|
||||
[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
|
||||
</string>
|
||||
<string name="BuildConfig">
|
||||
|
|
@ -59,7 +59,7 @@ Scheda grafica: [GRAPHICS_CARD]
|
|||
Versione libcurl: [LIBCURL_VERSION]
|
||||
Versione J2C Decoder: [J2C_VERSION]
|
||||
Versione Driver audio: [AUDIO_DRIVER_VERSION]
|
||||
Versione LLCEFLib/CEF: [LLCEFLIB_VERSION]
|
||||
Versione CEF: [LIBCEF_VERSION]
|
||||
Versione Server voice: [VOICE_VERSION]
|
||||
</string>
|
||||
<string name="AboutTraffic">
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ RestrainedLove API: [RLV_VERSION]
|
|||
Wersja libcurl: [LIBCURL_VERSION]
|
||||
Wersja dekodera J2C: [J2C_VERSION]
|
||||
Wersja sterownika dźwięku (Audio Driver): [AUDIO_DRIVER_VERSION]
|
||||
Wersja LLCEFLib/CEF: [LLCEFLIB_VERSION]
|
||||
Wersja CEF: [LIBCEF_VERSION]
|
||||
Wersja LibVLC: [LIBVLC_VERSION]
|
||||
Wersja serwera głosu (Voice Server): [VOICE_VERSION]
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
Falha na inicialização dos gráficos. Atualize seu driver gráfico!
|
||||
</string>
|
||||
<string name="AboutHeader">
|
||||
[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL])
|
||||
[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([ADDRESS_SIZE]bit) ([CHANNEL])
|
||||
[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
|
||||
</string>
|
||||
<string name="BuildConfig">
|
||||
|
|
@ -59,7 +59,7 @@ Placa gráfica: [GRAPHICS_CARD]
|
|||
Versão libcurl: [LIBCURL_VERSION]
|
||||
Versão J2C Decoder: [J2C_VERSION]
|
||||
Versão do driver de áudio: [AUDIO_DRIVER_VERSION]
|
||||
Versão LLCEFLib/CEF: [LLCEFLIB_VERSION]
|
||||
Versão de CEF: [LIBCEF_VERSION]
|
||||
Versão do servidor de voz: [VOICE_VERSION]
|
||||
</string>
|
||||
<string name="AboutTraffic">
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
Инициализация графики не удалась. Пожалуйста, обновите драйвер видеокарты!
|
||||
</string>
|
||||
<string name="AboutHeader">
|
||||
[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) [BUILD_TYPE]
|
||||
[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([ADDRESS_SIZE]bit) ([CHANNEL]) [BUILD_TYPE]
|
||||
[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
|
||||
</string>
|
||||
<string name="BuildConfig">
|
||||
|
|
@ -75,7 +75,7 @@ SLURL: <nolink>[SLURL]</nolink>
|
|||
Версия libcurl: [LIBCURL_VERSION]
|
||||
Версия декодера J2C: [J2C_VERSION]
|
||||
Версия драйвера звука: [AUDIO_DRIVER_VERSION]
|
||||
Версия LLCEFLib/CEF: [LLCEFLIB_VERSION]
|
||||
Версия CEF: [LIBCEF_VERSION]
|
||||
Версия LibVLC: [LIBVLC_VERSION]
|
||||
Версия голосового сервера: [VOICE_VERSION]
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@
|
|||
Grafik başlatma başarılamadı. Lütfen grafik sürücünüzü güncelleştirin!
|
||||
</string>
|
||||
<string name="AboutHeader">
|
||||
[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL])
|
||||
[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([CHANNEL])
|
||||
[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
|
||||
</string>
|
||||
<string name="BuildConfig">
|
||||
|
|
@ -71,7 +71,7 @@ Grafik Kartı: [GRAPHICS_CARD]
|
|||
libcurl Sürümü: [LIBCURL_VERSION]
|
||||
J2C Kod Çözücü Sürümü: [J2C_VERSION]
|
||||
Ses Sürücüsü Sürümü: [AUDIO_DRIVER_VERSION]
|
||||
LLCEFLib/CEF Sürümü: [LLCEFLIB_VERSION]
|
||||
CEF Sürümü: [LIBCEF_VERSION]
|
||||
LibVLC Sürümü: [LIBVLC_VERSION]
|
||||
Ses Sunucusu Sürümü: [VOICE_VERSION]
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@
|
|||
顯像初始化失敗。 請更新你的顯像卡驅動程式!
|
||||
</string>
|
||||
<string name="AboutHeader">
|
||||
[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL])
|
||||
[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([ADDRESS_SIZE]bit) ([CHANNEL])
|
||||
[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
|
||||
</string>
|
||||
<string name="BuildConfig">
|
||||
|
|
@ -71,7 +71,7 @@
|
|||
libcurl 版本: [LIBCURL_VERSION]
|
||||
J2C 解碼器版本: [J2C_VERSION]
|
||||
音效驅動程式版本: [AUDIO_DRIVER_VERSION]
|
||||
LLCEFLib/CEF 版本: [LLCEFLIB_VERSION]
|
||||
CEF版本:[LIBCEF_VERSION]
|
||||
語音伺服器版本: [VOICE_VERSION]
|
||||
</string>
|
||||
<string name="AboutTraffic">
|
||||
|
|
|
|||
|
|
@ -546,11 +546,10 @@ class WindowsManifest(ViewerManifest):
|
|||
self.path("libcef.dll")
|
||||
self.path("libEGL.dll")
|
||||
self.path("libGLESv2.dll")
|
||||
self.path("llceflib_host.exe")
|
||||
self.path("dullahan_host.exe")
|
||||
self.path("natives_blob.bin")
|
||||
self.path("snapshot_blob.bin")
|
||||
self.path("widevinecdmadapter.dll")
|
||||
self.path("wow_helper.exe")
|
||||
self.end_prefix()
|
||||
else:
|
||||
# CEF runtime files - not debug (release, relwithdebinfo etc.)
|
||||
|
|
@ -560,11 +559,10 @@ class WindowsManifest(ViewerManifest):
|
|||
self.path("libcef.dll")
|
||||
self.path("libEGL.dll")
|
||||
self.path("libGLESv2.dll")
|
||||
self.path("llceflib_host.exe")
|
||||
self.path("dullahan_host.exe")
|
||||
self.path("natives_blob.bin")
|
||||
self.path("snapshot_blob.bin")
|
||||
self.path("widevinecdmadapter.dll")
|
||||
self.path("wow_helper.exe")
|
||||
self.end_prefix()
|
||||
|
||||
# MSVC DLLs needed for CEF and have to be in same directory as plugin
|
||||
|
|
@ -754,6 +752,13 @@ class WindowsManifest(ViewerManifest):
|
|||
Caption "%(caption)s"
|
||||
"""
|
||||
|
||||
if(self.args['arch'].lower() == 'x86_64'):
|
||||
engage_registry="SetRegView 64"
|
||||
program_files="$PROGRAMFILES64"
|
||||
else:
|
||||
engage_registry="SetRegView 32"
|
||||
program_files="$PROGRAMFILES32"
|
||||
|
||||
tempfile = "secondlife_setup_tmp.nsi"
|
||||
|
||||
install_dir = "PROGRAMFILES"
|
||||
|
|
@ -768,13 +773,15 @@ class WindowsManifest(ViewerManifest):
|
|||
# the following replaces strings in the nsi template
|
||||
# it also does python-style % substitution
|
||||
self.replace_in("installers/windows/installer_template.nsi", tempfile, {
|
||||
"%%VERSION%%":version_vars,
|
||||
"%%SOURCE%%":self.get_src_prefix(),
|
||||
"%%INST_VARS%%":inst_vars_template % substitution_strings,
|
||||
"%%INSTALL_FILES%%":self.nsi_file_commands(True),
|
||||
"%%INSTALL_DIR%%": install_dir,
|
||||
"%%INSTALL_DIR_REGKEY%%": install_dir_regkey,
|
||||
"%%DELETE_FILES%%":self.nsi_file_commands(False)})
|
||||
"%%VERSION%%":version_vars,
|
||||
"%%SOURCE%%":self.get_src_prefix(),
|
||||
"%%INST_VARS%%":inst_vars_template % substitution_strings,
|
||||
"%%INSTALL_FILES%%":self.nsi_file_commands(True),
|
||||
"%%$PROGRAMFILES%%":program_files,
|
||||
"%%ENGAGEREGISTRY%%":engage_registry,
|
||||
"%%INSTALL_DIR%%": install_dir,
|
||||
"%%INSTALL_DIR_REGKEY%%": install_dir_regkey,
|
||||
"%%DELETE_FILES%%":self.nsi_file_commands(False)})
|
||||
|
||||
# We use the Unicode version of NSIS, available from
|
||||
# http://www.scratchpaper.com/
|
||||
|
|
@ -1002,26 +1009,32 @@ class DarwinManifest(ViewerManifest):
|
|||
|
||||
self.end_prefix();
|
||||
|
||||
# LLCefLib helper apps go inside SLPlugin.app
|
||||
# Dullahan helper apps go inside SLPlugin.app
|
||||
if self.prefix(src="", dst="SLPlugin.app/Contents/Frameworks"):
|
||||
for helperappfile in ('LLCefLib Helper.app',
|
||||
'LLCefLib Helper EH.app'):
|
||||
for helperappfile in ('DullahanHelper.app'):
|
||||
self.path2basename(relpkgdir, helperappfile)
|
||||
|
||||
pluginframeworkpath = self.dst_path_of('Chromium Embedded Framework.framework');
|
||||
# Putting a Frameworks directory under Contents/MacOS
|
||||
# isn't canonical, but the path baked into LLCefLib
|
||||
# Helper.app/Contents/MacOS/LLCefLib Helper is:
|
||||
# isn't canonical, but the path baked into Dullahan
|
||||
# Helper.app/Contents/MacOS/DullahanHelper is:
|
||||
# @executable_path/Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework
|
||||
# (notice, not @executable_path/../Frameworks/etc.)
|
||||
# So we'll create a symlink (below) from there back to the
|
||||
# Frameworks directory nested under SLPlugin.app.
|
||||
helperframeworkpath = \
|
||||
self.dst_path_of('LLCefLib Helper.app/Contents/MacOS/'
|
||||
self.dst_path_of('DullahanHelper.app/Contents/MacOS/'
|
||||
'Frameworks/Chromium Embedded Framework.framework')
|
||||
|
||||
self.end_prefix()
|
||||
|
||||
# the helper app needs to have it's @executable_path modified to point to the
|
||||
# same location we drop the CEF framework shortcut
|
||||
helperexecutablepath = self.dst_path_of('SLPlugin.app/Contents/Frameworks/DullahanHelper.app/Contents/MacOS/DullahanHelper')
|
||||
self.run_command('install_name_tool -change '
|
||||
'"@executable_path/Chromium Embedded Framework" '
|
||||
'"@executable_path/Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework" "%s"' % helperexecutablepath)
|
||||
|
||||
# SLPlugin plugins
|
||||
if self.prefix(src="", dst="llplugin"):
|
||||
self.path2basename("../media_plugins/cef/" + self.args['configuration'],
|
||||
|
|
@ -1037,8 +1050,8 @@ class DarwinManifest(ViewerManifest):
|
|||
self.end_prefix()
|
||||
|
||||
# copy LibVLC plugins folder
|
||||
if self.prefix(src=os.path.join(os.pardir, 'packages', 'lib', 'release', 'plugins' ), dst="plugins"):
|
||||
self.path( "lib*_plugin.dylib" )
|
||||
if self.prefix(src=os.path.join(os.pardir, 'packages', 'lib', 'release', 'plugins' ), dst="lib"):
|
||||
self.path( "*.dylib" )
|
||||
self.path( "plugins.dat" )
|
||||
self.end_prefix()
|
||||
|
||||
|
|
@ -1086,7 +1099,7 @@ class DarwinManifest(ViewerManifest):
|
|||
# Life.app/Contents/Frameworks/Chromium Embedded Framework.framework
|
||||
origin, target = pluginframeworkpath, frameworkpath
|
||||
symlinkf(target, origin)
|
||||
# from SLPlugin.app/Contents/Frameworks/LLCefLib
|
||||
# from SLPlugin.app/Contents/Frameworks/Dullahan
|
||||
# Helper.app/Contents/MacOS/Frameworks/Chromium Embedded
|
||||
# Framework.framework back to
|
||||
# SLPlugin.app/Contents/Frameworks/Chromium Embedded Framework.framework
|
||||
|
|
|
|||
Loading…
Reference in New Issue