Merge branch 'release/2025.03' into rye/forevermac
commit
97085ed300
|
|
@ -3036,14 +3036,15 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>build</key>
|
||||
<map>
|
||||
<key>command</key>
|
||||
<string>xcodebuild</string>
|
||||
<string>cmake</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<string>-configuration</string>
|
||||
<string>--build</string>
|
||||
<string>.</string>
|
||||
<string>--config</string>
|
||||
<string>RelWithDebInfo</string>
|
||||
<string>-project</string>
|
||||
<string>SecondLife.xcodeproj</string>
|
||||
<string>-parallelizeTargets</string>
|
||||
<string>--parallel</string>
|
||||
<string>$AUTOBUILD_CPU_COUNT</string>
|
||||
</array>
|
||||
</map>
|
||||
<key>default</key>
|
||||
|
|
@ -3064,14 +3065,15 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>build</key>
|
||||
<map>
|
||||
<key>command</key>
|
||||
<string>xcodebuild</string>
|
||||
<string>cmake</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<string>-configuration</string>
|
||||
<string>--build</string>
|
||||
<string>.</string>
|
||||
<string>--config</string>
|
||||
<string>RelWithDebInfo</string>
|
||||
<string>-project</string>
|
||||
<string>SecondLife.xcodeproj</string>
|
||||
<string>-parallelizeTargets</string>
|
||||
<string>--parallel</string>
|
||||
<string>$AUTOBUILD_CPU_COUNT</string>
|
||||
</array>
|
||||
</map>
|
||||
<key>name</key>
|
||||
|
|
@ -3094,14 +3096,15 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>build</key>
|
||||
<map>
|
||||
<key>command</key>
|
||||
<string>xcodebuild</string>
|
||||
<string>cmake</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<string>-configuration</string>
|
||||
<string>--build</string>
|
||||
<string>.</string>
|
||||
<string>--config</string>
|
||||
<string>Release</string>
|
||||
<string>-project</string>
|
||||
<string>SecondLife.xcodeproj</string>
|
||||
<string>-parallelizeTargets</string>
|
||||
<string>--parallel</string>
|
||||
<string>$AUTOBUILD_CPU_COUNT</string>
|
||||
</array>
|
||||
</map>
|
||||
<key>name</key>
|
||||
|
|
@ -3120,14 +3123,15 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>build</key>
|
||||
<map>
|
||||
<key>command</key>
|
||||
<string>xcodebuild</string>
|
||||
<string>cmake</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<string>-configuration</string>
|
||||
<string>--build</string>
|
||||
<string>.</string>
|
||||
<string>--config</string>
|
||||
<string>Release</string>
|
||||
<string>-project</string>
|
||||
<string>SecondLife.xcodeproj</string>
|
||||
<string>-parallelizeTargets</string>
|
||||
<string>--parallel</string>
|
||||
<string>$AUTOBUILD_CPU_COUNT</string>
|
||||
</array>
|
||||
</map>
|
||||
<key>name</key>
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ add_compile_definitions(BOOST_BIND_GLOBAL_PLACEHOLDERS)
|
|||
|
||||
# Force enable SSE2 instructions in GLM per the manual
|
||||
# https://github.com/g-truc/glm/blob/master/manual.md#section2_10
|
||||
add_compile_definitions(GLM_FORCE_DEFAULT_ALIGNED_GENTYPES=1 GLM_ENABLE_EXPERIMENTAL=1)
|
||||
add_compile_definitions(GLM_FORCE_DEFAULT_ALIGNED_GENTYPES=1 GLM_FORCE_SSE2=1 GLM_ENABLE_EXPERIMENTAL=1)
|
||||
|
||||
# Configure crash reporting
|
||||
set(RELEASE_CRASH_REPORTING OFF CACHE BOOL "Enable use of crash reporting in release builds")
|
||||
|
|
@ -48,6 +48,11 @@ if(NON_RELEASE_CRASH_REPORTING)
|
|||
add_compile_definitions( LL_SEND_CRASH_REPORTS=1)
|
||||
endif()
|
||||
|
||||
set(USE_LTO OFF CACHE BOOL "Enable Link Time Optimization")
|
||||
if(USE_LTO)
|
||||
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)
|
||||
endif()
|
||||
|
||||
# Don't bother with a MinSizeRel or Debug builds.
|
||||
set(CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Release" CACHE STRING "Supported build types." FORCE)
|
||||
|
||||
|
|
@ -103,7 +108,7 @@ if (WINDOWS)
|
|||
|
||||
#ND: When using something like buildcache (https://github.com/mbitsnbites/buildcache)
|
||||
# to make those wrappers work /Zi must be changed to /Z7, as /Zi due to it's nature is not compatible with caching
|
||||
if( ${CMAKE_CXX_COMPILER_LAUNCHER} MATCHES ".*cache.*")
|
||||
if(${CMAKE_CXX_COMPILER_LAUNCHER} MATCHES ".*cache.*")
|
||||
add_compile_options( /Z7 )
|
||||
string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
|
||||
|
|
|
|||
|
|
@ -331,11 +331,33 @@ U32 exception_filter(U32 code, struct _EXCEPTION_POINTERS* exception_infop)
|
|||
return EXCEPTION_CONTINUE_SEARCH;
|
||||
}
|
||||
|
||||
void sehandle(const LLCoros::callable_t& callable)
|
||||
void cpphandle(const LLCoros::callable_t& callable, const std::string& name)
|
||||
{
|
||||
// SE and C++ can not coexists, thus two handlers
|
||||
try
|
||||
{
|
||||
callable();
|
||||
}
|
||||
catch (const LLCoros::Stop& exc)
|
||||
{
|
||||
LL_INFOS("LLCoros") << "coroutine " << name << " terminating because "
|
||||
<< exc.what() << LL_ENDL;
|
||||
}
|
||||
catch (const LLContinueError&)
|
||||
{
|
||||
// Any uncaught exception derived from LLContinueError will be caught
|
||||
// here and logged. This coroutine will terminate but the rest of the
|
||||
// viewer will carry on.
|
||||
LOG_UNHANDLED_EXCEPTION(STRINGIZE("coroutine " << name));
|
||||
}
|
||||
}
|
||||
|
||||
void sehandle(const LLCoros::callable_t& callable, const std::string& name)
|
||||
{
|
||||
__try
|
||||
{
|
||||
callable();
|
||||
// handle stop and continue exceptions first
|
||||
cpphandle(callable, name);
|
||||
}
|
||||
__except (exception_filter(GetExceptionCode(), GetExceptionInformation()))
|
||||
{
|
||||
|
|
@ -347,16 +369,7 @@ void sehandle(const LLCoros::callable_t& callable)
|
|||
throw std::exception(integer_string);
|
||||
}
|
||||
}
|
||||
|
||||
#else // ! LL_WINDOWS
|
||||
|
||||
inline void sehandle(const LLCoros::callable_t& callable)
|
||||
{
|
||||
callable();
|
||||
}
|
||||
|
||||
#endif // ! LL_WINDOWS
|
||||
|
||||
#endif // LL_WINDOWS
|
||||
} // anonymous namespace
|
||||
|
||||
// Top-level wrapper around caller's coroutine callable.
|
||||
|
|
@ -369,10 +382,14 @@ void LLCoros::toplevel(std::string name, callable_t callable)
|
|||
// set it as current
|
||||
mCurrent.reset(&corodata);
|
||||
|
||||
#ifdef LL_WINDOWS
|
||||
// can not use __try directly, toplevel requires unwinding, thus use of a wrapper
|
||||
sehandle(callable, name);
|
||||
#else // LL_WINDOWS
|
||||
// run the code the caller actually wants in the coroutine
|
||||
try
|
||||
{
|
||||
sehandle(callable);
|
||||
callable();
|
||||
}
|
||||
catch (const Stop& exc)
|
||||
{
|
||||
|
|
@ -386,7 +403,6 @@ void LLCoros::toplevel(std::string name, callable_t callable)
|
|||
// viewer will carry on.
|
||||
LOG_UNHANDLED_EXCEPTION(STRINGIZE("coroutine " << name));
|
||||
}
|
||||
#ifndef LL_WINDOWS
|
||||
catch (...)
|
||||
{
|
||||
// Stash any OTHER kind of uncaught exception in the rethrow() queue
|
||||
|
|
@ -395,7 +411,7 @@ void LLCoros::toplevel(std::string name, callable_t callable)
|
|||
<< name << LL_ENDL;
|
||||
LLCoros::instance().saveException(name, std::current_exception());
|
||||
}
|
||||
#endif // ! LL_WINDOWS
|
||||
#endif // else LL_WINDOWS
|
||||
}
|
||||
|
||||
//static
|
||||
|
|
|
|||
|
|
@ -24,6 +24,8 @@
|
|||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#include "linden_common.h"
|
||||
|
||||
#include "llmath.h"
|
||||
|
||||
static LL_ALIGN_16(const F32 M_IDENT_3A[12]) =
|
||||
|
|
|
|||
|
|
@ -24,6 +24,8 @@
|
|||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#include "linden_common.h"
|
||||
|
||||
#include "llmath.h"
|
||||
#include "llmatrix4a.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,8 @@
|
|||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#include "linden_common.h"
|
||||
|
||||
#include "llmath.h"
|
||||
#include "llrigginginfo.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,8 @@
|
|||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#include "linden_common.h"
|
||||
|
||||
#include "llvolumeoctree.h"
|
||||
#include "llvector4a.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
#define LL_V3COLORUTIL_H
|
||||
|
||||
#include "v3color.h"
|
||||
#include "v4color.h"
|
||||
|
||||
inline LLColor3 componentDiv(LLColor3 const &left, LLColor3 const & right)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
#include "../newview/llviewerprecompiledheaders.h"
|
||||
#include "linden_common.h"
|
||||
|
||||
#include "llflashtimer.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -31,8 +31,6 @@
|
|||
#include "llrect.h"
|
||||
#include "llcoord.h"
|
||||
#include "llcontrol.h"
|
||||
#include "llcoord.h"
|
||||
#include "llcontrol.h"
|
||||
#include "llinitparam.h"
|
||||
#include "llregistry.h"
|
||||
#include "llrender2dutils.h"
|
||||
|
|
|
|||
|
|
@ -26,8 +26,6 @@
|
|||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#define GLM_ENABLE_EXPERIMENTAL 1
|
||||
|
||||
#include "glm/vec2.hpp"
|
||||
#include "glm/vec3.hpp"
|
||||
#include "glm/vec4.hpp"
|
||||
|
|
|
|||
|
|
@ -271,6 +271,22 @@ S32 LLAvatarTracker::addBuddyList(const LLAvatarTracker::buddy_map_t& buds)
|
|||
<< "]" << LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
||||
// It's possible that the buddy list getting propagated from the inventory may have happened after we actually got the buddy list.
|
||||
// Any buddies that we got prior will reside in a special queue that we must process and update statuses accordingly with.
|
||||
// Do that here.
|
||||
// -Geenz 2025-03-12
|
||||
while (!mBuddyStatusQueue.empty())
|
||||
{
|
||||
auto buddyStatus = mBuddyStatusQueue.front();
|
||||
mBuddyStatusQueue.pop();
|
||||
|
||||
if (mBuddyInfo.find(buddyStatus.first) != mBuddyInfo.end())
|
||||
{
|
||||
setBuddyOnline(buddyStatus.first, buddyStatus.second);
|
||||
}
|
||||
}
|
||||
|
||||
// do not notify observers here - list can be large so let it be done on idle.
|
||||
|
||||
return new_buddy_count;
|
||||
|
|
@ -335,6 +351,8 @@ void LLAvatarTracker::setBuddyOnline(const LLUUID& id, bool is_online)
|
|||
{
|
||||
LL_WARNS() << "!! No buddy info found for " << id
|
||||
<< ", setting to " << (is_online ? "Online" : "Offline") << LL_ENDL;
|
||||
LL_WARNS() << "Did we receive a buddy status update before the buddy info?" << LL_ENDL;
|
||||
mBuddyStatusQueue.push(std::make_pair(id, is_online));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -706,6 +724,8 @@ void LLAvatarTracker::processNotify(LLMessageSystem* msg, bool online)
|
|||
{
|
||||
LL_WARNS() << "Received online notification for unknown buddy: "
|
||||
<< agent_id << " is " << (online ? "ONLINE" : "OFFLINE") << LL_ENDL;
|
||||
LL_WARNS() << "Adding buddy to buddy queue." << LL_ENDL;
|
||||
mBuddyStatusQueue.push(std::make_pair(agent_id, true));
|
||||
}
|
||||
|
||||
if(tracking_id == agent_id)
|
||||
|
|
|
|||
|
|
@ -109,6 +109,7 @@ public:
|
|||
// add or remove agents from buddy list. Each method takes a set
|
||||
// of buddies and returns how many were actually added or removed.
|
||||
typedef std::map<LLUUID, LLRelationship*> buddy_map_t;
|
||||
typedef std::queue<std::pair<LLUUID, bool>> buddy_status_queue_t;
|
||||
|
||||
S32 addBuddyList(const buddy_map_t& buddies);
|
||||
//S32 removeBuddyList(const buddy_list_t& exes);
|
||||
|
|
@ -194,6 +195,7 @@ protected:
|
|||
//LLInventoryObserver* mInventoryObserver;
|
||||
|
||||
buddy_map_t mBuddyInfo;
|
||||
buddy_status_queue_t mBuddyStatusQueue;
|
||||
|
||||
typedef std::set<LLUUID> changed_buddy_t;
|
||||
changed_buddy_t mChangedBuddyIDs;
|
||||
|
|
|
|||
|
|
@ -355,6 +355,18 @@ void LLGLTFMaterialList::queueApply(const LLViewerObject* obj, S32 side, const L
|
|||
}
|
||||
}
|
||||
|
||||
void LLGLTFMaterialList::queueApply(const LLViewerObject* obj, S32 side, const LLUUID& asset_id, const std::string &override_json)
|
||||
{
|
||||
if (asset_id.isNull() || override_json.empty())
|
||||
{
|
||||
queueApply(obj, side, asset_id);
|
||||
}
|
||||
else
|
||||
{
|
||||
sApplyQueue.push_back({ obj->getID(), side, asset_id, nullptr, override_json });
|
||||
}
|
||||
}
|
||||
|
||||
void LLGLTFMaterialList::queueApply(const LLViewerObject* obj, S32 side, const LLUUID& asset_id, const LLGLTFMaterial* material_override)
|
||||
{
|
||||
if (asset_id.isNull() || material_override == nullptr)
|
||||
|
|
@ -458,6 +470,10 @@ void LLGLTFMaterialList::flushUpdatesOnce(std::shared_ptr<CallbackHolder> callba
|
|||
{
|
||||
data[i]["gltf_json"] = e.override_data->asJSON();
|
||||
}
|
||||
if (!e.override_json.empty())
|
||||
{
|
||||
data[i]["gltf_json"] = e.override_json;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Clear all overrides
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@ public:
|
|||
//
|
||||
// NOTE: Implicitly clears most override data if present
|
||||
static void queueApply(const LLViewerObject* obj, S32 side, const LLUUID& asset_id);
|
||||
static void queueApply(const LLViewerObject* obj, S32 side, const LLUUID& asset_id, const std::string& override_json);
|
||||
|
||||
// Queue an application of a material asset we want to send to the simulator.
|
||||
// Call "flushUpdates" to flush pending updates immediately.
|
||||
|
|
@ -160,6 +161,7 @@ protected:
|
|||
S32 side = -1;
|
||||
LLUUID asset_id;
|
||||
LLPointer<LLGLTFMaterial> override_data;
|
||||
std::string override_json;
|
||||
};
|
||||
|
||||
typedef std::list<ApplyMaterialAssetData> apply_queue_t;
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ void LLInventoryItemsList::updateSelection()
|
|||
|
||||
for(std::vector<LLSD>::const_iterator cur_id_it = cur.begin(); cur_id_it != cur.end() && !mSelectTheseIDs.empty(); ++cur_id_it)
|
||||
{
|
||||
uuid_vec_t::iterator select_ids_it = std::find(mSelectTheseIDs.begin(), mSelectTheseIDs.end(), *cur_id_it);
|
||||
uuid_vec_t::iterator select_ids_it = std::find(mSelectTheseIDs.begin(), mSelectTheseIDs.end(), cur_id_it->asUUID());
|
||||
if(select_ids_it != mSelectTheseIDs.end())
|
||||
{
|
||||
selectItemByUUID(*select_ids_it);
|
||||
|
|
|
|||
|
|
@ -4464,21 +4464,14 @@ void LLPanelFace::onPasteTexture(LLViewerObject* objectp, S32 te)
|
|||
tep->setGLTFRenderMaterial(nullptr);
|
||||
tep->setGLTFMaterialOverride(nullptr);
|
||||
|
||||
LLSD override_data;
|
||||
override_data["object_id"] = objectp->getID();
|
||||
override_data["side"] = te;
|
||||
if (te_data["te"].has("pbr_override"))
|
||||
{
|
||||
override_data["gltf_json"] = te_data["te"]["pbr_override"];
|
||||
LLGLTFMaterialList::queueApply(objectp, te, te_data["te"]["pbr"].asUUID(), te_data["te"]["pbr_override"]);
|
||||
}
|
||||
else
|
||||
{
|
||||
override_data["gltf_json"] = "";
|
||||
LLGLTFMaterialList::queueApply(objectp, te, te_data["te"]["pbr"].asUUID());
|
||||
}
|
||||
|
||||
override_data["asset_id"] = te_data["te"]["pbr"].asUUID();
|
||||
|
||||
LLGLTFMaterialList::queueUpdate(override_data);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1714,6 +1714,15 @@ bool idle_startup()
|
|||
gAssetStorage->setUpstream(regionp->getHost());
|
||||
gCacheName->setUpstream(regionp->getHost());
|
||||
}
|
||||
|
||||
// It is entirely possible that we may get the friends list _before_ we have the callbacks registered to process that.
|
||||
// This will lead to the friends list not being processed properly and online statuses not being updated appropriately at login.
|
||||
// So, we need to make sure that we have the callbacks registered before we get the friends list.
|
||||
// This appears to crop up on some systems somewhere between STATE_AGENT_SEND and STATE_INVENTORY_SEND. It's happened to me a few times now.
|
||||
// -Geenz 2025-03-12
|
||||
LL_INFOS() << " AvatarTracker" << LL_ENDL;
|
||||
LLAvatarTracker::instance().registerCallbacks(gMessageSystem);
|
||||
|
||||
do_startup_frame();
|
||||
|
||||
// Create login effect
|
||||
|
|
@ -2013,8 +2022,6 @@ bool idle_startup()
|
|||
LLMessageSystem* msg = gMessageSystem;
|
||||
LL_INFOS() << " Inventory" << LL_ENDL;
|
||||
LLInventoryModel::registerCallbacks(msg);
|
||||
LL_INFOS() << " AvatarTracker" << LL_ENDL;
|
||||
LLAvatarTracker::instance().registerCallbacks(msg);
|
||||
LL_INFOS() << " Landmark" << LL_ENDL;
|
||||
LLLandmark::registerCallbacks(msg);
|
||||
do_startup_frame();
|
||||
|
|
|
|||
|
|
@ -29,22 +29,28 @@
|
|||
#ifndef LL_LLVIEWERPRECOMPILEDHEADERS_H
|
||||
#define LL_LLVIEWERPRECOMPILEDHEADERS_H
|
||||
|
||||
#include "llwin32headers.h"
|
||||
|
||||
// This file MUST be the first one included by each .cpp file
|
||||
// in viewer.
|
||||
// It is used to precompile headers for improved build speed.
|
||||
|
||||
#include "linden_common.h"
|
||||
|
||||
#include "llwin32headers.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <deque>
|
||||
#include <functional>
|
||||
#include <list>
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <vector>
|
||||
#include <string_view>
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
|
||||
// Library headers from llcommon project:
|
||||
#include "apply.h"
|
||||
#include "function_types.h"
|
||||
#include "indra_constants.h"
|
||||
#include "llinitparam.h"
|
||||
#include "llapp.h"
|
||||
|
|
@ -54,8 +60,10 @@
|
|||
#include "llerror.h"
|
||||
#include "llfasttimer.h"
|
||||
#include "llframetimer.h"
|
||||
#include "llinstancetracker.h"
|
||||
#include "llpointer.h"
|
||||
#include "llprocessor.h"
|
||||
#include "llrand.h"
|
||||
#include "llrefcount.h"
|
||||
#include "llsafehandle.h"
|
||||
#include "llsd.h"
|
||||
|
|
@ -65,11 +73,13 @@
|
|||
#include "llstring.h"
|
||||
#include "llsys.h"
|
||||
#include "lltimer.h"
|
||||
#include "lluuid.h"
|
||||
#include "stdtypes.h"
|
||||
#include "u64.h"
|
||||
|
||||
// Library includes from llmath project
|
||||
#include "llmath.h"
|
||||
#include "llbbox.h"
|
||||
#include "llbboxlocal.h"
|
||||
#include "llcamera.h"
|
||||
#include "llcoord.h"
|
||||
|
|
@ -77,9 +87,7 @@
|
|||
#include "llcrc.h"
|
||||
#include "llplane.h"
|
||||
#include "llquantize.h"
|
||||
#include "llrand.h"
|
||||
#include "llrect.h"
|
||||
#include "lluuid.h"
|
||||
#include "m3math.h"
|
||||
#include "m4math.h"
|
||||
#include "llquaternion.h"
|
||||
|
|
@ -91,11 +99,42 @@
|
|||
#include "v4coloru.h"
|
||||
#include "v4math.h"
|
||||
#include "xform.h"
|
||||
#include "llvector4a.h"
|
||||
#include "llmatrix4a.h"
|
||||
#include "lloctree.h"
|
||||
#include "llvolume.h"
|
||||
|
||||
// Library includes from llfilesystem project
|
||||
#include "lldir.h"
|
||||
|
||||
// Library includes from llmessage project
|
||||
#include "llassetstorage.h"
|
||||
#include "llavatarnamecache.h"
|
||||
#include "llcachename.h"
|
||||
#include "llcorehttputil.h"
|
||||
|
||||
// Library includes from llrender project
|
||||
#include "llgl.h"
|
||||
#include "llrender.h"
|
||||
|
||||
// Library includes from llrender project
|
||||
#include "llcharacter.h"
|
||||
|
||||
// Library includes from llui project
|
||||
#include "llnotifications.h"
|
||||
#include "llpanel.h"
|
||||
#include "llfloater.h"
|
||||
|
||||
#include <boost/function.hpp>
|
||||
#include <boost/signals2.hpp>
|
||||
#include <boost/unordered_set.hpp>
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include <boost/json.hpp>
|
||||
|
||||
#include "glm/glm.hpp"
|
||||
#include "glm/gtc/type_ptr.hpp"
|
||||
#include "glm/ext/quaternion_float.hpp"
|
||||
#include "glm/gtx/quaternion.hpp"
|
||||
#include "glm/gtx/matrix_decompose.hpp"
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1019,6 +1019,20 @@ class Darwin_x86_64_Manifest(ViewerManifest):
|
|||
):
|
||||
self.path2basename(relpkgdir, libfile)
|
||||
|
||||
# OpenAL dylibs
|
||||
if self.args['openal'] == 'ON':
|
||||
for libfile in (
|
||||
"libopenal.dylib",
|
||||
"libalut.dylib",
|
||||
):
|
||||
dylibs += path_optional(os.path.join(relpkgdir, libfile), libfile)
|
||||
|
||||
oldpath = os.path.join("@rpath", libfile)
|
||||
self.run_command(
|
||||
['install_name_tool', '-change', oldpath,
|
||||
'@executable_path/../Resources/%s' % libfile,
|
||||
executable])
|
||||
|
||||
# our apps
|
||||
executable_path = {}
|
||||
embedded_apps = [ (os.path.join("llplugin", "slplugin"), "SLPlugin.app") ]
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ namespace tut
|
|||
|
||||
inline void ensure_memory_matches(const void* actual, U32 actual_len, const void* expected,U32 expected_len)
|
||||
{
|
||||
ensure_memory_matches(NULL, actual, actual_len, expected, expected_len);
|
||||
ensure_memory_matches("", actual, actual_len, expected, expected_len);
|
||||
}
|
||||
|
||||
template <class T,class Q>
|
||||
|
|
|
|||
Loading…
Reference in New Issue