Skip to content
Snippets Groups Projects
  1. Dec 12, 2017
  2. Dec 07, 2017
  3. Dec 06, 2017
  4. Dec 05, 2017
  5. Dec 04, 2017
    • Nat Goodspeed's avatar
      MAINT-7751: Rework DarwinManifest to produce new app bundle structure. · 488d1658
      Nat Goodspeed authored
      Specifically, Second Life.app is now mostly just a wrapper. Its Contents/
      Resources contains nested Launcher.app (the VMP) and Viewer.app (the viewer
      itself). Most of what used to be in the top-level Second Life.app has been
      relocated to the embedded Viewer.app. VMP stuff has of course been extracted
      to Launcher.app. The top-level Second Life.app executable is now a tiny script
      that runs Launcher.app. This structure permits different icons and different
      Dock flyover text for the launcher and the viewer, hopefully ameliorating a
      certain amount of user confusion about the dual icons.
      
      This requires a corresponding VMP change: on macOS, the VMP must now find both
      its resources and the viewer executable by walking up from Launcher.app and
      down again into its sibling Viewer.app.
      
      Since Dock flyover text is determined by the embedded app names, allow Product
      to change these at will. That means we should be able to tweak exactly one
      variable assignment to change either of those embedded app names, without
      having to chase down other references scattered throughout the source repo.
      
      For that reason, create top-level trampoline SL_Launcher script dynamically:
      it must reference the launcher app by name. That means we must also perform
      (the equivalent of) chmod +x on that generated script.
      
      The one mystery surrounding this restructuring is that without a top-level
      Frameworks symlink pointing to the embedded Viewer.app's Frameworks directory
      (where CEF lives), CEF refuses to start: no splash screen, no MoP. Perhaps we
      can fix that someday.
      
      Use Python's bundled plistlib to generate Info.plist files for the embedded
      applications.
      
      Reorganize stray code stanzas to try to help the structure of the code more or
      less resemble the structure of the desired result.
      
      Add ViewerManifest.relpath() method to determine the relative path from a
      specified base to the target path. If base omitted, assumes get_dst_prefix()
      -- handy for creating symlinks. Determining exactly the right number of
      os.pardir instances to concatenate into the relative pathname for a symlink
      (or an install_name_tool stamp) was tedious, fragile and unobvious, difficult
      to desk-check. Using relpath() should make all that more robust.
      
      Migrate symlinkf() from free function to ViewerManifest method, refactoring
      into _symlinkf_prep_dst() and _symlinkf(), adding relsymlinkf(). This lets us
      add convenience features such as prepending get_dst_prefix() to the dest (the
      place where we want to create the symlink), defaulting dest to the basename of
      target and ensuring that the parent of that dest already exists -- as with
      LLManifest.path(). Moreover, since it makes no sense whatsoever to create an
      absolute symlink to some path on the build machine, relsymlinkf() creates
      every symlink relative to dirname(dest). That, in turn, lets us eliminate a
      certain amount of boilerplate around existing calls. (Also, since we now
      ensure the parent directory exists, scrap the logic to diagnose "nonexistent
      parent directory.")
      
      Make llmanifest.LLManifest.run_command() not pass shell=True to subprocess,
      thereby permitting (requiring) the list form rather than the string form.
      Change all existing calls to list form. This makes calls more readable, for
      two reasons. First, many of the arguments are taken from script variables;
      these can simply be dropped into the list instead of indirecting through
      string interpolation. Second, it eliminates the need to manually escape
      individual arguments, since subprocess promises to honor the distinction
      between list elements.
      
      Also fix LLManifest.put_in_file() to ensure the containing directory exists.
      
      Consolidate some viewer_manifest.py redundancy, e.g. copying the same set of
      ten DLLs from either of two directories depending on Release vs. Debug.
      488d1658
  6. Dec 02, 2017
  7. Nov 29, 2017
  8. Nov 28, 2017
  9. Nov 21, 2017
  10. Nov 17, 2017
  11. Nov 16, 2017
    • Nat Goodspeed's avatar
      MAINT-7977: Release the LLRenderTargets when done. · f2ffd637
      Nat Goodspeed authored
      A classic-C array doesn't destroy its individual elements, but a std::vector
      does. Use a std::vector<LLRenderTarget> for dest, so each LLRenderTarget will
      be destroyed. ~LLRenderTarget() calls its release() method.
      f2ffd637
    • Nat Goodspeed's avatar
      MAINT-7977: If getVertexStrider() returns false, abandon benchmark. · dfc07858
      Nat Goodspeed authored
      Ruslan tracked the observed crash to assignments (to create a dummy triangle)
      through an LLStrider<LLVector3> obtained from getVertexStrider(). When
      getVertexStrider() returns false, produce a warning and just skip the rest of
      the benchmark test.
      
      The one bit of explicit cleanup apparently required by that early exit is a
      call to LLImageGL::deleteTextures() to match the preceding generateTextures()
      call. Wrap both in a new TextureHolder class whose destructor takes care of
      cleanup. The only other references to the corresponding U32 array are a couple
      calls to LLTexUnit::bindManual(); add a bind() method to support that.
      
      Also fix apparent bug in the LL_DARWIN special case for "improbably high and
      likely incorrect": the code assigned -1.f (the "couldn't compute" value) to
      gbps, overlooking the fact that gbps is unconditionally recomputed below. In
      the "likely incorrect" stanza, simply return -1.f instead.
      dfc07858
    • ruslantproductengine's avatar
      MAINT-7977 [Alex Ivy] Feature Table crashes · d310159b
      ruslantproductengine authored
      In case of buff->getVertexStrider(v) return false it mean that glMapBufferRange() return NULL
      The next three lines can be the reason of this crash.
      d310159b
    • andreykproductengine's avatar
  12. Nov 14, 2017
  13. Nov 07, 2017
  14. Nov 03, 2017
  15. Nov 01, 2017
  16. Nov 03, 2017
  17. Nov 06, 2017
Loading