Merge with tip

master
callum 2011-05-13 17:09:40 -07:00
commit 889f6cc3b3
88 changed files with 4335 additions and 4382 deletions

View File

@ -2101,7 +2101,6 @@
<string>-G</string>
<string>"Visual Studio 10"</string>
<string>-DUNATTENDED:BOOL=ON</string>
<string>-DUSE_PRECOMPILED_HEADERS=ON</string>
<string>-DINSTALL_PROPRIETARY=TRUE</string>
<string>-DUSE_KDU=FALSE</string>
<string>-DFMOD=FALSE</string>
@ -2179,7 +2178,6 @@
<string>-G</string>
<string>"Visual Studio 10"</string>
<string>-DUNATTENDED:BOOL=ON</string>
<string>-DUSE_PRECOMPILED_HEADERS=ON</string>
<string>-DINSTALL_PROPRIETARY=TRUE</string>
<string>-DUSE_KDU=FALSE</string>
<string>-DFMOD=FALSE</string>
@ -2256,7 +2254,6 @@
<string>-G</string>
<string>"Visual Studio 10"</string>
<string>-DUNATTENDED:BOOL=ON</string>
<string>-DUSE_PRECOMPILED_HEADERS=ON</string>
<string>-DINSTALL_PROPRIETARY=TRUE</string>
<string>-DUSE_KDU=FALSE</string>
<string>-DFMOD=FALSE</string>

View File

@ -58,7 +58,6 @@ pre_build()
"$AUTOBUILD" configure -c $variant -- \
-DPACKAGE:BOOL=ON \
-DRELEASE_CRASH_REPORTING:BOOL=ON \
-DUSE_PRECOMPILED_HEADERS=FALSE \
-DVIEWER_CHANNEL:STRING="\"$viewer_channel\"" \
-DVIEWER_LOGIN_CHANNEL:STRING="\"$viewer_login_channel\"" \
-DGRID:STRING="\"$viewer_grid\"" \

View File

@ -35,8 +35,10 @@ endif (NOT CMAKE_BUILD_TYPE)
# For the library installation process;
# see cmake/Prebuild.cmake for the counterpart code.
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/temp)
file(WRITE ${CMAKE_BINARY_DIR}/temp/sentinel_installed "0")
if ("${CMAKE_SOURCE_DIR}/../autobuild.xml" IS_NEWER_THAN "${CMAKE_BINARY_DIR}/temp/sentinel_installed")
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/temp)
file(WRITE ${CMAKE_BINARY_DIR}/temp/sentinel_installed "0")
endif ("${CMAKE_SOURCE_DIR}/../autobuild.xml" IS_NEWER_THAN "${CMAKE_BINARY_DIR}/temp/sentinel_installed")
add_subdirectory(cmake)
add_subdirectory(${LIBS_OPEN_PREFIX}llaudio)

View File

@ -36,6 +36,13 @@ if (WINDOWS)
# Don't build DLLs.
set(BUILD_SHARED_LIBS OFF)
# for "backwards compatibility", cmake sneaks in the Zm1000 option which royally
# screws incredibuild. this hack disables it.
# for details see: http://connect.microsoft.com/VisualStudio/feedback/details/368107/clxx-fatal-error-c1027-inconsistent-values-for-ym-between-creation-and-use-of-precompiled-headers
# http://www.ogre3d.org/forums/viewtopic.php?f=2&t=60015
# http://www.cmake.org/pipermail/cmake/2009-September/032143.html
string(REPLACE "/Zm1000" " " CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Zi /MDd /MP -D_SCL_SECURE_NO_WARNINGS=1"
CACHE STRING "C++ compiler debug options" FORCE)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO

View File

@ -95,7 +95,7 @@ INCLUDE(GoogleMock)
IF(${name}_test_additional_INCLUDE_DIRS MATCHES NOTFOUND)
SET(${name}_test_additional_INCLUDE_DIRS "")
ENDIF(${name}_test_additional_INCLUDE_DIRS MATCHES NOTFOUND)
INCLUDE_DIRECTORIES(${alltest_INCLUDE_DIRS} ${name}_test_additional_INCLUDE_DIRS )
INCLUDE_DIRECTORIES(${alltest_INCLUDE_DIRS} ${${name}_test_additional_INCLUDE_DIRS} )
IF(LL_TEST_VERBOSE)
MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_additional_INCLUDE_DIRS ${${name}_test_additional_INCLUDE_DIRS}")
ENDIF(LL_TEST_VERBOSE)

View File

