Browse Source

Improve journaling.

tags/non-daw-v1.1.0
Jonathan Moore Liles 17 years ago
parent
commit
cc39d05c7a
9 changed files with 113 additions and 36 deletions
  1. +21
    -6
      Loggable.C
  2. +39
    -0
      Loggable.H
  3. +16
    -3
      Region.C
  4. +11
    -3
      Tempo_Point.H
  5. +12
    -3
      Time_Point.H
  6. +1
    -1
      Timeline.H
  7. +1
    -3
      Track.C
  8. +0
    -8
      Track_Point.H
  9. +12
    -9
      Track_Widget.H

+ 21
- 6
Loggable.C View File

@@ -129,17 +129,22 @@ log_diff ( char **sa1, char **sa2 )
void void
Loggable::log_start ( void ) Loggable::log_start ( void )
{ {
// if ( _old_state )
// log_end();
if ( _old_state )
return;
if ( ! _old_state )
_old_state = log_dump();
++_nest;


_old_state = log_dump();
} }


void void
Loggable::log_end ( void ) Loggable::log_end ( void )
{ {

if ( --_nest > 0 )
return;

// assert( _old_state );

char **_new_state = log_dump(); char **_new_state = log_dump();


// if ( _old_state ) // if ( _old_state )
@@ -152,11 +157,21 @@ Loggable::log_end ( void )
log_print( _old_state, _new_state ); log_print( _old_state, _new_state );
} }


free_sa( _old_state );
if ( _new_state ) if ( _new_state )
free_sa( _new_state ); free_sa( _new_state );


if ( _old_state )
free_sa( _old_state );

_old_state = NULL; _old_state = NULL;

/* if ( _old_state ) */
/* { */
/* free_sa( _old_state ); */
/* _old_state = NULL; */
/* } */

// _old_state = NULL;
} }


void void


+ 39
- 0
Loggable.H View File

@@ -29,6 +29,7 @@
#include <vector> #include <vector>
using std::vector; using std::vector;


class Logger;
class Loggable class Loggable
{ {


@@ -44,6 +45,7 @@ private:
char **_old_state; char **_old_state;
char **_new_state; char **_new_state;


int _nest;


static static
void indent ( void ) void indent ( void )
@@ -89,6 +91,7 @@ public:
{ {
_id = ++_log_id; _id = ++_log_id;
_old_state = NULL; _old_state = NULL;
_nest = 0;


_loggables.push_back( this ); _loggables.push_back( this );
} }
@@ -115,8 +118,44 @@ public:


int id ( void ) { return _id; } int id ( void ) { return _id; }


friend class Logger;
}; };



class Logger
{

Loggable *_this;
Logger ( ) {}

public:

Logger ( Loggable *l ) : _this( l )
{
_this->log_start();

}

~Logger ( )
{
_this->log_end();
}

void hold ( void )
{
printf( "hold\n" );
_this->_nest++;
}

void release ( void )
{
printf( "release\n" );
_this->_nest--;
assert( _this->_nest );
}
};


/* #ifndef _LOGGABLE_C */ /* #ifndef _LOGGABLE_C */
/* #define log( act, fmt, args... ) log( __CLASS__, act, fmt, ## args ) */ /* #define log( act, fmt, args... ) log( __CLASS__, act, fmt, ## args ) */
/* #endif */ /* #endif */


+ 16
- 3
Region.C View File

