gui: update latency text in statusbar when buffer size change was initiated by gladish itself
The menu item is active because it was used for initiating the buffer size change. So instead of checking for !item_ptr->active a new different buffer size state is maintained and used when deciding whether the statusbar needs to be updated.
This commit is contained in:
parent
128ad4d5d0
commit
60a611e45f
|
@ -77,22 +77,23 @@ void buffer_size_clear(void)
|
|||
|
||||
static void buffer_size_set(uint32_t size, bool force)
|
||||
{
|
||||
bool changed;
|
||||
char buf[100];
|
||||
static uint32_t last_buffer_size;
|
||||
|
||||
if (!menu_set_jack_latency(size, force, &changed))
|
||||
if (!menu_set_jack_latency(size, force))
|
||||
{
|
||||
buffer_size_clear();
|
||||
return;
|
||||
}
|
||||
|
||||
if (changed)
|
||||
if (size != last_buffer_size)
|
||||
{
|
||||
log_info("JACK latency changed: %"PRIu32" samples", size);
|
||||
|
||||
snprintf(buf, sizeof(buf), "%4.1f ms (%"PRIu32")", (float)size / (float)g_sample_rate * 1000.0f, size);
|
||||
set_latency_text(buf);
|
||||
}
|
||||
last_buffer_size = size;
|
||||
}
|
||||
|
||||
static void update_buffer_size(bool force)
|
||||
|
|
10
gui/menu.c
10
gui/menu.c
|
@ -69,7 +69,7 @@ static void toggled(GtkCheckMenuItem * checkmenuitem, gpointer user_data)
|
|||
static void buffer_size_change_request(GtkCheckMenuItem * item_ptr, gpointer user_data)
|
||||
{
|
||||
if (g_latency_changing)
|
||||
{ /* skip activations because of gtk_check_menu_item_set_active() called from buffer_size_set() */
|
||||
{ /* skip activations because of gtk_check_menu_item_set_active() called from menu_set_jack_latency() */
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -168,7 +168,7 @@ void menu_set_jack_latency_items_sensivity(bool sensitive)
|
|||
gtk_widget_set_sensitive(GTK_WIDGET(g_menu_item_jack_latency_8192), sensitive);
|
||||
}
|
||||
|
||||
bool menu_set_jack_latency(uint32_t buffer_size, bool force, bool * changed_ptr)
|
||||
bool menu_set_jack_latency(uint32_t buffer_size, bool force)
|
||||
{
|
||||
GtkCheckMenuItem * item_ptr;
|
||||
|
||||
|
@ -206,10 +206,10 @@ bool menu_set_jack_latency(uint32_t buffer_size, bool force, bool * changed_ptr)
|
|||
return false;
|
||||
}
|
||||
|
||||
*changed_ptr = force || !item_ptr->active;
|
||||
if (*changed_ptr)
|
||||
if (force || !item_ptr->active)
|
||||
{
|
||||
g_latency_changing = true;
|
||||
log_info("menu_set_jack_latency() detects change");
|
||||
g_latency_changing = true; /* latency has changed externally, don't tell jack to change it again */
|
||||
gtk_check_menu_item_set_active(item_ptr, TRUE);
|
||||
g_latency_changing = false;
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
void menu_init(void);
|
||||
void menu_studio_state_changed(unsigned int studio_state);
|
||||
void menu_set_jack_latency_items_sensivity(bool sensitive);
|
||||
bool menu_set_jack_latency(uint32_t buffer_size, bool force, bool * changed_ptr);
|
||||
bool menu_set_jack_latency(uint32_t buffer_size, bool force);
|
||||
void menu_view_activated(bool room);
|
||||
void fill_view_popup_menu(GtkMenu * menu, graph_view_handle view);
|
||||
|
||||
|
|
Loading…
Reference in New Issue