ladishd: fix hidden connection save. Fix for #151

Instead of checking whether connection ports ares link or system ones,
now they are being checked for being hidden.
This commit is contained in:
Nedko Arnaudov 2010-12-30 05:14:10 +02:00
parent f1d0a2e20b
commit d39a94fe33
3 changed files with 17 additions and 18 deletions

View File

@ -2505,11 +2505,13 @@ ladish_graph_iterate_connections(
bool (* callback)(
void * context,
ladish_graph_handle graph_handle,
bool hidden,
bool connection_hidden,
ladish_client_handle client1_handle,
ladish_port_handle port1_handle,
bool port1_hidden,
ladish_client_handle client2_handle,
ladish_port_handle port2_handle,
bool port2_hidden,
ladish_dict_handle dict))
{
struct list_head * node_ptr;
@ -2525,8 +2527,10 @@ ladish_graph_iterate_connections(
connection_ptr->hidden,
connection_ptr->port1_ptr->client_ptr->client,
connection_ptr->port1_ptr->port,
connection_ptr->port1_ptr->hidden,
connection_ptr->port2_ptr->client_ptr->client,
connection_ptr->port2_ptr->port,
connection_ptr->port2_ptr->hidden,
connection_ptr->dict))
{
return false;

View File

@ -219,11 +219,13 @@ ladish_graph_iterate_connections(
bool (* callback)(
void * context,
ladish_graph_handle graph_handle,
bool hidden,
bool connection_hidden,
ladish_client_handle client1_handle,
ladish_port_handle port1_handle,
bool port1_hidden,
ladish_client_handle client2_handle,
ladish_port_handle port2_handle,
bool port2_hidden,
ladish_dict_handle dict));
void ladish_graph_clear_persist(ladish_graph_handle graph_handle);

View File

@ -38,23 +38,11 @@ struct ladish_write_vgraph_context
bool client_visible;
};
static bool is_system_client(ladish_client_handle client)
{
uuid_t uuid;
ladish_client_get_uuid(client, uuid);
return ladish_virtualizer_is_system_client(uuid);
}
static bool is_hidden_port_interesting(ladish_app_supervisor_handle app_supervisor, ladish_client_handle client, ladish_port_handle port)
{
uuid_t app_uuid;
ladish_app_handle app;
if (is_system_client(client) || ladish_port_is_link(port))
{
return true;
}
/* hidden ports of external apps should not be saved */
/* hidden ports of stopped managed apps should be saved */
/* hidden ports of started managed apps should not be saved */
@ -661,19 +649,24 @@ bool
ladish_save_vgraph_connection(
void * context,
ladish_graph_handle graph,
bool hidden,
bool connection_hidden,
ladish_client_handle client1,
ladish_port_handle port1,
bool port1_hidden,
ladish_client_handle client2,
ladish_port_handle port2,
bool port2_hidden,
ladish_dict_handle dict)
{
uuid_t uuid;
char str[37];
if (hidden &&
(!is_hidden_port_interesting(ctx_ptr->app_supervisor, client1, port1) ||
!is_hidden_port_interesting(ctx_ptr->app_supervisor, client2, port2)))
/* if at least one of ports is hidden, connection must be hidden too */
ASSERT(!(port1_hidden || port2_hidden) || connection_hidden);
if (connection_hidden &&
((port1_hidden && !is_hidden_port_interesting(ctx_ptr->app_supervisor, client1, port1)) ||
(port2_hidden && !is_hidden_port_interesting(ctx_ptr->app_supervisor, client2, port2))))
{
return true;
}