Commit Graph

294 Commits (8a13530ce4eeb481ee467fd3ec54f1ed7e9f632a)

Author SHA1 Message Date
Oz Linden d7c8678c3a merge 5.1.0-release 2018-01-17 12:43:28 -05:00
Nat Goodspeed 5002bf5660 MAINT-8087: Use env vars from VMP for AppData\Roaming and Local.
On Windows, when logged in with a non-ASCII username, every one of the three
documented APIs -- SHGetSpecialFolderPath(), SHGetFolderPath() and
SHGetKnownFolderPath() -- fails to retrieve any pathname at all. We cannot
account for the fact that the oldest of these continues to work with the
release viewer and within a Python script (though not, curiously, from a
Python interactive session). With a non-ASCII username, they consistently fail
when called from an Alex Ivy viewer build: "The filename, directory name, or
volume label syntax is incorrect."

Empirically, with a non-ASCII username, the preset APPDATA and LOCALAPPDATA
environment variables are also useless, e.g. c:\Users\??????\AppData\Roaming
where those are, yup, actual question marks.

Empirically, the VMP is able to successfully call SHGetFolderPath() to
retrieve both AppData\Roaming and AppData\Local. Therefore, we make the VMP
set the APPDATA and LOCALAPPDATA environment variables to the UTF-8 encoded
correct pathnames. Instead of calling SHGetSomethingFolderPath() at all, make
LLDir_Win32 retrieve those environment variables.

Make LLFile::mkdir() treat "directory already exists" as a success case. Every
single call fell into one of two categories: either it didn't check success at
all, or it tested specially to exempt errno == EEXIST. Migrate that test into
mkdir(); eliminate it from call sites.

Make LLDir::append() and add() convenience functions accept variadic
arguments. Replace add(add()...) constructs, as well as clumsy concatenations
of directory names and getDirDelimiter(), with simple variadic add() calls.
2017-12-20 22:51:26 -05:00
Nat Goodspeed 870008f15b MAINT-8087: New LLDir_Win32 code requires ole32 in a few more places. 2017-12-14 19:33:10 -05:00
Nat Goodspeed 0c7bc67814 Automated merge with ssh://bitbucket.org/lindenlab/viewer-release 2017-10-11 14:35:49 -04:00
Oz Linden d62ad1ef8a merge changes for 5.0.8-release 2017-10-11 09:13:55 -04:00
Oz Linden d8be66c8e2 merge changes for 5.0.6-release 2017-06-20 17:05:53 -04:00
Nat Goodspeed a3066b7375 Automated merge with ssh://bitbucket.org/lindenlab/viewer-release 2017-06-20 16:11:33 -04:00
andreykproductengine f8254a9d78 MAINT-7758 Fixed freeze on loading lsl scripts from unicode named windows folder. 2017-08-30 19:57:02 +03:00
Brad Payne (Vir Linden) b8e2c58cec no-op edit to force a rebuild 2017-05-24 13:08:12 +01:00
Brad Payne (Vir Linden) 9311cc89ea DRTVWR-434 - trivial code change to trigger TC rebuild, also slight improvement to a log message 2017-04-11 13:45:43 -04:00
Oz Linden 0a7fd3686a Look for logcontrol-dev.xml in the user settings directory 2017-02-27 09:52:50 -05:00
Nat Goodspeed 434f0e161a Automated merge with ssh://bitbucket.org/lindenlab/viewer-release 2017-02-03 09:54:52 -05:00
Nat Goodspeed 1df282efa1 DRTVWR-418: Fix streamtools test.
When std::istream::good() returns false, presumably we can no longer rely on
get() returning valid data. Certain streamtools tests were assuming that get()
would return the empty string at EOF, but in fact it appears that it left the
previous buffer contents unmodified.
2016-12-19 15:58:52 -05:00
Nat Goodspeed 704c53b3c5 MAINT-5232: Merge up to VLC viewer from viewer-release 2016-10-11 10:59:17 -04:00
Nat Goodspeed c92eb7e591 Automated merge with ssh://bitbucket.org/lindenlab/viewer-release 2016-08-30 11:36:06 -04:00
Nat Goodspeed 8854f5ca29 Automated merge with ssh://bitbucket.org/nat_linden/viewer-mac-mainloop 2016-07-01 14:11:45 -04:00
Nat Goodspeed 464a0df4c1 DRTVWR-418: Unify control flow through LLAppViewer across platforms.
The LLApp API used to consist of init(), mainLoop(), cleanup() methods. This
makes sense -- but on Mac that structure was being subverted. The method
called mainLoop() was in fact being called once per frame. There was
initialization code in the method, which (on Mac) needed to be skipped with an
already-initialized bool. There was a 'while' loop which (on Mac) needed to be
turned into an 'if' instead so the method would return after every frame.

