Skip to content
Snippets Groups Projects
  1. Sep 03, 2016
    • Nat Goodspeed's avatar
      MAINT-5232: Break out LLCoros::get_id() into its own header file. · 976f4b62
      Nat Goodspeed authored
      We need LLSingleton machinery to be able to reference get_id() without also
      depending on all the rest of LLCoros -- since LLCoros isa LLSingleton.
      976f4b62
    • Nat Goodspeed's avatar
      MAINT-5232: Add LLCoros::get_id() to identify the running coroutine. · f931f6ef
      Nat Goodspeed authored
      Change the module-static thread_specific_ptr to a function-static
      thread_specific_ptr so it will be initialized on demand -- since LLSingleton
      will need to rely on get_id(). Note that since LLCoros isa LLSingleton, we
      must take great care to avoid circularity.
      
      Introduce a private helper class LLCoros::Current to obtain and bind that
      thread_specific_ptr. Change all existing internal references from the static
      thread_specific_ptr to the new Current helper class.
      f931f6ef
    • Nat Goodspeed's avatar
      MAINT-5232: Add DEBUG logging to LLSingleton dependency tracking. · c71e6222
      Nat Goodspeed authored
      Specifically, add DEBUG logging to the code that maintains the stack of
      LLSingletons currently being initialized. This involves passing
      LLSingletonBase's constructor the name of LLSingleton's template parameter
      subclass, since during that constructor typeid(*this).name() will only produce
      "LLSingletonBase".
      
      Also add logdebugs() and oktolog() helper functions.
      c71e6222
    • Nat Goodspeed's avatar
      MAINT-5232: Make LLError::is_available() depend on both LLSingletons. · 4af7e496
      Nat Goodspeed authored
      LLError machinery depends on two different LLSingletons. Its is_available()
      function is primarily for LLSingleton itself to determine whether it is, or is
      not, safe to log. Until both of LLError's LLSingletons have been constructed,
      attempting to log LLSingleton operations could produce infinite recursion.
      4af7e496
  2. Sep 02, 2016
  3. Sep 01, 2016
  4. Aug 31, 2016
  5. Aug 30, 2016
  6. Aug 11, 2016
  7. Aug 04, 2016
  8. Aug 01, 2016
  9. Jul 27, 2016
  10. Jul 26, 2016
  11. Aug 03, 2016
    • Nat Goodspeed's avatar
      MAINT-6584: Use RAII classes to manage helper object lifespans. · 03bff896
      Nat Goodspeed authored
      Use boost::scoped_ptr instead of raw pointers to LLKDUMemSource,
      LLKDUDecodeState, kdu_coords and kdu_dims so cleanup is simpler, and automated
      on destruction of LLImageJ2CKDU.
      
      Replace pointer to kdu_codestream with a custom RAII class. kdu_codestream is
      itself an opaque handle, so we don't need to add another layer of indirection.
      Just wrap it to ensure its destroy() method is reliably called when needed.
      
      Make static instances of LLKDUMessageWarning and LLKDUMessageError
      self-register, eliminating the companion static bool and explicit checks in
      code.
      03bff896
  12. Jul 26, 2016
  13. Jul 25, 2016
  14. Jul 22, 2016
  15. Jul 21, 2016
    • Nat Goodspeed's avatar
      MAINT-6584: Streamline static LLImageJ2C implementation API. · 71b593e8
      Nat Goodspeed authored
      Specifically, remove unused function pointer types CreateLLImageJ2CFunction,
      DestroyLLImageJ2CFunction and EngineInfoLLImageJ2CFunction.
      
      Also eliminate static fallbackDestroyLLImageJ2CImpl() and
      fallbackEngineInfoLLImageJ2CImpl(), leaving only static
      fallbackCreateLLImageJ2CImpl().
      
      We do need a factory function to instantiate the appropriate LLImageJ2CImpl
      subclass, so leave the fallbackCreateLLImageJ2CImpl() link seam in place.
      
      However, given that every known LLImageJ2CImpl subclass is cheap to
      instantiate, make getEngineInfo() a pure virtual method on that subclass: the
      static LLImageJ2C::getEngineInfo() method can temporarily construct an
      instance to query. While we're at it, make getEngineInfo() return std::string
      like LLImageJ2C::getEngineInfo(). It's ridiculous that
      fallbackEngineInfoLLImageJ2CImpl() implementations constructed a static
      std::string and returned its c_str(), only to have LLImageJ2C::getEngineInfo()
      construct ANOTHER std::string from the returned const char*.
      
      fallbackDestroyLLImageJ2CImpl() never did anything useful: it merely deleted
      the passed LLImageJ2CImpl subclass pointer as the specific subclass type. But
      since LLImageJ2CImpl's destructor is virtual, LLImageJ2C's destructor could
      simply delete the stored LLImageJ2CImpl*. In fact, make mImpl a
      boost::scoped_ptr<LLImageJ2CImpl> so we don't even have to delete it manually.
      71b593e8
    • Nat Goodspeed's avatar
      DRTVWR-427: Remove engineInfoLLImageJ2CKDU(), createLLImageJ2CKDU(), · f09a92f1
      Nat Goodspeed authored
      destroyLLImageJ2CKDU().
      
      These were apparently intended as simple C-style DLL entry points. But as
      nobody calls them, and as we decided against building the viewer from DLLs,
      they only clutter the code.
      f09a92f1
Loading