Skip to content
Snippets Groups Projects
  1. Jun 07, 2021
  2. May 26, 2021
  3. Apr 26, 2021
  4. Apr 23, 2021
  5. Mar 24, 2020
  6. Dec 16, 2019
  7. Dec 13, 2019
  8. Oct 08, 2019
  9. Sep 25, 2019
  10. Jun 12, 2019
  11. Mar 05, 2019
  12. Nov 20, 2018
  13. Aug 23, 2018
    • Nat Goodspeed's avatar
      DRTVWR-447: Add (some) metadata to Mac crash reports. · e674f117
      Nat Goodspeed authored
      This required reordering certain operations during Mac viewer startup. Split
      llappviewermacosx.cpp's initViewer() function into constructViewer() (which
      instantiates LLAppViewerMacOSX) and initViewer() (which calls
      LLAppViewerMacOSX::init()).
      
      llappdelegate-objc.mm's applicationDidFinishLaunching override now calls
      [BugsplatStartupManager start] between constructViewer() and initViewer(): we
      want constructViewer() to have set up the logging subsystem so we can log the
      actions of BugsplatStartupManagerDelegate override methods, but otherwise we
      want BugsplatStartupManager in place as early as possible to catch any early
      crashes. Besides, initViewer() ends up overwriting the static_debug_info.log
      on which we depend for the *previous* run's crash metadata.
      
      Move the code that initializes the pathname of the static_debug_info.log file
      from LLAppViewerMacOSX::init() to the LLAppViewerMacOSX() constructor, since
      BugsplatStartupManagerDelegate override methods need to read (the previous
      run's) file.
      
      Add code to applicationLogForBugsplatStartupManager override to set new
      BugsplatMac 1.0.6 properties userName and userEmail.
      
      Don't log empty fields from static_debug_info.log if we couldn't read it.
      e674f117
  14. Aug 22, 2018
    • Nat Goodspeed's avatar
    • Nat Goodspeed's avatar
      DRTVWR-447: Attempt to post BugSplat metadata with Mac crash reports. · 7dc01447
      Nat Goodspeed authored
      Introduce CrashMetadata, an LLSingleton in llappviewermacosx.cpp, declared in
      llappviewermacosx-for-objc.h and accessed by the various
      BugsplatStartupManagerDelegate override methods. CrashMetadata is populated by
      reading the previous (presumably crashed) run's static_debug_info.log file.
      
      This replaces the previous getOldLogFilePathname(), getFatalMessage() and
      getAgentFullname() functions. To extend that suite for additional metadata,
      not only would we have to keep adding new free functions, but we'd have to
      keep rereading the static_debug_info.log file.
      
      Override the new applicationKeyForBugsplatStartupManager,
      defaultUserNameForBugsplatStartupManager,
      defaultUserEmailForBugsplatStartupManager methods to extract relevant fields
      from CrashMetadata. Change applicationLogForBugsplatStartupManager and
      attachmentForBugsplatStartupManager to do the same.
      
      Enhance llviewerregion.cpp to update the static_debug_info.log file every
      time we enter a new region.
      7dc01447
  15. Jun 28, 2018
    • Nat Goodspeed's avatar
      DRTVWR-447: Suppress BugSplat UI; auto-fill certain BugSplat data. · cd52724e
      Nat Goodspeed authored
      Direct BugSplat to send crash reports without prompting, on both Windows and
      Mac.
      
      Add a mechanism by which code called after LL_ERRS() can retrieve the fatal
      log message string. (How did the crash logger extract that for Linden crash
      logging?)
      
      Add that fatal message to crash reports on Windows. But as BugsplatMac is
      engaged only on the run _after_ the crash, we no longer have that message in
      memory.
      
      Also add user name and region location to Windows crash reports. On Mac, (a)
      we don't have the information from the previous run and (b) BugsplatMac
      doesn't provide an API to attach that information to the crash report.
      
      Add Mac logging to indicate the success or failure of sending the crash
      report. Add Windows logging to indicate we're about to send.
      cd52724e
  16. Jun 19, 2018
  17. Jun 18, 2018
  18. Jun 15, 2018
    • Nat Goodspeed's avatar
      SL-821: Try to add SecondLife.log file to Mac BugSplat crash report. · 448e82f3
      Nat Goodspeed authored
      Introduce new header file llappviewermacosx-for-objc.h to publish for
      llappdelegate-objc.mm and other Objective-C++ consumers the free functions in
      llappviewermacosx.cpp they consume. These were never before declared in any
      header file. Apparently, to date, we've been trusting to luck that
      Objective-C++ will infer the correct signature from calls -- and that the
      calls are correct with respect to the function definitions.  :-P
      
      This gives us a place to introduce a new getLogFilePathname() function to
      query LLDir. (We don't simply #include "lldir.h" because of the pervasive use
      of BOOL in viewer headers; BOOL means something very different in Objective-C++.)
      448e82f3
  19. Feb 23, 2017
    • Nat Goodspeed's avatar
      DRTVWR-418: Fix a round of compile errors surfaced by -std=c++11. · ae0b3149
      Nat Goodspeed authored
      These are mostly things that were in fact erroneous, but accepted by older
      compilers.
      
      This changeset has not yet been built with Visual Studio 2013 or Linux gcc,
      even with -std=c++11.
      
      This changeset has not been built *without* -std=c++11. It should be used in
      conjunction with a corresponding change to LL_BUILD_DARWIN_BASE_SWITCHES in
      viewer-build-variables/variables.
      
      This is a work in progress. We do not assert that this changeset completes the
      work needed to turn on -std=c++11, even on the Mac.
      ae0b3149
  20. Dec 19, 2016
  21. Jun 30, 2016
    • Nat Goodspeed's avatar
      DRTVWR-418: Unify control flow through LLAppViewer across platforms. · 464a0df4
      Nat Goodspeed authored
      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."
      464a0df4
  22. Nov 10, 2015
  23. Sep 16, 2015
  24. Apr 24, 2015
  25. Oct 18, 2014
  26. Dec 03, 2013
  27. Sep 26, 2013
  28. Aug 15, 2013
  29. Jun 25, 2013
  30. Mar 29, 2013
  31. Feb 04, 2013
  32. Feb 02, 2013
  33. Jan 22, 2013
  34. Jan 08, 2013
    • Geenz's avatar
      Big change set: · 09b07e36
      Geenz authored
      - LLAppDelegate header relocated to LLWindow.  Definition is still present in secondlife-bin (for compatibility reasons when loading a nib).
      - Return key handling fixed.
      - Command key now acts the same as the control key by issuing control character codes when the command key is pressed.
      - We now retrieve the window pointer directly from the app delegate in LLWindow.
      09b07e36
  35. Jan 01, 2013
    • Geenz's avatar
      More things in this commit: · ddb48d51
      Geenz authored
      - Removed the callback system in favor of simply defining functions in a header to later be implemented in whichever file is most convenient for what we want to do (i.e., calling LLWindow callbacks within LLWindowMacOSX, setting cursors in llwindowmacosx-objc.mm, etc.)
      - Viewer shutdown now works appropriately
      - Added a bit of debugging code to test if a key has been handled by the UI or not (useful for tracking down the mystery of the enter key not being handled)
      - Setup a cocoa quit handler within the application delegate that intercepts any termination requests
      ddb48d51
  36. Dec 29, 2012
    • Geenz's avatar
      Huge amount of refactoring to use Cocoa here: · bd152c1f
      Geenz authored
      - Updated to .xib format.  To produce a new nib (which is required after changing the xib file), use "ibtool SecondLife.xib --compile SecondLife.nib" within the newview directory.
      - xib file now defines the viewer's window.  VIews are still being pragmatically added to the main window.  This may change in the future.
      - LLAppViewer's main loop has been slightly refactored to be executed on a timer for OS X.  This probably needs a bit more work.
      - Event handling still needs more work to work within a timer based event loop.  It works fairly sporadically at the moment, as if events are being dropped between timer executions, at least for the mouse.
      - Carbon has been purged from the viewer's startup, and from LLWindow entirely.  There's likely still a few odds and ends fragmented throughout the viewer and its dependencies.  Need to track these down.
      - LLAppViewerMacOSX now uses NSApplicationMain, and also implements the NSApplicationDelegate protocol in LLAppDelegate.
      - Fullscreen support has been implemented for OS X 10.7+
      This is still a work in progress, however at this stage everything needed for a functional viewer is (mostly) complete.  From here, it's mostly just bug hunting and fixing.
      bd152c1f
  37. Jul 30, 2012
  38. Oct 14, 2011
Loading