Browse Source

Mixer: Avoid unecessary redraws (hidden widgets, when mixer strips are added). Also, draw fonts of inactive widgets in dimmed color.

Conflicts:
	mixer/src/Mixer.C
tags/non-daw-v1.2.0
Jonathan Moore Liles 12 years ago
parent
commit
bc78302220
9 changed files with 52 additions and 45 deletions
  1. +5
    -1
      FL/Fl_Sometimes_Input.H
  2. +2
    -1
      mixer/src/Controller_Module.C
  3. +1
    -1
      mixer/src/DPM.H
  4. +2
    -1
      mixer/src/Meter.H
  5. +34
    -31
      mixer/src/Mixer.C
  6. +1
    -0
      mixer/src/Mixer.H
  7. +3
    -8
      mixer/src/Mixer_Strip.C
  8. +1
    -1
      mixer/src/Mixer_Strip.H
  9. +3
    -1
      mixer/src/Module.C

+ 5
- 1
FL/Fl_Sometimes_Input.H View File

@@ -52,7 +52,11 @@ public:
else else
{ {
fl_draw_box( up_box(), x(), y(), w(), h(), color() ); fl_draw_box( up_box(), x(), y(), w(), h(), color() );
fl_color( fl_contrast( textcolor(), color() ) );

Fl_Color c = fl_contrast( textcolor(), color() );

fl_color( active_r() ? c : fl_inactive( c ) );

fl_font( textfont(), textsize() ); fl_font( textfont(), textsize() );
fl_draw( value(), x(), y(), w(), h(), (Fl_Align)(FL_ALIGN_CENTER | FL_ALIGN_CLIP) ); fl_draw( value(), x(), y(), w(), h(), (Fl_Align)(FL_ALIGN_CENTER | FL_ALIGN_CLIP) );
} }


+ 2
- 1
mixer/src/Controller_Module.C View File

@@ -566,7 +566,8 @@ Controller_Module::handle_control_changed ( Port *p )
pan->point( 0 )->azimuth( control_output[0].control_value() ); pan->point( 0 )->azimuth( control_output[0].control_value() );
pan->point( 0 )->elevation( control_output[1].control_value() ); pan->point( 0 )->elevation( control_output[1].control_value() );


