diff --git a/.github/actions/close_issue/action.yml b/.github/actions/close_issue/action.yml index da6d03036..846d962e0 100644 --- a/.github/actions/close_issue/action.yml +++ b/.github/actions/close_issue/action.yml @@ -30,7 +30,7 @@ runs: export STATUS_FIELD_ID=PVTSSF_lADOAYE_z84AWEIBzgOGd1k export TARGET_COLUMN_ID=fa223107 export CORE_URL=https://github.com/membraneframework/membrane_core - export ISSUE_CLOSE_COMMENT="Issues related to $REPOSITORY are stored in [membrane_core]($CORE_URL), so we close this issue here and we encourage you to open it [there]($CORE_URL) with labels describing, which repositories relate to the issue." + export ISSUE_CLOSE_COMMENT="Issues related to $REPOSITORY are stored in [membrane_core]($CORE_URL), so we close this issue here and we encourage you to open it [there]($CORE_URL)." gh issue edit $ISSUE_URL --add-project "Smackore" --add-label closed-by-membrane-bot sleep 10 diff --git a/CHANGELOG.md b/CHANGELOG.md index 34b86df2a..8ec84ccbd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## 1.0.1 + * Specify the order in which state fields will be printed in the error logs. [#614](https://github.com/membraneframework/membrane_core/pull/614) + ## 1.0.0 * Introduce `:remove_link` action in pipelines and bins. * Add children groups - a mechanism that allows refering to multiple children with a single identifier. diff --git a/guides/upgrading/v0.12.md b/guides/upgrading/v0.12.md new file mode 100644 index 000000000..d1bda611f --- /dev/null +++ b/guides/upgrading/v0.12.md @@ -0,0 +1,65 @@ +# Upgrading to v0.12 + +Between v0.11 and v0.12 some breaking changes have occurred, so here comes the guide that will help you adjust your code to the new API. See the [release notes](https://github.com/membraneframework/membrane_core/releases/tag/v0.12.1) for details. + +## Deps upgrade + +Upgrade `membrane_core` to `v0.12.1`. + +```elixir +defp deps do + [ + {:membrane_core, "~> 0.12.1"}, + ... + ] +end +``` + +## Implement `handle_child_pad_removed/4` callback in bins and pipelines, if it is needed + +Now, if bin removes its pad (e.g. by removing an element linked to the bin's inner pad), bin's parent has to have implemented proper `handle_child_pad_removed/4` callback, to handle it. If there is no such a callback, default behaviour is to raise an error. + +```elixir +@impl true +def handle_child_pad_removed(:rtp, Pad.ref(:rtp_input, _ssrc), _ctx, state) do + # ... +end +``` + +## Remove `:playback` action + +Now, membrane pipelines enter the playing playback by default and they don't have to return a `:playback` action to do it. + +```diff +- @impl true +- def handle_setup(_ctx, state) do +- {[playback: :playing], state} +- end +``` +Instead of it, there is a new action introduced in `membrane_core` v0.12, `setup: :incomplete | :complete`. If you want to defer a moment when a component enters the playing playback, you can return `{:setup, :incomplete}` action from `handle_setup` callback. If you do that, a component will enter the playing playback only when you return `{:setup, :complete}` action from another callback, e.g. `handle_info`. + +```diff +- @impl true +- def handle_setup(_ctx, state) do +- Process.send_after(self(), :play, 1000) +- {[], state} +- end +- +- @impl true +- def handle_info(:play, _ctx, state) do +- {[playback: :playing], state} +- end + ++ @impl true ++ def handle_setup(_ctx, state) do ++ Process.send_after(self(), :play, 1000) ++ {[setup: :incomplete], state} ++ end ++ ++ @impl true ++ def handle_info(:play, _ctx, state) do ++ {[setup: :complete], state} ++ end +``` + +`:setup` action is available not only in pipelines but in bins and elements as well. diff --git a/mix.exs b/mix.exs index 2d17e3e3a..4c96bd981 100644 --- a/mix.exs +++ b/mix.exs @@ -64,6 +64,7 @@ defmodule Membrane.Mixfile do "CHANGELOG.md", "CONTRIBUTING.md", "guides/upgrading/v0.11.md", + "guides/upgrading/v0.12.md", "guides/upgrading/v1.0.0-rc0.md", "guides/upgrading/v1.0.0-rc1.md", "guides/upgrading/v1.0.0.md",