Movie editor: Fix bug if extending finished movie
This commit is contained in:
parent
81145d38ea
commit
f1399d2f2e
2 changed files with 15 additions and 2 deletions
|
@ -263,11 +263,11 @@ public:
|
||||||
/**
|
/**
|
||||||
* Recount frames.
|
* 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.
|
* Adjust frame count.
|
||||||
*/
|
*/
|
||||||
void adjust_frame_count(int64_t adjust) { frames_in_movie += adjust; }
|
void adjust_frame_count(int64_t adjust);
|
||||||
private:
|
private:
|
||||||
//TRUE if readonly mode is active.
|
//TRUE if readonly mode is active.
|
||||||
bool readonly;
|
bool readonly;
|
||||||
|
|
|
@ -561,4 +561,17 @@ movie& movie::operator=(const movie& m)
|
||||||
cached_subframe = m.cached_subframe;
|
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;
|
unsigned extended_mode = 0;
|
||||||
|
|
Loading…
Add table
Reference in a new issue