Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Julian Bouzas
WirePlumber
Commits
49f1ead1
Commit
49f1ead1
authored
Nov 18, 2021
by
Julian Bouzas
Committed by
George Kiagiadakis
Nov 25, 2021
Browse files
si-standard-link: always return transition error if activation fails
Avoids having the session item in an invalid state.
parent
9ed6af02
Pipeline
#453559
passed with stages
in 24 minutes and 11 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
modules/module-si-standard-link.c
View file @
49f1ead1
...
@@ -329,9 +329,12 @@ get_ports_and_create_links (WpSiStandardLink *self, WpTransition *transition)
...
@@ -329,9 +329,12 @@ get_ports_and_create_links (WpSiStandardLink *self, WpTransition *transition)
si_out
=
WP_SI_LINKABLE
(
g_weak_ref_get
(
&
self
->
out_item
));
si_out
=
WP_SI_LINKABLE
(
g_weak_ref_get
(
&
self
->
out_item
));
si_in
=
WP_SI_LINKABLE
(
g_weak_ref_get
(
&
self
->
in_item
));
si_in
=
WP_SI_LINKABLE
(
g_weak_ref_get
(
&
self
->
in_item
));
if
(
!
si_out
||
!
si_in
)
{
g_return_if_fail
(
si_out
);
wp_transition_return_error
(
transition
,
g_error_new
(
WP_DOMAIN_LIBRARY
,
g_return_if_fail
(
si_in
);
WP_LIBRARY_ERROR_INVARIANT
,
"Failed to create links because one of the nodes was destroyed"
));
return
;
}
out_ports
=
wp_si_linkable_get_ports
(
si_out
,
self
->
out_item_port_context
);
out_ports
=
wp_si_linkable_get_ports
(
si_out
,
self
->
out_item_port_context
);
in_ports
=
wp_si_linkable_get_ports
(
si_in
,
self
->
in_item_port_context
);
in_ports
=
wp_si_linkable_get_ports
(
si_in
,
self
->
in_item_port_context
);
...
@@ -444,15 +447,24 @@ on_main_adapter_ready (GObject *obj, GAsyncResult * res, gpointer p)
...
@@ -444,15 +447,24 @@ on_main_adapter_ready (GObject *obj, GAsyncResult * res, gpointer p)
static
void
static
void
configure_and_link_adapters
(
WpSiStandardLink
*
self
,
WpTransition
*
transition
)
configure_and_link_adapters
(
WpSiStandardLink
*
self
,
WpTransition
*
transition
)
{
{
g_autoptr
(
WpSiAdapter
)
si_out
=
WP_SI_ADAPTER
(
g_weak_ref_get
(
&
self
->
out_item
));
g_autoptr
(
WpSiAdapter
)
si_in
=
WP_SI_ADAPTER
(
g_weak_ref_get
(
&
self
->
in_item
));
struct
adapter
*
out
,
*
in
,
*
main
,
*
other
;
struct
adapter
*
out
,
*
in
,
*
main
,
*
other
;
const
gchar
*
str
=
NULL
;
const
gchar
*
str
=
NULL
;
if
(
!
si_out
||
!
si_in
)
{
wp_transition_return_error
(
transition
,
g_error_new
(
WP_DOMAIN_LIBRARY
,
WP_LIBRARY_ERROR_INVARIANT
,
"Failed to create links because one of the adapters was destroyed"
));
return
;
}
out
=
g_slice_new0
(
struct
adapter
);
out
=
g_slice_new0
(
struct
adapter
);
in
=
g_slice_new0
(
struct
adapter
);
in
=
g_slice_new0
(
struct
adapter
);
out
->
si
=
WP_SI_ADAPTER
(
g_weak_ref_get
(
&
self
->
out_item
));
out
->
si
=
g_steal_pointer
(
&
si_out
);
in
->
si
=
WP_SI_ADAPTER
(
g_weak_ref_get
(
&
self
->
in_item
));
in
->
si
=
g_steal_pointer
(
&
si_in
);
g_return_if_fail
(
out
->
si
);
g_return_if_fail
(
in
->
si
);
str
=
wp_session_item_get_property
(
WP_SESSION_ITEM
(
out
->
si
),
"item.node.type"
);
str
=
wp_session_item_get_property
(
WP_SESSION_ITEM
(
out
->
si
),
"item.node.type"
);
out
->
is_device
=
!
g_strcmp0
(
str
,
"device"
);
out
->
is_device
=
!
g_strcmp0
(
str
,
"device"
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment