From ac9777bd8eed3899c48ba203d88911085c09e65a Mon Sep 17 00:00:00 2001 From: "callum@lindenlab.com" Date: Fri, 3 Feb 2017 16:25:33 -0800 Subject: [PATCH 01/25] Change destination location of updated VLC files to correct one --- indra/newview/viewer_manifest.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 6fb9479564..d68c01351f 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -874,8 +874,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() From 8fd147f59dea7d545618c1c5a5a1f1caff9432bc Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Tue, 21 Feb 2017 10:25:55 -0800 Subject: [PATCH 02/25] Add 3p Dullahan packages for windows 32/64 and darwin64 --- autobuild.xml | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/autobuild.xml b/autobuild.xml index 975a4ebd64..2284c87230 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -507,6 +507,60 @@ version 1.500564 + dullahan + + copyright + Copyright (c) 2017, Linden Research, Inc. + description + 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. + license + MPL + license_file + LICENSES/LICENSE.txt + name + dullahan + platforms + + darwin64 + + archive + + hash + cee1a8a803a083cd26f72d1120e59bee + url + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/2820/6482/dullahan-1.1.601_3.2704-darwin64-502809.tar.bz2 + + name + darwin64 + + windows + + archive + + hash + 0a7831886570ed6485a462db33d30ca5 + url + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/2822/6489/dullahan-1.1.601_3.2704-windows-502809.tar.bz2 + + name + windows + + windows64 + + archive + + hash + a9a42672f14d9cbb42ffc50677ad2d42 + url + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/2821/6492/dullahan-1.1.601_3.2704-windows64-502809.tar.bz2 + + name + windows64 + + + version + 1.1.601_3.2704 + elfio license From 5534ab4e182b8403cf0ed514059e346d55f18162 Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Tue, 21 Feb 2017 15:06:21 -0800 Subject: [PATCH 03/25] First round of changes to replace LLCEFLib with Dullahan. Mostly Windows changes in this batch since I'm working on Windows box but some speculative macOS ones too although they are quite untested --- autobuild.xml | 70 ------ indra/cmake/CEFPlugin.cmake | 6 +- indra/media_plugins/cef/media_plugin_cef.cpp | 216 +++++++++--------- indra/newview/llappviewer.cpp | 10 +- .../skins/default/xui/da/floater_about.xml | 2 +- .../newview/skins/default/xui/de/strings.xml | 2 +- .../newview/skins/default/xui/en/strings.xml | 2 +- .../newview/skins/default/xui/es/strings.xml | 4 +- .../newview/skins/default/xui/fr/strings.xml | 2 +- .../newview/skins/default/xui/it/strings.xml | 2 +- .../newview/skins/default/xui/ja/strings.xml | 2 +- .../newview/skins/default/xui/pl/strings.xml | 2 +- .../newview/skins/default/xui/pt/strings.xml | 2 +- .../newview/skins/default/xui/ru/strings.xml | 2 +- .../newview/skins/default/xui/tr/strings.xml | 2 +- .../newview/skins/default/xui/zh/strings.xml | 2 +- indra/newview/viewer_manifest.py | 17 +- 17 files changed, 142 insertions(+), 203 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 2284c87230..94f3c6df88 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -2113,76 +2113,6 @@ version 0.0.1 - llceflib - - copyright - Copyright (c) 2014, Linden Research, Inc. - description - 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) - license - LGPL - license_file - LICENSES/LICENSE-source.txt - name - llceflib - platforms - - darwin - - archive - - hash - 2845033912eb947a1401847ece1469ce - hash_algorithm - md5 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llceflib_3p-llceflib/rev/321153/arch/Darwin/installer/llceflib-1.5.3.321153-darwin-321153.tar.bz2 - - name - darwin - - darwin64 - - archive - - hash - 3af1210d90aeb9f4d5deea6020ee0d55 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1611/3591/llceflib-1.6.0.501600-darwin64-501600.tar.bz2 - - name - darwin64 - - windows - - archive - - hash - 9d19271829a372e028dd3c75605ded9c - hash_algorithm - md5 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1518/3437/llceflib-1.6.0.501501-windows-501501.tar.bz2 - - name - windows - - windows64 - - archive - - hash - da1835b11be4442f22fef36820ad46ac - url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1517/3434/llceflib-1.6.0.501501-windows64-501501.tar.bz2 - - name - windows64 - - - version - 1.6.0.501600 - llphysicsextensions_source copyright diff --git a/indra/cmake/CEFPlugin.cmake b/indra/cmake/CEFPlugin.cmake index 9cfb7d14c7..b8e569d3a8 100644 --- a/indra/cmake/CEFPlugin.cmake +++ b/indra/cmake/CEFPlugin.cmake @@ -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} ) diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp index eaba71a6ad..b78af1b348 100644 --- a/indra/media_plugins/cef/media_plugin_cef.cpp +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -36,11 +36,12 @@ #include "llpluginmessageclasses.h" #include "media_plugin_base.h" -#include "boost/function.hpp" -#include "boost/bind.hpp" -#include "llCEFLib.h" +#include + +#include "dullahan.h" //#include "volume_catcher.h" + //////////////////////////////////////////////////////////////////////////////// // class MediaPluginCEF : @@ -56,7 +57,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); @@ -67,17 +68,17 @@ 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, unsigned int handle); 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); + dullahan::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, int key, dullahan::EKeyboardModifier modifiers, LLSD native_key_data); + void unicodeInput(const std::string &utf8str, dullahan::EKeyboardModifier modifiers, LLSD native_key_data); void checkEditState(); void setVolume(F32 vol); @@ -97,7 +98,7 @@ private: std::string mCachePath; std::string mCookiePath; std::string mPickedFile; - LLCEFLib* mLLCEFLib; + dullahan* mCEFLib; U8 *mPopupBuffer; U32 mPopupW; @@ -130,7 +131,7 @@ MediaPluginBase(host_send_func, host_user_data) mCachePath = ""; mCookiePath = ""; mPickedFile = ""; - mLLCEFLib = new LLCEFLib(); + mCEFLib = new dullahan(); mPopupBuffer = NULL; mPopupW = 0; @@ -164,8 +165,11 @@ 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) { + + OutputDebugStringA("@"); + if( is_popup ) { delete mPopupBuffer; @@ -252,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); } @@ -261,7 +265,7 @@ void MediaPluginCEF::onLoadStartCallback() // void MediaPluginCEF::onRequestExitCallback() { - mLLCEFLib->shutdown(); + mCEFLib->shutdown(); LLPluginMessage message("base", "goodbye"); sendMessage(message); @@ -274,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); } @@ -358,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, unsigned int handle) { 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; @@ -428,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 @@ -437,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") { @@ -479,47 +483,48 @@ 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, std::placeholders::_2)); + 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.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; @@ -530,7 +535,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string) message.setValueU32("internalformat", GL_RGB); message.setValueU32("format", GL_BGRA); message.setValueU32("type", GL_UNSIGNED_BYTE); - message.setValueBoolean("coords_opengl", true); + message.setValueBoolean("coords_opengl", false); sendMessage(message); } else if (message_name == "set_user_data_path") @@ -563,7 +568,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); @@ -581,7 +586,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") { @@ -592,7 +597,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") { @@ -603,16 +608,16 @@ void MediaPluginCEF::receiveMessage(const char* message_string) 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; @@ -620,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; @@ -628,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") @@ -642,7 +647,7 @@ 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") { @@ -662,28 +667,28 @@ void MediaPluginCEF::receiveMessage(const char* message_string) #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); + //mCEFLib->keyPress(key, true); + mCEFLib->keyboardEvent(dullahan::KE_KEY_DOWN, (uint32_t)key, 0, dullahan::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); + //mCEFLib->keyPress(key, false); + mCEFLib->keyboardEvent(dullahan::KE_KEY_UP, (uint32_t)key, 0, dullahan::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, key, dullahan::KM_MODIFIER_NONE, native_key_data); #endif #elif LL_WINDOWS @@ -693,14 +698,14 @@ void MediaPluginCEF::receiveMessage(const char* message_string) 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); @@ -720,15 +725,15 @@ void MediaPluginCEF::receiveMessage(const char* message_string) } if (message_name == "edit_cut") { - mLLCEFLib->editCut(); + //$1 mCEFLib->editCut(); } if (message_name == "edit_copy") { - mLLCEFLib->editCopy(); + //$1 mCEFLib->editCopy(); } if (message_name == "edit_paste") { - mLLCEFLib->editPaste(); + //$1 mCEFLib->editPaste(); } } else if (message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER) @@ -736,24 +741,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") { @@ -765,7 +770,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") { @@ -790,23 +795,23 @@ void MediaPluginCEF::receiveMessage(const char* message_string) } } -LLCEFLib::EKeyboardModifier MediaPluginCEF::decodeModifiers(std::string &modifiers) +dullahan::EKeyboardModifier MediaPluginCEF::decodeModifiers(std::string &modifiers) { int result = 0; if (modifiers.find("shift") != std::string::npos) - result |= LLCEFLib::KM_MODIFIER_SHIFT; + result |= dullahan::KM_MODIFIER_SHIFT; if (modifiers.find("alt") != std::string::npos) - result |= LLCEFLib::KM_MODIFIER_ALT; + result |= dullahan::KM_MODIFIER_ALT; if (modifiers.find("control") != std::string::npos) - result |= LLCEFLib::KM_MODIFIER_CONTROL; + result |= dullahan::KM_MODIFIER_CONTROL; if (modifiers.find("meta") != std::string::npos) - result |= LLCEFLib::KM_MODIFIER_META; + result |= dullahan::KM_MODIFIER_META; - return (LLCEFLib::EKeyboardModifier)result; + return (dullahan::EKeyboardModifier)result; } //////////////////////////////////////////////////////////////////////////////// @@ -833,7 +838,7 @@ void MediaPluginCEF::deserializeKeyboardData(LLSD native_key_data, uint32_t& nat //////////////////////////////////////////////////////////////////////////////// // -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, int key, dullahan::EKeyboardModifier modifiers_x, LLSD native_key_data = LLSD::emptyMap()) { #if LL_DARWIN @@ -852,7 +857,7 @@ void MediaPluginCEF::keyEvent(LLCEFLib::EKeyEvent key_event, int key, LLCEFLib:: char eventUChars = static_cast(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, + mCEFLib->keyboardEventOSX(eventType, eventModifiers, (eventChars) ? &eventChars : NULL, (eventUChars) ? &eventUChars : NULL, eventIsRepeat, eventKeycode); #elif LL_WINDOWS @@ -860,15 +865,15 @@ void MediaPluginCEF::keyEvent(LLCEFLib::EKeyEvent key_event, int key, LLCEFLib:: 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->nativeKeyboardEvent(msg, wparam, lparam); #endif }; -void MediaPluginCEF::unicodeInput(const std::string &utf8str, LLCEFLib::EKeyboardModifier modifiers, LLSD native_key_data = LLSD::emptyMap()) +void MediaPluginCEF::unicodeInput(const std::string &utf8str, dullahan::EKeyboardModifier modifiers, 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); + //mCEFLib->keyPress(utf8str[0], true); + //mCEFLib->keyboardEvent(dullahan::KE_KEY_DOWN, (uint32_t)(utf8str[0]), 0, dullahan::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; @@ -877,13 +882,13 @@ void MediaPluginCEF::unicodeInput(const std::string &utf8str, LLCEFLib::EKeyboar uint32_t keyCode = native_key_data["event_keycode"].asInteger(); uint32_t rawmodifiers = native_key_data["event_modifiers"].asInteger(); - mLLCEFLib->injectUnicodeText(unicodeChar, unmodifiedChar, keyCode, rawmodifiers); + mCEFLib->injectUnicodeText(unicodeChar, unmodifiedChar, keyCode, rawmodifiers); #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->nativeKeyboardEvent(msg, wparam, lparam); #endif }; @@ -891,9 +896,12 @@ 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(); + //$1 bool can_cut = mCEFLib->editCanCut(); + //$1 bool can_copy = mCEFLib->editCanCopy(); + //$1 bool can_paste = mCEFLib->editCanPaste(); + bool can_cut = false; + bool can_copy = false; + bool can_paste = false; if ((can_cut != mCanCut) || (can_copy != mCanCopy) || (can_paste != mCanPaste)) { diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 65c3e70b66..d7b91ba741 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -125,7 +125,7 @@ #include "llcoros.h" #include "llexception.h" #if !LL_LINUX -#include "cef/llceflib.h" +#include "cef/dullahan.h" #if LL_WINDOWS #include "vlc/libvlc_version.h" #endif // LL_WINDOWS @@ -3393,13 +3393,15 @@ LLSD LLAppViewer::getViewerInfo() const } #if !LL_LINUX - info["LLCEFLIB_VERSION"] = LLCEFLIB_VERSION; + // TODO this is terrible, but how else to accurately get back entire version from + // both CEF and Dullahan when there is no #define anymore? + info["LIBCEF_VERSION"] = "Calculating..."; #else - info["LLCEFLIB_VERSION"] = "Undefined"; + info["LIBCEF_VERSION"] = "Undefined"; #endif -#if LL_WINDOWS +#if !LL_LINUX std::ostringstream ver_codec; ver_codec << LIBVLC_VERSION_MAJOR; ver_codec << "."; diff --git a/indra/newview/skins/default/xui/da/floater_about.xml b/indra/newview/skins/default/xui/da/floater_about.xml index 779b168ae0..7654f0dcd6 100644 --- a/indra/newview/skins/default/xui/da/floater_about.xml +++ b/indra/newview/skins/default/xui/da/floater_about.xml @@ -24,7 +24,7 @@ Grafik kort: [GRAPHICS_CARD] 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] diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index 4a2cbcc81f..d3d0423d44 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -79,7 +79,7 @@ Erstellungszeit VFS (Cache): [VFS_TIME] J2C-Decoderversion: [J2C_VERSION] Audiotreiberversion: [AUDIO_DRIVER_VERSION] -LLCEFLib/CEF-Version: [LLCEFLIB_VERSION] +CEF-Version: [LIBCEF_VERSION] LibVLC-Version: [LIBVLC_VERSION] Voice-Server-Version: [VOICE_VERSION] diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 6b3422d892..c19ab5a570 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -61,7 +61,7 @@ VFS (cache) creation time: [VFS_TIME] 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] diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index 192d32c267..a56d7d6de7 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -70,8 +70,8 @@ Tiempo de creación de VFS (caché): [VFS_TIME] 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 LibVLC: [LLCEFLIB_VERSION] +Versión de CEF: [LIBCEF_VERSION] +Versión de LibVLC: [LIBVLC_VERSION] Versión de Voice Server: [VOICE_VERSION] diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index 40a41b93ab..10c9be0795 100644 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -79,7 +79,7 @@ Durée de création VFS (cache) : [VFS_TIME] 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] diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index 8246f91d17..d158cfd311 100644 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -76,7 +76,7 @@ Data/ora creazione VFS (cache): [VFS_TIME] Versione J2C Decoder: [J2C_VERSION] Versione Driver audio: [AUDIO_DRIVER_VERSION] -Versione LLCEFLib/CEF: [LLCEFLIB_VERSION] +Versione CEF: [LIBCEF_VERSION] Versione LibVLC: [LIBVLC_VERSION] Versione Server voice: [VOICE_VERSION] diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index 586b8ab2d3..b3c92dbe8d 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -79,7 +79,7 @@ VFS(キャッシュ)作成時間: [VFS_TIME] J2C デコーダバージョン:[J2C_VERSION] オーディオドライババージョン:[AUDIO_DRIVER_VERSION] -LLCEFLib/CEF バージョン: [LLCEFLIB_VERSION] +CEF バージョン: [LIBCEF_VERSION] LibVLC バージョン: [LIBVLC_VERSION] ボイスサーバーバージョン:[VOICE_VERSION] diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml index e9dd18043d..9aece1221d 100644 --- a/indra/newview/skins/default/xui/pl/strings.xml +++ b/indra/newview/skins/default/xui/pl/strings.xml @@ -43,7 +43,7 @@ Wersja OpenGL: [OPENGL_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] diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index 207b4e7097..0d7585a424 100644 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -70,7 +70,7 @@ Tempo de criação de VFS (cache): [VFS_TIME] Versão do J2C Decoder: [J2C_VERSION] Versão do driver de áudio: [AUDIO_DRIVER_VERSION] -Versão de LLCEFLib/CEF: [LLCEFLIB_VERSION] +Versão de CEF: [LIBCEF_VERSION] Versão da LibVLC: [LIBVLC_VERSION] Versão do servidor de voz: [VOICE_VERSION] diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml index e44d63b3b9..7b1dcae021 100644 --- a/indra/newview/skins/default/xui/ru/strings.xml +++ b/indra/newview/skins/default/xui/ru/strings.xml @@ -79,7 +79,7 @@ SLURL: <nolink>[SLURL]</nolink> Версия декодера J2C: [J2C_VERSION] Версия драйвера звука: [AUDIO_DRIVER_VERSION] -Версия LLCEFLib/CEF: [LLCEFLIB_VERSION] +Версия CEF: [LIBCEF_VERSION] Версия LibVLC: [LIBVLC_VERSION] Версия голосового сервера: [VOICE_VERSION] diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml index 7b4bf1fca6..dda7902e94 100644 --- a/indra/newview/skins/default/xui/tr/strings.xml +++ b/indra/newview/skins/default/xui/tr/strings.xml @@ -79,7 +79,7 @@ VFS (önbellek) oluşturma zamanı: [VFS_TIME] 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] diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml index ec08c9f91e..9e88e96284 100644 --- a/indra/newview/skins/default/xui/zh/strings.xml +++ b/indra/newview/skins/default/xui/zh/strings.xml @@ -79,7 +79,7 @@ VFS(快取)建立時間:[VFS_TIME] J2C 解碼器版本: [J2C_VERSION] 音效驅動程式版本: [AUDIO_DRIVER_VERSION] -LLCEFLib/CEF版本:[LLCEFLIB_VERSION] +CEF版本:[LIBCEF_VERSION] LibVLC版本:[LIBVLC_VERSION]N] 語音伺服器版本: [VOICE_VERSION] diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index d68c01351f..c5bd91e396 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -447,7 +447,7 @@ 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") @@ -461,7 +461,7 @@ 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") @@ -839,22 +839,21 @@ class DarwinManifest(ViewerManifest): except OSError as err: print "Can't symlink %s -> %s: %s" % (src, dst, err) - # 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() @@ -918,7 +917,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 From ea4ef0b4e0a9d001b22724b238e811c371d3bbba Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Wed, 22 Feb 2017 19:21:01 -0800 Subject: [PATCH 04/25] Pull in new version of p64_3p-Dullahan with support for flippyingh pixels/mouse, copy/cut/paste and new version info --- autobuild.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 94f3c6df88..3a9d7f2f01 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -538,9 +538,9 @@ archive hash - 0a7831886570ed6485a462db33d30ca5 + a220602c9a691553f2f7f1fad3777802 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/2822/6489/dullahan-1.1.601_3.2704-windows-502809.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/2893/6744/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows-502882.tar.bz2 name windows @@ -550,16 +550,16 @@ archive hash - a9a42672f14d9cbb42ffc50677ad2d42 + 55aa333945e17ae54851b621e53a0381 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/2821/6492/dullahan-1.1.601_3.2704-windows64-502809.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/2894/6749/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows64-502882.tar.bz2 name windows64 version - 1.1.601_3.2704 + 1.0.620_3.2704.1434.gec3e9ed elfio From 2c8299d643156bb39528c3a56cac330c0dcd5df9 Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Wed, 22 Feb 2017 19:21:55 -0800 Subject: [PATCH 05/25] reenable support for copy/cut/paste to/from a web page --- indra/media_plugins/cef/media_plugin_cef.cpp | 21 +++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp index b78af1b348..1637976422 100644 --- a/indra/media_plugins/cef/media_plugin_cef.cpp +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -507,6 +507,8 @@ void MediaPluginCEF::receiveMessage(const char* message_string) 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; @@ -535,7 +537,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string) message.setValueU32("internalformat", GL_RGB); message.setValueU32("format", GL_BGRA); message.setValueU32("type", GL_UNSIGNED_BYTE); - message.setValueBoolean("coords_opengl", false); + message.setValueBoolean("coords_opengl", true); sendMessage(message); } else if (message_name == "set_user_data_path") @@ -606,8 +608,6 @@ 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 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 @@ -725,15 +725,15 @@ void MediaPluginCEF::receiveMessage(const char* message_string) } if (message_name == "edit_cut") { - //$1 mCEFLib->editCut(); + mCEFLib->editCut(); } if (message_name == "edit_copy") { - //$1 mCEFLib->editCopy(); + mCEFLib->editCopy(); } if (message_name == "edit_paste") { - //$1 mCEFLib->editPaste(); + mCEFLib->editPaste(); } } else if (message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER) @@ -896,12 +896,9 @@ void MediaPluginCEF::unicodeInput(const std::string &utf8str, dullahan::EKeyboar // void MediaPluginCEF::checkEditState() { - //$1 bool can_cut = mCEFLib->editCanCut(); - //$1 bool can_copy = mCEFLib->editCanCopy(); - //$1 bool can_paste = mCEFLib->editCanPaste(); - bool can_cut = false; - bool can_copy = false; - bool can_paste = false; + 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)) { From 8f4cb2bc15656e705e0037ea62aec13c923ba78f Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Wed, 22 Feb 2017 19:22:15 -0800 Subject: [PATCH 06/25] Use new version info from CEF plugin to display in About box --- indra/newview/llappviewer.cpp | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index d7b91ba741..15b8ecfcea 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -126,9 +126,7 @@ #include "llexception.h" #if !LL_LINUX #include "cef/dullahan.h" -#if LL_WINDOWS #include "vlc/libvlc_version.h" -#endif // LL_WINDOWS #endif // LL_LINUX // Third party library includes @@ -3393,22 +3391,28 @@ LLSD LLAppViewer::getViewerInfo() const } #if !LL_LINUX - // TODO this is terrible, but how else to accurately get back entire version from - // both CEF and Dullahan when there is no #define anymore? - info["LIBCEF_VERSION"] = "Calculating..."; + 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["LIBCEF_VERSION"] = "Undefined"; - #endif #if !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(); + 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 From 210e2a8bfbd8f3b681802d087de2f3e81eb31a87 Mon Sep 17 00:00:00 2001 From: "callum@lindenlab.com" Date: Thu, 23 Feb 2017 10:16:47 -0800 Subject: [PATCH 07/25] Pull in latest 3P Dullahan with change to cursor changed function signature --- autobuild.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 3a9d7f2f01..1f99de7492 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -526,9 +526,9 @@ archive hash - cee1a8a803a083cd26f72d1120e59bee + 075774167b429018808c9c055c554734 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/2820/6482/dullahan-1.1.601_3.2704-darwin64-502809.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/2899/6761/dullahan-1.0.620_3.2704.1434.gec3e9ed-darwin64-502888.tar.bz2 name darwin64 @@ -538,9 +538,9 @@ archive hash - a220602c9a691553f2f7f1fad3777802 + d53c641f81d4dcd27c6725120c70ab4a url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/2893/6744/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows-502882.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/2900/6768/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows-502888.tar.bz2 name windows @@ -550,9 +550,9 @@ archive hash - 55aa333945e17ae54851b621e53a0381 + 3e755e4ab5ab16f3a05b9f5f519c802f url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/2894/6749/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows64-502882.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/2901/6773/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows64-502888.tar.bz2 name windows64 From f04bfdd70ed6003bd3a333cfd99f91530f18f7ad Mon Sep 17 00:00:00 2001 From: "callum@lindenlab.com" Date: Thu, 23 Feb 2017 10:17:52 -0800 Subject: [PATCH 08/25] Update media plugin CEF code to match new Dullahan --- indra/media_plugins/cef/media_plugin_cef.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp index 1637976422..d0ba8e5b3c 100644 --- a/indra/media_plugins/cef/media_plugin_cef.cpp +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -68,7 +68,7 @@ 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(dullahan::ECursorType type, unsigned int handle); + void onCursorChangedCallback(dullahan::ECursorType type); void onFileDownloadCallback(std::string filename); const std::string onFileDialogCallback(); @@ -362,7 +362,7 @@ const std::string MediaPluginCEF::onFileDialogCallback() return mPickedFile; } -void MediaPluginCEF::onCursorChangedCallback(dullahan::ECursorType type, unsigned int handle) +void MediaPluginCEF::onCursorChangedCallback(dullahan::ECursorType type) { std::string name = ""; @@ -496,7 +496,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string) 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, std::placeholders::_2)); + mCEFLib->setOnCursorChangedCallback(std::bind(&MediaPluginCEF::onCursorChangedCallback, this, std::placeholders::_1)); mCEFLib->setOnRequestExitCallback(std::bind(&MediaPluginCEF::onRequestExitCallback, this)); dullahan::dullahan_settings settings; From bff83a7f415635cf575520bc747e5da7a5b1ef0f Mon Sep 17 00:00:00 2001 From: "callum@lindenlab.com" Date: Thu, 23 Feb 2017 10:26:46 -0800 Subject: [PATCH 09/25] Whoopps. Apologies for leaving Windows debug spam in code :( --- indra/media_plugins/cef/media_plugin_cef.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp index d0ba8e5b3c..0116b18a99 100644 --- a/indra/media_plugins/cef/media_plugin_cef.cpp +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -167,9 +167,6 @@ void MediaPluginCEF::postDebugMessage(const std::string& msg) // void MediaPluginCEF::onPageChangedCallback(const unsigned char* pixels, int x, int y, const int width, const int height, bool is_popup) { - - OutputDebugStringA("@"); - if( is_popup ) { delete mPopupBuffer; From 08940da90ee944dd838b1db65658c39bb0aa80d4 Mon Sep 17 00:00:00 2001 From: "callum@lindenlab.com" Date: Fri, 24 Feb 2017 15:44:36 -0800 Subject: [PATCH 10/25] First round of changes to make the macOS 64 build work --- indra/media_plugins/cef/CMakeLists.txt | 3 ++ indra/media_plugins/cef/media_plugin_cef.cpp | 47 ++++++++++---------- indra/newview/viewer_manifest.py | 7 +++ 3 files changed, 33 insertions(+), 24 deletions(-) diff --git a/indra/media_plugins/cef/CMakeLists.txt b/indra/media_plugins/cef/CMakeLists.txt index 1c41fadcaf..bc924eabf0 100644 --- a/indra/media_plugins/cef/CMakeLists.txt +++ b/indra/media_plugins/cef/CMakeLists.txt @@ -93,6 +93,9 @@ if (DARWIN) LINK_FLAGS "-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" diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp index 0116b18a99..99958e0d81 100644 --- a/indra/media_plugins/cef/media_plugin_cef.cpp +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -41,7 +41,6 @@ #include "dullahan.h" //#include "volume_catcher.h" - //////////////////////////////////////////////////////////////////////////////// // class MediaPluginCEF : @@ -839,23 +838,23 @@ void MediaPluginCEF::keyEvent(dullahan::EKeyEvent key_event, int key, dullahan:: { #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; + // 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(native_key_data["event_chars"].isUndefined() ? 0 : native_key_data["event_chars"].asInteger()); - char eventUChars = static_cast(native_key_data["event_umodchars"].isUndefined() ? 0 : native_key_data["event_umodchars"].asInteger()); - bool eventIsRepeat = native_key_data["event_isrepeat"].asBoolean(); + // 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(native_key_data["event_chars"].isUndefined() ? 0 : native_key_data["event_chars"].asInteger()); + // char eventUChars = static_cast(native_key_data["event_umodchars"].isUndefined() ? 0 : native_key_data["event_umodchars"].asInteger()); + // bool eventIsRepeat = native_key_data["event_isrepeat"].asBoolean(); - mCEFLib->keyboardEventOSX(eventType, eventModifiers, (eventChars) ? &eventChars : NULL, - (eventUChars) ? &eventUChars : NULL, eventIsRepeat, eventKeycode); + // mCEFLib->keyboardEventOSX(eventType, eventModifiers, (eventChars) ? &eventChars : NULL, + // (eventUChars) ? &eventUChars : NULL, eventIsRepeat, eventKeycode); #elif LL_WINDOWS U32 msg = ll_U32_from_sd(native_key_data["msg"]); @@ -871,15 +870,15 @@ void MediaPluginCEF::unicodeInput(const std::string &utf8str, dullahan::EKeyboar #if LL_DARWIN //mCEFLib->keyPress(utf8str[0], true); //mCEFLib->keyboardEvent(dullahan::KE_KEY_DOWN, (uint32_t)(utf8str[0]), 0, dullahan::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(); + // 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(); - mCEFLib->injectUnicodeText(unicodeChar, unmodifiedChar, keyCode, rawmodifiers); + // CP removed to build mCEFLib->injectUnicodeText(unicodeChar, unmodifiedChar, keyCode, rawmodifiers); #elif LL_WINDOWS U32 msg = ll_U32_from_sd(native_key_data["msg"]); diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index c5bd91e396..3b80f519f4 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -858,6 +858,13 @@ class DarwinManifest(ViewerManifest): 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'], From 1243e41670dc8bfc6bbb43700b1340b9655a818d Mon Sep 17 00:00:00 2001 From: "callum@lindenlab.com" Date: Wed, 1 Mar 2017 16:42:21 -0800 Subject: [PATCH 11/25] Pull in new p64_3p-dullahan with osx keyboard input changes --- autobuild.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 1f99de7492..e7640fd3f9 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -526,9 +526,9 @@ archive hash - 075774167b429018808c9c055c554734 + 2c0917457de94e21b9afe3b38a8dda72 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/2899/6761/dullahan-1.0.620_3.2704.1434.gec3e9ed-darwin64-502888.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3025/7008/dullahan-1.0.620_3.2704.1434.gec3e9ed-darwin64-503014.tar.bz2 name darwin64 @@ -538,9 +538,9 @@ archive hash - d53c641f81d4dcd27c6725120c70ab4a + e1c08b93444a621b886bd6efa285cc92 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/2900/6768/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows-502888.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3026/7014/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows-503014.tar.bz2 name windows @@ -550,9 +550,9 @@ archive hash - 3e755e4ab5ab16f3a05b9f5f519c802f + 3b5a9949a150ebb77f6c065d90d648e0 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/2901/6773/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows64-502888.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3027/7020/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows64-503014.tar.bz2 name windows64 From f49033efcfec6ee0df69c346c8d6e04345d5c87c Mon Sep 17 00:00:00 2001 From: "callum@lindenlab.com" Date: Wed, 1 Mar 2017 16:43:15 -0800 Subject: [PATCH 12/25] Fix up slight change to Dullahan interface where we call out the platform for native keyboard injection to match OSX version --- indra/media_plugins/cef/media_plugin_cef.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp index 99958e0d81..33a5f32089 100644 --- a/indra/media_plugins/cef/media_plugin_cef.cpp +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -861,7 +861,7 @@ void MediaPluginCEF::keyEvent(dullahan::EKeyEvent key_event, int key, dullahan:: U32 wparam = ll_U32_from_sd(native_key_data["w_param"]); U64 lparam = ll_U32_from_sd(native_key_data["l_param"]); - mCEFLib->nativeKeyboardEvent(msg, wparam, lparam); + mCEFLib->nativeKeyboardEventWin(msg, wparam, lparam); #endif }; @@ -884,7 +884,7 @@ void MediaPluginCEF::unicodeInput(const std::string &utf8str, dullahan::EKeyboar 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"]); - mCEFLib->nativeKeyboardEvent(msg, wparam, lparam); + mCEFLib->nativeKeyboardEventWin(msg, wparam, lparam); #endif }; From 398c351371b7f1bacea3b898729a4723acc6f417 Mon Sep 17 00:00:00 2001 From: "callum@lindenlab.com" Date: Fri, 3 Mar 2017 15:32:47 -0800 Subject: [PATCH 13/25] First pass at osx/macos keyboard events - simple case like google homepage is working --- autobuild.xml | 12 +- indra/llwindow/llwindowmacosx.cpp | 3 +- indra/media_plugins/cef/media_plugin_cef.cpp | 120 ++++--------------- 3 files changed, 27 insertions(+), 108 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index e7640fd3f9..97d91b1d81 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -526,9 +526,9 @@ archive hash - 2c0917457de94e21b9afe3b38a8dda72 + 76baeea8a3ab3ecc6499e33aa5d91eaa url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3025/7008/dullahan-1.0.620_3.2704.1434.gec3e9ed-darwin64-503014.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3041/7098/dullahan-1.0.620_3.2704.1434.gec3e9ed-darwin64-503028.tar.bz2 name darwin64 @@ -538,9 +538,9 @@ archive hash - e1c08b93444a621b886bd6efa285cc92 + 2f3f83025fdac8a4da0b1aaac5e97bef url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3026/7014/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows-503014.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3039/7067/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows-503028.tar.bz2 name windows @@ -550,9 +550,9 @@ archive hash - 3b5a9949a150ebb77f6c065d90d648e0 + efed705c568d01e5edefcf12989f288a url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3027/7020/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows64-503014.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3040/7072/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows64-503028.tar.bz2 name windows64 diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index 754306b5d2..d28a7f177f 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -1758,7 +1758,7 @@ void LLWindowMacOSX::spawnWebBrowser(const std::string& escaped_url, bool async) LLSD LLWindowMacOSX::getNativeKeyData() { LLSD result = LLSD::emptyMap(); -#if 1 + if(mRawKeyEvent) { result["event_type"] = LLSD::Integer(mRawKeyEvent->mEventType); @@ -1768,7 +1768,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; diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp index 33a5f32089..a511c32c73 100644 --- a/indra/media_plugins/cef/media_plugin_cef.cpp +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -29,6 +29,9 @@ #include "linden_common.h" #include "indra_constants.h" // for indra keyboard codes +#include +#include + #include "llgl.h" #include "llsdutil.h" #include "llplugininstance.h" @@ -39,7 +42,6 @@ #include #include "dullahan.h" -//#include "volume_catcher.h" //////////////////////////////////////////////////////////////////////////////// // @@ -74,10 +76,8 @@ private: void postDebugMessage(const std::string& msg); void authResponse(LLPluginMessage &message); - dullahan::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(dullahan::EKeyEvent key_event, int key, dullahan::EKeyboardModifier modifiers, LLSD native_key_data); - void unicodeInput(const std::string &utf8str, dullahan::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); @@ -647,33 +647,15 @@ void MediaPluginCEF::receiveMessage(const char* message_string) } 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") - { - //mCEFLib->keyPress(key, true); - mCEFLib->keyboardEvent(dullahan::KE_KEY_DOWN, (uint32_t)key, 0, dullahan::KM_MODIFIER_NONE, 0, 0, 0); - - } - else if (event == "up") - { - //mCEFLib->keyPress(key, false); - mCEFLib->keyboardEvent(dullahan::KE_KEY_UP, (uint32_t)key, 0, dullahan::KM_MODIFIER_NONE, 0, 0, 0); - } -#else - // Treat unknown events as key-up for safety. dullahan::EKeyEvent key_event = dullahan::KE_KEY_UP; if (event == "down") { @@ -684,9 +666,8 @@ void MediaPluginCEF::receiveMessage(const char* message_string) key_event = dullahan::KE_KEY_REPEAT; } - keyEvent(key_event, key, dullahan::KM_MODIFIER_NONE, native_key_data); + keyEvent(key_event, native_key_data); -#endif #elif LL_WINDOWS std::string event = message_in.getValue("event"); S32 key = message_in.getValueS32("key"); @@ -704,7 +685,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string) 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") @@ -791,71 +772,20 @@ void MediaPluginCEF::receiveMessage(const char* message_string) } } -dullahan::EKeyboardModifier MediaPluginCEF::decodeModifiers(std::string &modifiers) -{ - int result = 0; - - if (modifiers.find("shift") != std::string::npos) - result |= dullahan::KM_MODIFIER_SHIFT; - - if (modifiers.find("alt") != std::string::npos) - result |= dullahan::KM_MODIFIER_ALT; - - if (modifiers.find("control") != std::string::npos) - result |= dullahan::KM_MODIFIER_CONTROL; - - if (modifiers.find("meta") != std::string::npos) - result |= dullahan::KM_MODIFIER_META; - - return (dullahan::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 - }; -}; - -//////////////////////////////////////////////////////////////////////////////// -// -void MediaPluginCEF::keyEvent(dullahan::EKeyEvent key_event, int key, dullahan::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 + 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(); - // 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(native_key_data["event_chars"].isUndefined() ? 0 : native_key_data["event_chars"].asInteger()); - // char eventUChars = static_cast(native_key_data["event_umodchars"].isUndefined() ? 0 : native_key_data["event_umodchars"].asInteger()); - // bool eventIsRepeat = native_key_data["event_isrepeat"].asBoolean(); - - // mCEFLib->keyboardEventOSX(eventType, eventModifiers, (eventChars) ? &eventChars : NULL, - // (eventUChars) ? &eventUChars : NULL, eventIsRepeat, eventKeycode); - + 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"]); @@ -865,21 +795,11 @@ void MediaPluginCEF::keyEvent(dullahan::EKeyEvent key_event, int key, dullahan:: #endif }; -void MediaPluginCEF::unicodeInput(const std::string &utf8str, dullahan::EKeyboardModifier modifiers, LLSD native_key_data = LLSD::emptyMap()) +void MediaPluginCEF::unicodeInput(LLSD native_key_data = LLSD::emptyMap()) { #if LL_DARWIN - //mCEFLib->keyPress(utf8str[0], true); - //mCEFLib->keyboardEvent(dullahan::KE_KEY_DOWN, (uint32_t)(utf8str[0]), 0, dullahan::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(); - - // CP removed to build mCEFLib->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"]); From d056ce451b16f0395208d6c7b4fa532ff9eada21 Mon Sep 17 00:00:00 2001 From: "callum@lindenlab.com" Date: Fri, 3 Mar 2017 16:41:11 -0800 Subject: [PATCH 14/25] Pull in new version of p64_3p-dullahan with fix for missing OSX function and warnings --- autobuild.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 97d91b1d81..67279eae99 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -526,9 +526,9 @@ archive hash - 76baeea8a3ab3ecc6499e33aa5d91eaa + 865253fae5146b4f44b42a76c19c7036 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3041/7098/dullahan-1.0.620_3.2704.1434.gec3e9ed-darwin64-503028.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3054/7155/dullahan-1.0.620_3.2704.1434.gec3e9ed-darwin64-503043.tar.bz2 name darwin64 @@ -538,9 +538,9 @@ archive hash - 2f3f83025fdac8a4da0b1aaac5e97bef + 250003c7810eaa65f4f156f4fee86851 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3039/7067/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows-503028.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3055/7162/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows-503043.tar.bz2 name windows @@ -550,9 +550,9 @@ archive hash - efed705c568d01e5edefcf12989f288a + 0e4caa5d053f5d644bddcda35781478c url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3040/7072/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows64-503028.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3056/7167/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows64-503043.tar.bz2 name windows64 From 7d1942a2b6de129590a5c0e7c371c30461eb8859 Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Fri, 3 Mar 2017 17:45:09 -0800 Subject: [PATCH 15/25] Remove OSX headers added for testing purposes and also some unused vars --- indra/media_plugins/cef/media_plugin_cef.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp index a511c32c73..90bdeb082c 100644 --- a/indra/media_plugins/cef/media_plugin_cef.cpp +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -29,9 +29,6 @@ #include "linden_common.h" #include "indra_constants.h" // for indra keyboard codes -#include -#include - #include "llgl.h" #include "llsdutil.h" #include "llplugininstance.h" @@ -670,8 +667,6 @@ void MediaPluginCEF::receiveMessage(const char* message_string) #elif LL_WINDOWS 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. From f8f2826156361a7f50bb26da9491e2cbbd2ef297 Mon Sep 17 00:00:00 2001 From: "callum@lindenlab.com" Date: Mon, 6 Mar 2017 16:00:24 -0800 Subject: [PATCH 16/25] Pull in updated p64_3p-dullahan with fix for help app icon appearing in dock --- autobuild.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 67279eae99..d73b6d3d0a 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -526,9 +526,9 @@ archive hash - 865253fae5146b4f44b42a76c19c7036 + 54bf66ec369933954a7b998fd78381f3 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3054/7155/dullahan-1.0.620_3.2704.1434.gec3e9ed-darwin64-503043.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3093/7325/dullahan-1.0.620_3.2704.1434.gec3e9ed-darwin64-503082.tar.bz2 name darwin64 @@ -538,9 +538,9 @@ archive hash - 250003c7810eaa65f4f156f4fee86851 + 2be9ee4ef8cd7c7152b20cbd43a09809 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3055/7162/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows-503043.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3094/7332/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows-503082.tar.bz2 name windows @@ -550,9 +550,9 @@ archive hash - 0e4caa5d053f5d644bddcda35781478c + 9a5a9c111c317130fded8c388831aae3 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3056/7167/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows64-503043.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3095/7337/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows64-503082.tar.bz2 name windows64 From e6ed0b0ae7b2eebeb569373ad561b182f5d9d541 Mon Sep 17 00:00:00 2001 From: "callum@lindenlab.com" Date: Wed, 8 Mar 2017 14:29:02 -0800 Subject: [PATCH 17/25] Second Life SL-643 viewer_manifest.py still tried to copy the CEF file wow_helper.exe but it's no longer present --- indra/newview/viewer_manifest.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 3b80f519f4..2d868c407d 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -451,7 +451,6 @@ class WindowsManifest(ViewerManifest): 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.) @@ -465,7 +464,6 @@ class WindowsManifest(ViewerManifest): 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 From fb85514cc882de9858e7c1d03106dc40b552b53c Mon Sep 17 00:00:00 2001 From: "callum@lindenlab.com" Date: Thu, 9 Mar 2017 12:17:14 -0800 Subject: [PATCH 18/25] =?UTF-8?q?Pull=20in=203rd=20party=20lib=20to=20fix:?= =?UTF-8?q?=20SL-646=20=E2=80=9DLINK=20:=20warning=20LNK4075:=20ignoring?= =?UTF-8?q?=20'/INCREMENTAL'=20due=20to=20'/LTCG'=20specification=E2=80=9D?= =?UTF-8?q?=20in=20LibVLC,=20JPEGLIB=20etc.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- autobuild.xml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index d73b6d3d0a..dad308b086 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1466,9 +1466,9 @@ archive hash - 2a33d85c5afa07612e8c4f314ab29545 + 4e7fef9c6ae9b7ccf19b7fdb96912b9c url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/478/1016/jpeglib-8c.500387-darwin64-500387.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3152/7571/jpeglib-8c.503140-darwin64-503140.tar.bz2 name darwin64 @@ -1490,9 +1490,9 @@ archive hash - 7d699142394f54a334b4fd203b4c9eea + ba9c62863ec338a049de83c24639f57c url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/457/970/jpeglib-8c.500387-linux64-500387.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3151/7568/jpeglib-8c.503140-linux64-503140.tar.bz2 name linux64 @@ -1502,9 +1502,9 @@ archive hash - 543e25c3819399f37e0453db5eea558a + 00523662f6a7388377166e9415e113e9 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/497/1062/jpeglib-8c.500387-windows-500387.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3153/7557/jpeglib-8c.503140-windows-503140.tar.bz2 name windows @@ -1514,16 +1514,16 @@ archive hash - dbc2baf28f83d1646d7e2f66ead2a1a4 + 70ed49ed2317b6dba9af1f186956ac79 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/494/1049/jpeglib-8c.500387-windows64-500387.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3154/7558/jpeglib-8c.503140-windows64-503140.tar.bz2 name windows64 version - 8c.500387 + 8c.503140 jsoncpp From 884a59a2fbc71f68b1bc28b42ebfefdb22187cb5 Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Thu, 9 Mar 2017 14:08:09 -0800 Subject: [PATCH 19/25] Second part of fix for SL-646 Fix 'LINK : warning LNK4075: ignoring /INCREMENTAL due to '/LTCG' specification' in LibVLC, JPEGLIB etc. --- indra/media_plugins/cef/CMakeLists.txt | 2 +- indra/media_plugins/libvlc/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/media_plugins/cef/CMakeLists.txt b/indra/media_plugins/cef/CMakeLists.txt index bc924eabf0..201fb44847 100644 --- a/indra/media_plugins/cef/CMakeLists.txt +++ b/indra/media_plugins/cef/CMakeLists.txt @@ -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) diff --git a/indra/media_plugins/libvlc/CMakeLists.txt b/indra/media_plugins/libvlc/CMakeLists.txt index 72159f9f69..d3e9243069 100644 --- a/indra/media_plugins/libvlc/CMakeLists.txt +++ b/indra/media_plugins/libvlc/CMakeLists.txt @@ -78,7 +78,7 @@ if (WINDOWS) set_target_properties( media_plugin_libvlc PROPERTIES - LINK_FLAGS "/MANIFEST:NO /SAFESEH:NO /LTCG /NODEFAULTLIB:LIBCMT" + LINK_FLAGS "/MANIFEST:NO /SAFESEH:NO /NODEFAULTLIB:LIBCMT" ) endif (WINDOWS) From d1ef2a72912bc43e33ca58fdbfcf2662c2b8325b Mon Sep 17 00:00:00 2001 From: "callum@lindenlab.com" Date: Thu, 9 Mar 2017 17:16:21 -0800 Subject: [PATCH 20/25] Fix for SL-658 Use build settings from viewer-build-variables repo for p64_3p-dullahan --- autobuild.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index dad308b086..c471b139c9 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -526,9 +526,9 @@ archive hash - 54bf66ec369933954a7b998fd78381f3 + 66ba275f79d3dfcb6943a9cbe5dd6d94 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3093/7325/dullahan-1.0.620_3.2704.1434.gec3e9ed-darwin64-503082.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3188/7675/dullahan-1.0.620_3.2704.1434.gec3e9ed-darwin64-503177.tar.bz2 name darwin64 @@ -538,9 +538,9 @@ archive hash - 2be9ee4ef8cd7c7152b20cbd43a09809 + fe07cd0dc8d706975850be45e3c1e752 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3094/7332/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows-503082.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3190/7682/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows-503177.tar.bz2 name windows @@ -550,9 +550,9 @@ archive hash - 9a5a9c111c317130fded8c388831aae3 + 2385864496065bac20ee35d0afddb84f url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3095/7337/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows64-503082.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3191/7687/dullahan-1.0.620_3.2704.1434.gec3e9ed-windows64-503177.tar.bz2 name windows64 From 39ebb2d093e0709b9b2bb118f04d5b382076fd98 Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Fri, 10 Mar 2017 12:20:13 -0800 Subject: [PATCH 21/25] Fix for MAINT-7047 No information about 32bit or 64bit version of 'Project Alex Ivy' viewer in non-English locales --- indra/newview/skins/default/xui/de/strings.xml | 2 +- indra/newview/skins/default/xui/es/strings.xml | 2 +- indra/newview/skins/default/xui/fr/strings.xml | 2 +- indra/newview/skins/default/xui/it/strings.xml | 2 +- indra/newview/skins/default/xui/ja/strings.xml | 2 +- indra/newview/skins/default/xui/pt/strings.xml | 2 +- indra/newview/skins/default/xui/ru/strings.xml | 2 +- indra/newview/skins/default/xui/tr/strings.xml | 2 +- indra/newview/skins/default/xui/zh/strings.xml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index d3d0423d44..de20ed88a3 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -38,7 +38,7 @@ Grafikinitialisierung fehlgeschlagen. Bitte aktualisieren Sie Ihren Grafiktreiber. - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([CHANNEL]) + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([ADDRESS_SIZE]bit) ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index a56d7d6de7..765226e6bd 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -29,7 +29,7 @@ Error de inicialización de gráficos. Actualiza tu controlador de gráficos. - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([CHANNEL]) + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([ADDRESS_SIZE]bit) ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index 10c9be0795..7c1d05bb83 100644 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -38,7 +38,7 @@ Échec d'initialisation des graphiques. Veuillez mettre votre pilote graphique à jour. - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([CHANNEL]) + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([ADDRESS_SIZE]bit) ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [Notes de version]] diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index d158cfd311..e6edfb6de4 100644 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -35,7 +35,7 @@ Inizializzazione grafica non riuscita. Aggiorna il driver della scheda grafica! - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([CHANNEL]) + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([ADDRESS_SIZE]bit) ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index b3c92dbe8d..92b62c9c2f 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -38,7 +38,7 @@ グラフィックを初期化できませんでした。グラフィックドライバを更新してください。 - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([CHANNEL]) + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([ADDRESS_SIZE]bit) ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index 0d7585a424..94b69634d4 100644 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -29,7 +29,7 @@ Falha na inicialização dos gráficos. Atualize seu driver gráfico! - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([CHANNEL]) + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([ADDRESS_SIZE]bit) ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml index 7b1dcae021..7a003b536a 100644 --- a/indra/newview/skins/default/xui/ru/strings.xml +++ b/indra/newview/skins/default/xui/ru/strings.xml @@ -38,7 +38,7 @@ Ошибка инициализации графики. Обновите графический драйвер! - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([CHANNEL]) + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([ADDRESS_SIZE]bit) ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml index dda7902e94..53b95d69dd 100644 --- a/indra/newview/skins/default/xui/tr/strings.xml +++ b/indra/newview/skins/default/xui/tr/strings.xml @@ -38,7 +38,7 @@ Grafik başlatma başarılamadı. Lütfen grafik sürücünüzü güncelleştirin! - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([CHANNEL]) + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([ADDRESS_SIZE]bit) ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml index 9e88e96284..51a108126b 100644 --- a/indra/newview/skins/default/xui/zh/strings.xml +++ b/indra/newview/skins/default/xui/zh/strings.xml @@ -38,7 +38,7 @@ 顯像初始化失敗。 請更新你的顯像卡驅動程式! - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([CHANNEL]) + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([ADDRESS_SIZE]bit) ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] From 10bcd510b59fe73bf9e948de3dce9cea6d7d8b93 Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Fri, 10 Mar 2017 15:11:44 -0800 Subject: [PATCH 22/25] MAINT-6998 [Project Alex Ivy] 64bit viewer installs to Program Files (x86) by default. --- indra/newview/installers/windows/installer_template.nsi | 2 +- indra/newview/viewer_manifest.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi index 89317f2793..42f8e0ce1f 100644 --- a/indra/newview/installers/windows/installer_template.nsi +++ b/indra/newview/installers/windows/installer_template.nsi @@ -90,7 +90,7 @@ InstProgressFlags smooth colored # New colored smooth look SetOverwrite on # Overwrite files by default AutoCloseWindow true # After all files install, close window -InstallDir "$PROGRAMFILES\${INSTNAME}" +InstallDir "%%$PROGRAMFILES%%\${INSTNAME}" InstallDirRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\${INSTNAME}" "" UninstallText $(UninstallTextMsg) DirText $(DirectoryChooseTitle) $(DirectoryChooseSetup) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 2d868c407d..1b2c502729 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -631,6 +631,11 @@ class WindowsManifest(ViewerManifest): Caption "%(caption)s" """ + if(self.args['arch'].lower() == 'x86_64'): + program_files="$PROGRAMFILES64" + else: + program_files="$PROGRAMFILES32" + tempfile = "secondlife_setup_tmp.nsi" # the following replaces strings in the nsi template # it also does python-style % substitution @@ -639,6 +644,7 @@ class WindowsManifest(ViewerManifest): "%%SOURCE%%":self.get_src_prefix(), "%%INST_VARS%%":inst_vars_template % substitution_strings, "%%INSTALL_FILES%%":self.nsi_file_commands(True), + "%%$PROGRAMFILES%%":program_files, "%%DELETE_FILES%%":self.nsi_file_commands(False)}) # We use the Unicode version of NSIS, available from From 1053c5ca407917c3bc842cbcb80786d43206c5b3 Mon Sep 17 00:00:00 2001 From: "callum@lindenlab.com" Date: Sat, 11 Mar 2017 16:15:37 -0800 Subject: [PATCH 23/25] Update: (thanks Drake) MAINT-6998 [Project Alex Ivy] 64bit viewer installs to Program Files (x86) by default. Added option to engage 32 or 64 bit registry --- indra/newview/installers/windows/installer_template.nsi | 1 + indra/newview/viewer_manifest.py | 3 +++ 2 files changed, 4 insertions(+) diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi index 42f8e0ce1f..7a135fa53c 100644 --- a/indra/newview/installers/windows/installer_template.nsi +++ b/indra/newview/installers/windows/installer_template.nsi @@ -91,6 +91,7 @@ SetOverwrite on # Overwrite files by default AutoCloseWindow true # After all files install, close window InstallDir "%%$PROGRAMFILES%%\${INSTNAME}" +%%REGISTRY%% InstallDirRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\${INSTNAME}" "" UninstallText $(UninstallTextMsg) DirText $(DirectoryChooseTitle) $(DirectoryChooseSetup) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 1b2c502729..7ea600f24a 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -632,8 +632,10 @@ class WindowsManifest(ViewerManifest): """ if(self.args['arch'].lower() == 'x86_64'): + registry="SetRegView 64" program_files="$PROGRAMFILES64" else: + registry="SetRegView 32" program_files="$PROGRAMFILES32" tempfile = "secondlife_setup_tmp.nsi" @@ -645,6 +647,7 @@ class WindowsManifest(ViewerManifest): "%%INST_VARS%%":inst_vars_template % substitution_strings, "%%INSTALL_FILES%%":self.nsi_file_commands(True), "%%$PROGRAMFILES%%":program_files, + "%%REGISTRY%%":registry, "%%DELETE_FILES%%":self.nsi_file_commands(False)}) # We use the Unicode version of NSIS, available from From 656457e79b47cf1dd7c34bee1e0ab98ec759f634 Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Sat, 11 Mar 2017 18:01:43 -0800 Subject: [PATCH 24/25] MAINT-6998 [Project Alex Ivy] 64bit viewer installs to Program Files (x86) by default. (Update: call to select registry needs to be inside a function) --- indra/newview/installers/windows/installer_template.nsi | 2 +- indra/newview/viewer_manifest.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi index 7a135fa53c..a266156a47 100644 --- a/indra/newview/installers/windows/installer_template.nsi +++ b/indra/newview/installers/windows/installer_template.nsi @@ -91,7 +91,6 @@ SetOverwrite on # Overwrite files by default AutoCloseWindow true # After all files install, close window InstallDir "%%$PROGRAMFILES%%\${INSTNAME}" -%%REGISTRY%% InstallDirRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\${INSTNAME}" "" UninstallText $(UninstallTextMsg) DirText $(DirectoryChooseTitle) $(DirectoryChooseSetup) @@ -137,6 +136,7 @@ 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 Push $0 diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 7ea600f24a..743df609aa 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -632,10 +632,10 @@ class WindowsManifest(ViewerManifest): """ if(self.args['arch'].lower() == 'x86_64'): - registry="SetRegView 64" + engage_registry="SetRegView 64" program_files="$PROGRAMFILES64" else: - registry="SetRegView 32" + engage_registry="SetRegView 32" program_files="$PROGRAMFILES32" tempfile = "secondlife_setup_tmp.nsi" @@ -647,7 +647,7 @@ class WindowsManifest(ViewerManifest): "%%INST_VARS%%":inst_vars_template % substitution_strings, "%%INSTALL_FILES%%":self.nsi_file_commands(True), "%%$PROGRAMFILES%%":program_files, - "%%REGISTRY%%":registry, + "%%ENGAGEREGISTRY%%":engage_registry, "%%DELETE_FILES%%":self.nsi_file_commands(False)}) # We use the Unicode version of NSIS, available from From 17c8eadb3d89bc78019f0b50eb8b109f25616781 Mon Sep 17 00:00:00 2001 From: Callum Prentice Date: Sun, 12 Mar 2017 10:09:34 -0700 Subject: [PATCH 25/25] MAINT-6998 [Project Alex Ivy] 64bit viewer installs to Program Files (x86) by default. (Update2: evidently the registry set call is needed on un.init() too --- indra/newview/installers/windows/installer_template.nsi | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi index a266156a47..eb07b54d8d 100644 --- a/indra/newview/installers/windows/installer_template.nsi +++ b/indra/newview/installers/windows/installer_template.nsi @@ -195,6 +195,7 @@ FunctionEnd ;; Prep Uninstaller Section ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function un.onInit +%%ENGAGEREGISTRY%% # Read language from registry and set for uninstaller. Key will be removed on successful uninstall ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\${INSTNAME}" "InstallerLanguage" IfErrors lbl_end