app supervisor for rooms
This commit is contained in:
parent
866d24baaf
commit
bbb8d20a1e
|
@ -28,6 +28,7 @@
|
|||
#include "../dbus_constants.h"
|
||||
#include "graph_dict.h"
|
||||
#include "../lib/wkports.h"
|
||||
#include "app_supervisor.h"
|
||||
|
||||
struct ladish_room
|
||||
{
|
||||
|
@ -37,10 +38,16 @@ struct ladish_room
|
|||
uuid_t template_uuid;
|
||||
dbus_object_path dbus_object;
|
||||
ladish_graph_handle graph;
|
||||
ladish_app_supervisor_handle app_supervisor;
|
||||
};
|
||||
|
||||
extern const struct dbus_interface_descriptor g_interface_room;
|
||||
|
||||
static void on_app_renamed(const char * old_name, const char * new_app_name)
|
||||
{
|
||||
/* TODO */
|
||||
}
|
||||
|
||||
bool
|
||||
ladish_room_create(
|
||||
const uuid_t uuid_ptr,
|
||||
|
@ -105,17 +112,23 @@ ladish_room_create(
|
|||
|
||||
if (object_path)
|
||||
{
|
||||
if (!ladish_app_supervisor_create(&room_ptr->app_supervisor, object_path, room_ptr->name, on_app_renamed))
|
||||
{
|
||||
log_error("ladish_app_supervisor_create() failed.");
|
||||
goto destroy_graph;
|
||||
}
|
||||
|
||||
room_ptr->dbus_object = dbus_object_path_new(
|
||||
object_path,
|
||||
&g_interface_room, room_ptr,
|
||||
&g_interface_patchbay, ladish_graph_get_dbus_context(room_ptr->graph),
|
||||
&g_iface_graph_dict, room_ptr->graph,
|
||||
//&g_iface_app_supervisor, room_ptr->app_supervisor,
|
||||
&g_iface_app_supervisor, room_ptr->app_supervisor,
|
||||
NULL);
|
||||
if (room_ptr->dbus_object == NULL)
|
||||
{
|
||||
log_error("dbus_object_path_new() failed");
|
||||
goto destroy_graph;
|
||||
goto destroy_app_supervisor;
|
||||
}
|
||||
|
||||
if (!dbus_object_path_register(g_dbus_connection, room_ptr->dbus_object))
|
||||
|
@ -129,6 +142,7 @@ ladish_room_create(
|
|||
else
|
||||
{
|
||||
room_ptr->dbus_object = NULL;
|
||||
room_ptr->app_supervisor = NULL;
|
||||
}
|
||||
|
||||
*room_handle_ptr = (ladish_room_handle)room_ptr;
|
||||
|
@ -136,6 +150,8 @@ ladish_room_create(
|
|||
|
||||
destroy_dbus_object:
|
||||
dbus_object_path_destroy(g_dbus_connection, room_ptr->dbus_object);
|
||||
destroy_app_supervisor:
|
||||
ladish_app_supervisor_destroy(room_ptr->app_supervisor);
|
||||
destroy_graph:
|
||||
ladish_graph_destroy(room_ptr->graph, true);
|
||||
free_name:
|
||||
|
@ -157,6 +173,11 @@ ladish_room_destroy(
|
|||
dbus_object_path_destroy(g_dbus_connection, room_ptr->dbus_object);
|
||||
}
|
||||
|
||||
if (room_ptr->app_supervisor != NULL)
|
||||
{
|
||||
ladish_app_supervisor_destroy(room_ptr->app_supervisor);
|
||||
}
|
||||
|
||||
ladish_graph_destroy(room_ptr->graph, true);
|
||||
free(room_ptr->name);
|
||||
free(room_ptr);
|
||||
|
|
|
@ -302,6 +302,11 @@ const char * get_current_view_room_name(void)
|
|||
return g_current_view->name;
|
||||
}
|
||||
|
||||
graph_view_handle get_current_view(void)
|
||||
{
|
||||
return (graph_view_handle)g_current_view;
|
||||
}
|
||||
|
||||
bool is_room_view(graph_view_handle view)
|
||||
{
|
||||
return strcmp(graph_proxy_get_object(view_ptr->graph), STUDIO_OBJECT_PATH) != 0;
|
||||
|
|
|
@ -49,6 +49,7 @@ void activate_view(graph_view_handle view);
|
|||
const char * get_view_name(graph_view_handle view);
|
||||
const char * get_view_opath(graph_view_handle view);
|
||||
bool set_view_name(graph_view_handle view, const char * name);
|
||||
graph_view_handle get_current_view(void);
|
||||
canvas_handle get_current_canvas(void);
|
||||
const char * get_current_view_room_name(void);
|
||||
bool is_room_view(graph_view_handle view);
|
||||
|
|
|
@ -468,6 +468,7 @@ void error_message_box(const char * failed_operation)
|
|||
|
||||
void run_custom_command_dialog(void)
|
||||
{
|
||||
graph_view_handle view;
|
||||
guint result;
|
||||
GtkEntry * command_entry = GTK_ENTRY(get_gtk_builder_widget("app_command_entry"));
|
||||
GtkEntry * name_entry = GTK_ENTRY(get_gtk_builder_widget("app_name_entry"));
|
||||
|
@ -478,6 +479,8 @@ void run_custom_command_dialog(void)
|
|||
GtkToggleButton * level3_button = GTK_TOGGLE_BUTTON(get_gtk_builder_widget("app_level3"));
|
||||
uint8_t level;
|
||||
|
||||
view = get_current_view();
|
||||
|
||||
gtk_entry_set_text(name_entry, "");
|
||||
gtk_entry_set_text(command_entry, "");
|
||||
gtk_toggle_button_set_active(terminal_button, FALSE);
|
||||
|
@ -520,7 +523,7 @@ void run_custom_command_dialog(void)
|
|||
|
||||
log_info("'%s':'%s' %s level %"PRIu8, gtk_entry_get_text(name_entry), gtk_entry_get_text(command_entry), gtk_toggle_button_get_active(terminal_button) ? "terminal" : "shell", level);
|
||||
if (!app_run_custom(
|
||||
g_studio_view,
|
||||
view,
|
||||
gtk_entry_get_text(command_entry),
|
||||
gtk_entry_get_text(name_entry),
|
||||
gtk_toggle_button_get_active(terminal_button),
|
||||
|
@ -1010,7 +1013,7 @@ static void room_appeared(const char * opath, const char * name, const char * te
|
|||
|
||||
log_info("room \"%s\" appeared (%s). template is \"%s\"", name, opath, template);
|
||||
|
||||
if (!create_view(name, SERVICE_NAME, opath, true, false, false, &graph_view))
|
||||
if (!create_view(name, SERVICE_NAME, opath, true, true, false, &graph_view))
|
||||
{
|
||||
log_error("create_view() failed for room \"%s\"", name);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue