Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion lib/membrane/core/child/pad_spec_handler.ex
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ defmodule Membrane.Core.Child.PadSpecHandler do
Initializes pads info basing on element's or bin's pads specifications.
"""
@spec init_pads(Element.State.t()) :: Element.State.t()
# @spec init_pads(Element.State1.t()) :: Element.State1.t()
@spec init_pads(Bin.State.t()) :: Bin.State.t()
def init_pads(state) do
%{
Expand Down
3 changes: 2 additions & 1 deletion lib/membrane/core/element.ex
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,8 @@ defmodule Membrane.Core.Element do
end
end

# Suppress false positive dialyzer warnings
# Suppress false positive dialyzer warnings resulting from
# broken handling of opaque types

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I meant to write which opaque type causes the warning :P

# https://github.com/elixir-lang/elixir/issues/14576
@dialyzer {:nowarn_function, do_init: 1}
defp do_init(options) do
Expand Down
3 changes: 2 additions & 1 deletion lib/membrane/core/element/auto_flow_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,8 @@ defmodule Membrane.Core.Element.AutoFlowController do
|> Map.put(:popping_auto_flow_queue?, false)
end

# Suppress false positive dialyzer warnings
# Suppress false positive dialyzer warnings resulting from
# broken handling of opaque types
# https://github.com/elixir-lang/elixir/issues/14576
@dialyzer {:nowarn_function, bump_demand: 1}
defp bump_demand(state) do
Expand Down
94 changes: 0 additions & 94 deletions lib/membrane/core/element/state.ex
Original file line number Diff line number Diff line change
Expand Up @@ -86,97 +86,3 @@ defmodule Membrane.Core.Element.State do
auto_input_pads: [],
resume_delayed_demands_loop_in_mailbox?: false
end

defmodule Membrane.Core.Element.State1 do
@moduledoc false

# Structure representing state of an Core.Element. It is a part of the private API.
# It does not represent state of elements you construct, it's a state used
# internally in Membrane.

use Bunch.Access

alias Membrane.{Clock, Element, Pad, Sync}
alias Membrane.Core.Child.PadModel
alias Membrane.Core.Element.DiamondDetectionController.DiamondDatectionState
alias Membrane.Core.Element.EffectiveFlowController
alias Membrane.Core.Timer

@type t :: %__MODULE__{
# module: module(),
# name: Element.name(),
# parent_pid: pid() | nil,
# playback: Membrane.Playback.t(),
# type: Element.type(),
# internal_state: Element.state() | nil,
# pads_info: PadModel.pads_info() | nil,
# synchronization: %{
# timers: %{Timer.id() => Timer.t()},
# parent_clock: Clock.t(),
# latency: Membrane.Time.non_neg(),
# stream_sync: Sync.t(),
# clock: Clock.t() | nil
# },
delayed_demands: MapSet.t()
# effective_flow_control: EffectiveFlowController.effective_flow_control(),
# initialized?: boolean(),
# terminating?: boolean()
# setup_incomplete_returned?: boolean(),
# delay_demands?: boolean(),
# popping_auto_flow_queue?: boolean(),
# stalker: Membrane.Core.Stalker.t(),
# resource_guard: Membrane.ResourceGuard.t(),
# subprocess_supervisor: pid()
# handle_demand_loop_counter: non_neg_integer(),
# pads_to_snapshot: MapSet.t(),
# playback_queue: Membrane.Core.Element.PlaybackQueue.t(),
# diamond_detection_state: DiamondDatectionState.t(),
# pads_data: PadModel.pads_data() | nil,
# satisfied_auto_output_pads: MapSet.t(),
# awaiting_auto_input_pads: MapSet.t(),
# auto_input_pads: [Pad.ref()],
# resume_delayed_demands_loop_in_mailbox?: boolean()
}

# READ THIS BEFORE ADDING NEW FIELD!!!

# Fields of this structure will be inspected in the same order, in which they occur in the
# list passed to `defstruct`. Take a look at lib/membrane/core/inspect.ex to get more info.
# If you want to add a new field to the state, place it at the spot corresponding to its
# importance and possibly near other related fields. It is suggested, to keep `:pads_data`
# as the last item in the list, because sometimes it is so big, that everything after it
# might be truncated during the inspection.

defstruct [
# name: nil,
# parent_pid: nil,
# playback: :stopped,
# type: nil,

# internal_state: nil,
# pads_info: %{},
# synchronization: nil,
delayed_demands: MapSet.new()
]

# effective_flow_control: :push,
# initialized?: false,
# terminating?: false

# setup_incomplete_returned?: false,
# delay_demands?: false,
# popping_auto_flow_queue?: false,
# stalker: nil,
# resource_guard: nil,
# subprocess_supervisor: nil

# handle_demand_loop_counter: 0,
# pads_to_snapshot: MapSet.new(),
# playback_queue: [],
# diamond_detection_state: %DiamondDatectionState{},
# pads_data: %{},
# satisfied_auto_output_pads: MapSet.new(),
# awaiting_auto_input_pads: MapSet.new(),
# auto_input_pads: [],
# resume_delayed_demands_loop_in_mailbox?: false
end
3 changes: 2 additions & 1 deletion lib/membrane/core/filter_aggregator/context.ex
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ defmodule Membrane.Core.FilterAggregator.Context do
@type action :: Element.Action.t() | Membrane.Core.FilterAggregator.InternalAction.t()

@spec build_context!(Element.name(), module(), t()) :: t()
# Suppress false positive dialyzer warnings
# Suppress false positive dialyzer warnings resulting from
# broken handling of opaque types
# https://github.com/elixir-lang/elixir/issues/14576
@dialyzer {:nowarn_function, build_context!: 3}
def build_context!(name, module, agg_ctx) do
Expand Down