1. 10 Apr, 2020 5 commits
  2. 09 Apr, 2020 3 commits
  3. 08 Apr, 2020 11 commits
    • Thibault Saunier's avatar
      ges: Fix reloading UriClipAsset synchronously · 4c985b41
      Thibault Saunier authored
      And add tests for that
      4c985b41
    • Thibault Saunier's avatar
      ges: Rework the way we ensure core elements are not wrongly moved between clips · e41a6b6f
      Thibault Saunier authored
      Instead of focusing on the instances of the clips and their children,
      we relax the check to allow moving track element clip between clips
      that share a common asset. This makes it as correct conceptually but
      more flexible, and the code becomes simpler.
      e41a6b6f
    • Henry Wilkes's avatar
      group: tidied timeline membership in copy-paste · ef1c0f0f
      Henry Wilkes authored
      Previously, the GESContainer ->paste method and GESGroup ->paste methods
      were unnecessarily setting the timeline of groups, even though this is
      handled by the GESGroup ->child_added method. This could result in the
      group being added multiple times.
      ef1c0f0f
    • Henry Wilkes's avatar
      timeline-tree: fix overlap check · eec9c90a
      Henry Wilkes authored
      Previously, the code was not able to detect that an element overlaps on
      its end, nor could it detect that an element overlaps two elements that
      already overlap.
      eec9c90a
    • Henry Wilkes's avatar
      clip: tidy grouping · f6984081
      Henry Wilkes authored
      Make the grouping of clips cleaner by checking that the clips share the
      same asset.
      f6984081
    • Henry Wilkes's avatar
      clip: secure adding clip to layer · e57c345f
      Henry Wilkes authored
      Add more checks when adding a clip to a layer, or moving a clip to a new
      layer. Also, mark the "layer" property as explicit-notify.
      e57c345f
    • Henry Wilkes's avatar
      uri-clip: match children by track · 46e6a074
      Henry Wilkes authored
      When the asset of a uri clip is reset, its core children are removed and
      replaced by the new core children. When replacing, the `set_asset`
      method attempts to copy children properties from the previous children
      to the new children. However, the children were matched by track-type
      only. This would not function as intended when a URI contains multiple
      audio or video streams. Instead, we now match children by the tracks
      themselves. This should work better, provided the user's
      select-tracks-for-object is well behaved.
      
      Also, fix a memory problem in `set_mute` for when a child is not in a
      track.
      46e6a074
    • Henry Wilkes's avatar
      timeline-element: only copy read-write properties · ba31a8d6
      Henry Wilkes authored
      Only copy the properties that can be both read and written, and are not
      construct only. Similarly for child properties when a track-element is
      deep copied.
      ba31a8d6
    • Henry Wilkes's avatar
      timeline: return sunk element on pasting · fe854bba
      Henry Wilkes authored
      Technically, an element can still be floating on the return from
      `->paste` (e.g. a clip not in a layer). Since the return of the `_paste`
      methods are (return full) a non-floating object is probably expected in
      all cases.
      fe854bba
    • Henry Wilkes's avatar
      auto-transition: select track directly · 067304a0
      Henry Wilkes authored
      By-pass the select-tracks-for-object signal for auto-transitions since
      their track element must land in the same track as the elements it is
      the auto-transition for.
      067304a0
    • Henry Wilkes's avatar
      timeline: re-handle clip children track selection · 269c2d1d
      Henry Wilkes authored
      The way a clip's track elements are added to tracks was re-handled. This
      doesn't affect the normal usage of a simple audio-video timeline, where
      the tracks are added before any clips, but usage for multi-track
      timelines has improved. The main changes are:
      
      + We can now handle a track being selected for more than one track,
        including a full copy of their children properties and bindings.
        (Previously broken.)
      + When a clip is split, we copy the new elements directly into the same
        track, avoiding select-tracks-for-object.
      + When a clip is grouped or ungrouped, we avoid moving the elements to
        or from tracks.
      + Added API to allow users to copy the core elements of a clip directly
        into a track, complementing select-tracks-for-object.
      + Enforced the rule that a clip can only contain one core child in a
        track, and all the non-core children must be added to tracks that
        already contains a core child. This extends the previous condition
        that two sources from the same clip should not be added to the same
        track.
      + Made ges_track_add_element check that the newly added track element
        does not break the configuration rules of the timeline.
      + When adding a track to a timeline, we only use
        select-tracks-for-object to check whether track elements should be
        added to the new track, not existing ones.
      + When removing a track from a timeline, we empty it of all the track
        elements that are controlled by a clip. Thus, we ensure that a clip
        only contains elements that are in the tracks of the same timeline, or
        no track. Similarly, when removing a clip from a timeline.
      + We can now avoid unsupported timeline configurations when a layer is
        added to a timeline, and already contains clips.
      + We can now avoid unsupported timeline configurations when a track is
        added to a timeline, and the timeline already contains clips.
      
      Fixes #84
      269c2d1d
  4. 07 Apr, 2020 4 commits
    • Henry Wilkes's avatar
      timeline: stop connecting to track-element-added · f7a1bdb2
      Henry Wilkes authored
      This was used to connect to the track element's notify::start signal in
      order to update the duration of the timeline (it is not clear why the
      notify::duration signal was not also connected to for the same reason).
      However, this is already covered by the timeline_tree_move method, which
      is always called to update the start of a track element, even if it is not
      part of a clip (and similarly for timeline_tree_trim, which is called
      when the duration is set).
      f7a1bdb2
    • Henry Wilkes's avatar
      clip: allow arbitrary max-duration when no core children · a93e8734
      Henry Wilkes authored
      Before the max-duration could be set arbitrarily when the clip was empty,
      to indicate what the max-duration would be once the core children were
      created. Now, we can also do this whilst the clip only contains non-core
      children.
      a93e8734
    • Henry Wilkes's avatar
      track-element: change owner to creator · 278a5fd7
      Henry Wilkes authored
      Rename the private "owners" to "creators" to avoid confusing this with
      the owner of the track element's memory.
      
      Also made the ungroup method for GESClip symmetric by making all the
      children of the resulting clips share their creators, which allows them
      to be added to any of the other ungrouped clips. Once the clips are
      grouped back together, the tracks loose these extra creators.
      278a5fd7
    • Henry Wilkes's avatar
      container: change ownership when adding · 6e55a655
      Henry Wilkes authored
      Make sure we sink the child on adding, and keep it alive until the end
      in case the method fails.
      
      Also, since the child mappings hold a ref to the child, they should give
      them up in their free method. This way, the ref will be given up on
      disposing, even if ges_container_remove fails.
      
      Also, reverse setting of the start of the container if adding fails.
      6e55a655
  5. 06 Apr, 2020 1 commit
  6. 31 Mar, 2020 1 commit
  7. 30 Mar, 2020 3 commits
  8. 27 Mar, 2020 3 commits
  9. 25 Mar, 2020 9 commits