1. 23 Feb, 2018 2 commits
  2. 21 Feb, 2018 1 commit
  3. 20 Feb, 2018 1 commit
  4. 24 Jan, 2018 1 commit
    • Federico Mena Quintero's avatar
      PropertyBag: don't copy the resulting strings during lookup · 94bbc266
      Federico Mena Quintero authored
      String copies in property_bag::lookup() were hurting performance a
      bit.  We want some things:
      * lookup() -> Option<&str> instead of lookup() -> Option<String>
        i.e. avoid copies for strings which will be short-lived anyway.
      * Don't expose property_bag::free() to callers; have automatic
        resource management.
      * Support property_bag::dup() for NodeSvg's special use case.
      The strategy is as follows.  We introduce an opaque PropertyBag
      struct, which is just a wrapper for the (RsvgPropertyBag *) that comes
      from the C side (typedef GHashTable RsvgPropertyBag).
      PropertyBag has dup() and lookup() methods, and an ffi() method to get
      the underlying pointer for special cases.
      We change all the users of the old RsvgPropertyBag pointers to use
      PropertyBag now.  NodeSvg no longer needs to impl Drop, since all it
      was doing was to call property_bag::free().
      The few places where the result of lookup() was meant to be
      long-lived, will actually copy the string now for their own purposes.
  5. 05 Dec, 2017 1 commit