Rename LLApp::mainLoop() to frame(). Propagate through subclasses LLAppViewer
and LLCrashLogger. Document the fact that frame() returns true to mean "done."
(This was always the case, but had to be inferred from the code.)

Rename the Mac Objective-C function mainLoop to oneFrame. Rename the C++ free
function it calls from runMainLoop() to pumpMainLoop(). Add comments to
llappdelegate-objc.mm explaining (inferred) control flow.

Change the Linux viewer main() and the Windows viewer WINMAIN() from a single
LLAppViewer::mainLoop() call to repeatedly call frame() until it returns true.

Move initialization code from the top of LLAppViewer::frame() to the init()
method, where it more properly belongs. Remove corresponding
mMainLoopInitialized flag (and all references) from LLAppViewer.

Remove 'while (! LLApp::isExiting())' (or on Mac, 'if (! LLApp::isExiting())')
from LLAppViewer::frame() -- thus unindenting the whole body of the 'while'
and causing many lines of apparent change. (Apologies to reviewers.)

There are four LLApp states: APP_STATUS_RUNNING, APP_STATUS_QUITTING,
APP_STATUS_STOPPED and APP_STATUS_ERROR. Change LLAppViewer::frame() return
value from (isExiting()) (QUITTING or ERROR) to (! isRunning()). I do not know
under what circumstances the state might transition to STOPPED during a
frame() call, but I'm quite sure that if it does, we don't want to call
frame() again. We only want a subsequent call if the state is RUNNING.

Also rename mainLoop() method in LLCrashLogger subclasses
LLCrashLoggerWindows, LLCrashLoggerMac, LLCrashLoggerLinux. Of course it's
completely up to the frame() method whether to yield control; none of those in
fact do. Honor protocol by returning true (frame() is done), even though each
one's main() caller ignores the return value.

