don't allow saving of non-started studio
hidden clients, ports and connections are not saved so only app list will be saved.
This commit is contained in:
parent
b042bbf078
commit
672c5e52d8
|
@ -652,6 +652,12 @@ static bool run(void * command_context)
|
||||||
|
|
||||||
ret = false;
|
ret = false;
|
||||||
|
|
||||||
|
if (!studio_is_started())
|
||||||
|
{
|
||||||
|
log_error("Cannot save not-started studio");
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
|
||||||
if (!studio_compose_filename(g_studio.name, &filename, &bak_filename))
|
if (!studio_compose_filename(g_studio.name, &filename, &bak_filename))
|
||||||
{
|
{
|
||||||
log_error("failed to compose studio filename");
|
log_error("failed to compose studio filename");
|
||||||
|
|
|
@ -540,6 +540,18 @@ static void ladish_save_studio(struct dbus_method_call * call_ptr)
|
||||||
{
|
{
|
||||||
log_info("Save studio request");
|
log_info("Save studio request");
|
||||||
|
|
||||||
|
/* FIXME: this is wrong place to do such check because state before
|
||||||
|
command execution needs to be checked and not state before
|
||||||
|
command is submited, but doing it here will show error to
|
||||||
|
user. Once notification mechanism is implemented, the
|
||||||
|
studio_is_started() check in save command run menthod
|
||||||
|
will send a notification and this check must be removed. */
|
||||||
|
if (!studio_is_started())
|
||||||
|
{
|
||||||
|
lash_dbus_error(call_ptr, LASH_DBUS_ERROR_GENERIC, "Cannot save not-started studio");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (ladish_command_save_studio(call_ptr, &g_studio.cmd_queue))
|
if (ladish_command_save_studio(call_ptr, &g_studio.cmd_queue))
|
||||||
{
|
{
|
||||||
method_return_new_void(call_ptr);
|
method_return_new_void(call_ptr);
|
||||||
|
|
47
gui/main.c
47
gui/main.c
|
@ -73,6 +73,8 @@ graph_view_handle g_studio_view = NULL;
|
||||||
|
|
||||||
static guint g_jack_poll_source_tag;
|
static guint g_jack_poll_source_tag;
|
||||||
static double g_jack_max_dsp_load = 0.0;
|
static double g_jack_max_dsp_load = 0.0;
|
||||||
|
static bool g_studio_started = false;
|
||||||
|
static bool g_studio_loaded = false;
|
||||||
|
|
||||||
struct studio_list
|
struct studio_list
|
||||||
{
|
{
|
||||||
|
@ -479,10 +481,25 @@ static gboolean poll_jack(gpointer data)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void studio_state_changed(void)
|
||||||
|
{
|
||||||
|
gtk_widget_set_sensitive(g_menu_item_start_studio, g_studio_loaded);
|
||||||
|
gtk_widget_set_sensitive(g_menu_item_stop_studio, g_studio_loaded);
|
||||||
|
gtk_widget_set_sensitive(g_menu_item_save_studio, g_studio_loaded && g_studio_started);
|
||||||
|
gtk_widget_set_sensitive(g_menu_item_unload_studio, g_studio_loaded);
|
||||||
|
gtk_widget_set_sensitive(g_menu_item_rename_studio, g_studio_loaded);
|
||||||
|
gtk_widget_set_sensitive(g_menu_item_start_app, g_studio_loaded);
|
||||||
|
//gtk_widget_set_sensitive(g_menu_item_create_room, g_studio_loaded);
|
||||||
|
//gtk_widget_set_sensitive(g_menu_item_destroy_room, g_studio_loaded);
|
||||||
|
//gtk_widget_set_sensitive(g_menu_item_load_project, g_studio_loaded);
|
||||||
|
}
|
||||||
|
|
||||||
void control_proxy_on_studio_appeared(void)
|
void control_proxy_on_studio_appeared(void)
|
||||||
{
|
{
|
||||||
char * name;
|
char * name;
|
||||||
|
|
||||||
|
g_studio_loaded = true;
|
||||||
|
|
||||||
if (!studio_proxy_get_name(&name))
|
if (!studio_proxy_get_name(&name))
|
||||||
{
|
{
|
||||||
log_error("failed to get studio name");
|
log_error("failed to get studio name");
|
||||||
|
@ -501,15 +518,7 @@ void control_proxy_on_studio_appeared(void)
|
||||||
goto free_name;
|
goto free_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_widget_set_sensitive(g_menu_item_start_studio, true);
|
studio_state_changed();
|
||||||
gtk_widget_set_sensitive(g_menu_item_stop_studio, true);
|
|
||||||
gtk_widget_set_sensitive(g_menu_item_save_studio, true);
|
|
||||||
gtk_widget_set_sensitive(g_menu_item_unload_studio, true);
|
|
||||||
gtk_widget_set_sensitive(g_menu_item_rename_studio, true);
|
|
||||||
gtk_widget_set_sensitive(g_menu_item_start_app, true);
|
|
||||||
//gtk_widget_set_sensitive(g_menu_item_create_room, true);
|
|
||||||
//gtk_widget_set_sensitive(g_menu_item_destroy_room, true);
|
|
||||||
//gtk_widget_set_sensitive(g_menu_item_load_project, true);
|
|
||||||
|
|
||||||
gtk_label_set_text(GTK_LABEL(g_studio_status_label), name);
|
gtk_label_set_text(GTK_LABEL(g_studio_status_label), name);
|
||||||
|
|
||||||
|
@ -528,15 +537,9 @@ void control_proxy_on_studio_disappeared(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_widget_set_sensitive(g_menu_item_start_studio, false);
|
g_studio_loaded = false;
|
||||||
gtk_widget_set_sensitive(g_menu_item_stop_studio, false);
|
|
||||||
gtk_widget_set_sensitive(g_menu_item_save_studio, false);
|
studio_state_changed();
|
||||||
gtk_widget_set_sensitive(g_menu_item_unload_studio, false);
|
|
||||||
gtk_widget_set_sensitive(g_menu_item_rename_studio, false);
|
|
||||||
gtk_widget_set_sensitive(g_menu_item_start_app, false);
|
|
||||||
//gtk_widget_set_sensitive(g_menu_item_create_room, false);
|
|
||||||
//gtk_widget_set_sensitive(g_menu_item_destroy_room, false);
|
|
||||||
//gtk_widget_set_sensitive(g_menu_item_load_project, false);
|
|
||||||
|
|
||||||
gtk_label_set_text(GTK_LABEL(g_studio_status_label), "No studio loaded");
|
gtk_label_set_text(GTK_LABEL(g_studio_status_label), "No studio loaded");
|
||||||
|
|
||||||
|
@ -559,6 +562,10 @@ void jack_started(void)
|
||||||
{
|
{
|
||||||
log_info("JACK started");
|
log_info("JACK started");
|
||||||
|
|
||||||
|
g_studio_started = true;
|
||||||
|
|
||||||
|
studio_state_changed();
|
||||||
|
|
||||||
gtk_widget_set_sensitive(g_buffer_size_combo, true);
|
gtk_widget_set_sensitive(g_buffer_size_combo, true);
|
||||||
gtk_widget_set_sensitive(g_clear_load_button, true);
|
gtk_widget_set_sensitive(g_clear_load_button, true);
|
||||||
|
|
||||||
|
@ -569,8 +576,12 @@ void jack_stopped(void)
|
||||||
{
|
{
|
||||||
log_info("JACK stopped");
|
log_info("JACK stopped");
|
||||||
|
|
||||||
|
g_studio_started = false;
|
||||||
|
|
||||||
g_source_remove(g_jack_poll_source_tag);
|
g_source_remove(g_jack_poll_source_tag);
|
||||||
|
|
||||||
|
studio_state_changed();
|
||||||
|
|
||||||
gtk_widget_set_sensitive(g_buffer_size_combo, false);
|
gtk_widget_set_sensitive(g_buffer_size_combo, false);
|
||||||
buffer_size_clear();
|
buffer_size_clear();
|
||||||
gtk_widget_set_sensitive(g_clear_load_button, false);
|
gtk_widget_set_sensitive(g_clear_load_button, false);
|
||||||
|
|
Loading…
Reference in New Issue