projects
/
goodguy
/
cinelerra.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix undo segv with plugin guis open, add cache demand limits, exit when malloc fails...
[goodguy/cinelerra.git]
/
cinelerra-5.1
/
cinelerra
/
indexfile.C
diff --git
a/cinelerra-5.1/cinelerra/indexfile.C
b/cinelerra-5.1/cinelerra/indexfile.C
index 87b8853a28344ad1059a25b59be72910f08e2ac9..0337d0c2062d9e932051f86721b2939c7f61d1a9 100644
(file)
--- a/
cinelerra-5.1/cinelerra/indexfile.C
+++ b/
cinelerra-5.1/cinelerra/indexfile.C
@@
-228,7
+228,7
@@
void IndexFile::delete_index(Preferences *preferences,
char index_filename[BCTEXTLEN];
char source_filename[BCTEXTLEN];
const char *path = indexable->path;
char index_filename[BCTEXTLEN];
char source_filename[BCTEXTLEN];
const char *path = indexable->path;
-
+ if( !*path ) return;
get_index_filename(source_filename,
preferences->index_directory,
index_filename, path, suffix);
get_index_filename(source_filename,
preferences->index_directory,
index_filename, path, suffix);
@@
-374,9
+374,10
@@
void IndexFile::close_source()
delete render_engine;
render_engine = 0;
delete render_engine;
render_engine = 0;
-
- delete cache;
- cache = 0;
+ if( cache ) {
+ cache->remove_user();
+ cache = 0;
+ }
}
int64_t IndexFile::get_required_scale()
}
int64_t IndexFile::get_required_scale()
@@
-707,10
+708,9
@@
SET_TRACE
// Start and length of fragment to read from file in bytes.
float *buffer = 0;
int buffer_shared = 0;
// Start and length of fragment to read from file in bytes.
float *buffer = 0;
int buffer_shared = 0;
- int rect_audio = mwindow->preferences->rectify_audio;;
- int center_pixel = !rect_audio ?
- mwindow->edl->local_session->zoom_track / 2 :
- mwindow->edl->local_session->zoom_track;
+ int rect_audio = mwindow->preferences->rectify_audio;
+ int data_h = edit->track->data_h;
+ int center_pixel = !rect_audio ? data_h/2 : data_h;
if( edit->track->show_titles() )
center_pixel += mwindow->theme->get_image("title_bg_data")->get_h();
if( edit->track->show_titles() )
center_pixel += mwindow->theme->get_image("title_bg_data")->get_h();
@@
-747,9
+747,9
@@
SET_TRACE
int prev_y1 = center_pixel;
int prev_y2 = center_pixel;
int first_frame = 1;
int prev_y1 = center_pixel;
int prev_y2 = center_pixel;
int first_frame = 1;
- int zoom_y =
!rect_audio ?
- mwindow->edl->local_session->zoom_y / 2 :
-
mwindow->edl->local_session->zoom_y
;
+ int zoom_y =
mwindow->edl->local_session->zoom_y * data_h /
+ mwindow->edl->local_session->zoom_atrack;
+
if( !rect_audio ) zoom_y /= 2
;
int max_y = center_pixel + zoom_y - 1;
edit_position = (x + pixmap->pixmap_x - virtual_edit_x) * project_zoom;
int64_t speed_position = edit->startsource;
int max_y = center_pixel + zoom_y - 1;
edit_position = (x + pixmap->pixmap_x - virtual_edit_x) * project_zoom;
int64_t speed_position = edit->startsource;
@@
-790,7
+790,7
@@
SET_TRACE
// A different algorithm has to be used if it's 1 sample per pixel and the
// index is used. Now the min and max values are equal so we join the max samples.
if(mwindow->edl->local_session->zoom_sample == 1) {
// A different algorithm has to be used if it's 1 sample per pixel and the
// index is used. Now the min and max values are equal so we join the max samples.
if(mwindow->edl->local_session->zoom_sample == 1) {
- canvas->draw_line(x2 - 1, !rect_audio ? prev_y1 : center_pixel, x2, y1, pixmap);
+ canvas->draw_
b
line(x2 - 1, !rect_audio ? prev_y1 : center_pixel, x2, y1, pixmap);
}
else {
// Extend line height if it doesn't connect to previous line
}
else {
// Extend line height if it doesn't connect to previous line
@@
-801,7
+801,7
@@
SET_TRACE
else {
first_frame = 0;
}
else {
first_frame = 0;
}
- canvas->draw_line(x2, y1, x2, !rect_audio ? y2 : center_pixel, pixmap);
+ canvas->draw_
b
line(x2, y1, x2, !rect_audio ? y2 : center_pixel, pixmap);
}
prev_y1 = next_y1;
prev_y2 = next_y2;
}
prev_y1 = next_y1;
prev_y2 = next_y2;