Browse Source

Add locking for sequence widget drags.

tags/non-daw-v1.1.0
Jonathan Moore Liles 17 years ago
parent
commit
6c9e2c8c07
2 changed files with 28 additions and 15 deletions
  1. +26
    -0
      Timeline/Sequence_Widget.C
  2. +2
    -15
      Timeline/Sequence_Widget.H

+ 26
- 0
Timeline/Sequence_Widget.C View File

@@ -78,6 +78,32 @@ Sequence_Widget::set ( Log_Entry &e )

}

void
Sequence_Widget::begin_drag ( const Drag &d )
{
_drag = new Drag( d );
_r = new Range( _range );
}

void
Sequence_Widget::end_drag ( void )
{
timeline->wrlock();

/* swap in the new value */
_range = *_r;

timeline->unlock();

/* TODO: perhaps trigger rebuffer here? */

delete _r;
_r = &_range;

delete _drag;
_drag = NULL;
}

/** set position of widget on the timeline. */
void
Sequence_Widget::start ( nframes_t where )


+ 2
- 15
Timeline/Sequence_Widget.H View File

@@ -263,21 +263,8 @@ public:

// static void pushed ( Sequence_Widget *w ) { Sequence_Widget::_pushed = w; }

void begin_drag ( const Drag &d )
{
_drag = new Drag( d );
_r = new Range( _range );
}

void end_drag ( void )
{
_range = *_r;
delete _r;
_r = &_range;

delete _drag;
_drag = NULL;
}
void begin_drag ( const Drag &d );
void end_drag ( void );

int dispatch ( int m );



Loading…
Cancel
Save