Movie editor: Fix bug if extending finished movie

This commit is contained in:
Ilari Liusvaara 2013-04-16 03:39:51 +03:00
parent 81145d38ea
commit f1399d2f2e
2 changed files with 15 additions and 2 deletions

View file

@ -263,11 +263,11 @@ public:
/**
* Recount frames.
*/
void recount_frames() { frames_in_movie = movie_data.count_frames(); }
void recount_frames() { adjust_frame_count(movie_data.count_frames() - frames_in_movie); }
/**
* Adjust frame count.
*/
void adjust_frame_count(int64_t adjust) { frames_in_movie += adjust; }
void adjust_frame_count(int64_t adjust);
private:
//TRUE if readonly mode is active.
bool readonly;

View file

@ -561,4 +561,17 @@ movie& movie::operator=(const movie& m)
cached_subframe = m.cached_subframe;
}
void movie::adjust_frame_count(int64_t adjust)
{
uint64_t old_frames = frames_in_movie;
frames_in_movie += adjust;
//If current_frame_first_subframe is in part extended, recompute it.
if(current_frame > old_frames + 1) {
current_frame_first_subframe = 0;
if(current_frame > 0)
for(uint64_t i = 0; i < current_frame - 1; i++)
current_frame_first_subframe += count_changes(current_frame_first_subframe);
}
}
unsigned extended_mode = 0;