In fact LLCrashLoggerWindows::mainLoop() wasn't using the return protocol
correctly anyway, returning wParam or 0 or 1 -- possibly because the return
protocol was never explicitly documented. It should always return true: "I'm
done, don't call me again."
2016-06-30 16:51:50 -04:00
callum_linden 9c4ed8d113 Automated merge with tip of viewer-release to pick up 4.0.5 2016-05-19 11:00:03 -07:00
callum_linden b50df60aa1 DRTVWR-418 remove vestiges of TCMALLOC and GooglePerfTools from the viewer 2016-04-21 16:13:39 -07:00
Oz Linden 9be58e915a merge with 4.0.3-release 2016-04-04 15:53:09 -04:00
Oz Linden 867ef882fd merge changes for OPEN-292 2016-02-07 13:41:41 -08:00
Cinder Biscuits cc235cdcc4 Merged lindenlab/viewer-tools-update into default 2015-11-29 20:14:22 -07:00
Oz Linden c8726aba30 remove execute permission from many files that should not have it 2015-11-10 09:48:56 -05:00
Rider Linden 907efc9cc9 MAINT-5507: Remove llcurl, move constant values and untilities to llcorehttp lib 2015-09-15 17:01:26 -07:00
Rider Linden 196caf21a8 MAINT-5507: Removal of sdrpc client/server
MAINT-5507: removal of LLCurl::Easy, LLCurl::Multi LLCurl::Responder
2015-09-14 16:10:20 -07:00
Rider Linden 32912a3958 MAINT-5507: Test checkin with RPC code and URL request disabled. Make sure it does not break non windows builds. 2015-09-14 13:33:50 -07:00
Rider Linden 5753c274ba Adding boost libs to lltest 2015-08-17 11:37:47 -07:00
Rider Linden efbbbca9b0 Get unit tests (Integration and project) compiling and linking again. 2015-08-17 10:25:11 -07:00
Nat Goodspeed 4302637464 MAINT-5232: Make gMessageSystem an LLPounceable<LLMessageSystem*>.
This will permit other subsystems to use gMessageSystem.callWhenReady() to (e.g.)
register callbacks as soon as gMessageSystem is fully initialized.
2015-05-23 12:41:47 -04:00
Oz Linden 5c6cf3e7fb restore the ll[io]fstream because we need them as wrappers on Windows for wide char paths; on other platforms they are now just typedefs to the std classes 2015-04-10 11:02:37 -04:00
Oz Linden 8b42c7898e replace llifstream and llofstream with std::ifstream and std::ofstream respectively 2015-04-07 17:59:28 -04:00
Oz Linden 3a57b18896 convert llifstream and llofstream to std::ifstream and std::ofstream respectively 2015-04-07 17:28:05 -04:00
Cinder ca08bd5aba OPEN-292 - Remove lscript from project,
Remove legacy udp script upload methods,
Refactor script runtime perms from three arrays to one struct array so we don't have to juggle array order anymore.
2015-02-08 12:53:39 -07:00
Nat Goodspeed 834a1f6afe Re-enable skipped test: evidently Windows APR libs CAN transcode.
I don't know at what point the skip() was introduced, but that test now passes
even on Windows.
2015-01-23 11:51:01 -05:00
Nat Goodspeed 210c95b283 Remove Visual Studio workaround for lack of std::fpclassify().
Visual Studio 2013 evidently does provide std::fpclassify(), so we no longer
need the funky local alias.
2014-12-16 14:03:57 -05:00
Nat Goodspeed d74d8ff7c5 Replace boost::lambda::_1 with boost::phoenix::placeholders::arg1.
Apparently in Boost 1.57 with Xcode 6, the combination of Boost.Lambda and
Boost.Function is broken -- Trac ticket 10864:
https://svn.boost.org/trac/boost/ticket/10864
However, Boost.Phoenix provides an acceptable replacement.
2014-12-10 11:15:56 -08:00
Nat Goodspeed c54d102c8f Wrap #pragma clang in #if __clang__, else VS produces fatal warnings. 2014-12-05 08:48:10 -05:00
Nat Goodspeed 80fdd85a0c Suppress non-useful NaN test in llsd_new_tut.cpp 2014-10-24 11:55:37 -07:00
Nat Goodspeed 918e2b629b Bring in new TUT library build. Clean up ensure_equals() overloads.
The new TUT library build eliminates the ambiguity about ensure_equals(const
char*, ...) versus ensure_equals(const std::string&, ...). Now it's all based
on const std::string&. Remove pointless const char* overloads and ambiguous
forwarding templates.
With clang in Xcode 6, any new datatypes we intend to use with ensure_equals()
must have operator<<(std::ostream&, datatype) declared BEFORE lltut.h
#includes tut.hpp. Reorder code in certain test source files to guarantee that
visibility.
2014-10-23 20:23:08 -07:00
Nat Goodspeed 642c334efa Fix Xcode 6 compile errors relating to tut::ensure_equals() overloads.
lltut.h declares a number of ensure_equals() overloads for various data types,
notably the types supported by LLSD. We expect these to be called by tut code.
But the tut code in question is in a template in tut.hpp -- which was
#included BEFORE the overloads were declared. Previous C++ compilers have
evidently made multiple passes, collecting the relevant overloads before
attempting to compile the template bodies. clang does not, complaining that
the overloads must be declared before the tut.hpp template code that
references them. Reordering parts of lltut.h seems to address that problem.
For similar reasons, test programs that use StringVec.h and its operator<<()
must #include StringVec.h before lltut.h.
Add ensure_equals(const std::string&, const LLSD::Binary&, const LLSD::Binary&)
overload. The sloppy mix of (const char*, ...) and (const std::string&, ...)
overloads bothers me, since for many of those ... types we seem to have to
duplicate them.
2014-10-23 08:44:42 -07:00
callum_linden 2b8673d15a Update to build on Xcode 6.0 (fix unit tests): comment out failing unit test in llsd_new_tut.cpp to let the build proceed - will fix later 2014-10-22 18:06:21 -07:00
Oz Linden 7b6554db3d added quoting to clarify failure messages 2014-10-22 11:59:20 -04:00
callum_linden f3baf8dc4e Update to build on Xcode 6.0: remove #pragmas from code to deal with tut warnigs/errors (moved to package) AND bracket clang #pragmas in #if LL_DARWIN 2014-10-20 16:02:03 -07:00
callum_linden 86f49bec1b Update to build on Xcode 6.0: turn off warnings about unused functions from clang for tut package 2014-10-17 20:25:31 -07:00
callum_linden 618bb404fc Update to build on Xcode 6.0: turn off warnings about unused functions from clang for tut package 2014-10-17 16:53:40 -07:00
callum_linden d20c719f03 Update to build on Xcode 6.0: turn off warnings about unused functions from clang for tut package 2014-10-17 16:20:36 -07:00
JJ Linden 5cb5c267ca fixes for cmake warnings about policy changes. could not fully test these changes 2014-10-13 12:46:55 -07:00
Oz Linden e15002a11c merge changes for 3.7.9-release 2014-06-16 11:42:37 -04:00
Stinson Linden 8392fde6f6 Pull and merge from ssh://hg@bitbucket.org/lindenlab/viewer-drtvwr-365. 2014-06-02 22:32:16 +01:00
Stinson Linden 08e83a341e MAINT-4009: Final pass refactoring to eliminate memory allocation related to error reporting that is not properly cleaned up. 2014-05-17 00:41:36 +01:00