Skip to content
Snippets Groups Projects
  1. Mar 16, 2017
  2. Mar 13, 2017
    • Nat Goodspeed's avatar
    • Nat Goodspeed's avatar
    • Oz Linden's avatar
      increment viewer version to 5.0.4 · 49e11474
      Oz Linden authored
      49e11474
    • Oz Linden's avatar
      51a4af93
    • Nat Goodspeed's avatar
    • Nat Goodspeed's avatar
      DRTVWR-418: Make LLEventPumps an LLHandleProvider for LLEventPump. · c1458713
      Nat Goodspeed authored
      LLEventPump's destructor was using LLEventPumps::instance() to unregister the
      LLEventPump instance from LLEventPumps. Evidently, though, there are lingering
      LLEventPump instances that persist even after the LLSingletonBase::deleteAll()
      call destroys the LLEventPumps LLSingleton instance. These were resurrecting
      LLEventPumps -- pointlessly, since a newly-resurrected LLEventPumps instance
      can have no knowledge of the LLEventPump instance! Unregistering is
      unnecessary!
      
      What we want is a reference we can bind into each LLEventPump instance that
      allows us to safely test whether the LLEventPumps instance still exists.
      LLHandle is exactly that. Make LLEventPumps an LLHandleProvider and bind its
      LLHandle in each LLEventPump's constructor; then the destructor can unregister
      only when LLEventPumps still exists.
      c1458713
    • Nat Goodspeed's avatar
      DRTVWR-418: #include "llrefcount.h" : LLTombStone uses LLRefCount. · e6fc3528
      Nat Goodspeed authored
      Apparently we've been getting away so far without this essential #include only
      by "leakage" from other #includes in existing consumers. <eyeroll/>
      e6fc3528
    • Nat Goodspeed's avatar
      DRTVWR-418: Use LLTempBoundListener to manage "mainloop" listener. · a33c5930
      Nat Goodspeed authored
      LLUpdaterServiceImpl binds its onMainLoop() listener method to the "mainloop"
      event so it can wake up periodically to recheck for updates. (Suggests maybe a
      smarter conventional callback-on-timer facility with a central queue, instead
      of every interested party intercepting *every* frame...)
      
      ~LLUpdaterServiceImpl() was calling LLEventPumps::instance() only to
      disconnect that listener, which was resurrecting the deleted LLEventPumps
      instance. Instead store an LLTempBoundListener in LLUpdaterServiceImpl, the
      conventional way to implicitly disconnect on destroy. Use its disconnect()
      method when explicit disconnection is desired.
      a33c5930
    • Nat Goodspeed's avatar
      DRTVWR-418: Ignore logging that requires resurrecting singletons. · 1a8c8df6
      Nat Goodspeed authored
      The logging subsystem depends on two different LLSingletons for some reason.
      It turns out to be very difficult to completely avoid executing any logging
      calls after the LLSingletonBase::deleteAll(), but we really don't want to
      resurrect those LLSingletons so late in the run for a couple stragglers.
      Introduce LLSingleton::wasDeleted() query method, and use it in logging
      subsystem to simply bypass last-millisecond logging requests.
      1a8c8df6
    • Nat Goodspeed's avatar
      DRTVWR-418: Tweak shutdown sequence to avoid resurrecting singletons. · 04c3f2b0
      Nat Goodspeed authored
      The LLSingletonBase::deleteAll() call late in LLAppViewer::cleanup() deletes
      the LLSingleton(s) used by the logging machinery, among other things. Attempting
      further logging after that call (such as our cheery "Goodbye!") has the
      unfortunate effect of attempting to resurrect the deleted LLSingleton(s). Move
      "Goodbye!" to just *before* the call.
      
      Also, given that call, the manual references to a couple specific LLSingletons
      in ~LLAppViewer() are (a) unnecessary and (b) cause attempted resurrection.
      Eliminate both.
      04c3f2b0
  3. Mar 12, 2017
  4. Mar 11, 2017
  5. Mar 10, 2017
  6. Mar 09, 2017
  7. Mar 08, 2017
  8. Mar 06, 2017
  9. Mar 03, 2017
  10. Mar 01, 2017
  11. Feb 28, 2017
  12. Feb 24, 2017
  13. Feb 23, 2017
Loading