@ -1,35 +1,49 @@
# -*- cmake -*-
include(FindAutobuild)
if(INSTALL_PROPRIETARY)
include(FindSCP)
endif(INSTALL_PROPRIETARY)
# The use_prebuilt_binary macro handles automated installation of package
# dependencies using autobuild. The goal is that 'autobuild install' should
# only be run when we know we need to install a new package. This should be
# the case in a clean checkout, or if autobuild.xml has been updated since the
# last run (encapsulated by the file ${CMAKE_BINARY_DIR}/temp/sentinel_installed),
# or if a previous attempt to install the package has failed (the exit status
# of previous attempts is serialized in the file
# ${CMAKE_BINARY_DIR}/temp/${_binary}_installed)
macro (use_prebuilt_binary _binary)
if (NOT DEFINED STANDALONE_${_binary})
set(STANDALONE_${_binary} ${STANDALONE})
endif (NOT DEFINED STANDALONE_${_binary})
if (NOT STANDALONE_${_binary})
if(${CMAKE_BINARY_DIR}/temp/sentinel_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/${_binary}_installed)
if(INSTALL_PROPRIETARY)
include(FindSCP)
endif(INSTALL_PROPRIETARY)
if(DEBUG_PREBUILT)
message("cd ${CMAKE_SOURCE_DIR} && ${AUTOBUILD_EXECUTABLE} install
--install-dir=${AUTOBUILD_INSTALL_DIR}
--skip-license-check
${_binary} ")
endif(DEBUG_PREBUILT)
execute_process(COMMAND "${AUTOBUILD_EXECUTABLE}"
install
--install-dir=${AUTOBUILD_INSTALL_DIR}
--skip-license-check
${_binary}
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
RESULT_VARIABLE ${_binary}_installed
)
if("${${_binary}_installed}" STREQUAL "" AND EXISTS "${CMAKE_BINARY_DIR}/temp/${_binary}_installed")
file(READ ${CMAKE_BINARY_DIR}/temp/${_binary}_installed "${_binary}_installed")
if(DEBUG_PREBUILT)
message(STATUS "${_binary}_installed: \"${${_binary}_installed}\"")
endif(DEBUG_PREBUILT)
endif("${${_binary}_installed}" STREQUAL "" AND EXISTS "${CMAKE_BINARY_DIR}/temp/${_binary}_installed")
if(${CMAKE_BINARY_DIR}/temp/sentinel_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/${_binary}_installed OR NOT ${${_binary}_installed} EQUAL 0)
if(DEBUG_PREBUILT)
message("cd ${CMAKE_SOURCE_DIR} && ${AUTOBUILD_EXECUTABLE} install
--install-dir=${AUTOBUILD_INSTALL_DIR}
--skip-license-check
${_binary} ")
endif(DEBUG_PREBUILT)
execute_process(COMMAND "${AUTOBUILD_EXECUTABLE}"
install
--install-dir=${AUTOBUILD_INSTALL_DIR}
--skip-license-check
${_binary}
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
RESULT_VARIABLE ${_binary}_installed
)
file(WRITE ${CMAKE_BINARY_DIR}/temp/${_binary}_installed "${${_binary}_installed}")
else(${CMAKE_BINARY_DIR}/temp/sentinel_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/${_binary}_installed)
set(${_binary}_installed 0)
endif(${CMAKE_BINARY_DIR}/temp/sentinel_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/${_binary}_installed)
endif(${CMAKE_BINARY_DIR}/temp/sentinel_installed IS_NEWER_THAN ${CMAKE_BINARY_DIR}/temp/${_binary}_installed OR NOT ${${_binary}_installed} EQUAL 0)
if(NOT ${_binary}_installed EQUAL 0)
message(FATAL_ERROR
"Failed to download or unpack prebuilt '${_binary}'."

View File

@ -151,7 +151,7 @@ For more information, please see JIRA DEV-14943 - Cmake Linux cannot build both
endif (LINUX AND SERVER AND VIEWER)
set(USE_PRECOMPILED_HEADERS OFF CACHE BOOL "Enable use of precompiled header directives where supported.")
set(USE_PRECOMPILED_HEADERS ON CACHE BOOL "Enable use of precompiled header directives where supported.")
source_group("CMake Rules" FILES CMakeLists.txt)

View File

@ -33,6 +33,7 @@
// linden library includes
#include "llcontrol.h" // LLControlGroup
#include "lldir.h"
#include "lldiriterator.h"
#include "llerrorcontrol.h"
#include "llfloater.h"
#include "llfontfreetype.h"
@ -174,7 +175,9 @@ void export_test_floaters()
std::string delim = gDirUtilp->getDirDelimiter();
std::string xui_dir = get_xui_dir() + "en" + delim;
std::string filename;
while (gDirUtilp->getNextFileInDir(xui_dir, "floater_test_*.xml", filename))
LLDirIterator iter(xui_dir, "floater_test_*.xml");
while (iter.next(filename))
{
if (filename.find("_new.xml") != std::string::npos)
{

View File

@ -33,6 +33,7 @@
#include "llerrorcontrol.h"
#include "llfile.h"
#include "lldir.h"
#include "lldiriterator.h"
#include "llxmlnode.h"
#include "lltrans.h"
@ -55,6 +56,8 @@ typedef struct _updater_app_state {
std::string strings_dirs;
std::string strings_file;
LLDirIterator *image_dir_iter;
GtkWidget *window;
GtkWidget *progress_bar;
GtkWidget *image;
@ -115,7 +118,7 @@ bool translate_init(std::string comma_delim_path_list,
void updater_app_ui_init(void);
void updater_app_quit(UpdaterAppState *app_state);
void parse_args_and_init(int argc, char **argv, UpdaterAppState *app_state);
std::string next_image_filename(std::string& image_path);
std::string next_image_filename(std::string& image_path, LLDirIterator& iter);
void display_error(GtkWidget *parent, std::string title, std::string message);
BOOL install_package(std::string package_file, std::string destination);
BOOL spawn_viewer(UpdaterAppState *app_state);
@ -181,7 +184,7 @@ void updater_app_ui_init(UpdaterAppState *app_state)
// load the first image
app_state->image = gtk_image_new_from_file
(next_image_filename(app_state->image_dir).c_str());
(next_image_filename(app_state->image_dir, *app_state->image_dir_iter).c_str());
gtk_widget_set_size_request(app_state->image, 340, 310);
gtk_container_add(GTK_CONTAINER(frame), app_state->image);
@ -212,7 +215,7 @@ gboolean rotate_image_cb(gpointer data)
llassert(data != NULL);
app_state = (UpdaterAppState *) data;
filename = next_image_filename(app_state->image_dir);
filename = next_image_filename(app_state->image_dir, *app_state->image_dir_iter);
gdk_threads_enter();
gtk_image_set_from_file(GTK_IMAGE(app_state->image), filename.c_str());
@ -221,10 +224,10 @@ gboolean rotate_image_cb(gpointer data)
return TRUE;
}
std::string next_image_filename(std::string& image_path)
std::string next_image_filename(std::string& image_path, LLDirIterator& iter)
{
std::string image_filename;
gDirUtilp->getNextFileInDir(image_path, "/*.jpg", image_filename);
iter.next(image_filename);
return image_path + "/" + image_filename;
}
@ -748,6 +751,7 @@ void parse_args_and_init(int argc, char **argv, UpdaterAppState *app_state)
else if ((!strcmp(argv[i], "--image-dir")) && (++i < argc))
{
app_state->image_dir = argv[i];
app_state->image_dir_iter = new LLDirIterator(argv[i], "/*.jpg");
}
else if ((!strcmp(argv[i], "--dest")) && (++i < argc))
{
@ -832,6 +836,7 @@ int main(int argc, char **argv)
}
bool success = !app_state->failure;
delete app_state->image_dir_iter;
delete app_state;
return success ? 0 : 1;
}

View File

@ -24,6 +24,10 @@
* $/LicenseInfo$
*/
#include "linden_common.h"
#include "llapp.h"
#include <cstdlib>
#ifdef LL_DARWIN
@ -32,9 +36,6 @@
#include <sys/sysctl.h>
#endif
#include "linden_common.h"
#include "llapp.h"
#include "llcommon.h"
#include "llapr.h"
#include "llerrorcontrol.h"

View File

@ -27,7 +27,6 @@
#ifndef LL_LLBUTTON_H
#define LL_LLBUTTON_H
#include "lluuid.h"
#include "llcontrol.h"
#include "lluictrl.h"
#include "v4color.h"
@ -53,6 +52,8 @@ S32 round_up(S32 grid, S32 value);
class LLUICtrlFactory;
class LLUIImage;
class LLUUID;
//
// Classes

View File

@ -27,14 +27,9 @@
#define LLFLOATERREG_H
/// llcommon
#include "llboost.h"
#include "llrect.h"
#include "llstl.h"
#include "llsd.h"
/// llui
#include "lluictrl.h"
#include <boost/function.hpp>
//*******************************************************
@ -43,6 +38,7 @@
//
class LLFloater;
class LLUICtrl;
typedef boost::function<LLFloater* (const LLSD& key)> LLFloaterBuildFunc;

View File

@ -113,6 +113,16 @@ boost::signals2::connection LLFocusableElement::setTopLostCallback(const focus_s
typedef std::list<LLHandle<LLView> > view_handle_list_t;
typedef std::map<LLHandle<LLView>, LLHandle<LLView> > focus_history_map_t;
struct LLFocusMgr::Impl
{
// caching list of keyboard focus ancestors for calling onFocusReceived and onFocusLost
view_handle_list_t mCachedKeyboardFocusList;
focus_history_map_t mFocusHistory;
};
LLFocusMgr gFocusMgr;
LLFocusMgr::LLFocusMgr()
@ -123,10 +133,17 @@ LLFocusMgr::LLFocusMgr()
mDefaultKeyboardFocus( NULL ),
mKeystrokesOnly(FALSE),
mTopCtrl( NULL ),
mAppHasFocus(TRUE) // Macs don't seem to notify us that we've gotten focus, so default to true
mAppHasFocus(TRUE), // Macs don't seem to notify us that we've gotten focus, so default to true
mImpl(new LLFocusMgr::Impl)
{
}
LLFocusMgr::~LLFocusMgr()
{
mImpl->mFocusHistory.clear();
delete mImpl;
mImpl = NULL;
}
void LLFocusMgr::releaseFocusIfNeeded( LLView* view )
{
@ -179,7 +196,7 @@ void LLFocusMgr::setKeyboardFocus(LLFocusableElement* new_focus, BOOL lock, BOOL
mKeyboardFocus = new_focus;
// list of the focus and it's ancestors
view_handle_list_t old_focus_list = mCachedKeyboardFocusList;
view_handle_list_t old_focus_list = mImpl->mCachedKeyboardFocusList;
view_handle_list_t new_focus_list;
// walk up the tree to root and add all views to the new_focus_list
@ -206,7 +223,7 @@ void LLFocusMgr::setKeyboardFocus(LLFocusableElement* new_focus, BOOL lock, BOOL
LLView* old_focus_view = old_focus_iter->get();
if (old_focus_view)
{
mCachedKeyboardFocusList.pop_front();
mImpl->mCachedKeyboardFocusList.pop_front();
old_focus_view->onFocusLost();
}
}
@ -219,7 +236,7 @@ void LLFocusMgr::setKeyboardFocus(LLFocusableElement* new_focus, BOOL lock, BOOL
LLView* new_focus_view = new_focus_riter->get();
if (new_focus_view)
{
mCachedKeyboardFocusList.push_front(new_focus_view->getHandle());
mImpl->mCachedKeyboardFocusList.push_front(new_focus_view->getHandle());
new_focus_view->onFocusReceived();
}
}
@ -254,7 +271,7 @@ void LLFocusMgr::setKeyboardFocus(LLFocusableElement* new_focus, BOOL lock, BOOL
if (focus_subtree)
{
LLView* focused_view = dynamic_cast<LLView*>(mKeyboardFocus);
mFocusHistory[focus_subtree->getHandle()] = focused_view ? focused_view->getHandle() : LLHandle<LLView>();
mImpl->mFocusHistory[focus_subtree->getHandle()] = focused_view ? focused_view->getHandle() : LLHandle<LLView>();
}
}
@ -456,8 +473,8 @@ LLUICtrl* LLFocusMgr::getLastFocusForGroup(LLView* subtree_root) const
{
if (subtree_root)
{
focus_history_map_t::const_iterator found_it = mFocusHistory.find(subtree_root->getHandle());
if (found_it != mFocusHistory.end())
focus_history_map_t::const_iterator found_it = mImpl->mFocusHistory.find(subtree_root->getHandle());
if (found_it != mImpl->mFocusHistory.end())
{
// found last focus for this subtree
return static_cast<LLUICtrl*>(found_it->second.get());
@ -470,6 +487,6 @@ void LLFocusMgr::clearLastFocusForGroup(LLView* subtree_root)
{
if (subtree_root)
{
mFocusHistory.erase(subtree_root->getHandle());
mImpl->mFocusHistory.erase(subtree_root->getHandle());
}
}

View File

@ -74,7 +74,7 @@ class LLFocusMgr
{
public:
LLFocusMgr();
~LLFocusMgr() { mFocusHistory.clear(); }
~LLFocusMgr();
// Mouse Captor
void setMouseCapture(LLMouseHandler* new_captor); // new_captor = NULL to release the mouse.
@ -120,6 +120,8 @@ public:
bool keyboardFocusHasAccelerators() const;
struct Impl;
private:
LLUICtrl* mLockedView;
@ -132,10 +134,6 @@ private:
LLFocusableElement* mDefaultKeyboardFocus;
BOOL mKeystrokesOnly;
// caching list of keyboard focus ancestors for calling onFocusReceived and onFocusLost
typedef std::list<LLHandle<LLView> > view_handle_list_t;
view_handle_list_t mCachedKeyboardFocusList;
// Top View
LLUICtrl* mTopCtrl;
@ -143,8 +141,7 @@ private:
BOOL mAppHasFocus;
typedef std::map<LLHandle<LLView>, LLHandle<LLView> > focus_history_map_t;
focus_history_map_t mFocusHistory;
Impl * mImpl;
};
extern LLFocusMgr gFocusMgr;

View File

@ -30,6 +30,7 @@
#include "lluuid.h"
#include "v4color.h"
#include "lluictrl.h"
#include "lluiimage.h"
#include "stdenums.h"
class LLTextBox;

View File

@ -41,6 +41,7 @@
#include "lleditmenuhandler.h"
#include "lluictrl.h"
#include "lluiimage.h"
#include "lluistring.h"
#include "llviewborder.h"

View File

@ -28,6 +28,7 @@
#define LL_LLLOADINGINDICATOR_H
#include "lluictrl.h"
#include "lluiimage.h"
///////////////////////////////////////////////////////////////////////////////
// class LLLoadingIndicator

View File

@ -35,6 +35,7 @@
#include "llkeyboard.h" // for the MASK constants
#include "llcontrol.h"
#include "lluictrlfactory.h"
#include "lluiimage.h"
#include <sstream>

View File

@ -32,6 +32,7 @@
#include "llcallbackmap.h"
#include "lluictrl.h"
#include "llviewborder.h"
#include "lluiimage.h"
#include "lluistring.h"
#include "v4color.h"
#include <list>

View File

@ -38,6 +38,7 @@
#include "llfocusmgr.h"
#include "lluictrlfactory.h"
#include "lluiimage.h"
static LLDefaultChildRegistry::Register<LLProgressBar> r("progress_bar");

View File

@ -27,8 +27,9 @@
#ifndef LL_LLPROGRESSBAR_H
#define LL_LLPROGRESSBAR_H
#include "lluictrl.h"
#include "llframetimer.h"
#include "lluictrl.h"
#include "lluiimage.h"
class LLProgressBar
: public LLUICtrl

View File

@ -29,6 +29,7 @@
#include "llf32uictrl.h"
#include "v4color.h"
#include "lluiimage.h"
class LLSlider : public LLF32UICtrl
{

View File

@ -88,7 +88,7 @@ void LLStyle::setVisible(BOOL is_visible)
mVisible = is_visible;
}
LLUIImagePtr LLStyle::getImage() const
LLPointer<LLUIImage> LLStyle::getImage() const
{
return mImagep;
}

View File

@ -30,6 +30,7 @@
#include "v4color.h"
#include "llui.h"
#include "llinitparam.h"
#include "lluiimage.h"
class LLFontGL;
@ -72,7 +73,7 @@ public:
void setLinkHREF(const std::string& href);
BOOL isLink() const;
LLUIImagePtr getImage() const;
LLPointer<LLUIImage> getImage() const;
void setImage(const LLUUID& src);
void setImage(const std::string& name);
@ -108,7 +109,7 @@ private:
const LLFontGL* mFont;
std::string mLink;
bool mIsLink;
LLUIImagePtr mImagep;
LLPointer<LLUIImage> mImagep;
};
typedef LLPointer<LLStyle> LLStyleSP;

View File

@ -26,10 +26,11 @@
#include "linden_common.h"
#include "lltransutil.h"
#include "lltrans.h"
#include "lluictrlfactory.h"
#include "lltransutil.h"
#include "llxmlnode.h"
bool LLTransUtil::parseStrings(const std::string& xml_filename, const std::set<std::string>& default_args)

View File

@ -33,15 +33,12 @@
#include "llrect.h"
#include "llcontrol.h"
#include "llcoord.h"
#include "lluiimage.h" // *TODO: break this dependency, need to add #include "lluiimage.h" to all widgets that hold an Optional<LLUIImage*> in their paramblocks
#include "llinitparam.h"
#include "llregistry.h"
#include "lluicolor.h"
#include "lluicolortable.h"
#include <boost/signals2.hpp>
#include "lllazyvalue.h"
#include "llhandle.h" // *TODO: remove this dependency, added as a
// convenience when LLHandle moved to llhandle.h
#include "llframetimer.h"
// LLUIFactory
@ -265,8 +262,6 @@ private:
// Moved LLLocalClipRect to lllocalcliprect.h
// Moved all LLHandle-related code to llhandle.h
//RN: maybe this needs to moved elsewhere?
class LLImageProviderInterface
{

View File

@ -34,6 +34,7 @@
#include "stdtypes.h"
#include "llcoord.h"
#include "llfontgl.h"
#include "llhandle.h"
#include "llmortician.h"
#include "llmousehandler.h"
#include "llstring.h"

View File

@ -28,6 +28,7 @@
#include "llrender.h"
#include "llfocusmgr.h"
#include "lluictrlfactory.h"
#include "lluiimage.h"
static LLDefaultChildRegistry::Register<LLViewBorder> r("view_border");

View File

@ -29,6 +29,7 @@
#include "lluictrl.h"
#include "llnotifications.h"
#include "lluiimage.h"
class LLWindowShade : public LLUICtrl
{

View File

@ -12,6 +12,7 @@ include_directories(
set(llvfs_SOURCE_FILES
lldir.cpp
lldiriterator.cpp
lllfsthread.cpp
llpidlock.cpp
llvfile.cpp
@ -24,6 +25,7 @@ set(llvfs_HEADER_FILES
lldir.h
lldirguard.h
lldiriterator.h
lllfsthread.h
llpidlock.h
llvfile.h
@ -60,6 +62,11 @@ list(APPEND llvfs_SOURCE_FILES ${llvfs_HEADER_FILES})
add_library (llvfs ${llvfs_SOURCE_FILES})
target_link_libraries(llvfs
${BOOST_FILESYSTEM_LIBRARY}
${BOOST_SYSTEM_LIBRARY}
)
if (DARWIN)
include(CMakeFindFrameworks)
find_library(CARBON_LIBRARY Carbon)

View File

@ -40,6 +40,8 @@
#include "lltimer.h" // ms_sleep()
#include "lluuid.h"
#include "lldiriterator.h"
#if LL_WINDOWS
#include "lldir_win32.h"
LLDir_Win32 gDirUtil;
@ -83,7 +85,9 @@ S32 LLDir::deleteFilesInDir(const std::string &dirname, const std::string &mask)
std::string filename;
std::string fullpath;
S32 result;
while (getNextFileInDir(dirname, mask, filename))
LLDirIterator iter(dirname, mask);
while (iter.next(filename))
{
fullpath = dirname;
fullpath += getDirDelimiter();

View File

@ -75,31 +75,6 @@ class LLDir
// pure virtual functions
virtual U32 countFilesInDir(const std::string &dirname, const std::string &mask) = 0;
/// Walk the files in a directory, with file pattern matching
virtual BOOL getNextFileInDir(const std::string& dirname, ///< directory path - must end in trailing slash!
const std::string& mask, ///< file pattern string (use "*" for all)
std::string& fname ///< output: found file name
) = 0;
/**<
* @returns true if a file was found, false if the entire directory has been scanned.
*
* @note that this function is NOT thread safe
*
* This function may not be used to scan part of a directory, then start a new search of a different
* directory, and then restart the first search where it left off; the entire search must run to
* completion or be abandoned - there is no restart.
*
* @bug: See http://jira.secondlife.com/browse/VWR-23697
* and/or the tests in test/lldir_test.cpp
* This is known to fail with patterns that have both:
* a wildcard left of a . and more than one sequential ? right of a .
* the pattern foo.??x appears to work
* but *.??x or foo?.??x do not
*
* @todo this really should be rewritten as an iterator object, and the
* filtering should be done in a platform-independent way.
*/
virtual std::string getCurPath() = 0;
virtual BOOL fileExists(const std::string &filename) const = 0;

View File

@ -242,68 +242,6 @@ U32 LLDir_Linux::countFilesInDir(const std::string &dirname, const std::string &
return (file_count);
}
// get the next file in the directory
BOOL LLDir_Linux::getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname)
{
glob_t g;
BOOL result = FALSE;
fname = "";
if(!(dirname == mCurrentDir))
{
// different dir specified, close old search
mCurrentDirIndex = -1;
mCurrentDirCount = -1;
mCurrentDir = dirname;
}
std::string tmp_str;
tmp_str = dirname;
tmp_str += mask;
if(glob(tmp_str.c_str(), GLOB_NOSORT, NULL, &g) == 0)
{
if(g.gl_pathc > 0)
{
if((int)g.gl_pathc != mCurrentDirCount)
{
// Number of matches has changed since the last search, meaning a file has been added or deleted.
// Reset the index.
mCurrentDirIndex = -1;
mCurrentDirCount = g.gl_pathc;
}
mCurrentDirIndex++;
if(mCurrentDirIndex < (int)g.gl_pathc)
{
// llinfos << "getNextFileInDir: returning number " << mCurrentDirIndex << ", path is " << g.gl_pathv[mCurrentDirIndex] << llendl;
// The API wants just the filename, not the full path.
//fname = g.gl_pathv[mCurrentDirIndex];
char *s = strrchr(g.gl_pathv[mCurrentDirIndex], '/');
if(s == NULL)
s = g.gl_pathv[mCurrentDirIndex];
else if(s[0] == '/')
s++;
fname = s;
result = TRUE;
}
}
globfree(&g);
}
return(result);
}
std::string LLDir_Linux::getCurPath()
{
char tmp_str[LL_MAX_PATH]; /* Flawfinder: ignore */

View File

@ -47,7 +47,6 @@ public:
virtual std::string getCurPath();
virtual U32 countFilesInDir(const std::string &dirname, const std::string &mask);
virtual BOOL getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname);
/*virtual*/ BOOL fileExists(const std::string &filename) const;
/*virtual*/ std::string getLLPluginLauncher();

View File

@ -258,67 +258,6 @@ U32 LLDir_Mac::countFilesInDir(const std::string &dirname, const std::string &ma
return (file_count);
}
// get the next file in the directory
BOOL LLDir_Mac::getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname)
{
glob_t g;
BOOL result = FALSE;
fname = "";
if(!(dirname == mCurrentDir))
{
// different dir specified, close old search
mCurrentDirIndex = -1;
mCurrentDirCount = -1;
mCurrentDir = dirname;
}
std::string tmp_str;
tmp_str = dirname;
tmp_str += mask;
if(glob(tmp_str.c_str(), GLOB_NOSORT, NULL, &g) == 0)
{
if(g.gl_pathc > 0)
{
if(g.gl_pathc != mCurrentDirCount)
{
// Number of matches has changed since the last search, meaning a file has been added or deleted.
// Reset the index.
mCurrentDirIndex = -1;
mCurrentDirCount = g.gl_pathc;
}
mCurrentDirIndex++;
if(mCurrentDirIndex < g.gl_pathc)
{
// llinfos << "getNextFileInDir: returning number " << mCurrentDirIndex << ", path is " << g.gl_pathv[mCurrentDirIndex] << llendl;
// The API wants just the filename, not the full path.
//fname = g.gl_pathv[mCurrentDirIndex];
char *s = strrchr(g.gl_pathv[mCurrentDirIndex], '/');
if(s == NULL)
s = g.gl_pathv[mCurrentDirIndex];
else if(s[0] == '/')
s++;
fname = s;
result = TRUE;
}
}
globfree(&g);
}
return(result);
}
S32 LLDir_Mac::deleteFilesInDir(const std::string &dirname, const std::string &mask)
{
glob_t g;

View File

@ -47,7 +47,6 @@ public:
virtual S32 deleteFilesInDir(const std::string &dirname, const std::string &mask);
virtual std::string getCurPath();
virtual U32 countFilesInDir(const std::string &dirname, const std::string &mask);
virtual BOOL getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname);
virtual BOOL fileExists(const std::string &filename) const;
/*virtual*/ std::string getLLPluginLauncher();

View File

@ -260,68 +260,6 @@ U32 LLDir_Solaris::countFilesInDir(const std::string &dirname, const std::string
return (file_count);
}
// get the next file in the directory
BOOL LLDir_Solaris::getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname)
{
glob_t g;
BOOL result = FALSE;
fname = "";
if(!(dirname == mCurrentDir))
{
// different dir specified, close old search
mCurrentDirIndex = -1;
mCurrentDirCount = -1;
mCurrentDir = dirname;
}
std::string tmp_str;
tmp_str = dirname;
tmp_str += mask;
if(glob(tmp_str.c_str(), GLOB_NOSORT, NULL, &g) == 0)
{
if(g.gl_pathc > 0)
{
if((int)g.gl_pathc != mCurrentDirCount)
{
// Number of matches has changed since the last search, meaning a file has been added or deleted.
// Reset the index.
mCurrentDirIndex = -1;
mCurrentDirCount = g.gl_pathc;
}
mCurrentDirIndex++;
if(mCurrentDirIndex < (int)g.gl_pathc)
{
// llinfos << "getNextFileInDir: returning number " << mCurrentDirIndex << ", path is " << g.gl_pathv[mCurrentDirIndex] << llendl;
// The API wants just the filename, not the full path.
//fname = g.gl_pathv[mCurrentDirIndex];
char *s = strrchr(g.gl_pathv[mCurrentDirIndex], '/');
if(s == NULL)
s = g.gl_pathv[mCurrentDirIndex];
else if(s[0] == '/')
s++;
fname = s;
result = TRUE;
}
}
globfree(&g);
}
return(result);
}
std::string LLDir_Solaris::getCurPath()
{
char tmp_str[LL_MAX_PATH]; /* Flawfinder: ignore */

View File

@ -47,7 +47,6 @@ public:
virtual std::string getCurPath();
virtual U32 countFilesInDir(const std::string &dirname, const std::string &mask);
virtual BOOL getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname);
/*virtual*/ BOOL fileExists(const std::string &filename) const;
private:

View File

@ -240,67 +240,6 @@ U32 LLDir_Win32::countFilesInDir(const std::string &dirname, const std::string &
return (file_count);
}
// get the next file in the directory
BOOL LLDir_Win32::getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname)
{
BOOL fileFound = FALSE;
fname = "";
WIN32_FIND_DATAW FileData;
llutf16string pathname = utf8str_to_utf16str(dirname) + utf8str_to_utf16str(mask);
if (pathname != mCurrentDir)
{
// different dir specified, close old search
if (!mCurrentDir.empty())
{
FindClose(mDirSearch_h);
}
mCurrentDir = pathname;
// and open new one
// Check error opening Directory structure
if ((mDirSearch_h = FindFirstFile(pathname.c_str(), &FileData)) != INVALID_HANDLE_VALUE)
{
fileFound = TRUE;
}
}
// Loop to skip over the current (.) and parent (..) directory entries
// (apparently returned in Win7 but not XP)
do
{
if ( fileFound
&& ( (lstrcmp(FileData.cFileName, (LPCTSTR)TEXT(".")) == 0)
||(lstrcmp(FileData.cFileName, (LPCTSTR)TEXT("..")) == 0)
)
)
{
fileFound = FALSE;
}
} while ( mDirSearch_h != INVALID_HANDLE_VALUE
&& !fileFound
&& (fileFound = FindNextFile(mDirSearch_h, &FileData)
)
);
if (!fileFound && GetLastError() == ERROR_NO_MORE_FILES)
{
// No more files, so reset to beginning of directory
FindClose(mDirSearch_h);
mCurrentDir[0] = '\000';
}
if (fileFound)
{
// convert from TCHAR to char
fname = utf16str_to_utf8str(FileData.cFileName);
}
return fileFound;
}
std::string LLDir_Win32::getCurPath()
{
WCHAR w_str[MAX_PATH];

View File

@ -44,15 +44,12 @@ public:
/*virtual*/ std::string getCurPath();
/*virtual*/ U32 countFilesInDir(const std::string &dirname, const std::string &mask);
/*virtual*/ BOOL getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname);
/*virtual*/ BOOL fileExists(const std::string &filename) const;
/*virtual*/ std::string getLLPluginLauncher();
/*virtual*/ std::string getLLPluginFilename(std::string base_name);
private:
BOOL getNextFileInDir(const llutf16string &dirname, const std::string &mask, std::string &fname);
void* mDirSearch_h;
llutf16string mCurrentDir;
};

View File

@ -28,6 +28,7 @@
#include "linden_common.h"
#include "../lldir.h"
#include "../lldiriterator.h"
#include "../test/lltut.h"
@ -259,13 +260,12 @@ namespace tut
std::string makeTestFile( const std::string& dir, const std::string& file )
{
std::string delim = gDirUtilp->getDirDelimiter();
std::string path = dir + delim + file;
std::string path = dir + file;
LLFILE* handle = LLFile::fopen( path, "w" );
ensure("failed to open test file '"+path+"'", handle != NULL );
// Harbison & Steele, 4th ed., p. 366: "If an error occurs, fputs
// returns EOF; otherwise, it returns some other, nonnegative value."
ensure("failed to write to test file '"+path+"'", fputs("test file", handle) >= 0);
ensure("failed to write to test file '"+path+"'", EOF != fputs("test file", handle) );
fclose(handle);
return path;
}
@ -290,7 +290,7 @@ namespace tut
}
static const char* DirScanFilename[5] = { "file1.abc", "file2.abc", "file1.xyz", "file2.xyz", "file1.mno" };
void scanTest(const std::string& directory, const std::string& pattern, bool correctResult[5])
{
@ -300,7 +300,8 @@ namespace tut
bool filesFound[5] = { false, false, false, false, false };
//std::cerr << "searching '"+directory+"' for '"+pattern+"'\n";
while ( found <= 5 && gDirUtilp->getNextFileInDir(directory, pattern, scanResult) )
LLDirIterator iter(directory, pattern);
while ( found <= 5 && iter.next(scanResult) )
{
found++;
//std::cerr << " found '"+scanResult+"'\n";
@ -334,15 +335,15 @@ namespace tut
template<> template<>
void LLDirTest_object_t::test<5>()
// getNextFileInDir
// LLDirIterator::next
{
std::string delim = gDirUtilp->getDirDelimiter();
std::string dirTemp = LLFile::tmpdir();
// Create the same 5 file names of the two directories
std::string dir1 = makeTestDir(dirTemp + "getNextFileInDir");
std::string dir2 = makeTestDir(dirTemp + "getNextFileInDir");
std::string dir1 = makeTestDir(dirTemp + "LLDirIterator");
std::string dir2 = makeTestDir(dirTemp + "LLDirIterator");
std::string dir1files[5];
std::string dir2files[5];
for (int i=0; i<5; i++)
@ -380,19 +381,17 @@ namespace tut
scanTest(dir2, "file?.x?z", expected7);
// Scan dir2 and see if any file?.??c files are found
// THESE FAIL ON Mac and Windows, SO ARE COMMENTED OUT FOR NOW
// bool expected8[5] = { true, true, false, false, false };
// scanTest(dir2, "file?.??c", expected8);
// scanTest(dir2, "*.??c", expected8);
bool expected8[5] = { true, true, false, false, false };
scanTest(dir2, "file?.??c", expected8);
scanTest(dir2, "*.??c", expected8);
// Scan dir1 and see if any *.?n? files are found
bool expected9[5] = { false, false, false, false, true };
scanTest(dir1, "*.?n?", expected9);
// Scan dir1 and see if any *.???? files are found
// THIS ONE FAILS ON WINDOWS (returns three charater suffixes) SO IS COMMENTED OUT FOR NOW
// bool expected10[5] = { false, false, false, false, false };
// scanTest(dir1, "*.????", expected10);
bool expected10[5] = { false, false, false, false, false };
scanTest(dir1, "*.????", expected10);
// Scan dir1 and see if any ?????.* files are found
bool expected11[5] = { true, true, true, true, true };
@ -402,6 +401,15 @@ namespace tut
bool expected12[5] = { false, false, true, true, false };
scanTest(dir1, "??l??.xyz", expected12);
bool expected13[5] = { true, false, true, false, false };
scanTest(dir1, "file1.{abc,xyz}", expected13);
bool expected14[5] = { true, true, false, false, false };
scanTest(dir1, "file[0-9].abc", expected14);
bool expected15[5] = { true, true, false, false, false };
scanTest(dir1, "file[!a-z].abc", expected15);
// clean up all test files and directories
for (int i=0; i<5; i++)
{

View File

@ -30,6 +30,7 @@
#include "llfasttimer.h" // for call count statistics
#include "llxuiparser.h"
#include "llxmlnode.h"
#include <map>

View File

@ -29,8 +29,10 @@
#include <map>
#include "llpointer.h"
#include "llstring.h"
#include "llxmlnode.h"
class LLXMLNode;
/**
* @brief String template loaded from strings.xml
@ -61,9 +63,9 @@ public:
* @param default_args Set of strings (expected to be in the file) to use as default replacement args, e.g. "SECOND_LIFE"
* @returns true if the file was parsed successfully, true if something went wrong
*/
static bool parseStrings(LLXMLNodePtr& root, const std::set<std::string>& default_args);
static bool parseStrings(LLPointer<LLXMLNode> & root, const std::set<std::string>& default_args);
static bool parseLanguageStrings(LLXMLNodePtr &root);
static bool parseLanguageStrings(LLPointer<LLXMLNode> & root);
/**
* @brief Returns a translated string

View File

@ -28,7 +28,6 @@
#define LLXUIPARSER_H
#include "llinitparam.h"
#include "llfasttimer.h"
#include "llregistry.h"
#include "llpointer.h"
@ -95,6 +94,7 @@ public:
};
class LLXUIParserImpl;
class LLXUIParser : public LLInitParam::Parser
{
@ -176,6 +176,7 @@ private:
// ordering of child elements from base file to localized diff file. Then we can use a pair
// of coroutines to perform matching of xml nodes during parsing. Not sure if the overhead
// of coroutines would offset the gain from SAX parsing
class LLSimpleXUIParserImpl;
class LLSimpleXUIParser : public LLInitParam::Parser
{

View File

@ -25,10 +25,12 @@
*/
#include "llviewerprecompiledheaders.h"
#include "llagent.h"
#include "pipeline.h"
#include "llagentaccess.h"
#include "llagentcamera.h"
#include "llagentlistener.h"
#include "llagentwearables.h"
@ -36,6 +38,7 @@
#include "llanimationstates.h"
#include "llbottomtray.h"
#include "llcallingcard.h"
#include "llcapabilitylistener.h"
#include "llchannelmanager.h"
#include "llconsole.h"
#include "llfirstuse.h"
@ -55,8 +58,10 @@
#include "llpaneltopinfobar.h"
#include "llparcel.h"
#include "llrendersphere.h"
#include "llsdmessage.h"
#include "llsdutil.h"
#include "llsky.h"
#include "llslurl.h"
#include "llsmoothstep.h"
#include "llstartup.h"
#include "llstatusbar.h"
@ -74,6 +79,7 @@
#include "llviewerobjectlist.h"
#include "llviewerparcelmgr.h"
#include "llviewerstats.h"
#include "llviewerwindow.h"
#include "llvoavatarself.h"
#include "llwindow.h"
#include "llworld.h"
@ -172,7 +178,8 @@ LLAgent::LLAgent() :
mbRunning(false),
mbTeleportKeepsLookAt(false),
mAgentAccess(gSavedSettings),
mAgentAccess(new LLAgentAccess(gSavedSettings)),
mTeleportSourceSLURL(new LLSLURL),
mTeleportState( TELEPORT_NONE ),
mRegionp(NULL),
@ -209,7 +216,7 @@ LLAgent::LLAgent() :
mAutoPilotFinishedCallback(NULL),
mAutoPilotCallbackData(NULL),
mEffectColor(LLColor4(0.f, 1.f, 1.f, 1.f)),
mEffectColor(new LLUIColor(LLColor4(0.f, 1.f, 1.f, 1.f))),
mHaveHomePosition(FALSE),
mHomeRegionHandle( 0 ),
@ -251,7 +258,7 @@ void LLAgent::init()
setFlying( gSavedSettings.getBOOL("FlyingAtExit") );
mEffectColor = LLUIColorTable::instance().getColor("EffectColor");
*mEffectColor = LLUIColorTable::instance().getColor("EffectColor");
gSavedSettings.getControl("PreferredMaturity")->getValidateSignal()->connect(boost::bind(&LLAgent::validateMaturity, this, _2));
gSavedSettings.getControl("PreferredMaturity")->getSignal()->connect(boost::bind(&LLAgent::handleMaturity, this, _2));
@ -275,9 +282,16 @@ LLAgent::~LLAgent()
cleanup();
delete mMouselookModeInSignal;
mMouselookModeInSignal = NULL;
delete mMouselookModeOutSignal;
mMouselookModeOutSignal = NULL;
// *Note: this is where LLViewerCamera::getInstance() used to be deleted.
delete mAgentAccess;
mAgentAccess = NULL;
delete mEffectColor;
mEffectColor = NULL;
delete mTeleportSourceSLURL;
mTeleportSourceSLURL = NULL;
}
// Handle any actions that need to be performed when the main app gains focus
@ -2142,32 +2156,32 @@ void LLAgent::onAnimStop(const LLUUID& id)
bool LLAgent::isGodlike() const
{
return mAgentAccess.isGodlike();
return mAgentAccess->isGodlike();
}
bool LLAgent::isGodlikeWithoutAdminMenuFakery() const
{
return mAgentAccess.isGodlikeWithoutAdminMenuFakery();
return mAgentAccess->isGodlikeWithoutAdminMenuFakery();
}
U8 LLAgent::getGodLevel() const
{
return mAgentAccess.getGodLevel();
return mAgentAccess->getGodLevel();
}
bool LLAgent::wantsPGOnly() const
{
return mAgentAccess.wantsPGOnly();
return mAgentAccess->wantsPGOnly();
}
bool LLAgent::canAccessMature() const
{
return mAgentAccess.canAccessMature();
return mAgentAccess->canAccessMature();
}
bool LLAgent::canAccessAdult() const
{
return mAgentAccess.canAccessAdult();
return mAgentAccess->canAccessAdult();
}
bool LLAgent::canAccessMaturityInRegion( U64 region_handle ) const
@ -2202,37 +2216,37 @@ bool LLAgent::canAccessMaturityAtGlobal( LLVector3d pos_global ) const
bool LLAgent::prefersPG() const
{
return mAgentAccess.prefersPG();
return mAgentAccess->prefersPG();
}
bool LLAgent::prefersMature() const
{
return mAgentAccess.prefersMature();
return mAgentAccess->prefersMature();
}
bool LLAgent::prefersAdult() const
{
return mAgentAccess.prefersAdult();
return mAgentAccess->prefersAdult();
}
bool LLAgent::isTeen() const
{
return mAgentAccess.isTeen();
return mAgentAccess->isTeen();
}
bool LLAgent::isMature() const
{
return mAgentAccess.isMature();
return mAgentAccess->isMature();
}
bool LLAgent::isAdult() const
{
return mAgentAccess.isAdult();
return mAgentAccess->isAdult();
}
void LLAgent::setTeen(bool teen)
{
mAgentAccess.setTeen(teen);
mAgentAccess->setTeen(teen);
}
//static
@ -2277,37 +2291,37 @@ bool LLAgent::sendMaturityPreferenceToServer(int preferredMaturity)
BOOL LLAgent::getAdminOverride() const
{
return mAgentAccess.getAdminOverride();
return mAgentAccess->getAdminOverride();
}
void LLAgent::setMaturity(char text)
{
mAgentAccess.setMaturity(text);
mAgentAccess->setMaturity(text);
}
void LLAgent::setAdminOverride(BOOL b)
{
mAgentAccess.setAdminOverride(b);
mAgentAccess->setAdminOverride(b);
}
void LLAgent::setGodLevel(U8 god_level)
{
mAgentAccess.setGodLevel(god_level);
mAgentAccess->setGodLevel(god_level);
}
void LLAgent::setAOTransition()
{
mAgentAccess.setTransition();
mAgentAccess->setTransition();
}
const LLAgentAccess& LLAgent::getAgentAccess()
{
return mAgentAccess;
return *mAgentAccess;
}
bool LLAgent::validateMaturity(const LLSD& newvalue)
{
return mAgentAccess.canSetMaturity(newvalue.asInteger());
return mAgentAccess->canSetMaturity(newvalue.asInteger());
}
void LLAgent::handleMaturity(const LLSD& newvalue)
@ -2639,12 +2653,12 @@ BOOL LLAgent::allowOperation(PermissionBit op,
const LLColor4 &LLAgent::getEffectColor()
{
return mEffectColor;
return *mEffectColor;
}
void LLAgent::setEffectColor(const LLColor4 &color)
{
mEffectColor = color;
*mEffectColor = color;
}
void LLAgent::initOriginGlobal(const LLVector3d &origin_global)
@ -3472,7 +3486,7 @@ void LLAgent::setTeleportState(ETeleportState state)
case TELEPORT_MOVING:
// We're outa here. Save "back" slurl.
LLAgentUI::buildSLURL(mTeleportSourceSLURL);
LLAgentUI::buildSLURL(*mTeleportSourceSLURL);
break;
case TELEPORT_ARRIVING:
@ -3805,6 +3819,11 @@ void LLAgent::parseTeleportMessages(const std::string& xml_filename)
}//end for (all message sets in xml file)
}
const void LLAgent::getTeleportSourceSLURL(LLSLURL& slurl) const
{
slurl = *mTeleportSourceSLURL;
}
void LLAgent::sendAgentUpdateUserInfo(bool im_via_email, const std::string& directory_visibility )
{
gMessageSystem->newMessageFast(_PREHASH_UpdateUserInfo);

View File

@ -29,15 +29,11 @@
#include "indra_constants.h"
#include "llevent.h" // LLObservable base class
#include "llagentaccess.h"
#include "llagentconstants.h"
#include "llagentdata.h" // gAgentID, gAgentSessionID
#include "llcharacter.h" // LLAnimPauseRequest
#include "llcharacter.h"
#include "llcoordframe.h" // for mFrameAgent
#include "llpointer.h"
#include "lluicolor.h"
#include "llvoavatardefines.h"
#include "llslurl.h"
#include <boost/signals2.hpp>
@ -56,6 +52,10 @@ class LLFriendObserver;
class LLPickInfo;
class LLViewerObject;
class LLAgentDropGroupViewerNode;
class LLAgentAccess;
class LLSLURL;
class LLPauseRequestHandle;
class LLUIColor;
//--------------------------------------------------------------------
// Types
@ -80,6 +80,8 @@ struct LLGroupData
class LLAgentListener;
class LLAgentImpl;
//------------------------------------------------------------------------
// LLAgent
//------------------------------------------------------------------------
@ -420,7 +422,7 @@ private:
camera_signal_t* mMouselookModeInSignal;
camera_signal_t* mMouselookModeOutSignal;
BOOL mCustomAnim; // Current animation is ANIM_AGENT_CUSTOMIZE ?
LLAnimPauseRequest mPauseRequest;
LLPointer<LLPauseRequestHandle> mPauseRequest;
BOOL mViewsPushed; // Keep track of whether or not we have pushed views
/** Animation
@ -515,13 +517,13 @@ public:
public:
static void parseTeleportMessages(const std::string& xml_filename);
const void getTeleportSourceSLURL(LLSLURL& slurl) const { slurl = mTeleportSourceSLURL; }
const void getTeleportSourceSLURL(LLSLURL& slurl) const;
public:
// ! TODO ! Define ERROR and PROGRESS enums here instead of exposing the mappings.
static std::map<std::string, std::string> sTeleportErrorMessages;
static std::map<std::string, std::string> sTeleportProgressMessages;
private:
LLSLURL mTeleportSourceSLURL; // SLURL where last TP began
LLSLURL * mTeleportSourceSLURL; // SLURL where last TP began
//--------------------------------------------------------------------
// Teleport Actions
@ -580,7 +582,7 @@ public:
// ! BACKWARDS COMPATIBILITY ! This function can go away after the AO transition (see llstartup.cpp).
void setAOTransition();
private:
LLAgentAccess mAgentAccess;
LLAgentAccess * mAgentAccess;
//--------------------------------------------------------------------
// God
@ -660,7 +662,7 @@ public:
const LLColor4 &getEffectColor();
void setEffectColor(const LLColor4 &color);
private:
LLUIColor mEffectColor;
LLUIColor * mEffectColor;
/** Rendering
** **

View File

@ -82,13 +82,14 @@
#include "lltextutil.h"
#include "lllogininstance.h"
#include "llprogressview.h"
#include "llvocache.h"
#include "llweb.h"
#include "llsecondlifeurls.h"
#include "llupdaterservice.h"
// Linden library includes
#include "llavatarnamecache.h"
#include "lldiriterator.h"
#include "llimagej2c.h"
#include "llmemory.h"
#include "llprimitive.h"
@ -132,7 +133,6 @@
#include "lltoolmgr.h"
#include "llassetstorage.h"
#include "llpolymesh.h"
#include "llcachename.h"
#include "llaudioengine.h"
#include "llstreamingaudio.h"
#include "llviewermenu.h"
@ -3432,7 +3432,9 @@ void LLAppViewer::migrateCacheDirectory()
S32 file_count = 0;
std::string file_name;
std::string mask = delimiter + "*.*";
while (gDirUtilp->getNextFileInDir(old_cache_dir, mask, file_name))
LLDirIterator iter(old_cache_dir, mask);
while (iter.next(file_name))
{
if (file_name == "." || file_name == "..") continue;
std::string source_path = old_cache_dir + delimiter + file_name;
@ -3653,7 +3655,8 @@ bool LLAppViewer::initCache()
dir = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,"");
std::string found_file;
if (gDirUtilp->getNextFileInDir(dir, mask, found_file))
LLDirIterator iter(dir, mask);
if (iter.next(found_file))
{
old_vfs_data_file = dir + gDirUtilp->getDirDelimiter() + found_file;

View File

@ -30,6 +30,7 @@
#include "llcommandlineparser.h"
#include "lldiriterator.h"
#include "llmemtype.h"
#include "llurldispatcher.h" // SLURL from other app instance
#include "llviewernetwork.h"
@ -504,7 +505,9 @@ std::string LLAppViewerLinux::generateSerialNumber()
// trawl /dev/disk/by-uuid looking for a good-looking UUID to grab
std::string this_name;
while (gDirUtilp->getNextFileInDir(uuiddir, "*", this_name))
LLDirIterator iter(uuiddir, "*");
while (iter.next(this_name))
{
if (this_name.length() > best.length() ||
(this_name.length() == best.length() &&

View File

@ -31,6 +31,7 @@
#include "v3dmath.h"
class LLEventNotification;
class LLMessageSystem;
class LLEventNotifier

View File

@ -38,6 +38,7 @@
#include "message.h"
#include "llagent.h"
#include "llagentaccess.h"
#include "llbutton.h"
#include "llcheckboxctrl.h"
#include "llcombobox.h"

View File

@ -43,11 +43,12 @@ class LLButton;
class LLCheckBoxCtrl;
class LLRadioGroup;
class LLComboBox;
class LLNameListCtrl;
class LLSpinCtrl;
class LLLineEditor;
class LLMessageSystem;
class LLNameListCtrl;
class LLRadioGroup;
class LLParcelSelectionObserver;
class LLSpinCtrl;
class LLTabContainer;
class LLTextBox;
class LLTextEditor;

View File

@ -53,6 +53,7 @@
#include "llfloaterpostcard.h"
#include "llcheckboxctrl.h"
#include "llradiogroup.h"
#include "llslurl.h"
#include "lltoolfocus.h"
#include "lltoolmgr.h"
#include "llwebsharing.h"

View File

@ -35,6 +35,7 @@
#include "llfloateruipreview.h" // Own header
// Internal utility
#include "lldiriterator.h"
#include "lleventtimer.h"
#include "llexternaleditor.h"
#include "llrender.h"
@ -481,9 +482,11 @@ BOOL LLFloaterUIPreview::postBuild()
std::string language_directory;
std::string xui_dir = get_xui_dir(); // directory containing localizations -- don't forget trailing delim
mLanguageSelection->removeall(); // clear out anything temporarily in list from XML
LLDirIterator iter(xui_dir, "*");
while(found) // for every directory
{
if((found = gDirUtilp->getNextFileInDir(xui_dir, "*", language_directory))) // get next directory
if((found = iter.next(language_directory))) // get next directory
{
std::string full_path = xui_dir + language_directory;
if(LLFile::isfile(full_path.c_str())) // if it's not a directory, skip it
@ -635,42 +638,51 @@ void LLFloaterUIPreview::refreshList()
mFileList->clearRows(); // empty list
std::string name;
BOOL found = TRUE;
LLDirIterator floater_iter(getLocalizedDirectory(), "floater_*.xml");
while(found) // for every floater file that matches the pattern
{
if((found = gDirUtilp->getNextFileInDir(getLocalizedDirectory(), "floater_*.xml", name))) // get next file matching pattern
if((found = floater_iter.next(name))) // get next file matching pattern
{
addFloaterEntry(name.c_str()); // and add it to the list (file name only; localization code takes care of rest of path)
}
}
found = TRUE;
LLDirIterator inspect_iter(getLocalizedDirectory(), "inspect_*.xml");
while(found) // for every inspector file that matches the pattern
{
if((found = gDirUtilp->getNextFileInDir(getLocalizedDirectory(), "inspect_*.xml", name))) // get next file matching pattern
if((found = inspect_iter.next(name))) // get next file matching pattern
{
addFloaterEntry(name.c_str()); // and add it to the list (file name only; localization code takes care of rest of path)
}
}
found = TRUE;
LLDirIterator menu_iter(getLocalizedDirectory(), "menu_*.xml");
while(found) // for every menu file that matches the pattern
{
if((found = gDirUtilp->getNextFileInDir(getLocalizedDirectory(), "menu_*.xml", name))) // get next file matching pattern
if((found = menu_iter.next(name))) // get next file matching pattern
{
addFloaterEntry(name.c_str()); // and add it to the list (file name only; localization code takes care of rest of path)
}
}
found = TRUE;
LLDirIterator panel_iter(getLocalizedDirectory(), "panel_*.xml");
while(found) // for every panel file that matches the pattern
{
if((found = gDirUtilp->getNextFileInDir(getLocalizedDirectory(), "panel_*.xml", name))) // get next file matching pattern
if((found = panel_iter.next(name))) // get next file matching pattern
{
addFloaterEntry(name.c_str()); // and add it to the list (file name only; localization code takes care of rest of path)
}
}
found = TRUE;
LLDirIterator sidepanel_iter(getLocalizedDirectory(), "sidepanel_*.xml");
while(found) // for every sidepanel file that matches the pattern
{
if((found = gDirUtilp->getNextFileInDir(getLocalizedDirectory(), "sidepanel_*.xml", name))) // get next file matching pattern
if((found = sidepanel_iter.next(name))) // get next file matching pattern
{
addFloaterEntry(name.c_str()); // and add it to the list (file name only; localization code takes care of rest of path)
}

View File

@ -28,6 +28,7 @@
#include "llview.h"
#include "lldarray.h" // *TODO: Eliminate, forward declare
#include "lluiimage.h"
class LLFontGL;
class LLFolderView;

View File

@ -33,6 +33,7 @@
#include <string>
#include <map>
#include <boost/function.hpp>
#include <boost/signals2.hpp>
class LLSD;
/**

View File

@ -32,6 +32,7 @@
#include "lltrans.h"
#include "llviewercontrol.h"
#include "lldiriterator.h"
#include "llinstantmessage.h"
#include "llsingleton.h" // for LLSingleton
@ -602,7 +603,8 @@ std::string LLLogChat::oldLogFileName(std::string filename)
//LL_INFOS("") << "Checking:" << directory << " for " << pattern << LL_ENDL;/* uncomment if you want to verify step, delete on commit */
std::vector<std::string> allfiles;
while (gDirUtilp->getNextFileInDir(directory, pattern, scanResult))
LLDirIterator iter(directory, pattern);
while (iter.next(scanResult))
{
//LL_INFOS("") << "Found :" << scanResult << LL_ENDL;
allfiles.push_back(scanResult);

View File

@ -31,6 +31,7 @@
#include "llview.h"
#include "llmutelist.h"
#include "llspeakingindicatormanager.h"
#include "lluiimage.h"
class LLTextBox;
class LLUICtrlFactory;

View File

@ -36,6 +36,7 @@
#include "llimview.h"
#include "llmenubutton.h"
#include "llnotificationsutil.h"
#include "llslurl.h"
#include "lltexteditor.h"
#include "lltexturectrl.h"
#include "lltoggleablemenu.h"

View File

@ -44,6 +44,7 @@
#include "llnotificationsutil.h"
#include "llscrolllistitem.h"
#include "llspinctrl.h"
#include "llslurl.h"
#include "lltextbox.h"
#include "lltexteditor.h"
#include "lltexturectrl.h"

View File

@ -42,6 +42,7 @@
#include "llscrolllistctrl.h"
#include "llscrolllistitem.h"
#include "llscrolllistcell.h"
#include "llslurl.h"
#include "lltabcontainer.h"
#include "lltextbox.h"
#include "lltexteditor.h"

View File

@ -34,6 +34,7 @@
#include "llassetuploadresponders.h"
#include "llcheckboxctrl.h"
#include "llcombobox.h"
#include "lldatapacker.h"
#include "lldelayedgestureerror.h"
#include "llfloaterreg.h"
#include "llgesturemgr.h"

View File

@ -39,6 +39,7 @@
#include "llinventoryobserver.h"
#include "lllineeditor.h"
#include "llradiogroup.h"
#include "llslurl.h"
#include "llviewercontrol.h"
#include "llviewerinventory.h"
#include "llviewerobjectlist.h"

View File

@ -35,7 +35,6 @@
#include "llagentwearables.h"
#include "llappearancemgr.h"
#include "lldictionary.h"
//#include "llfirstuse.h"
#include "llfloaterreg.h"
#include "llfloatertools.h"
#include "llgesturemgr.h"

View File

@ -29,6 +29,8 @@
// newview includes
#include "llagent.h" // gAgent
#include "llslurl.h"
#include "lluicolor.h"
#include "lluicolortable.h"
#include "llviewercontrol.h" // gSavedSettings
#include "llviewerregion.h"

View File

@ -28,6 +28,7 @@
#define LL_LLVIEWERKEYBOARD_H
#include "llkeyboard.h" // For EKeystate
#include "llinitparam.h"
const S32 MAX_NAMED_FUNCTIONS = 100;
const S32 MAX_KEY_BINDINGS = 128; // was 60

File diff suppressed because it is too large Load Diff

View File

@ -37,6 +37,7 @@
// newview includes
#include "llagent.h"
#include "llagentaccess.h"
#include "llagentcamera.h"
#include "llagentwearables.h"
#include "llagentpilot.h"

View File

@ -42,6 +42,7 @@
// Viewer includes
#include "llagent.h"
#include "llagentaccess.h"
#include "llviewerwindow.h"
#include "llviewercontrol.h"
//#include "llfirstuse.h"
@ -54,6 +55,7 @@
#include "llresmgr.h"
#include "llsdutil.h"
#include "llsdutil_math.h"
#include "llslurl.h"
#include "llstatusbar.h"
#include "llui.h"
#include "llviewertexture.h"

View File

@ -99,8 +99,6 @@
#include "llcoord.h"
#include "llcoordframe.h"
#include "llcrc.h"
#include "llinterp.h"
#include "llperlin.h"
#include "llplane.h"
#include "llquantize.h"
#include "llrand.h"
@ -109,7 +107,6 @@
#include "m3math.h"
#include "m4math.h"
#include "llquaternion.h"
#include "raytrace.h"
#include "v2math.h"
#include "v3color.h"
#include "v3dmath.h"
@ -117,16 +114,12 @@
#include "v4color.h"
#include "v4coloru.h"
#include "v4math.h"
////#include "vmath.h"
#include "xform.h"
// Library includes from llvfs
#include "lldir.h"
// Library includes from llmessage project
// Library includes from llmessage project
#include "llcachename.h"
// llxuixml
#include "llinitparam.h"
#endif

View File

@ -46,6 +46,7 @@
#include "llagentcamera.h"
#include "llcallingcard.h"
#include "llcaphttpsender.h"
#include "llcapabilitylistener.h"
#include "llcommandhandler.h"
#include "lldir.h"
#include "lleventpoll.h"
@ -76,6 +77,71 @@
const F32 WATER_TEXTURE_SCALE = 8.f; // Number of times to repeat the water texture across a region
const S16 MAX_MAP_DIST = 10;
typedef std::map<std::string, std::string> CapabilityMap;
class LLViewerRegionImpl {
public:
LLViewerRegionImpl(LLViewerRegion * region, LLHost const & host)
: mHost(host),
mCompositionp(NULL),
mEventPoll(NULL),
// I'd prefer to set the LLCapabilityListener name to match the region
// name -- it's disappointing that's not available at construction time.
// We could instead store an LLCapabilityListener*, making
// setRegionNameAndZone() replace the instance. Would that pose
// consistency problems? Can we even request a capability before calling
// setRegionNameAndZone()?
// For testability -- the new Michael Feathers paradigm --
// LLCapabilityListener binds all the globals it expects to need at
// construction time.
mCapabilityListener(host.getString(), gMessageSystem, *region,
gAgent.getID(), gAgent.getSessionID())
{
}
// The surfaces and other layers
LLSurface* mLandp;
// Region geometry data
LLVector3d mOriginGlobal; // Location of southwest corner of region (meters)
LLVector3d mCenterGlobal; // Location of center in world space (meters)
LLHost mHost;
// The unique ID for this region.
LLUUID mRegionID;
// region/estate owner - usually null.
LLUUID mOwnerID;
// Network statistics for the region's circuit...
LLTimer mLastNetUpdate;
// Misc
LLVLComposition *mCompositionp; // Composition layer for the surface
LLVOCacheEntry::vocache_entry_map_t mCacheMap;
// time?
// LRU info?
// Cache ID is unique per-region, across renames, moving locations,
// etc.
LLUUID mCacheID;
CapabilityMap mCapabilities;
LLEventPoll* mEventPoll;
/// Post an event to this LLCapabilityListener to invoke a capability message on
/// this LLViewerRegion's server
/// (https://wiki.lindenlab.com/wiki/Viewer:Messaging/Messaging_Notes#Capabilities)
LLCapabilityListener mCapabilityListener;
//spatial partitions for objects in this region
std::vector<LLSpatialPartition*> mObjectPartition;
LLHTTPClient::ResponderPtr mHttpResponderPtr ;
};
// support for secondlife:///app/region/{REGION} SLapps
// N.B. this is defined to work exactly like the classic secondlife://{REGION}
// However, the later syntax cannot support spaces in the region name because
@ -191,15 +257,12 @@ LLViewerRegion::LLViewerRegion(const U64 &handle,
const U32 grids_per_region_edge,
const U32 grids_per_patch_edge,
const F32 region_width_meters)
: mCenterGlobal(),
: mImpl(new LLViewerRegionImpl(this, host)),
mHandle(handle),
mHost( host ),
mTimeDilation(1.0f),
mName(""),
mZoning(""),
mOwnerID(),
mIsEstateManager(FALSE),
mCompositionp(NULL),
mRegionFlags( REGION_FLAGS_DEFAULT ),
mSimAccess( SIM_ACCESS_MIN ),
mBillableFactor(1.0),
@ -212,37 +275,27 @@ LLViewerRegion::LLViewerRegion(const U64 &handle,
mHttpUrl(""),
mCacheLoaded(FALSE),
mCacheDirty(FALSE),
mCacheID(),
mEventPoll(NULL),
mReleaseNotesRequested(FALSE),
// I'd prefer to set the LLCapabilityListener name to match the region
// name -- it's disappointing that's not available at construction time.
// We could instead store an LLCapabilityListener*, making
// setRegionNameAndZone() replace the instance. Would that pose
// consistency problems? Can we even request a capability before calling
// setRegionNameAndZone()?
// For testability -- the new Michael Feathers paradigm --
// LLCapabilityListener binds all the globals it expects to need at
// construction time.
mCapabilityListener(host.getString(), gMessageSystem, *this,
gAgent.getID(), gAgent.getSessionID()),
mCapabilitiesReceived(false)
{
mWidth = region_width_meters;
mOriginGlobal = from_region_handle(handle);
mImpl->mOriginGlobal = from_region_handle(handle);
updateRenderMatrix();
mLandp = new LLSurface('l', NULL);
mImpl->mLandp = new LLSurface('l', NULL);
// Create the composition layer for the surface
mCompositionp = new LLVLComposition(mLandp, grids_per_region_edge, region_width_meters/grids_per_region_edge);
mCompositionp->setSurface(mLandp);
mImpl->mCompositionp =
new LLVLComposition(mImpl->mLandp,
grids_per_region_edge,
region_width_meters / grids_per_region_edge);
mImpl->mCompositionp->setSurface(mImpl->mLandp);
// Create the surfaces
mLandp->setRegion(this);
mLandp->create(grids_per_region_edge,
mImpl->mLandp->setRegion(this);
mImpl->mLandp->create(grids_per_region_edge,
grids_per_patch_edge,
mOriginGlobal,
mImpl->mOriginGlobal,
mWidth);
mParcelOverlay = new LLViewerParcelOverlay(this, region_width_meters);
@ -255,24 +308,24 @@ LLViewerRegion::LLViewerRegion(const U64 &handle,
//create object partitions
//MUST MATCH declaration of eObjectPartitions
mObjectPartition.push_back(new LLHUDPartition()); //PARTITION_HUD
mObjectPartition.push_back(new LLTerrainPartition()); //PARTITION_TERRAIN
mObjectPartition.push_back(new LLVoidWaterPartition()); //PARTITION_VOIDWATER
mObjectPartition.push_back(new LLWaterPartition()); //PARTITION_WATER
mObjectPartition.push_back(new LLTreePartition()); //PARTITION_TREE
mObjectPartition.push_back(new LLParticlePartition()); //PARTITION_PARTICLE
mObjectPartition.push_back(new LLCloudPartition()); //PARTITION_CLOUD
mObjectPartition.push_back(new LLGrassPartition()); //PARTITION_GRASS
mObjectPartition.push_back(new LLVolumePartition()); //PARTITION_VOLUME
mObjectPartition.push_back(new LLBridgePartition()); //PARTITION_BRIDGE
mObjectPartition.push_back(new LLHUDParticlePartition());//PARTITION_HUD_PARTICLE
mObjectPartition.push_back(NULL); //PARTITION_NONE
mImpl->mObjectPartition.push_back(new LLHUDPartition()); //PARTITION_HUD
mImpl->mObjectPartition.push_back(new LLTerrainPartition()); //PARTITION_TERRAIN
mImpl->mObjectPartition.push_back(new LLVoidWaterPartition()); //PARTITION_VOIDWATER
mImpl->mObjectPartition.push_back(new LLWaterPartition()); //PARTITION_WATER
mImpl->mObjectPartition.push_back(new LLTreePartition()); //PARTITION_TREE
mImpl->mObjectPartition.push_back(new LLParticlePartition()); //PARTITION_PARTICLE
mImpl->mObjectPartition.push_back(new LLCloudPartition()); //PARTITION_CLOUD
mImpl->mObjectPartition.push_back(new LLGrassPartition()); //PARTITION_GRASS
mImpl->mObjectPartition.push_back(new LLVolumePartition()); //PARTITION_VOLUME
mImpl->mObjectPartition.push_back(new LLBridgePartition()); //PARTITION_BRIDGE
mImpl->mObjectPartition.push_back(new LLHUDParticlePartition());//PARTITION_HUD_PARTICLE
mImpl->mObjectPartition.push_back(NULL); //PARTITION_NONE
}
void LLViewerRegion::initStats()
{
mLastNetUpdate.reset();
mImpl->mLastNetUpdate.reset();
mPacketsIn = 0;
mBitsIn = 0;
mLastBitsIn = 0;
@ -287,9 +340,9 @@ void LLViewerRegion::initStats()
LLViewerRegion::~LLViewerRegion()
{
if(mHttpResponderPtr)
if(mImpl->mHttpResponderPtr)
{
(static_cast<BaseCapabilitiesComplete*>(mHttpResponderPtr.get()))->setRegion(NULL) ;
(static_cast<BaseCapabilitiesComplete*>(mImpl->mHttpResponderPtr.get()))->setRegion(NULL) ;
}
gVLManager.cleanupData(this);
@ -301,21 +354,44 @@ LLViewerRegion::~LLViewerRegion()
gObjectList.killObjects(this);
delete mCompositionp;
delete mImpl->mCompositionp;
delete mParcelOverlay;
delete mLandp;
delete mEventPoll;
LLHTTPSender::clearSender(mHost);
delete mImpl->mLandp;
delete mImpl->mEventPoll;
LLHTTPSender::clearSender(mImpl->mHost);
saveObjectCache();
std::for_each(mObjectPartition.begin(), mObjectPartition.end(), DeletePointer());
std::for_each(mImpl->mObjectPartition.begin(), mImpl->mObjectPartition.end(), DeletePointer());
delete mImpl;
mImpl = NULL;
}
LLEventPump& LLViewerRegion::getCapAPI() const
{
return mImpl->mCapabilityListener.getCapAPI();
}
/*virtual*/
const LLHost& LLViewerRegion::getHost() const
{
return mHost;
return mImpl->mHost;
}
LLSurface & LLViewerRegion::getLand() const
{
return *mImpl->mLandp;
}
const LLUUID& LLViewerRegion::getRegionID() const
{
return mImpl->mRegionID;
}
void LLViewerRegion::setRegionID(const LLUUID& region_id)
{
mImpl->mRegionID = region_id;
}
void LLViewerRegion::loadObjectCache()
@ -330,7 +406,7 @@ void LLViewerRegion::loadObjectCache()
if(LLVOCache::hasInstance())
{
LLVOCache::getInstance()->readFromCache(mHandle, mCacheID, mCacheMap) ;
LLVOCache::getInstance()->readFromCache(mHandle, mImpl->mCacheID, mImpl->mCacheMap) ;
}
}
@ -342,32 +418,32 @@ void LLViewerRegion::saveObjectCache()
return;
}
if (mCacheMap.empty())
if (mImpl->mCacheMap.empty())
{
return;
}
if(LLVOCache::hasInstance())
{
LLVOCache::getInstance()->writeToCache(mHandle, mCacheID, mCacheMap, mCacheDirty) ;
LLVOCache::getInstance()->writeToCache(mHandle, mImpl->mCacheID, mImpl->mCacheMap, mCacheDirty) ;
mCacheDirty = FALSE;
}
for(LLVOCacheEntry::vocache_entry_map_t::iterator iter = mCacheMap.begin(); iter != mCacheMap.end(); ++iter)
for(LLVOCacheEntry::vocache_entry_map_t::iterator iter = mImpl->mCacheMap.begin(); iter != mImpl->mCacheMap.end(); ++iter)
{
delete iter->second;
}
mCacheMap.clear();
mImpl->mCacheMap.clear();
}
void LLViewerRegion::sendMessage()
{
gMessageSystem->sendMessage(mHost);
gMessageSystem->sendMessage(mImpl->mHost);
}
void LLViewerRegion::sendReliableMessage()
{
gMessageSystem->sendReliable(mHost);
gMessageSystem->sendReliable(mImpl->mHost);
}
void LLViewerRegion::setFlags(BOOL b, U32 flags)
@ -384,12 +460,12 @@ void LLViewerRegion::setFlags(BOOL b, U32 flags)
void LLViewerRegion::setWaterHeight(F32 water_level)
{
mLandp->setWaterHeight(water_level);
mImpl->mLandp->setWaterHeight(water_level);
}
F32 LLViewerRegion::getWaterHeight() const
{
return mLandp->getWaterHeight();
return mImpl->mLandp->getWaterHeight();
}
BOOL LLViewerRegion::isVoiceEnabled() const
@ -405,9 +481,9 @@ void LLViewerRegion::setRegionFlags(U32 flags)
void LLViewerRegion::setOriginGlobal(const LLVector3d &origin_global)
{
mOriginGlobal = origin_global;
mImpl->mOriginGlobal = origin_global;
updateRenderMatrix();
mLandp->setOriginGlobal(origin_global);
mImpl->mLandp->setOriginGlobal(origin_global);
mWind.setOriginGlobal(origin_global);
mCloudLayer.setOriginGlobal(origin_global);
calculateCenterGlobal();
@ -423,16 +499,34 @@ void LLViewerRegion::setTimeDilation(F32 time_dilation)
mTimeDilation = time_dilation;
}
const LLVector3d & LLViewerRegion::getOriginGlobal() const
{
return mImpl->mOriginGlobal;
}
LLVector3 LLViewerRegion::getOriginAgent() const
{
return gAgent.getPosAgentFromGlobal(mOriginGlobal);
return gAgent.getPosAgentFromGlobal(mImpl->mOriginGlobal);
}
const LLVector3d & LLViewerRegion::getCenterGlobal() const
{
return mImpl->mCenterGlobal;
}
LLVector3 LLViewerRegion::getCenterAgent() const
{
return gAgent.getPosAgentFromGlobal(mCenterGlobal);
return gAgent.getPosAgentFromGlobal(mImpl->mCenterGlobal);
}
void LLViewerRegion::setOwner(const LLUUID& owner_id)
{
mImpl->mOwnerID = owner_id;
}
const LLUUID& LLViewerRegion::getOwner() const
{
return mImpl->mOwnerID;
}
void LLViewerRegion::setRegionNameAndZone (const std::string& name_zone)
@ -557,7 +651,10 @@ void LLViewerRegion::processRegionInfo(LLMessageSystem* msg, void**)
LLFloaterReporter::processRegionInfo(msg);
}
void LLViewerRegion::setCacheID(const LLUUID& id)
{
mImpl->mCacheID = id;
}
S32 LLViewerRegion::renderPropertyLines()
{
@ -585,7 +682,7 @@ BOOL LLViewerRegion::idleUpdate(F32 max_update_time)
{
LLMemType mt_ivr(LLMemType::MTYPE_IDLE_UPDATE_VIEWER_REGION);
// did_update returns TRUE if we did at least one significant update
BOOL did_update = mLandp->idleUpdate(max_update_time);
BOOL did_update = mImpl->mLandp->idleUpdate(max_update_time);
if (mParcelOverlay)
{
@ -600,7 +697,7 @@ BOOL LLViewerRegion::idleUpdate(F32 max_update_time)
// As above, but forcibly do the update.
void LLViewerRegion::forceUpdate()
{
mLandp->idleUpdate(0.f);
mImpl->mLandp->idleUpdate(0.f);
if (mParcelOverlay)
{
@ -610,17 +707,21 @@ void LLViewerRegion::forceUpdate()
void LLViewerRegion::connectNeighbor(LLViewerRegion *neighborp, U32 direction)
{
mLandp->connectNeighbor(neighborp->mLandp, direction);
mImpl->mLandp->connectNeighbor(neighborp->mImpl->mLandp, direction);
mCloudLayer.connectNeighbor(&(neighborp->mCloudLayer), direction);
}
void LLViewerRegion::disconnectAllNeighbors()
{
mLandp->disconnectAllNeighbors();
mImpl->mLandp->disconnectAllNeighbors();
mCloudLayer.disconnectAllNeighbors();
}
LLVLComposition * LLViewerRegion::getComposition() const
{
return mImpl->mCompositionp;
}
F32 LLViewerRegion::getCompositionXY(const S32 x, const S32 y) const
{
@ -714,10 +815,10 @@ F32 LLViewerRegion::getCompositionXY(const S32 x, const S32 y) const
void LLViewerRegion::calculateCenterGlobal()
{
mCenterGlobal = mOriginGlobal;
mCenterGlobal.mdV[VX] += 0.5 * mWidth;
mCenterGlobal.mdV[VY] += 0.5 * mWidth;
mCenterGlobal.mdV[VZ] = 0.5*mLandp->getMinZ() + mLandp->getMaxZ();
mImpl->mCenterGlobal = mImpl->mOriginGlobal;
mImpl->mCenterGlobal.mdV[VX] += 0.5 * mWidth;
mImpl->mCenterGlobal.mdV[VY] += 0.5 * mWidth;
mImpl->mCenterGlobal.mdV[VZ] = 0.5 * mImpl->mLandp->getMinZ() + mImpl->mLandp->getMaxZ();
}
void LLViewerRegion::calculateCameraDistance()
@ -728,7 +829,7 @@ void LLViewerRegion::calculateCameraDistance()
std::ostream& operator<<(std::ostream &s, const LLViewerRegion &region)
{
s << "{ ";
s << region.mHost;
s << region.mImpl->mHost;
s << " mOriginGlobal = " << region.getOriginGlobal()<< "\n";
std::string name(region.getName()), zone(region.getZoning());
if (! name.empty())
@ -748,9 +849,9 @@ std::ostream& operator<<(std::ostream &s, const LLViewerRegion &region)
void LLViewerRegion::updateNetStats()
{
F32 dt = mLastNetUpdate.getElapsedTimeAndResetF32();
F32 dt = mImpl->mLastNetUpdate.getElapsedTimeAndResetF32();
LLCircuitData *cdp = gMessageSystem->mCircuitInfo.findCircuit(mHost);
LLCircuitData *cdp = gMessageSystem->mCircuitInfo.findCircuit(mImpl->mHost);
if (!cdp)
{
mAlive = false;
@ -779,10 +880,10 @@ void LLViewerRegion::updateNetStats()
U32 LLViewerRegion::getPacketsLost() const
{
LLCircuitData *cdp = gMessageSystem->mCircuitInfo.findCircuit(mHost);
LLCircuitData *cdp = gMessageSystem->mCircuitInfo.findCircuit(mImpl->mHost);
if (!cdp)
{
llinfos << "LLViewerRegion::getPacketsLost couldn't find circuit for " << mHost << llendl;
llinfos << "LLViewerRegion::getPacketsLost couldn't find circuit for " << mImpl->mHost << llendl;
return 0;
}
else
@ -791,6 +892,16 @@ U32 LLViewerRegion::getPacketsLost() const
}
}
void LLViewerRegion::setHttpResponderPtrNULL()
{
mImpl->mHttpResponderPtr = NULL;
}
const LLHTTPClient::ResponderPtr LLViewerRegion::getHttpResponderPtr() const
{
return mImpl->mHttpResponderPtr;
}
BOOL LLViewerRegion::pointInRegionGlobal(const LLVector3d &point_global) const
{
LLVector3 pos_region = getPosRegionFromGlobal(point_global);
@ -817,7 +928,7 @@ BOOL LLViewerRegion::pointInRegionGlobal(const LLVector3d &point_global) const
LLVector3 LLViewerRegion::getPosRegionFromGlobal(const LLVector3d &point_global) const
{
LLVector3 pos_region;
pos_region.setVec(point_global - mOriginGlobal);
pos_region.setVec(point_global - mImpl->mOriginGlobal);
return pos_region;
}
@ -825,7 +936,7 @@ LLVector3d LLViewerRegion::getPosGlobalFromRegion(const LLVector3 &pos_region) c
{
LLVector3d pos_region_d;
pos_region_d.setVec(pos_region);
return pos_region_d + mOriginGlobal;
return pos_region_d + mImpl->mOriginGlobal;
}
LLVector3 LLViewerRegion::getPosAgentFromRegion(const LLVector3 &pos_region) const
@ -842,7 +953,7 @@ LLVector3 LLViewerRegion::getPosRegionFromAgent(const LLVector3 &pos_agent) cons
F32 LLViewerRegion::getLandHeightRegion(const LLVector3& region_pos)
{
return mLandp->resolveHeightRegion( region_pos );
return mImpl->mLandp->resolveHeightRegion( region_pos );
}
bool LLViewerRegion::isAlive()
@ -994,7 +1105,7 @@ void LLViewerRegion::updateCoarseLocations(LLMessageSystem* msg)
// treat the target specially for the map
if(i == target_index)
{
LLVector3d global_pos(mOriginGlobal);
LLVector3d global_pos(mImpl->mOriginGlobal);
global_pos.mdV[VX] += (F64)(x_pos);
global_pos.mdV[VY] += (F64)(y_pos);
global_pos.mdV[VZ] += (F64)(z_pos) * 4.0;
@ -1034,7 +1145,7 @@ LLViewerRegion::eCacheUpdateResult LLViewerRegion::cacheFullUpdate(LLViewerObjec
U32 local_id = objectp->getLocalID();
U32 crc = objectp->getCRC();
LLVOCacheEntry* entry = get_if_there(mCacheMap, local_id, (LLVOCacheEntry*)NULL);
LLVOCacheEntry* entry = get_if_there(mImpl->mCacheMap, local_id, (LLVOCacheEntry*)NULL);
if (entry)
{
@ -1047,10 +1158,10 @@ LLViewerRegion::eCacheUpdateResult LLViewerRegion::cacheFullUpdate(LLViewerObjec
}
// Update the cache entry
mCacheMap.erase(local_id);
mImpl->mCacheMap.erase(local_id);
delete entry;
entry = new LLVOCacheEntry(local_id, crc, dp);
mCacheMap[local_id] = entry;
mImpl->mCacheMap[local_id] = entry;
return CACHE_UPDATE_CHANGED;
}
@ -1058,15 +1169,15 @@ LLViewerRegion::eCacheUpdateResult LLViewerRegion::cacheFullUpdate(LLViewerObjec
// Create new entry and add to map
eCacheUpdateResult result = CACHE_UPDATE_ADDED;
if (mCacheMap.size() > MAX_OBJECT_CACHE_ENTRIES)
if (mImpl->mCacheMap.size() > MAX_OBJECT_CACHE_ENTRIES)
{
mCacheMap.erase(mCacheMap.begin());
mImpl->mCacheMap.erase(mImpl->mCacheMap.begin());
result = CACHE_UPDATE_REPLACED;
}
entry = new LLVOCacheEntry(local_id, crc, dp);
mCacheMap[local_id] = entry;
mImpl->mCacheMap[local_id] = entry;
return result;
}
@ -1076,7 +1187,7 @@ LLDataPacker *LLViewerRegion::getDP(U32 local_id, U32 crc, U8 &cache_miss_type)
{
llassert(mCacheLoaded);
LLVOCacheEntry* entry = get_if_there(mCacheMap, local_id, (LLVOCacheEntry*)NULL);
LLVOCacheEntry* entry = get_if_there(mImpl->mCacheMap, local_id, (LLVOCacheEntry*)NULL);
if (entry)
{
@ -1203,7 +1314,7 @@ void LLViewerRegion::dumpCache()
}
LLVOCacheEntry *entry;
for(LLVOCacheEntry::vocache_entry_map_t::iterator iter = mCacheMap.begin(); iter != mCacheMap.end(); ++iter)
for(LLVOCacheEntry::vocache_entry_map_t::iterator iter = mImpl->mCacheMap.begin(); iter != mImpl->mCacheMap.end(); ++iter)
{
entry = iter->second ;
@ -1217,7 +1328,7 @@ void LLViewerRegion::dumpCache()
change_bin[changes]++;
}
llinfos << "Count " << mCacheMap.size() << llendl;
llinfos << "Count " << mImpl->mCacheMap.size() << llendl;
for (i = 0; i < BINS; i++)
{
llinfos << "Hits " << i << " " << hit_bin[i] << llendl;
@ -1360,10 +1471,10 @@ void LLViewerRegion::setSeedCapability(const std::string& url)
return;
}
delete mEventPoll;
mEventPoll = NULL;
delete mImpl->mEventPoll;
mImpl->mEventPoll = NULL;
mCapabilities.clear();
mImpl->mCapabilities.clear();
setCapability("Seed", url);
LLSD capabilityNames = LLSD::emptyArray();
@ -1430,25 +1541,25 @@ void LLViewerRegion::setSeedCapability(const std::string& url)
llinfos << "posting to seed " << url << llendl;
mHttpResponderPtr = BaseCapabilitiesComplete::build(this) ;
LLHTTPClient::post(url, capabilityNames, mHttpResponderPtr);
mImpl->mHttpResponderPtr = BaseCapabilitiesComplete::build(this) ;
LLHTTPClient::post(url, capabilityNames, mImpl->mHttpResponderPtr);
}
void LLViewerRegion::setCapability(const std::string& name, const std::string& url)
{
if(name == "EventQueueGet")
{
delete mEventPoll;
mEventPoll = NULL;
mEventPoll = new LLEventPoll(url, getHost());
delete mImpl->mEventPoll;
mImpl->mEventPoll = NULL;
mImpl->mEventPoll = new LLEventPoll(url, getHost());
}
else if(name == "UntrustedSimulatorMessage")
{
LLHTTPSender::setSender(mHost, new LLCapHTTPSender(url));
LLHTTPSender::setSender(mImpl->mHost, new LLCapHTTPSender(url));
}
else
{
mCapabilities[name] = url;
mImpl->mCapabilities[name] = url;
if(name == "GetTexture")
{
mHttpUrl = url ;
@ -1463,8 +1574,8 @@ bool LLViewerRegion::isSpecialCapabilityName(const std::string &name)
std::string LLViewerRegion::getCapability(const std::string& name) const
{
CapabilityMap::const_iterator iter = mCapabilities.find(name);
if(iter == mCapabilities.end())
CapabilityMap::const_iterator iter = mImpl->mCapabilities.find(name);
if(iter == mImpl->mCapabilities.end())
{
return "";
}
@ -1485,7 +1596,7 @@ void LLViewerRegion::logActiveCapabilities() const
{
int count = 0;
CapabilityMap::const_iterator iter;
for (iter = mCapabilities.begin(); iter != mCapabilities.end(); iter++, count++)
for (iter = mImpl->mCapabilities.begin(); iter != mImpl->mCapabilities.end(); ++iter, ++count)
{
if (!iter->second.empty())
{
@ -1497,9 +1608,9 @@ void LLViewerRegion::logActiveCapabilities() const
LLSpatialPartition* LLViewerRegion::getSpatialPartition(U32 type)
{
if (type < mObjectPartition.size())
if (type < mImpl->mObjectPartition.size())
{
return mObjectPartition[type];
return mImpl->mObjectPartition[type];
}
return NULL;
}

View File

@ -33,20 +33,16 @@
#include "lldarray.h"
#include "llwind.h"
#include "llbbox.h"
#include "llcloud.h"
#include "llstat.h"
#include "v3dmath.h"
#include "llhost.h"
#include "llstring.h"
#include "llregionflags.h"
#include "lluuid.h"
#include "lldatapacker.h"
#include "llvocache.h"
#include "llweb.h"
#include "llcapabilityprovider.h"
#include "llcapabilitylistener.h"
#include "m4math.h" // LLMatrix4
#include "llhttpclient.h"
// Surface id's
#define LAND 1
@ -65,6 +61,13 @@ class LLVOCache;
class LLVOCacheEntry;
class LLSpatialPartition;
class LLEventPump;
class LLCapabilityListener;
class LLDataPacker;
class LLDataPackerBinaryBuffer;
class LLHost;
class LLBBox;
class LLViewerRegionImpl;
class LLViewerRegion: public LLCapabilityProvider // implements this interface
{
@ -159,19 +162,19 @@ public:
F32 getTimeDilation() const { return mTimeDilation; }
// Origin height is at zero.
const LLVector3d &getOriginGlobal() const { return mOriginGlobal; }
const LLVector3d &getOriginGlobal() const;
LLVector3 getOriginAgent() const;
// Center is at the height of the water table.
const LLVector3d &getCenterGlobal() const { return mCenterGlobal; }
const LLVector3d &getCenterGlobal() const;
LLVector3 getCenterAgent() const;
void setRegionNameAndZone(const std::string& name_and_zone);
const std::string& getName() const { return mName; }
const std::string& getZoning() const { return mZoning; }
void setOwner(const LLUUID& owner_id) { mOwnerID = owner_id; }
const LLUUID& getOwner() const { return mOwnerID; }
void setOwner(const LLUUID& owner_id);
const LLUUID& getOwner() const;
// Is the current agent on the estate manager list for this region?
void setIsEstateManager(BOOL b) { mIsEstateManager = b; }
@ -206,7 +209,7 @@ public:
// can process the message.
static void processRegionInfo(LLMessageSystem* msg, void**);
void setCacheID(const LLUUID& id) { mCacheID = id; }
void setCacheID(const LLUUID& id);
F32 getWidth() const { return mWidth; }
@ -222,8 +225,8 @@ public:
U32 getPacketsLost() const;
void setHttpResponderPtrNULL() {mHttpResponderPtr = NULL ;}
const LLHTTPClient::ResponderPtr getHttpResponderPtr() const {return mHttpResponderPtr ;}
void setHttpResponderPtrNULL();
const LLHTTPClient::ResponderPtr getHttpResponderPtr() const;
// Get/set named capability URLs for this region.
void setSeedCapability(const std::string& url);
@ -238,21 +241,19 @@ public:
static bool isSpecialCapabilityName(const std::string &name);
void logActiveCapabilities() const;
/// Capability-request exception
typedef LLCapabilityListener::ArgError ArgError;
/// Get LLEventPump on which we listen for capability requests
/// (https://wiki.lindenlab.com/wiki/Viewer:Messaging/Messaging_Notes#Capabilities)
LLEventPump& getCapAPI() { return mCapabilityListener.getCapAPI(); }
LLEventPump& getCapAPI() const;
/// implements LLCapabilityProvider
/*virtual*/ const LLHost& getHost() const;
const U64 &getHandle() const { return mHandle; }
LLSurface &getLand() const { return *mLandp; }
LLSurface &getLand() const;
// set and get the region id
const LLUUID& getRegionID() const { return mRegionID; }
void setRegionID(const LLUUID& region_id) { mRegionID = region_id; }
const LLUUID& getRegionID() const;
void setRegionID(const LLUUID& region_id);
BOOL pointInRegionGlobal(const LLVector3d &point_global) const;
LLVector3 getPosRegionFromGlobal(const LLVector3d &point_global) const;
@ -260,7 +261,7 @@ public:
LLVector3 getPosAgentFromRegion(const LLVector3 &region_pos) const;
LLVector3d getPosGlobalFromRegion(const LLVector3 &offset) const;
LLVLComposition *getComposition() const { return mCompositionp; }
LLVLComposition *getComposition() const;
F32 getCompositionXY(const S32 x, const S32 y) const;
BOOL isOwnedSelf(const LLVector3& pos);
@ -347,34 +348,19 @@ public:
LLDynamicArray<LLUUID> mMapAvatarIDs;
private:
// The surfaces and other layers
LLSurface* mLandp;
LLViewerRegionImpl * mImpl;
// Region geometry data
LLVector3d mOriginGlobal; // Location of southwest corner of region (meters)
LLVector3d mCenterGlobal; // Location of center in world space (meters)
F32 mWidth; // Width of region on a side (meters)
U64 mHandle;
LLHost mHost;
// The unique ID for this region.
LLUUID mRegionID;
F32 mTimeDilation; // time dilation of physics simulation on simulator
// simulator name
std::string mName;
std::string mZoning;
// region/estate owner - usually null.
LLUUID mOwnerID;
// Is this agent on the estate managers list for this region?
BOOL mIsEstateManager;
// Network statistics for the region's circuit...
LLTimer mLastNetUpdate;
U32 mPacketsIn;
U32 mBitsIn;
U32 mLastBitsIn;
@ -386,9 +372,6 @@ private:
U32 mPingDelay;
F32 mDeltaTime; // Time since last measurement of lastPackets, Bits, etc
// Misc
LLVLComposition *mCompositionp; // Composition layer for the surface
U32 mRegionFlags; // includes damage flags
U8 mSimAccess;
F32 mBillableFactor;
@ -398,46 +381,24 @@ private:
// Information for Homestead / CR-53
S32 mClassID;
S32 mCPURatio;
std::string mColoName;
std::string mProductSKU;
std::string mProductName;
std::string mHttpUrl ;
// Maps local ids to cache entries.
// Regions can have order 10,000 objects, so assume
// a structure of size 2^14 = 16,000
BOOL mCacheLoaded;
BOOL mCacheDirty;
LLVOCacheEntry::vocache_entry_map_t mCacheMap;
LLDynamicArray<U32> mCacheMissFull;
LLDynamicArray<U32> mCacheMissCRC;
// time?
// LRU info?
// Cache ID is unique per-region, across renames, moving locations,
// etc.
LLUUID mCacheID;
typedef std::map<std::string, std::string> CapabilityMap;
CapabilityMap mCapabilities;
LLEventPoll* mEventPoll;
/// Post an event to this LLCapabilityListener to invoke a capability message on
/// this LLViewerRegion's server
/// (https://wiki.lindenlab.com/wiki/Viewer:Messaging/Messaging_Notes#Capabilities)
LLCapabilityListener mCapabilityListener;
private:
bool mAlive; // can become false if circuit disconnects
bool mCapabilitiesReceived;
//spatial partitions for objects in this region
std::vector<LLSpatialPartition*> mObjectPartition;
LLHTTPClient::ResponderPtr mHttpResponderPtr ;
BOOL mReleaseNotesRequested;
};

View File

@ -217,24 +217,24 @@ class LLUIImageList : public LLImageProviderInterface, public LLSingleton<LLUIIm
{
public:
// LLImageProviderInterface
/*virtual*/ LLUIImagePtr getUIImageByID(const LLUUID& id, S32 priority);
/*virtual*/ LLUIImagePtr getUIImage(const std::string& name, S32 priority);
/*virtual*/ LLPointer<LLUIImage> getUIImageByID(const LLUUID& id, S32 priority);
/*virtual*/ LLPointer<LLUIImage> getUIImage(const std::string& name, S32 priority);
void cleanUp();
bool initFromFile();
LLUIImagePtr preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect);
LLPointer<LLUIImage> preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect);
static void onUIImageLoaded( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* src_aux, S32 discard_level, BOOL final, void* userdata );
private:
LLUIImagePtr loadUIImageByName(const std::string& name, const std::string& filename,
LLPointer<LLUIImage> loadUIImageByName(const std::string& name, const std::string& filename,
BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null,
LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_UI);
LLUIImagePtr loadUIImageByID(const LLUUID& id,
LLPointer<LLUIImage> loadUIImageByID(const LLUUID& id,
BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null,
LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_UI);
LLUIImagePtr loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null);
LLPointer<LLUIImage> loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null);
struct LLUIImageLoadData

View File

@ -79,6 +79,7 @@
#include "lltooltip.h"
#include "llmediaentry.h"
#include "llurldispatcher.h"
#include "raytrace.h"
// newview includes
#include "llagent.h"
@ -234,17 +235,12 @@ BOOL gDisplayCameraPos = FALSE;
BOOL gDisplayFOV = FALSE;
BOOL gDisplayBadge = FALSE;
S32 CHAT_BAR_HEIGHT = 28;
S32 OVERLAY_BAR_HEIGHT = 20;
const U8 NO_FACE = 255;
static const U8 NO_FACE = 255;
BOOL gQuietSnapshot = FALSE;
const F32 MIN_AFK_TIME = 2.f; // minimum time after setting away state before coming back
const F32 MAX_FAST_FRAME_TIME = 0.5f;
const F32 FAST_FRAME_INCREMENT = 0.1f;
const F32 MIN_DISPLAY_SCALE = 0.75f;
static const F32 MIN_DISPLAY_SCALE = 0.75f;
std::string LLViewerWindow::sSnapshotBaseName;
std::string LLViewerWindow::sSnapshotDir;

View File

@ -38,13 +38,12 @@
#include "v3dmath.h"
#include "v2math.h"
#include "llcursortypes.h"
#include "llwindowcallbacks.h"
#include "lltimer.h"
#include "llstat.h"
#include "llmousehandler.h"
#include "llcursortypes.h"
#include "llhandle.h"
#include "llimage.h"
#include <boost/function.hpp>
#include <boost/signals2.hpp>
@ -59,6 +58,7 @@ class LLTool;
class LLVelocityBar;
class LLPanel;
class LLImageRaw;
class LLImageFormatted;
class LLHUDIcon;
class LLWindow;
class LLRootView;
@ -465,12 +465,6 @@ private:
LLPointer<LLViewerObject> mDragHoveredObject;
};
void toggle_flying(void*);
void toggle_first_person();
void toggle_build(void*);
void reset_viewer_state_on_sim(void);
void update_saved_window_size(const std::string& control,S32 delta_width, S32 delta_height);
//
// Globals
//
@ -487,8 +481,6 @@ extern LLVector3 gDebugRaycastNormal;
extern LLVector3 gDebugRaycastBinormal;
extern S32 gDebugRaycastFaceHit;
extern S32 CHAT_BAR_HEIGHT;
extern BOOL gDisplayCameraPos;
extern BOOL gDisplayWindInfo;
extern BOOL gDisplayFOV;

View File

@ -38,9 +38,9 @@
#include <ctype.h>
#include "llaudioengine.h"
#include "llcachename.h"
#include "noise.h"
#include "sound_ids.h"
#include "raytrace.h"
#include "llagent.h" // Get state values from here
#include "llagentcamera.h"

View File

@ -50,6 +50,7 @@
#include "pipeline.h"
#include "llspatialpartition.h"
#include "llnotificationsutil.h"
#include "raytrace.h"
extern LLPipeline gPipeline;

View File

@ -63,6 +63,8 @@
#include "llmediadataclient.h"
#include "llagent.h"
#include "llviewermediafocus.h"
#include "lldatapacker.h"
#include "llvocache.h"
const S32 MIN_QUIET_FRAMES_COALESCE = 30;
const F32 FORCE_SIMPLE_RENDER_AREA = 512.f;

View File

@ -33,6 +33,7 @@
#include "pipeline.h"
#include "llsky.h"
#include "lldiriterator.h"
#include "llfloaterreg.h"
#include "llsliderctrl.h"
#include "llspinctrl.h"
@ -87,11 +88,12 @@ void LLWaterParamManager::loadAllPresets(const std::string& file_name)
std::string path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/water", ""));
LL_DEBUGS2("AppInit", "Shaders") << "Loading Default water settings from " << path_name << LL_ENDL;
bool found = true;
bool found = true;
LLDirIterator app_settings_iter(path_name, "*.xml");
while(found)
{
std::string name;
found = gDirUtilp->getNextFileInDir(path_name, "*.xml", name);
found = app_settings_iter.next(name);
if(found)
{
@ -113,11 +115,12 @@ void LLWaterParamManager::loadAllPresets(const std::string& file_name)
std::string path_name2(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight/water", ""));
LL_DEBUGS2("AppInit", "Shaders") << "Loading User water settings from " << path_name2 << LL_ENDL;
found = true;
found = true;
LLDirIterator user_settings_iter(path_name2, "*.xml");
while(found)
{
std::string name;
found = gDirUtilp->getNextFileInDir(path_name2, "*.xml", name);
found = user_settings_iter.next(name);
if(found)
{
name=name.erase(name.length()-4);

View File

@ -31,6 +31,7 @@
#include "pipeline.h"
#include "llsky.h"
#include "lldiriterator.h"
#include "llfloaterreg.h"
#include "llsliderctrl.h"
#include "llspinctrl.h"
@ -100,11 +101,12 @@ void LLWLParamManager::loadPresets(const std::string& file_name)
std::string path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/skies", ""));
LL_DEBUGS2("AppInit", "Shaders") << "Loading Default WindLight settings from " << path_name << LL_ENDL;
bool found = true;
bool found = true;
LLDirIterator app_settings_iter(path_name, "*.xml");
while(found)
{
std::string name;
found = gDirUtilp->getNextFileInDir(path_name, "*.xml", name);
found = app_settings_iter.next(name);
if(found)
{
@ -126,11 +128,12 @@ void LLWLParamManager::loadPresets(const std::string& file_name)
std::string path_name2(gDirUtilp->getExpandedFilename( LL_PATH_USER_SETTINGS , "windlight/skies", ""));
LL_DEBUGS2("AppInit", "Shaders") << "Loading User WindLight settings from " << path_name2 << LL_ENDL;
found = true;
found = true;
LLDirIterator user_settings_iter(path_name2, "*.xml");
while(found)
{
std::string name;
found = gDirUtilp->getNextFileInDir(path_name2, "*.xml", name);
found = user_settings_iter.next(name);
if(found)
{
name=name.erase(name.length()-4);

View File

@ -50,6 +50,7 @@
#include "llviewerstats.h"
#include "llvlcomposition.h"
#include "llvoavatar.h"
#include "llvocache.h"
#include "llvowater.h"
#include "message.h"
#include "pipeline.h"

View File

@ -1856,26 +1856,26 @@ even though the user gets a free copy.
<spinner
follows="left|top"
height="19"
increment="0.025"
increment="0.02"
initial_value="0"
label="B"
label_width="10"
layout="topleft"
left_delta="0"
max_val="0.95"
max_val="0.98"
name="Path Limit Begin"
top_pad="3"
width="68" />
<spinner
follows="left|top"
height="19"
increment="0.025"
increment="0.02"
initial_value="1"
label="E"
label_width="10"
layout="topleft"
left_pad="10"
min_val="0.05"
min_val="0.02"
name="Path Limit End"
top_delta="0"
width="68" />

View File

@ -6820,7 +6820,7 @@ Deed to group failed.
name="ReleaseLandThrottled"
type="notifytip">
The parcel [PARCEL_NAME] can not be abandoned at this time.
tag>fail</tag>
<tag>fail</tag>
</notification>
<notification

View File

@ -3588,6 +3588,9 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
<string name="conference-title-incoming">
Conferencia con [AGENT_NAME]
</string>
<string name="inventory_item_offered-im">
Ofrecido el item del inventario
</string>
<string name="no_session_message">
(La sesión de MI no existe)
</string>

View File

@ -3587,6 +3587,9 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
<string name="conference-title-incoming">
Conversa com [AGENT_NAME]
</string>
<string name="inventory_item_offered-im">
Oferta de item de inventário
</string>
<string name="no_session_message">
(Sessão de MI inexistente)
</string>

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="panel_login">
<layout_stack name="login_widgets">
<layout_panel name="login">
<text name="username_text">
使用者名稱:
</text>
<text name="password_text">
密碼:
</text>
<check_box label="記住密碼" name="remember_check"/>
<button label="登入" name="connect_btn"/>
<text name="mode_selection_text">
模式:
</text>
<combo_box name="mode_combo" tool_tip="選擇一個登入模式">
<combo_box.item label="基礎" name="Basic"/>
<combo_box.item label="進階" name="Advanced"/>
</combo_box>
<text name="start_location_text">
開始地點:
</text>
<combo_box name="start_location_combo">
<combo_box.item label="上一次的地點" name="MyLastLocation"/>
<combo_box.item label="我的家" name="MyHome"/>
<combo_box.item label="&lt;輸入區域名&gt;" name="Typeregionname"/>
</combo_box>
</layout_panel>
<layout_panel name="links">
<text name="create_new_account_text">
註冊
</text>
<text name="forgot_password_text">
忘記使用者名稱或密碼?
</text>
<text name="login_help">
如何登入?
</text>
</layout_panel>
</layout_stack>
</panel>

View File

@ -35,7 +35,6 @@
#include "llurlentry.h"
namespace {
LLControlGroup s_saved_settings("dummy_settings");
const LLUUID TEST_PARCEL_ID("11111111-1111-1111-1111-111111111111");
}
@ -64,13 +63,12 @@ LLMessageSystem * gMessageSystem;
char const* const _PREHASH_AgentID = 0; // never dereferenced during this test
char const* const _PREHASH_AgentData = 0; // never dereferenced during this test
LLAgent gAgent;
LLAgent::LLAgent() : mAgentAccess(s_saved_settings) { }
LLAgent::LLAgent() : mAgentAccess(NULL) { }
LLAgent::~LLAgent() { }
void LLAgent::sendReliableMessage(void) { }
LLUUID gAgentSessionID;
LLUUID gAgentID;
LLUIColor::LLUIColor(void) { }
LLAgentAccess::LLAgentAccess(LLControlGroup & settings) : mSavedSettings(settings) { }
LLControlGroup::LLControlGroup(std::string const & name) : LLInstanceTracker<LLControlGroup, std::string>(name) { }
LLControlGroup::~LLControlGroup(void) { }
void LLUrlEntryParcel::processParcelInfo(const LLUrlEntryParcel::LLParcelData& parcel_data) { }

View File

@ -73,11 +73,9 @@ static void substitute_string(std::string &input, const std::string &search, con
}
#include "../llagent.h"
LLAgent::LLAgent() : mAgentAccess(gSavedSettings) { }
LLAgent::LLAgent() : mAgentAccess(NULL) { }
LLAgent::~LLAgent() { }
bool LLAgent::isGodlike() const { return FALSE; }
LLAgentAccess::LLAgentAccess(LLControlGroup& settings) : mSavedSettings(settings) { }
LLUIColor::LLUIColor() {}
LLAgent gAgent;

View File

@ -59,12 +59,6 @@ class LLDir_Mock : public LLDir
return 0;
}
BOOL getNextFileInDir(const std::string &dirname,
const std::string &mask,
std::string &fname)
{
return false;
}
void getRandomFileInDir(const std::string &dirname,
const std::string &mask,
std::string &fname) {}