@@ -144,6 +144,7 @@ Region::trim ( enum trim_e t, int X )
int int
Region::handle ( int m ) Region::handle ( int m )
{ {
static bool dragging = false;


static int ox, oy; static int ox, oy;
static enum trim_e trimming; static enum trim_e trimming;
@@ -156,7 +157,8 @@ Region::handle ( int m )


int ret; int ret;


log_start();
Logger _log( this );
//log_start();


switch ( m ) switch ( m )
{ {
@@ -170,9 +172,11 @@ Region::handle ( int m )
{ {
case 1: case 1:
trim( trimming = LEFT, X ); trim( trimming = LEFT, X );
// _log.hold();
break; break;
case 3: case 3:
trim( trimming = RIGHT, X ); trim( trimming = RIGHT, X );
// _log.hold();
break; break;
case 2: case 2:
{ {
@@ -240,10 +244,19 @@ Region::handle ( int m )
{ {
trimming = NO; trimming = NO;
} }
printf( "releasing\n");
if ( dragging )
_log.release();

dragging = false;
goto changed; goto changed;
case FL_DRAG: case FL_DRAG:


if ( ! dragging )
{
_log.hold();
dragging = true;
}

if ( Fl::event_state() & FL_SHIFT && if ( Fl::event_state() & FL_SHIFT &&
Fl::event_state() & FL_CTRL ) Fl::event_state() & FL_CTRL )
{ {
@@ -307,7 +320,7 @@ Region::handle ( int m )


changed: changed:


log_end();
// log_end();
return 1; return 1;


} }


+ 11
- 3
Tempo_Point.H View File

@@ -40,9 +40,17 @@ protected:


const char *class_name ( void ) { return "Tempo_Point"; } const char *class_name ( void ) { return "Tempo_Point"; }


/* void log_create ( void ) { log( "create", "%lu %f", _offset, _tempo ); } */
/* void log_destroy ( void ) { log( "destroy", NULL ); } */
/* void log_move ( void ) { log( "move", "%lu", _offset ); } */
char ** log_dump ( void )
{
char **sa = (char**)malloc( sizeof( char* ) * 3 );

sa[2] = NULL;

asprintf( &sa[0], ":x %lu", _offset );
asprintf( &sa[1], ":tempo %f", _tempo );

return sa;
}


public: public:




+ 12
- 3
Time_Point.H View File

@@ -54,9 +54,18 @@ protected:


const char *class_name ( void ) { return "Time_Point"; } const char *class_name ( void ) { return "Time_Point"; }


/* void log_create ( void ) { log( "create", "%lu %d %d", _offset, _time.beats_per_bar, _time.note_type ); } */
/* void log_destroy ( void ) { log( "destroy", NULL ); } */
/* void log_move ( void ) { log( "move", "%lu", _offset ); } */
char ** log_dump ( void )
{
char **sa = (char**)malloc( sizeof( char* ) * 4 );

sa[3] = NULL;

asprintf( &sa[0], ":x %lu", _offset );
asprintf( &sa[1], ":beats_per_bar %d", _time.beats_per_bar );
asprintf( &sa[2], ":beat_type %d", _time.note_type );

return sa;
}


public: public:




+ 1
- 1
Timeline.H View File

@@ -179,7 +179,7 @@ struct Timeline : public Fl_Group


if ( damage() & FL_DAMAGE_SCROLL ) if ( damage() & FL_DAMAGE_SCROLL )
{ {
printf( "doing scroll\n" );
// printf( "doing scroll\n" );
int dx = ts_to_x( _old_position ) - ts_to_x( xoffset ); int dx = ts_to_x( _old_position ) - ts_to_x( xoffset );


fl_scroll( X, tracks->y(), W, tracks->h(), dx, 0, draw_clip, this ); fl_scroll( X, tracks->y(), W, tracks->h(), dx, 0, draw_clip, this );


+ 1
- 3
Track.C View File

@@ -88,7 +88,7 @@ Track::event_widget ( void )
void void
Track::add ( Track_Widget *r ) Track::add ( Track_Widget *r )
{ {
log_start();
Logger _log( this );


if ( r->track() ) if ( r->track() )
{ {
@@ -99,8 +99,6 @@ Track::add ( Track_Widget *r )
_widgets.push_back( r ); _widgets.push_back( r );


r->track( this ); r->track( this );

log_end();
} }


/* snap /r/ to nearest edge */ /* snap /r/ to nearest edge */


+ 0
- 8
Track_Point.H View File

@@ -32,14 +32,6 @@ protected:
{ {
} }


char ** log_dump ( void )
{
return NULL;
}
void log_change ( void )
{
}

public: public:


Fl_Align align ( void ) const { return FL_ALIGN_RIGHT; } Fl_Align align ( void ) const { return FL_ALIGN_RIGHT; }


+ 12
- 9
Track_Widget.H View File

@@ -199,11 +199,13 @@ public:
handle ( int m ) handle ( int m )
{ {
static int ox, oy; static int ox, oy;
static bool moved = false;
static bool dragging = false;


int X = Fl::event_x(); int X = Fl::event_x();
int Y = Fl::event_y(); int Y = Fl::event_y();


Logger _log( this );

switch ( m ) switch ( m )
{ {
case FL_ENTER: case FL_ENTER:
@@ -230,16 +232,19 @@ public:
return 1; return 1;
} }
case FL_RELEASE: case FL_RELEASE:
if ( moved )
{
// log_move();
moved = false;
}
// dump();
if ( dragging )
_log.release();
dragging = false;
fl_cursor( FL_CURSOR_DEFAULT ); fl_cursor( FL_CURSOR_DEFAULT );
return 1; return 1;
case FL_DRAG: case FL_DRAG:
{ {
if ( ! dragging )
{
dragging = true;
_log.hold();
}

redraw(); redraw();


if ( ox + X >= _track->x() ) if ( ox + X >= _track->x() )
@@ -249,8 +254,6 @@ public:
_offset = timeline->x_to_ts( nx ) + timeline->xoffset; _offset = timeline->x_to_ts( nx ) + timeline->xoffset;


_track->snap( this ); _track->snap( this );

moved = true;
} }


// _track->redraw(); // _track->redraw();


Loading…
Cancel
Save