Split journal ID range between new and loaded elements

This commit is contained in:
Javier Serrano Polo
2016-06-26 02:43:52 +02:00
parent 01e9ebc9cf
commit f97b431c8d
5 changed files with 19 additions and 7 deletions

View File

@@ -29,6 +29,8 @@
#include "JournallingObject.h"
#include "Song.h"
static const int EO_ID_MSB = 1 << 23;
const int ProjectJournal::MAX_UNDO_STATES = 100; // TODO: make this configurable in settings
ProjectJournal::ProjectJournal() :
@@ -131,11 +133,9 @@ void ProjectJournal::addJournalCheckPoint( JournallingObject *jo )
jo_id_t ProjectJournal::allocID( JournallingObject * _obj )
{
const jo_id_t EO_ID_MAX = (1 << 23)-1;
jo_id_t id;
while( m_joIDs.contains( id =
static_cast<jo_id_t>( (jo_id_t)rand()*(jo_id_t)rand() %
EO_ID_MAX ) ) )
for( jo_id_t tid = rand(); m_joIDs.contains( id = tid % EO_ID_MSB
| EO_ID_MSB ); tid++ )
{
}
@@ -159,6 +159,14 @@ void ProjectJournal::reallocID( const jo_id_t _id, JournallingObject * _obj )
jo_id_t ProjectJournal::idToSave( jo_id_t id )
{
return id & ~EO_ID_MSB;
}
void ProjectJournal::clearJournal()
{
m_undoCheckPoints.clear();