projects
/
ardour.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
OSC: Catch new strips, gone strips and redo banks and observers. Add more select...
[ardour.git]
/
libs
/
gtkmm2ext
/
pixfader.cc
diff --git
a/libs/gtkmm2ext/pixfader.cc
b/libs/gtkmm2ext/pixfader.cc
index 1e814fd147517b6aa6b0b2ae77f7a06e28cc0004..64ee449646e5f310d824258bccd61a29d6150933 100644
(file)
--- a/
libs/gtkmm2ext/pixfader.cc
+++ b/
libs/gtkmm2ext/pixfader.cc
@@
-85,6
+85,15
@@
PixFader::~PixFader ()
if (_layout) _layout.clear (); // drop reference to existing layout
}
if (_layout) _layout.clear (); // drop reference to existing layout
}
+void
+PixFader::flush_pattern_cache () {
+ for (list<FaderImage*>::iterator f = _patterns.begin(); f != _patterns.end(); ++f) {
+ cairo_pattern_destroy ((*f)->pattern);
+ }
+ _patterns.clear();
+}
+
+
cairo_pattern_t*
PixFader::find_pattern (double afr, double afg, double afb,
double abr, double abg, double abb,
cairo_pattern_t*
PixFader::find_pattern (double afr, double afg, double afb,
double abr, double abg, double abb,
@@
-347,6
+356,9
@@
PixFader::on_size_request (GtkRequisition* req)
void
PixFader::on_size_allocate (Gtk::Allocation& alloc)
{
void
PixFader::on_size_allocate (Gtk::Allocation& alloc)
{
+ int old_girth = _girth;
+ int old_span = _span;
+
CairoWidget::on_size_allocate(alloc);
if (_orien == VERT) {
CairoWidget::on_size_allocate(alloc);
if (_orien == VERT) {
@@
-357,7
+369,7
@@
PixFader::on_size_allocate (Gtk::Allocation& alloc)
_span = alloc.get_width ();
}
_span = alloc.get_width ();
}
- if (is_realized()) {
+ if (is_realized()
&& ((old_girth != _girth) || (old_span != _span))
) {
/* recreate patterns in case we've changed size */
create_patterns ();
}
/* recreate patterns in case we've changed size */
create_patterns ();
}
@@
-700,7
+712,7
@@
PixFader::on_style_changed (const Glib::RefPtr<Gtk::Style>&)
_text = "";
set_text (txt, _centered_text, false);
}
_text = "";
set_text (txt, _centered_text, false);
}
- /* patterns are cached and re-created as needed
+ /* patterns are cached and re-created as needed
* during 'expose' in the GUI thread */
_pattern = 0;
queue_draw ();
* during 'expose' in the GUI thread */
_pattern = 0;
queue_draw ();