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;
|
||||
|
||||
if (!studio_is_started())
|
||||
{
|
||||
log_error("Cannot save not-started studio");
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (!studio_compose_filename(g_studio.name, &filename, &bak_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");
|
||||
|
||||
/* 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))
|
||||
{
|
||||
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 double g_jack_max_dsp_load = 0.0;
|
||||
static bool g_studio_started = false;
|
||||
static bool g_studio_loaded = false;
|
||||
|
||||
struct studio_list
|
||||
{
|
||||
|
@ -479,10 +481,25 @@ static gboolean poll_jack(gpointer data)
|
|||
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)
|
||||
{
|
||||
char * name;
|
||||
|
||||
g_studio_loaded = true;
|
||||
|
||||
if (!studio_proxy_get_name(&name))
|
||||
{
|
||||
log_error("failed to get studio name");
|
||||
|
@ -501,15 +518,7 @@ void control_proxy_on_studio_appeared(void)
|
|||
goto free_name;
|
||||
}
|
||||
|
||||
gtk_widget_set_sensitive(g_menu_item_start_studio, true);
|
||||
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);
|
||||
studio_state_changed();
|
||||
|
||||
gtk_label_set_text(GTK_LABEL(g_studio_status_label), name);
|
||||
|
||||
|
@ -528,15 +537,9 @@ void control_proxy_on_studio_disappeared(void)
|
|||
return;
|
||||
}
|
||||
|
||||
gtk_widget_set_sensitive(g_menu_item_start_studio, false);
|
||||
gtk_widget_set_sensitive(g_menu_item_stop_studio, false);
|
||||
gtk_widget_set_sensitive(g_menu_item_save_studio, false);
|
||||
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);
|
||||
g_studio_loaded = false;
|
||||
|
||||
studio_state_changed();
|
||||
|
||||
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");
|
||||
|
||||
g_studio_started = true;
|
||||
|
||||
studio_state_changed();
|
||||
|
||||
gtk_widget_set_sensitive(g_buffer_size_combo, true);
|
||||
gtk_widget_set_sensitive(g_clear_load_button, true);
|
||||
|
||||
|
@ -569,8 +576,12 @@ void jack_stopped(void)
|
|||
{
|
||||
log_info("JACK stopped");
|
||||
|
||||
g_studio_started = false;
|
||||
|
||||
g_source_remove(g_jack_poll_source_tag);
|
||||
|
||||
studio_state_changed();
|
||||
|
||||
gtk_widget_set_sensitive(g_buffer_size_combo, false);
|
||||
buffer_size_clear();
|
||||
gtk_widget_set_sensitive(g_clear_load_button, false);
|
||||
|
|
Loading…
Reference in New Issue