summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-10-28 21:36:40 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-10-28 21:36:40 +0000
commitc4ac43749048c4c0e0ab3656d39384112a628742 (patch)
tree72d3452034c1a0a661587611a63d00509684ca27 /gtk2_ardour
parentee4493301a8247fb8032dd949f4c44cd4c641221 (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.cc26
-rw-r--r--gtk2_ardour/mixer_ui.cc59
-rw-r--r--gtk2_ardour/mixer_ui.h3
-rw-r--r--gtk2_ardour/opts.cc13
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);