Skip to content
Snippets Groups Projects
  1. May 17, 2021
    • Nat Goodspeed's avatar
      SL-15200: Add LLApp::sleep(duration) methods. · d313d702
      Nat Goodspeed authored
      Two sleep() methods: one accepting F32Milliseconds, or in general any LLUnits
      time class; the other accepting any std::chrono::duration.
      
      The significant thing about each of these sleep() methods, as opposed to any
      freestanding sleep() function, is that it only sleeps until the app starts
      shutdown. Moreover, it returns true if it slept for the whole specified
      duration, false if it woke for app shutdown.
      
      This is accomplished by making LLApp::sStatus be an LLScalarCond<EAppStatus>
      instead of a plain EAppStatus enum, and by making setStatus() call set_all()
      each time the value changes. Then each new sleep() method can call
      wait_for_unequal(duration, APP_STATUS_RUNNING).
      
      Introducing llcond.h into llapp.h triggered an #include circularity because
      llthread.h #included llapp.h even though it didn't reference anything from it.
      Removed. This, in turn, necessitated adding #include "llapp.h" to several .cpp
      files that reference LLApp but had been depending on other header files to
      drag in llapp.h.
      d313d702
  2. Mar 09, 2021
  3. Mar 08, 2021
  4. Sep 17, 2020
  5. Sep 16, 2020
    • Callum Prentice's avatar
      First part of change to remove LLVFS from the Viewer. Consists of code changes... · 3fc07dea
      Callum Prentice authored
      First part of change to remove LLVFS from the Viewer. Consists of code changes to remove LLVFS and LLVFSThread classes along with the associated source files. The existing llvfs folder is renamed to llcache. Also includes changes to CMake script in many places to reflect changes. Eventually, llvfile source file and class will be renamed but that is not in this change.
      3fc07dea
  6. Sep 11, 2020
  7. Mar 25, 2020
  8. Jun 12, 2019
  9. Jan 15, 2019
  10. Sep 07, 2018
  11. Sep 05, 2018
  12. Aug 30, 2017
  13. Aug 29, 2017
  14. Feb 27, 2017
  15. 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
  16. May 06, 2016
  17. Apr 20, 2016
  18. Apr 13, 2016
  19. Mar 08, 2016
  20. Feb 25, 2016
  21. Jan 29, 2016
  22. Dec 16, 2015
  23. Nov 10, 2015
  24. Oct 14, 2015
  25. Sep 16, 2015
  26. Sep 15, 2015
  27. Jul 08, 2015
Loading