More fixes - Alex
authorterminatorX <>
Thu, 10 Apr 2003 22:32:33 +0000 (22:32 +0000)
committerterminatorX <>
Thu, 10 Apr 2003 22:32:33 +0000 (22:32 +0000)
doc/terminatorX-manual/C/terminatorX-manual.xml
src/tX_audiodevice.cc
src/tX_dialog.cc
src/tX_engine.cc
src/tX_loaddlg.cc
src/tX_mastergui.cc
src/tX_vtt.cc
src/tX_vttgui.cc
terminatorX.spec.in

index 0190996225d4c683e0f10e7bac7fca27b9629e2e..91881987554ea716bb53e9561ed5c07f7421acc9 100644 (file)
       <title>Grab Mode Operation</title>
 
       <para>After pressing the <emphasis>Mouse Grab button</emphasis>
-      terminatorX enters &#34;grab mode&#34;. This mode actually locks the
-      mouse (as this input is now used to control the real time parameters)
+      terminatorX enters &#34;grab mode&#34;. This mode actually blocks the
+      mouse (as its input is now used to control the real time parameters)
       and therefore you&#39;ll have to know some mouse/keyboard shortcuts to
       control the software without the GUI.</para>
 
       <para>Now the turntable that has the focus is the one you will
       manipulate with your mouse and keyboard inputs: Note that you can
       actually map different functions to the mouse x/y axis - so what
-      actually happens when you move your mouse depends on what you select on
-      the x/y control panels for each turntable.</para>
+      actually happens when you move your mouse depends on what you select via the
+      <emphasis>Mouse Mapping</emphasis> for each turntable.</para>
 
       <table>
         <title>Keyboard Controls in Grab Mode</title>
index b42f9c38dfc4971b47cf23dcc5c8a493e04fc156..1955e2453a81496aac5ec152b1983c5a0da0b28e 100644 (file)
@@ -204,7 +204,7 @@ int tX_audiodevice_alsa :: open()
        sscanf(globals.alsa_device, "%i-%i: %s", &card, &device, foo);
        sprintf(pcm_name, "hw:%i,%i", card, device);
        
-       if (snd_pcm_open(&pcm_handle, pcm_name, stream, 0) < 0) {
+       if (snd_pcm_open(&pcm_handle, pcm_name, stream, SND_PCM_NONBLOCK) < 0) {
                tX_error("ALSA: Failed to access PCM device \"%s\"", pcm_name);
                snd_pcm_hw_params_free (hw_params);
                return -1;
@@ -290,7 +290,7 @@ int tX_audiodevice_alsa :: open()
        }
        
        snd_pcm_hw_params_free (hw_params);
-       return 0;
+       return snd_pcm_prepare(pcm_handle);
 }
 
 int tX_audiodevice_alsa :: close()
index 604b965308cc4ef2733ae231590dd0ba50daab3e..52fbdab2842b112b4832d22aa51abc29dfa06ca5 100644 (file)
@@ -288,7 +288,7 @@ void init_tx_options(GtkWidget *dialog) {
 
        gtk_spin_button_set_value(GTK_SPIN_BUTTON(lookup_widget(dialog, "oss_buffers")), globals.oss_buff_no);
        gtk_range_set_value(GTK_RANGE(lookup_widget(dialog, "oss_buffersize")), globals.oss_buff_size);
-       gtk_tooltips_set_tip(tooltips, lookup_widget(dialog, "oss_buffersize"), "Set the size of the kernel level audio buffers. On slower systems you might have to increase this value (if you hear \"clicks\"). Lower values mean lower latency though.", NULL);     
+       gtk_tooltips_set_tip(tooltips, lookup_widget(dialog, "oss_buffersize"), "Set the size of the kernel level audio buffers. On slower systems you might have to increase this value (if you hear \"clicks\" or drop-outs). Lower values mean lower latency though.", NULL);        
        gtk_combo_set_popdown_strings(GTK_COMBO(lookup_widget(dialog, "oss_samplerate")), get_sampling_rates_list());
        char tmp[32];
        sprintf(tmp, "%i", globals.oss_samplerate);
@@ -300,7 +300,9 @@ void init_tx_options(GtkWidget *dialog) {
        gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(lookup_widget(dialog, "alsa_audio_device"))->entry), globals.alsa_device);
 
        gtk_range_set_value(GTK_RANGE(lookup_widget(dialog, "alsa_buffer_time")), globals.alsa_buffer_time/1000);
+       gtk_tooltips_set_tip(tooltips, lookup_widget(dialog, "alsa_buffer_time"), "Sets the size of the ALSA ring buffer. On slower systems you might have to increase this value (if you hear \"clicks\" or drop-outs). Lower values mean lower latency though.", NULL);       
        gtk_range_set_value(GTK_RANGE(lookup_widget(dialog, "alsa_period_time")), globals.alsa_period_time/1000);
+       gtk_tooltips_set_tip(tooltips, lookup_widget(dialog, "alsa_period_time"), "The ALSA period time determines how much audio data will be written to the device at once. It is recommended to set this value to a half or a third of the ALSA buffer time.", NULL);        
 
        gtk_combo_set_popdown_strings(GTK_COMBO(lookup_widget(dialog, "alsa_samplerate")), get_sampling_rates_list());
        sprintf(tmp, "%i", globals.alsa_samplerate);
