Changeset 42429315c5e0fc08b65a7fd8c942ec869de639ae

Show
Ignore:
Timestamp:
02/19/10 01:28:51 (3 years ago)
Author:
Nedko Arnaudov <nedko@…>
Children:
0f5da82ae8555ee792aae824333798de930e1f68
Parents:
efb242bf1ef618330ff5b035a01a25d1c85e8562
git-committer:
Nedko Arnaudov <nedko@arnaudov.name> / 2010-02-19T01:28:51Z+0200
Message:

Move jack latency selection to menu

Location:
gui
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • gui/gladish.ui

    rfbc1bb5 r4242931  
    263263                      </object> 
    264264                    </child> 
     265                    <child> 
     266                      <object class="GtkMenuItem" id="menu_item_jack_latency"> 
     267                        <property name="visible">True</property> 
     268                        <property name="label" translatable="yes">JACK _Latency</property> 
     269                        <property name="use_underline">True</property> 
     270                        <child type="submenu"> 
     271                          <object class="GtkMenu" id="menu_jack_latencies"> 
     272                            <property name="visible">True</property> 
     273                            <child> 
     274                              <object class="GtkRadioMenuItem" id="menu_item_jack_latency_32"> 
     275                                <property name="visible">True</property> 
     276                                <property name="label" translatable="yes">32</property> 
     277                                <property name="draw_as_radio">True</property> 
     278                              </object> 
     279                            </child> 
     280                            <child> 
     281                              <object class="GtkRadioMenuItem" id="menu_item_jack_latency_64"> 
     282                                <property name="visible">True</property> 
     283                                <property name="label" translatable="yes">64</property> 
     284                                <property name="draw_as_radio">True</property> 
     285                                <property name="group">menu_item_jack_latency_32</property> 
     286                              </object> 
     287                            </child> 
     288                            <child> 
     289                              <object class="GtkRadioMenuItem" id="menu_item_jack_latency_128"> 
     290                                <property name="visible">True</property> 
     291                                <property name="label" translatable="yes">128</property> 
     292                                <property name="draw_as_radio">True</property> 
     293                                <property name="group">menu_item_jack_latency_32</property> 
     294                              </object> 
     295                            </child> 
     296                            <child> 
     297                              <object class="GtkRadioMenuItem" id="menu_item_jack_latency_256"> 
     298                                <property name="visible">True</property> 
     299                                <property name="label" translatable="yes">256</property> 
     300                                <property name="draw_as_radio">True</property> 
     301                                <property name="group">menu_item_jack_latency_32</property> 
     302                              </object> 
     303                            </child> 
     304                            <child> 
     305                              <object class="GtkRadioMenuItem" id="menu_item_jack_latency_512"> 
     306                                <property name="visible">True</property> 
     307                                <property name="label" translatable="yes">512</property> 
     308                                <property name="draw_as_radio">True</property> 
     309                                <property name="group">menu_item_jack_latency_32</property> 
     310                              </object> 
     311                            </child> 
     312                            <child> 
     313                              <object class="GtkRadioMenuItem" id="menu_item_jack_latency_1024"> 
     314                                <property name="visible">True</property> 
     315                                <property name="label" translatable="yes">1024</property> 
     316                                <property name="draw_as_radio">True</property> 
     317                                <property name="group">menu_item_jack_latency_32</property> 
     318                              </object> 
     319                            </child> 
     320                            <child> 
     321                              <object class="GtkRadioMenuItem" id="menu_item_jack_latency_2048"> 
     322                                <property name="visible">True</property> 
     323                                <property name="label" translatable="yes">2048</property> 
     324                                <property name="draw_as_radio">True</property> 
     325                                <property name="group">menu_item_jack_latency_32</property> 
     326                              </object> 
     327                            </child> 
     328                            <child> 
     329                              <object class="GtkRadioMenuItem" id="menu_item_jack_latency_4096"> 
     330                                <property name="visible">True</property> 
     331                                <property name="label" translatable="yes">4096</property> 
     332                                <property name="draw_as_radio">True</property> 
     333                                <property name="group">menu_item_jack_latency_32</property> 
     334                              </object> 
     335                            </child> 
     336                            <child> 
     337                              <object class="GtkRadioMenuItem" id="menu_item_jack_latency_8192"> 
     338                                <property name="visible">True</property> 
     339                                <property name="label" translatable="yes">8192</property> 
     340                                <property name="draw_as_radio">True</property> 
     341                                <property name="group">menu_item_jack_latency_32</property> 
     342                              </object> 
     343                            </child> 
     344                          </object> 
     345                        </child> 
     346                      </object> 
     347                    </child> 
    265348                  </object> 
    266349                </child> 
     
    306389                <property name="visible_vertical">False</property> 
    307390                <child> 
    308                   <object class="GtkAlignment" id="alignment2"> 
    309                     <property name="visible">True</property> 
    310                     <property name="yscale">0</property> 
    311                     <child> 
    312                       <object class="GtkHBox" id="hbox4"> 
    313                         <property name="visible">True</property> 
    314                         <child> 
    315                           <object class="GtkLabel" id="label10"> 
    316                             <property name="visible">True</property> 
    317                             <property name="label" translatable="yes">  Latency: </property> 
    318                           </object> 
    319                           <packing> 
    320                             <property name="expand">False</property> 
    321                             <property name="fill">False</property> 
    322                             <property name="position">0</property> 
    323                           </packing> 
    324                         </child> 
    325                         <child> 
    326                           <object class="GtkComboBoxEntry" id="buffer_size_combo"> 
    327                             <property name="visible">True</property> 
    328                             <property name="sensitive">False</property> 
    329                             <property name="border_width">1</property> 
    330                           </object> 
    331                           <packing> 
    332                             <property name="padding">1</property> 
    333                             <property name="position">1</property> 
    334                           </packing> 
    335                         </child> 
    336                         <child> 
    337                           <object class="GtkLabel" id="sample_rate_label"> 
    338                             <property name="label" translatable="yes">48</property> 
    339                           </object> 
    340                           <packing> 
    341                             <property name="expand">False</property> 
    342                             <property name="fill">False</property> 
    343                             <property name="padding">1</property> 
    344                             <property name="position">2</property> 
    345                           </packing> 
    346                         </child> 
    347                         <child> 
    348                           <object class="GtkLabel" id="label9"> 
    349                             <property name="xpad">1</property> 
    350                             <property name="label" translatable="yes">kHz</property> 
    351                           </object> 
    352                           <packing> 
    353                             <property name="expand">False</property> 
    354                             <property name="fill">False</property> 
    355                             <property name="position">3</property> 
    356                           </packing> 
    357                         </child> 
    358                       </object> 
     391                  <object class="GtkHBox" id="hbox4"> 
     392                    <property name="visible">True</property> 
     393                    <child> 
     394                      <object class="GtkLabel" id="sample_rate_label"> 
     395                        <property name="visible">True</property> 
     396                        <property name="label" translatable="yes">48</property> 
     397                      </object> 
     398                      <packing> 
     399                        <property name="expand">False</property> 
     400                        <property name="fill">False</property> 
     401                        <property name="padding">1</property> 
     402                        <property name="position">0</property> 
     403                      </packing> 
     404                    </child> 
     405                    <child> 
     406                      <object class="GtkLabel" id="label9"> 
     407                        <property name="visible">True</property> 
     408                        <property name="xpad">1</property> 
     409                        <property name="label" translatable="yes">kHz</property> 
     410                      </object> 
     411                      <packing> 
     412                        <property name="expand">False</property> 
     413                        <property name="fill">False</property> 
     414                        <property name="position">1</property> 
     415                      </packing> 
    359416                    </child> 
    360417                  </object> 
  • gui/main.c

    r1cb3b47 r4242931  
    5555GtkWidget * g_clear_load_button; 
    5656GtkWidget * g_xrun_progress_bar; 
    57 GtkWidget * g_buffer_size_combo; 
    5857 
    5958GtkWidget * g_menu_item_new_studio; 
     
    6968GtkWidget * g_menu_item_daemon_exit; 
    7069GtkWidget * g_menu_item_jack_configure; 
     70GtkCheckMenuItem * g_menu_item_jack_latency_32; 
     71GtkCheckMenuItem * g_menu_item_jack_latency_64; 
     72GtkCheckMenuItem * g_menu_item_jack_latency_128; 
     73GtkCheckMenuItem * g_menu_item_jack_latency_256; 
     74GtkCheckMenuItem * g_menu_item_jack_latency_512; 
     75GtkCheckMenuItem * g_menu_item_jack_latency_1024; 
     76GtkCheckMenuItem * g_menu_item_jack_latency_2048; 
     77GtkCheckMenuItem * g_menu_item_jack_latency_4096; 
     78GtkCheckMenuItem * g_menu_item_jack_latency_8192; 
    7179GtkWidget * g_studio_status_label; 
    7280GtkWidget * g_menu_item_view_toolbar; 
     
    143151#endif 
    144152 
    145 static void set_buffer_size_combo_width(void) 
    146 { 
    147   //gtkmm_set_width_for_given_text(*_buffer_size_combo, "4096 frames", 40); 
    148 } 
    149  
    150 static void buffer_size_clear() 
    151 { 
    152   //gtk_entry_set_text(GTK_ENTRY(get_gtk_builder_widget("comboboxentry")), ""); 
    153 } 
     153void set_latency_items_sensivity(bool sensitive) 
     154{ 
     155  gtk_widget_set_sensitive(GTK_WIDGET(g_menu_item_jack_latency_32), sensitive); 
     156  gtk_widget_set_sensitive(GTK_WIDGET(g_menu_item_jack_latency_64), sensitive); 
     157  gtk_widget_set_sensitive(GTK_WIDGET(g_menu_item_jack_latency_128), sensitive); 
     158  gtk_widget_set_sensitive(GTK_WIDGET(g_menu_item_jack_latency_256), sensitive); 
     159  gtk_widget_set_sensitive(GTK_WIDGET(g_menu_item_jack_latency_512), sensitive); 
     160  gtk_widget_set_sensitive(GTK_WIDGET(g_menu_item_jack_latency_1024), sensitive); 
     161  gtk_widget_set_sensitive(GTK_WIDGET(g_menu_item_jack_latency_2048), sensitive); 
     162  gtk_widget_set_sensitive(GTK_WIDGET(g_menu_item_jack_latency_4096), sensitive); 
     163  gtk_widget_set_sensitive(GTK_WIDGET(g_menu_item_jack_latency_8192), sensitive); 
     164} 
     165 
     166static void buffer_size_clear(void) 
     167{ 
     168  set_latency_items_sensivity(false); 
     169} 
     170 
     171static bool latency_changing = false; 
    154172 
    155173static void buffer_size_set(uint32_t size) 
    156174{ 
    157   gtk_combo_box_set_active(GTK_COMBO_BOX(g_buffer_size_combo), (int)log2f(size) - 5); 
    158 } 
    159  
    160 static void buffer_size_change_request(void) 
    161 { 
    162   const int selected = gtk_combo_box_get_active(GTK_COMBO_BOX(g_buffer_size_combo)); 
    163  
    164   if (selected < 0 || !jack_proxy_set_buffer_size(1 << (selected + 5))) 
     175  GtkCheckMenuItem * item_ptr; 
     176 
     177  switch (size) 
     178  { 
     179  case 32: 
     180    item_ptr = g_menu_item_jack_latency_32; 
     181    break; 
     182  case 64: 
     183    item_ptr = g_menu_item_jack_latency_64; 
     184    break; 
     185  case 128: 
     186    item_ptr = g_menu_item_jack_latency_128; 
     187    break; 
     188  case 256: 
     189    item_ptr = g_menu_item_jack_latency_256; 
     190    break; 
     191  case 512: 
     192    item_ptr = g_menu_item_jack_latency_512; 
     193    break; 
     194  case 1024: 
     195    item_ptr = g_menu_item_jack_latency_1024; 
     196    break; 
     197  case 2048: 
     198    item_ptr = g_menu_item_jack_latency_2048; 
     199    break; 
     200  case 4096: 
     201    item_ptr = g_menu_item_jack_latency_4096; 
     202    break; 
     203  case 8192: 
     204    item_ptr = g_menu_item_jack_latency_8192; 
     205    break; 
     206  default: 
     207    //log_error("unknown jack buffer size %"PRIu32, size); 
     208    buffer_size_clear(); 
     209    return; 
     210  } 
     211 
     212  if (!item_ptr->active) 
     213  { 
     214    log_info("JACK latency changed: %"PRIu32" samples", size); 
     215    latency_changing = true; 
     216    gtk_check_menu_item_set_active(item_ptr, TRUE); 
     217    latency_changing = false; 
     218  } 
     219} 
     220 
     221static void buffer_size_change_request(GtkCheckMenuItem * item_ptr, gpointer user_data) 
     222{ 
     223  uint32_t size; 
     224 
     225  if (latency_changing) 
     226  { /* skip activations because of gtk_check_menu_item_set_active() called from buffer_size_set() */ 
     227    return; 
     228  } 
     229 
     230  if (!item_ptr->active) 
     231  { /* skip radio button deactivations, we are interested only in activations */ 
     232    return; 
     233  } 
     234 
     235  size = (uint32_t)(guintptr)user_data; 
     236 
     237  log_info("JACK latency change request: %"PRIu32" samples", size); 
     238 
     239  if (!jack_proxy_set_buffer_size(size)) 
    165240  { 
    166241    log_error("cannot set JACK buffer size"); 
    167     buffer_size_clear(); 
    168242  } 
    169243} 
     
    808882  studio_state_changed(NULL); 
    809883 
    810   gtk_widget_set_sensitive(g_buffer_size_combo, true); 
     884  set_latency_items_sensivity(true); 
    811885  gtk_widget_set_sensitive(g_clear_load_button, true); 
    812886 
     
    826900  studio_state_changed(NULL); 
    827901 
    828   gtk_widget_set_sensitive(g_buffer_size_combo, false); 
     902  set_latency_items_sensivity(false); 
    829903  buffer_size_clear(); 
    830904  gtk_widget_set_sensitive(g_clear_load_button, false); 
     
    10391113  g_clear_load_button = get_gtk_builder_widget("clear_load_button"); 
    10401114  g_xrun_progress_bar = get_gtk_builder_widget("xrun_progress_bar"); 
    1041   g_buffer_size_combo = get_gtk_builder_widget("buffer_size_combo"); 
    10421115  g_menu_item_new_studio = get_gtk_builder_widget("menu_item_new_studio"); 
    10431116  g_menu_item_start_app = get_gtk_builder_widget("menu_item_start_app"); 
     
    10651138  init_studio_list(&g_delete_studio_list, "menu_item_delete_studio", "delete_studio_menu", on_delete_studio); 
    10661139 
     1140  g_menu_item_jack_latency_32   = GTK_CHECK_MENU_ITEM(get_gtk_builder_widget("menu_item_jack_latency_32")); 
     1141  g_menu_item_jack_latency_64   = GTK_CHECK_MENU_ITEM(get_gtk_builder_widget("menu_item_jack_latency_64")); 
     1142  g_menu_item_jack_latency_128  = GTK_CHECK_MENU_ITEM(get_gtk_builder_widget("menu_item_jack_latency_128")); 
     1143  g_menu_item_jack_latency_256  = GTK_CHECK_MENU_ITEM(get_gtk_builder_widget("menu_item_jack_latency_256")); 
     1144  g_menu_item_jack_latency_512  = GTK_CHECK_MENU_ITEM(get_gtk_builder_widget("menu_item_jack_latency_512")); 
     1145  g_menu_item_jack_latency_1024 = GTK_CHECK_MENU_ITEM(get_gtk_builder_widget("menu_item_jack_latency_1024")); 
     1146  g_menu_item_jack_latency_2048 = GTK_CHECK_MENU_ITEM(get_gtk_builder_widget("menu_item_jack_latency_2048")); 
     1147  g_menu_item_jack_latency_4096 = GTK_CHECK_MENU_ITEM(get_gtk_builder_widget("menu_item_jack_latency_4096")); 
     1148  g_menu_item_jack_latency_8192 = GTK_CHECK_MENU_ITEM(get_gtk_builder_widget("menu_item_jack_latency_8192")); 
     1149 
     1150  buffer_size_clear(); 
     1151 
    10671152  world_tree_init(); 
    10681153  view_init(); 
     
    10891174  studio_proxy_set_renamed_callback(on_studio_renamed); 
    10901175 
    1091   set_buffer_size_combo_width(); 
    1092  
    10931176  g_signal_connect(G_OBJECT(g_main_win), "destroy", G_CALLBACK(gtk_main_quit), NULL); 
    10941177  g_signal_connect(G_OBJECT(get_gtk_builder_widget("menu_item_quit")), "activate", G_CALLBACK(gtk_main_quit), NULL); 
    1095   g_signal_connect(G_OBJECT(g_buffer_size_combo), "changed", G_CALLBACK(buffer_size_change_request), NULL); 
    10961178  g_signal_connect(G_OBJECT(g_clear_load_button), "clicked", G_CALLBACK(clear_load), NULL); 
    10971179  g_signal_connect(G_OBJECT(get_gtk_builder_widget("menu_item_view_arrange")), "activate", G_CALLBACK(arrange), NULL); 
     
    11091191  g_signal_connect(G_OBJECT(g_menu_item_start_app), "activate", G_CALLBACK(start_app), NULL); 
    11101192 
     1193  g_signal_connect(G_OBJECT(g_menu_item_jack_latency_32), "toggled", G_CALLBACK(buffer_size_change_request), (gpointer)32); 
     1194  g_signal_connect(G_OBJECT(g_menu_item_jack_latency_64), "toggled", G_CALLBACK(buffer_size_change_request), (gpointer)64); 
     1195  g_signal_connect(G_OBJECT(g_menu_item_jack_latency_128), "toggled", G_CALLBACK(buffer_size_change_request), (gpointer)128); 
     1196  g_signal_connect(G_OBJECT(g_menu_item_jack_latency_256), "toggled", G_CALLBACK(buffer_size_change_request), (gpointer)256); 
     1197  g_signal_connect(G_OBJECT(g_menu_item_jack_latency_512), "toggled", G_CALLBACK(buffer_size_change_request), (gpointer)512); 
     1198  g_signal_connect(G_OBJECT(g_menu_item_jack_latency_1024), "toggled", G_CALLBACK(buffer_size_change_request), (gpointer)1024); 
     1199  g_signal_connect(G_OBJECT(g_menu_item_jack_latency_2048), "toggled", G_CALLBACK(buffer_size_change_request), (gpointer)2048); 
     1200  g_signal_connect(G_OBJECT(g_menu_item_jack_latency_4096), "toggled", G_CALLBACK(buffer_size_change_request), (gpointer)4096); 
     1201  g_signal_connect(G_OBJECT(g_menu_item_jack_latency_8192), "toggled", G_CALLBACK(buffer_size_change_request), (gpointer)8192); 
     1202 
    11111203  gtk_widget_show(g_main_win); 
    11121204