Removed unused MeterBridgeStrip and MeterBridge classes.

Removed unnecessary AudioEngine references.


git-svn-id: svn://localhost/ardour2/trunk@1583 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Taybin Rutkin 2007-03-13 16:17:29 +00:00
parent 3f4232c646
commit 7e0e458f74
15 changed files with 13 additions and 725 deletions

View File

@ -65,7 +65,6 @@
class AudioClock;
class PublicEditor;
class Keyboard;
class MeterBridge;
class OptionEditor;
class Mixer_UI;
class ConnectionEditor;

View File

@ -338,7 +338,7 @@ int
ARDOUR_UI::create_route_params ()
{
if (route_params == 0) {
route_params = new RouteParams_UI (*engine);
route_params = new RouteParams_UI ();
route_params->set_session (session);
route_params->signal_unmap().connect (sigc::bind(sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("<Actions>/Common/ToggleInspector")));
}

View File

@ -54,7 +54,7 @@ ARDOUR_UI::create_editor ()
{
try {
editor = new Editor (*engine);
editor = new Editor ();
}
catch (failed_constructor& err) {

View File

@ -34,7 +34,7 @@ ARDOUR_UI::create_mixer ()
{
try {
mixer = new Mixer_UI (*engine);
mixer = new Mixer_UI ();
}
catch (failed_constructor& err) {
@ -43,3 +43,4 @@ ARDOUR_UI::create_mixer ()
return 0;
}

View File

@ -169,9 +169,8 @@ check_adjustment (Gtk::Adjustment* adj)
}
Editor::Editor (AudioEngine& eng)
: engine (eng),
Editor::Editor ()
:
/* time display buttons */
minsec_label (_("Mins:Secs")),

View File

@ -60,10 +60,6 @@ namespace Gtkmm2ext {
class TearOff;
}
namespace LinuxAudioSystems {
class AudioEngine;
}
namespace ARDOUR {
class AudioDiskstream;
class RouteGroup;
@ -121,7 +117,7 @@ class TimeAxisViewItem ;
class Editor : public PublicEditor
{
public:
Editor (ARDOUR::AudioEngine&);
Editor ();
~Editor ();
void connect_to_session (ARDOUR::Session *);
@ -350,7 +346,6 @@ class Editor : public PublicEditor
private:
ARDOUR::Session *session;
ARDOUR::AudioEngine& engine;
bool constructed;
PlaylistSelector* _playlist_selector;

View File

@ -163,7 +163,7 @@ bool currentInitialized = 0;
void
Editor::update_current_screen ()
{
if (session && engine.running()) {
if (session && session->engine().running()) {
nframes_t frame;

View File

@ -1,259 +0,0 @@
/*
Copyright (C) 2002 Paul Davis
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <ardour/session.h>
#include <ardour/session_route.h>
#include <ardour/audio_diskstream.h>
#include <ardour/audio_track.h>
#include "ardour_ui.h"
#include "meter_bridge.h"
#include "meter_bridge_strip.h"
#include "utils.h"
#include "gui_thread.h"
#include "i18n.h"
using namespace ARDOUR;
using namespace PBD;
using namespace Gtk;
using namespace sigc;
#define FRAME_SHADOW_STYLE Gtk::SHADOW_IN
#define FRAME_NAME "BaseFrame"
MeterBridge::MeterBridge ()
: ArdourDialog ("meter bridge"),
hadjustment (0.0, 0.0, 0.0),
vadjustment (0.0, 0.0, 0.0),
meter_viewport (hadjustment, vadjustment)
{
meter_base.set_name ("MeterBase");
meter_frame.set_shadow_type (FRAME_SHADOW_STYLE);
meter_frame.set_name (FRAME_NAME);
meter_frame.add (meter_base);
upper_metering_box.set_name ("AboveMeterZone");
lower_metering_box.set_name ("BelowMeterZone");
metering_vbox.set_spacing (5);
metering_vbox.set_border_width (10);
metering_vbox.pack_start (upper_metering_box, false, false);
metering_vbox.pack_start (meter_frame, false, false);
metering_vbox.pack_start (lower_metering_box, false, false);
metering_hbox.pack_start (metering_vbox, false, false);
meter_scroll_base.set_name ("MeterScrollBase");
meter_scroll_base.add (metering_hbox);
meter_viewport.add (meter_scroll_base);
meter_viewport.set_shadow_type (Gtk::SHADOW_NONE);
meter_scroller.add (meter_viewport);
meter_scroller.set_name ("MeterBridgeWindow");
meter_scroller.set_policy (Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
meter_scroller.set_border_width (5);
add (meter_scroller);
add_events (Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK);
set_name ("MeterBridgeWindow");
set_title (_("ardour: meter bridge"));
set_wmclass (X_("ardour_meter_bridge"), "Ardour");
// set_policy (false, false, false); // no user resizing of any kind
signal_delete_event().connect (bind (sigc::ptr_fun (just_hide_it), static_cast<Gtk::Window*>(this)));
metering = false;
/* don't show: this window doesn't come up by default */
}
MeterBridge::~MeterBridge ()
{
stop_metering ();
}
void
MeterBridge::set_session (Session *s)
{
ArdourDialog::set_session (s);
if (session) {
// XXX this stuff has to be fixed if we ever use this code again
// (refs vs. ptrs)
// session->foreach_route (this, &MeterBridge::add_route);
session->RouteAdded.connect (mem_fun(*this, &MeterBridge::add_route));
session->GoingAway.connect (mem_fun(*this, &MeterBridge::session_gone));
start_metering ();
}
}
void
MeterBridge::session_gone ()
{
ENSURE_GUI_THREAD(mem_fun(*this, &MeterBridge::session_gone));
stop_metering ();
hide_all ();
list<MeterBridgeStrip *>::iterator i;
for (i = meters.begin(); i != meters.end(); ++i) {
upper_metering_box.remove ((*i)->above_box());
meter_base.remove ((*i)->meter_widget());
lower_metering_box.remove ((*i)->below_box());
// delete (*i);
}
meters.clear ();
ArdourDialog::session_gone();
}
void
MeterBridge::add_route (ARDOUR::Route* route)
{
ENSURE_GUI_THREAD(bind (mem_fun(*this, &MeterBridge::add_route), route));
uint32_t n;
char buf[32];
if (!session || route->hidden() || dynamic_cast<AudioTrack*>(route) == 0) {
return;
}
n = meters.size();
snprintf (buf, sizeof (buf), "%u", n+1);
MeterBridgeStrip *meter = new MeterBridgeStrip (session->engine(),
*session,
*route,
buf,
session->over_length_long,
session->over_length_short,
200);
#define packing_factor 30
upper_metering_box.put (meter->above_box(), n * packing_factor, 0);
meter_base.put (meter->meter_widget(), (n * packing_factor) + (meter->meter_width()/2), 0);
lower_metering_box.put (meter->below_box(), n * packing_factor, 0);
meter->above_box().show_all ();
meter->meter_widget().show ();
meter->below_box().show_all ();
route->GoingAway.connect (bind (mem_fun(*this, &MeterBridge::remove_route), route));
meters.insert (meters.begin(), meter);
set_default_size (30 + ((n+1) * packing_factor), 315);
meter->set_meter_on(true);
session->GoingAway.connect (mem_fun(*this, &MeterBridge::session_gone));
}
void
MeterBridge::remove_route (Route* route)
{
ENSURE_GUI_THREAD(bind (mem_fun(*this, &MeterBridge::remove_route), route));
list<MeterBridgeStrip *>::iterator i;
for (i = meters.begin(); i != meters.end(); ++i) {
if (&((*i)->route()) == route) {
delete *i;
meters.erase (i);
return;
}
}
}
void
MeterBridge::clear_all_meters ()
{
list<MeterBridgeStrip *>::iterator i;
for (i = meters.begin(); i != meters.end(); ++i) {
(*i)->clear_meter ();
}
}
void
MeterBridge::update ()
{
list<MeterBridgeStrip *>::iterator i;
for (i = meters.begin(); i != meters.end(); ++i) {
(*i)->update ();
}
}
void
MeterBridge::start_metering ()
{
list<MeterBridgeStrip *>::iterator i;
for (i = meters.begin(); i != meters.end(); ++i) {
(*i)->set_meter_on (true);
}
metering_connection = ARDOUR_UI::instance()->RapidScreenUpdate.connect
(mem_fun(*this, &MeterBridge::update));
metering = true;
}
void
MeterBridge::stop_metering ()
{
list<MeterBridgeStrip *>::iterator i;
for (i = meters.begin(); i != meters.end(); ++i) {
(*i)->set_meter_on (false);
}
metering_connection.disconnect();
metering = false;
}
void
MeterBridge::toggle_metering ()
{
if (!metering) {
start_metering ();
} else {
stop_metering ();
}
}
void
MeterBridge::on_map ()
{
start_metering ();
return Window::on_map ();
}
void
MeterBridge::on_unmap ()
{
stop_metering ();
return Window::on_unmap ();
}

View File

@ -1,89 +0,0 @@
/*
Copyright (C) 1999-2002 Paul Davis
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef __ardour_meter_bridge_h__
#define __ardour_meter_bridge_h__
#include <list>
#include <gtkmm/eventbox.h>
#include <gtkmm/viewport.h>
#include <gtkmm/scrolledwindow.h>
#include <gtkmm/box.h>
#include <gtkmm/fixed.h>
#include <gtkmm/frame.h>
#include "ardour_dialog.h"
class MeterBridgeStrip;
namespace ARDOUR {
class Session;
class Route;
}
class MeterBridge : public ArdourDialog
{
public:
MeterBridge ();
~MeterBridge ();
void set_session (ARDOUR::Session*);
void clear_all_meters ();
void start_metering ();
void stop_metering ();
void toggle_metering ();
protected:
void on_map ();
void on_unmap ();
private:
/* diskstream/recorder display */
Gtk::Adjustment hadjustment;
Gtk::Adjustment vadjustment;
Gtk::Viewport meter_viewport;
Gtk::ScrolledWindow meter_scroller;
Gtk::EventBox meter_scroll_base;
Gtk::HBox meter_scroller_hpacker;
Gtk::VBox meter_scroller_vpacker;
Gtk::VBox metering_vpacker;
Gtk::VBox metering_hpacker;
Gtk::VBox metering_vbox;
Gtk::HBox metering_hbox;
Gtk::Fixed upper_metering_box;
Gtk::Fixed lower_metering_box;
Gtk::Fixed meter_base;
Gtk::Frame meter_frame;
list<MeterBridgeStrip*> meters;
bool metering;
sigc::connection metering_connection;
void update ();
void add_route (ARDOUR::Route*);
void remove_route (ARDOUR::Route*);
void session_gone(); /* overrides ArdourDialog::session_gone() */
};
#endif /* __ardour_meter_bridge_h__ (*/

View File

@ -1,242 +0,0 @@
/*
Copyright (C) 1999 Paul Davis
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <cmath>
#include <ctime>
#include <sys/stat.h>
#include <pbd/pathscanner.h>
#include <pbd/fastlog.h>
#include <gtkmm2ext/utils.h>
#include <gtkmm2ext/selector.h>
#include <ardour/audioengine.h>
#include <ardour/route.h>
#include <ardour/port.h>
#include <ardour/utils.h>
#include "meter_bridge_strip.h"
#include "ardour_ui.h"
#include "prompter.h"
#include "logmeter.h"
#include "i18n.h"
using namespace ARDOUR;
using namespace PBD;
using namespace Gtk;
using namespace Gtkmm2ext;
MeterBridgeStrip::MeterBridgeStrip (AudioEngine &eng,
Session& s,
Route& r,
string name,
nframes_t long_over,
nframes_t short_over,
nframes_t meter_hold)
: engine (eng),
session (s),
_route (r),
meter (meter_hold, 5, FastMeter::Vertical)
{
char buf[64];
label.set_text (name);
label.set_name ("ChannelMeterLabel");
label_ebox.set_name ("MeterBridgeWindow");
label_ebox.set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK);
label_ebox.add (label);
label_ebox.signal_button_release_event().connect (mem_fun(*this, &MeterBridgeStrip::label_button_press_release));
ARDOUR_UI::instance()->tooltips().set_tip (label_ebox, _route.name());
over_long_label.set_text ("0");
over_long_label.set_name ("OverMeterLabel");
over_long_button.add (over_long_label);
over_long_button.set_name ("OverMeter");
over_long_frame.add (over_long_button);
over_long_frame.set_shadow_type (Gtk::SHADOW_IN);
over_long_frame.set_name ("BaseFrame");
over_long_hbox.pack_start (over_long_frame, false, false);
snprintf(buf, sizeof(buf)-1, _("# of %u-sample overs"), long_over);
ARDOUR_UI::instance()->tooltips().set_tip (over_long_button, buf);
set_size_request_to_display_given_text (over_long_button, "88g", 2, 2);
over_short_label.set_text ("0");
over_short_label.set_name ("OverMeterLabel");
over_short_button.add (over_short_label);
over_short_button.set_name ("OverMeter");
over_short_frame.add (over_short_button);
over_short_frame.set_shadow_type (Gtk::SHADOW_IN);
over_short_frame.set_name ("BaseFrame");
over_short_hbox.pack_start (over_short_frame, false, false);
snprintf(buf, sizeof(buf)-1, _("# of %u-sample overs"), short_over);
ARDOUR_UI::instance()->tooltips().set_tip (over_short_button, buf);
set_size_request_to_display_given_text (over_short_button, "88g", 2, 2);
above_meter_vbox.set_spacing (5);
below_meter_vbox.set_spacing (5);
above_meter_vbox.pack_start (over_long_hbox, false, false);
above_meter_vbox.pack_start (over_short_hbox, false, false);
below_meter_vbox.pack_start (label_ebox);
over_short_button.signal_button_release_event().connect (mem_fun(*this,&MeterBridgeStrip::gui_clear_overs));
over_long_button.signal_button_release_event().connect (mem_fun(*this,&MeterBridgeStrip::gui_clear_overs));
last_over_short = 0;
last_over_long = 0;
meter_clear_pending = false;
over_clear_pending = false;
meter_on = true;
}
void
MeterBridgeStrip::update ()
{
string buf;
Port *port;
guint32 over_short = 0;
guint32 over_long = 0;
if ((port = _route.input (0)) == 0) {
meter.set (0.0);
return;
} else {
over_short = port->short_overs ();
over_long = port->long_overs ();
}
if (meter_on) {
float power = minus_infinity();
if ((power = _route.peak_input_power (0)) != minus_infinity()) {
meter.set (log_meter (power));
if (over_short != last_over_short) {
buf = string_compose("%1", over_short);
over_short_label.set_text (buf);
last_over_short = over_short;
}
if (over_long != last_over_long) {
buf = string_compose("%1", over_long);
over_long_label.set_text (buf);
last_over_long = over_long;
}
} else {
meter.set (0.0);
}
}
if (meter_clear_pending) {
meter_clear_pending = false;
meter.clear ();
}
if (over_clear_pending) {
over_clear_pending = false;
port->reset_overs ();
over_long_label.set_text ("0");
over_short_label.set_text ("0");
last_over_short = 0;
last_over_long = 0;
}
}
gint
MeterBridgeStrip::gui_clear_overs (GdkEventButton *ev)
{
clear_overs ();
return FALSE;
}
void
MeterBridgeStrip::clear_meter ()
{
meter_clear_pending = true;
}
void
MeterBridgeStrip::clear_overs ()
{
over_clear_pending = true;
}
void
MeterBridgeStrip::set_meter_on (bool yn)
{
Port* port;
meter_on = yn;
if (!meter_on) {
meter_clear_pending = true;
over_clear_pending = true;
}
if (meter.is_visible()) {
if ((port = _route.input (0)) != 0) {
if (meter_on) {
port->enable_metering ();
} else {
port->disable_metering ();
}
}
}
}
gint
MeterBridgeStrip::label_button_press_release (GdkEventButton *ev)
{
string name;
ArdourPrompter prompter (true);
prompter.set_prompt (_("New Name for Meter:"));
prompter.set_initial_text (label.get_text());
prompter.add_button (_("Rename"), Gtk::RESPONSE_ACCEPT);
prompter.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false);
prompter.show_all();
switch (prompter.run ()) {
case Gtk::RESPONSE_ACCEPT:
prompter.get_result (name);
if (name.length()) {
label.set_text(name);
}
default:
break;
}
return FALSE;
}

View File

@ -1,109 +0,0 @@
/*
Copyright (C) 1999 Paul Davis
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef __ardour_meterbridgestrip_h__
#define __ardour_meterbridgestrip_h__
#include <sigc++/signal.h>
#include <gtkmm/box.h>
#include <gtkmm/widget.h>
#include <gtkmm/eventbox.h>
#include <gtkmm/label.h>
#include <gtkmm/frame.h>
#include <gtkmm2ext/fastmeter.h>
namespace ARDOUR {
class AudioEngine;
class Session;
class Route;
}
namespace Gtkmm2ext {
class Selector;
struct SelectionResult;
}
class MeterBridgeStrip : public sigc::trackable
{
public:
MeterBridgeStrip (ARDOUR::AudioEngine &,
ARDOUR::Session&,
ARDOUR::Route&,
string label,
nframes_t long_over,
nframes_t short_over,
nframes_t meter_hold);
void update (); /* called by meter timeout handler from ARDOUR_UI */
Gtk::Box &above_box() { return above_meter_vbox; }
Gtk::Box &below_box() { return below_meter_vbox; }
Gtk::Widget &meter_widget() { return meter; }
guint32 meter_width() const { return 8; }
void clear_meter ();
void clear_overs ();
void set_meter_on (bool yn);
bool get_meter_on () const { return meter_on; }
ARDOUR::Route& route() const { return _route; }
private:
ARDOUR::AudioEngine& engine;
ARDOUR::Session& session;
ARDOUR::Route& _route;
Gtk::EventBox label_ebox;
Gtk::Label label;
bool meter_clear_pending;
bool over_clear_pending;
Gtkmm2ext::FastMeter meter;
bool meter_on;
Gtk::VBox above_meter_vbox;
Gtk::VBox below_meter_vbox;
Gtk::HBox over_long_hbox;
Gtk::HBox over_long_vbox;
Gtk::EventBox over_long_button;
Gtk::Frame over_long_frame;
Gtk::Label over_long_label;
Gtk::HBox over_short_hbox;
Gtk::HBox over_short_vbox;
Gtk::EventBox over_short_button;
Gtk::Frame over_short_frame;
Gtk::Label over_short_label;
guint32 last_over_short;
guint32 last_over_long;
gint gui_clear_overs (GdkEventButton *);
gint label_button_press_release (GdkEventButton *);
};
#endif /* __ardour_meterbridgestrip_h__ */

View File

@ -29,7 +29,6 @@
#include <gtkmm2ext/utils.h>
#include <gtkmm2ext/stop_signal.h>
#include <ardour/audioengine.h>
#include <ardour/session.h>
#include <ardour/audio_track.h>
#include <ardour/session_route.h>
@ -58,9 +57,8 @@ using namespace std;
using PBD::atoi;
Mixer_UI::Mixer_UI (AudioEngine& eng)
: Window (Gtk::WINDOW_TOPLEVEL),
engine (eng)
Mixer_UI::Mixer_UI ()
: Window (Gtk::WINDOW_TOPLEVEL)
{
_strip_width = Wide;
track_menu = 0;

View File

@ -45,7 +45,6 @@ namespace ARDOUR {
class RouteGroup;
class Session;
class AudioDiskstream;
class AudioEngine;
};
class MixerStrip;
@ -54,7 +53,7 @@ class PluginSelector;
class Mixer_UI : public Gtk::Window
{
public:
Mixer_UI (ARDOUR::AudioEngine&);
Mixer_UI ();
~Mixer_UI();
void connect_to_session (ARDOUR::Session *);
@ -80,7 +79,6 @@ class Mixer_UI : public Gtk::Window
RouteRedirectSelection& selection() { return _selection; }
private:
ARDOUR::AudioEngine& engine;
ARDOUR::Session *session;
bool _visible;

View File

@ -55,9 +55,8 @@ using namespace PBD;
using namespace Gtk;
using namespace sigc;
RouteParams_UI::RouteParams_UI (AudioEngine& eng)
RouteParams_UI::RouteParams_UI ()
: ArdourDialog ("track/bus inspector"),
engine (eng),
track_menu(0)
{
pre_redirect_box = 0;

View File

@ -58,7 +58,7 @@ class PluginSelector;
class RouteParams_UI : public ArdourDialog
{
public:
RouteParams_UI (ARDOUR::AudioEngine&);
RouteParams_UI ();
~RouteParams_UI();
void set_session (ARDOUR::Session *);
@ -66,8 +66,6 @@ class RouteParams_UI : public ArdourDialog
PluginSelector& plugin_selector() { return *_plugin_selector; }
private:
ARDOUR::AudioEngine& engine;
Gtk::HBox global_hpacker;
Gtk::VBox global_vpacker;
Gtk::ScrolledWindow scroller;