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:
Nedko Arnaudov 2010-09-07 02:14:58 +03:00
parent 128ad4d5d0
commit 60a611e45f
3 changed files with 10 additions and 9 deletions

View File

@ -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)

View File

@ -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;
}

View File

@ -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);