index f0548c650830edabc87130fc7222152b31ca8f82..5aa10a67d0c75c21f5705231a69e57f22cd98833 100644 (file)
@@ -292,6 +292,11 @@ void tX_engine :: stop() {
        tX_debug("tX_engine::stop() - waiting for loop to stop.");
        
        while (loop_is_active) {
+               /* Due to gtk+ signal handling this can cause a deadlock
+                  on the seqpars' update list. So we need to handle events
+                  while waiting...                     
+               */
+               while (gtk_events_pending()) gtk_main_iteration();
                usleep(50);
        }
        
index 8cf7ed17ac2ae67669006ce99f4a3f82e5b9f790..317daa3aedd7430e37069960f7b1f5514f9cbe85 100644 (file)
@@ -50,7 +50,7 @@ gfloat ld_old_prog;
 #define add_widget_fix(wid); gtk_box_pack_start(GTK_BOX(vbox), wid, WID_FIX);\
        gtk_widget_show(wid);
 
-#define gtk_flush(); while (gtk_events_pending()) gtk_main_iteration(); gdk_flush();
+#define gtk_flush(); { int ctr=0; while (gtk_events_pending()) { ctr++; if (ctr>5) break; gtk_main_iteration(); gdk_flush(); }}
 
 
 int ld_create_loaddlg(int mode, int count)
@@ -173,6 +173,7 @@ void ld_set_progress(gfloat progress)
        if (progress!=ld_old_prog)
        {
                gtk_progress_bar_update(GTK_PROGRESS_BAR(ld_single_p), progress);
+               
                gtk_flush();
        }
        
index f1debe5c3714781e0776afd2fc447577da1872f3..21cfbf3ec659ab70b6a0161fe8a41789ea397c44 100644 (file)
@@ -62,7 +62,6 @@ GtkWidget *tt_parent;
 GtkWidget *control_parent;
 GtkWidget *audio_parent;
 GtkWidget *main_window;
-GtkWidget *wav_progress;
 GtkWidget *grab_button;
 GtkWidget *main_flash_l;
 GtkWidget *main_flash_r;
@@ -1300,23 +1299,6 @@ void create_mastergui(int x, int y)
 
 gfloat old_percent=-1;
 
-void wav_progress_update(gfloat percent)
-{
-       percent=floor(percent*10.0)/10.0; //Updating statusbars with gtk-themes eats up hell of a lot CPU-time
-                                         // which is why we update every 10% only.
-       
-       if (wav_progress)
-       {
-               if (old_percent != percent)
-               {
-                       old_percent = percent;
-                       gtk_progress_bar_update(GTK_PROGRESS_BAR(wav_progress), percent);
-                       while (gtk_events_pending()) gtk_main_iteration();      
-               }
-       }
-
-}
-
 void note_destroy(GtkWidget *widget, GtkWidget *mbox)
 {
        gtk_widget_destroy(GTK_WIDGET(mbox));
index 04fa6fdb44032a870979ea2839b3ffa6b282da48..8fd7f0b97e22f841f0ce53dd95663d6c93c988d5 100644 (file)
@@ -207,6 +207,10 @@ vtt_class :: ~vtt_class()
                delete effect;
        }
        
+       if (sync_master==this) {
+               sync_master=NULL;
+       }
+       
        delete_gui(this);
 }
 
index 58c556ec19b8817e222f8a21ec67e1b5091994d4..c6c036a33ccc1363bad8f05d10ddab9599a9e3c2 100644 (file)
@@ -824,13 +824,13 @@ void build_vtt_gui(vtt_class *vtt)
        g->mouse_mapping=gtk_button_new_with_label("Mouse Mapping");
        gtk_widget_show(g->mouse_mapping);
        gui_set_tooltip(g->mouse_mapping, "Determines what parameters should be affected on mouse moition in mouse grab mode.");
-       gtk_box_pack_start(GTK_BOX(tempbox), g->mouse_mapping, WID_DYN);
+       gtk_box_pack_start(GTK_BOX(tempbox2), g->mouse_mapping, WID_FIX);
 
 #ifdef USE_ALSA_MIDI_IN
        g->midi_mapping=gtk_button_new_with_label("MIDI Mapping");
        gtk_widget_show(g->midi_mapping);
        gui_set_tooltip(g->midi_mapping, "Determines what parameters should be bound to what MIDI events.");
-       gtk_box_pack_start(GTK_BOX(tempbox), g->midi_mapping, WID_DYN);
+       gtk_box_pack_start(GTK_BOX(tempbox2), g->midi_mapping, WID_FIX);
        
        if (!tX_engine::get_instance()->get_midi()->get_is_open()) {
                gtk_widget_set_sensitive(g->midi_mapping, FALSE);
index 04de4b66cb7737c3f265c1bf2a8a86263fa36000..58df630b789bf679dcf7e066d171b69b2a9be09f 100644 (file)
@@ -13,7 +13,7 @@ URL: http://www.terminatorX.cx
 Source: %{name}-%{version}.tar.gz
 Buildroot: %{_tmppath}/%{name}-%{version}-root
 Requires: gtk2, libvorbis, audiofile, libxml2
-BuildPrereq: gtk2-devel, libvorbis-devel, audiofile-devel, libxml2-devel, libmad
+BuildPrereq: gtk2-devel, libvorbis-devel, audiofile-devel, libxml2-devel, zlib-devel, scrollkeeper
 
 %description
 terminatorX is a realtime audio synthesizer that allows you to "scratch" on
@@ -93,8 +93,8 @@ find . -name "Makefile*" -print -exec rm -rf {} \;
 %{_datadir}/pixmaps/terminatorX-app.png
 %{_datadir}/pixmaps/terminatorX-mime.png
 %{_datadir}/gnome/apps/Multimedia/terminatorX.desktop
-%{_datadir}/omf/scrollkeeper-example2
-%{_datadir}/scrollkeeper-example2
+%{_datadir}/omf/terminatorX
+%{_datadir}/terminatorX
 
 %post
 if which scrollkeeper-update>/dev/null 2>&1; then scrollkeeper-update -q -o %{_datadir}/omf/terminatorX; fi