minor peak-meter performance tweak
* redraw only missing parts of the outside rectangle, * don't redraw RMS meter if value has not changed
This commit is contained in:
parent
2a0440a373
commit
e0bbc0b435
@ -53,7 +53,6 @@ FastMeter::FastMeter (long hold, unsigned long dimen, Orientation o, int len,
|
||||
{
|
||||
orientation = o;
|
||||
hold_cnt = hold;
|
||||
resized = true;
|
||||
hold_state = 0;
|
||||
bright_hold = false;
|
||||
current_peak = 0;
|
||||
@ -353,7 +352,6 @@ FastMeter::on_size_allocate (Gtk::Allocation &alloc)
|
||||
}
|
||||
|
||||
DrawingArea::on_size_allocate (alloc);
|
||||
resized = true;
|
||||
}
|
||||
|
||||
bool
|
||||
@ -372,16 +370,13 @@ FastMeter::vertical_expose (GdkEventExpose* ev)
|
||||
|
||||
cairo_t* cr = gdk_cairo_create (get_window ()->gobj());
|
||||
|
||||
if (resized) {
|
||||
cairo_set_source_rgb (cr, 0, 0, 0); // black
|
||||
rounded_rectangle (cr, 0, 0, pixrect.width + 2, pixheight + 2, 2);
|
||||
cairo_stroke (cr);
|
||||
//cairo_fill (cr);
|
||||
//resized = false;
|
||||
}
|
||||
cairo_rectangle (cr, ev->area.x, ev->area.y, ev->area.width, ev->area.height);
|
||||
cairo_clip (cr);
|
||||
|
||||
cairo_set_source_rgb (cr, 0, 0, 0); // black
|
||||
rounded_rectangle (cr, 0, 0, pixrect.width + 2, pixheight + 2, 2);
|
||||
cairo_stroke (cr);
|
||||
|
||||
top_of_meter = (gint) floor (pixheight * current_level);
|
||||
|
||||
/* reset the height & origin of the rect that needs to show the pixbuf
|
||||
@ -464,11 +459,10 @@ FastMeter::set (float lvl, float peak)
|
||||
|
||||
current_level = lvl;
|
||||
|
||||
if (current_level == old_level && current_peak == old_peak && hold_state == 0) {
|
||||
if (current_level == old_level && current_peak == old_peak && (hold_state == 0 || peak != -1)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Glib::RefPtr<Gdk::Window> win;
|
||||
|
||||
if ((win = get_window()) == 0) {
|
||||
@ -565,7 +559,6 @@ FastMeter::set_highlight (bool onoff)
|
||||
}
|
||||
highlight = onoff;
|
||||
bgpattern = request_vertical_background (request_width, pixheight, highlight ? _bgh : _bgc, highlight);
|
||||
resized = true;
|
||||
queue_draw ();
|
||||
}
|
||||
|
||||
|
@ -91,7 +91,6 @@ private:
|
||||
float current_level;
|
||||
float current_peak;
|
||||
float current_user_level;
|
||||
bool resized;
|
||||
bool highlight;
|
||||
|
||||
bool vertical_expose (GdkEventExpose*);
|
||||
|
Loading…
Reference in New Issue
Block a user