pan->redraw();
if ( visible_r() )
pan->redraw();
} }
else else
{ {


+ 1
- 1
mixer/src/DPM.H View File

@@ -84,7 +84,7 @@ public:
void pixels_per_segment ( int v ) { _pixels_per_segment = v; } void pixels_per_segment ( int v ) { _pixels_per_segment = v; }


float dim ( void ) const { return _dim; } float dim ( void ) const { return _dim; }
void dim ( float v ) { _dim = v; redraw(); }
void dim ( float v ) { _dim = v; if ( visible_r() ) redraw(); }


static static
void void


+ 2
- 1
mixer/src/Meter.H View File

@@ -83,7 +83,8 @@ public:


virtual void value ( float v ) virtual void value ( float v )
{ {
damage( FL_DAMAGE_USER1 );
if ( visible_r() )
damage( FL_DAMAGE_USER1 );


_value = v; _value = v;




+ 34
- 31
mixer/src/Mixer.C View File

@@ -422,7 +422,7 @@ Mixer::load_project_settings ( void )
{ {
reset_project_settings(); reset_project_settings();


if ( Project::open() )
// if ( Project::open() )
((Fl_Menu_Settings*)menubar)->load( menubar->find_item( "&Project/Se&ttings" ), "options" ); ((Fl_Menu_Settings*)menubar)->load( menubar->find_item( "&Project/Se&ttings" ), "options" );


update_menu(); update_menu();
@@ -491,9 +491,10 @@ Mixer::Mixer ( int X, int Y, int W, int H, const char *L ) :
Fl_Flowpack *o = mixer_strips = new Fl_Flowpack( X, Y + 24, W, H - 18 - 24 ); Fl_Flowpack *o = mixer_strips = new Fl_Flowpack( X, Y + 24, W, H - 18 - 24 );
// label( "Non-Mixer" ); // label( "Non-Mixer" );
align( (Fl_Align)(FL_ALIGN_CENTER | FL_ALIGN_INSIDE) ); align( (Fl_Align)(FL_ALIGN_CENTER | FL_ALIGN_INSIDE) );
o->flow( false );
o->box( FL_FLAT_BOX ); o->box( FL_FLAT_BOX );
o->type( Fl_Pack::HORIZONTAL ); o->type( Fl_Pack::HORIZONTAL );
o->hspacing( 2 );
o->hspacing( 2 );
o->vspacing( 2 ); o->vspacing( 2 );
o->end(); o->end();
Fl_Group::current()->resizable( o ); Fl_Group::current()->resizable( o );
@@ -563,13 +564,12 @@ void Mixer::add ( Mixer_Strip *ms )


mixer_strips->add( ms ); mixer_strips->add( ms );


ms->take_focus();

rows( _rows );

// scroll->redraw();
ms->size( ms->w(), _strip_height );
ms->redraw();
ms->take_focus();
} }



void void
Mixer::quit ( void ) Mixer::quit ( void )
{ {
@@ -582,10 +582,10 @@ Mixer::quit ( void )
void void
Mixer::insert ( Mixer_Strip *ms, Mixer_Strip *before ) Mixer::insert ( Mixer_Strip *ms, Mixer_Strip *before )
{ {
mixer_strips->remove( ms );
// mixer_strips->remove( ms );
mixer_strips->insert( *ms, before ); mixer_strips->insert( *ms, before );


scroll->redraw();
// scroll->redraw();
} }
void void
Mixer::insert ( Mixer_Strip *ms, int i ) Mixer::insert ( Mixer_Strip *ms, int i )
@@ -646,31 +646,26 @@ Mixer::rows ( int ideal_rows )
{ {
int sh; int sh;


int actual_rows = 1;
int actual_rows;


if ( ideal_rows > 1 )
/* calculate how many rows will actually fit */
int can_fit = scroll->h() / ( Mixer_Strip::min_h() );
actual_rows = can_fit > 0 ? can_fit : 1;
if ( actual_rows > ideal_rows )
actual_rows = ideal_rows;
/* calculate strip height */
if ( actual_rows > 1 )
{ {
sh = (scroll->h() / ideal_rows ) - (mixer_strips->vspacing() * (ideal_rows - 1));
mixer_strips->flow( true );

if ( sh < Mixer_Strip::min_h() )
{
int can_fit = ( scroll->h() - 18 ) / Mixer_Strip::min_h();

actual_rows = can_fit > 0 ? can_fit : 1;
}
else
actual_rows = ideal_rows;
sh = ( scroll->h() / (float)actual_rows ) - ( mixer_strips->vspacing() * ( actual_rows - 2 ));
mixer_strips->flow(true);
} }
else else
actual_rows = 1;

if ( 1 == actual_rows )
{ {
sh = (scroll->h() - 18);
mixer_strips->flow( false );

actual_rows = 1;
sh = (scroll->h() - 18);
mixer_strips->flow(false);
} }


int tw = 0; int tw = 0;
@@ -690,8 +685,12 @@ Mixer::rows ( int ideal_rows )
mixer_strips->size( tw, mixer_strips->h() ); mixer_strips->size( tw, mixer_strips->h() );


_rows = ideal_rows; _rows = ideal_rows;

scroll->redraw();
if ( _strip_height != sh );
{
scroll->redraw();
_strip_height = sh;
}
} }


/** retrun a pointer to the track named /name/, or NULL if no track is named /name/ */ /** retrun a pointer to the track named /name/, or NULL if no track is named /name/ */
@@ -851,6 +850,10 @@ Mixer::command_load ( const char *path, const char *display_name )
{ {
mixer->deactivate(); mixer->deactivate();


chdir( path );

load_project_settings();

if ( Project::open( path ) ) if ( Project::open( path ) )
{ {
// fl_alert( "Error opening project specified on commandline: %s", Project::errstr( err ) ); // fl_alert( "Error opening project specified on commandline: %s", Project::errstr( err ) );


+ 1
- 0
mixer/src/Mixer.H View File

@@ -47,6 +47,7 @@ private:
float _update_interval; float _update_interval;


int _rows; int _rows;
int _strip_height;


Fl_Color system_colors[3]; Fl_Color system_colors[3];




+ 3
- 8
mixer/src/Mixer_Strip.C View File

@@ -518,7 +518,7 @@ Mixer_Strip::init ( )


size( 96, h() ); size( 96, h() );


redraw();
// redraw();


// _chain->configure_ports(); // _chain->configure_ports();
} }
@@ -526,15 +526,10 @@ Mixer_Strip::init ( )
void void
Mixer_Strip::draw ( void ) Mixer_Strip::draw ( void )
{ {
if ( !fl_not_clipped( x(), y(), w(), h() ) )
return;

/* don't bother drawing anything else, all we're doing is drawing the focus. */ /* don't bother drawing anything else, all we're doing is drawing the focus. */
if ( damage() & FL_DAMAGE_ALL ||
damage() & FL_DAMAGE_CHILD )
if ( damage() & ~FL_DAMAGE_USER1 )
Fl_Group::draw(); Fl_Group::draw();


fl_color( Fl::focus() == this ? Fl_Group::selection_color() : FL_BLACK ); fl_color( Fl::focus() == this ? Fl_Group::selection_color() : FL_BLACK );
fl_rect( x(), y(), w(), h() ); fl_rect( x(), y(), w(), h() );
} }


+ 1
- 1
mixer/src/Mixer_Strip.H View File

@@ -53,7 +53,7 @@ class Mixer_Strip : public Fl_Group, public Loggable {


public: public:


static int min_h ( void ) { return 336; }
static int min_h ( void ) { return 333; }


Mixer_Strip( const char *strip_name ); Mixer_Strip( const char *strip_name );
Mixer_Strip(); /* for log create */ Mixer_Strip(); /* for log create */


+ 3
- 1
mixer/src/Module.C View File

@@ -577,7 +577,9 @@ Module::draw_label ( int tx, int ty, int tw, int th )


const char *lp = label(); const char *lp = label();


fl_color( fl_contrast( FL_FOREGROUND_COLOR, bypass() ? FL_BLACK : color() ) );
Fl_Color c = fl_contrast( FL_FOREGROUND_COLOR, bypass() ? FL_BLACK : color() );

fl_color( active_r() ? c : fl_inactive(c) );


fl_font( FL_HELVETICA, 12 ); fl_font( FL_HELVETICA, 12 );




Loading…
Cancel
Save