diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-10-28 21:36:40 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-10-28 21:36:40 +0000 |
commit | c4ac43749048c4c0e0ab3656d39384112a628742 (patch) | |
tree | 72d3452034c1a0a661587611a63d00509684ca27 /gtk2_ardour | |
parent | ee4493301a8247fb8032dd949f4c44cd4c641221 (diff) |
* libardour uses ARDOUR::nframes_t and ARDOUR::nframes64_t explicitly in headers
* use explicit operator<< and operator>> that in turn use PBD::EnumWriter when serializing and deserializing to/from rc files
* adds scrolling in mixer window (from 2.X)
* BBT math stuff - untested, but basically operational
* move LocaleGuard into its own file(s) in libs/pbd
* Tempo now uses nframes64_t everywhere (except for sample rate values)
* as in 2.X, use mkstemp and hack to avoid temp file nonsense, and remove erroneous free() from disk stats output
git-svn-id: svn://localhost/ardour2/branches/3.0@5961 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 26 | ||||
-rw-r--r-- | gtk2_ardour/mixer_ui.cc | 59 | ||||
-rw-r--r-- | gtk2_ardour/mixer_ui.h | 3 | ||||
-rw-r--r-- | gtk2_ardour/opts.cc | 13 |
4 files changed, 84 insertions, 17 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index f10f287ef8..f6208fab8c 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -3009,36 +3009,38 @@ ARDOUR_UI::push_buffer_stats (uint32_t capture, uint32_t playback) void ARDOUR_UI::write_buffer_stats () { + + std::ofstream fout; struct tm tm; char buf[64]; + char path[PATH_MAX+1]; int fd; + + strcpy (path, "ardourBufferingXXXXXX"); - char* tmplt = (char*)calloc(strlen("ardourXXXXXX"), sizeof(char)); - int fd = mkstemp (tmplt); - if (fd) { + if ((fd = mkstemp (path )) < 0) { cerr << X_("cannot find temporary name for ardour buffer stats") << endl; return; } + + fout.open (path); + close (fd); - FILE* fout = fdopen (fd, "w"); if (!fout) { - cerr << string_compose (X_("cannot open file %1 for ardour buffer stats"), tmplt) << endl; + cerr << string_compose (X_("cannot open file %1 for ardour buffer stats"), path) << endl; return; } for (list<DiskBufferStat>::iterator i = disk_buffer_stats.begin(); i != disk_buffer_stats.end(); ++i) { - std::ostringstream ss; localtime_r (&(*i).when, &tm); strftime (buf, sizeof (buf), "%T", &tm); - fprintf(fout, "%s %u %u\n", buf, (*i).capture, (*i).playback); + fout << buf << ' ' << (*i).capture << ' ' << (*i).playback << endl; } - + disk_buffer_stats.clear (); - fclose (fout); - close (fd); + fout.close (); - cerr << "Ardour buffering statistics can be found in: " << tmplt << endl; - free (tmplt); + cerr << "Ardour buffering statistics can be found in: " << path << endl; } void diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index dbc61f4308..0d3f42c1d5 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -1459,10 +1459,38 @@ Mixer_UI::pane_allocation_handler (Allocation&, Gtk::Paned* which) } } } +void +Mixer_UI::scroll_left () +{ + Adjustment* adj = scroller.get_hscrollbar()->get_adjustment(); + /* stupid GTK: can't rely on clamping across versions */ + scroller.get_hscrollbar()->set_value (max (adj->get_lower(), adj->get_value() - adj->get_step_increment())); +} + +void +Mixer_UI::scroll_right () +{ + Adjustment* adj = scroller.get_hscrollbar()->get_adjustment(); + /* stupid GTK: can't rely on clamping across versions */ + scroller.get_hscrollbar()->set_value (min (adj->get_upper(), adj->get_value() + adj->get_step_increment())); +} bool Mixer_UI::on_key_press_event (GdkEventKey* ev) { + switch (ev->keyval) { + case GDK_Left: + scroll_left (); + return true; + + case GDK_Right: + scroll_right (); + return true; + + default: + break; + } + return key_press_focus_accelerator_handler (*this, ev); } @@ -1473,6 +1501,37 @@ Mixer_UI::on_key_release_event (GdkEventKey* ev) // return key_press_focus_accelerator_handler (*this, ev); } + +bool +Mixer_UI::on_scroll_event (GdkEventScroll* ev) +{ + switch (ev->direction) { + case GDK_SCROLL_LEFT: + scroll_left (); + return true; + case GDK_SCROLL_UP: + if (ev->state & Keyboard::TertiaryModifier) { + scroll_left (); + return true; + } + return false; + + case GDK_SCROLL_RIGHT: + scroll_right (); + return true; + + case GDK_SCROLL_DOWN: + if (ev->state & Keyboard::TertiaryModifier) { + scroll_right (); + return true; + } + return false; + } + + return false; +} + + void Mixer_UI::parameter_changed (string const & p) { diff --git a/gtk2_ardour/mixer_ui.h b/gtk2_ardour/mixer_ui.h index bb96255406..2945e00858 100644 --- a/gtk2_ardour/mixer_ui.h +++ b/gtk2_ardour/mixer_ui.h @@ -114,12 +114,15 @@ class Mixer_UI : public Gtk::Window bool on_key_press_event (GdkEventKey*); bool on_key_release_event (GdkEventKey*); + bool on_scroll_event (GdkEventScroll*); void pane_allocation_handler (Gtk::Allocation&, Gtk::Paned*); std::list<MixerStrip *> strips; bool strip_scroller_button_release (GdkEventButton*); + void scroll_left (); + void scroll_right (); void add_strip (ARDOUR::RouteList&); void remove_strip (MixerStrip *); diff --git a/gtk2_ardour/opts.cc b/gtk2_ardour/opts.cc index 153dbfe56a..cd45bed9ff 100644 --- a/gtk2_ardour/opts.cc +++ b/gtk2_ardour/opts.cc @@ -77,11 +77,12 @@ print_help (const char *execname) static void list_debug_options () { - cerr << _("The following debug options are available. Separate multipe options with commas. Names are case-insensitive.") << "\n\n"; + cerr << _("The following debug options are available. Separate multipe options with commas.\nNames are case-insensitive and can be abbreviated.") << "\n\n"; cerr << "\tMidiSourceIO\n"; cerr << "\tMidiPlaylistIO\n"; cerr << "\tMidiDiskstreamIO\n"; cerr << "\tSnapBBT\n"; + cerr << "\tConfiguration\n"; } static int @@ -107,14 +108,16 @@ parse_debug_options (const char* str) return 0; } - if (strcasecmp (p, "midisourceio") == 0) { + if (strncasecmp (p, "midisourceio", strlen (p)) == 0) { bits |= ARDOUR::DEBUG::MidiSourceIO; - } else if (strcasecmp (p, "midiplaylistio") == 0) { + } else if (strncasecmp (p, "midiplaylistio", strlen (p)) == 0) { bits |= ARDOUR::DEBUG::MidiPlaylistIO; - } else if (strcasecmp (p, "mididiskstreamio") == 0) { + } else if (strncasecmp (p, "mididiskstreamio", strlen (p)) == 0) { bits |= ARDOUR::DEBUG::MidiDiskstreamIO; - } else if (strcasecmp (p, "snapbbt") == 0) { + } else if (strncasecmp (p, "snapbbt", strlen (p)) == 0) { bits |= ARDOUR::DEBUG::SnapBBT; + } else if (strncasecmp (p, "configuration", strlen (p)) == 0) { + bits |= ARDOUR::DEBUG::Configuration; } p = strtok_r (0, ",", &sp); |