Merge branch 'blender-v3.0-release'

This commit is contained in:
Richard Antalik 2021-11-18 02:23:17 +01:00
commit 032ab0270d
2 changed files with 23 additions and 23 deletions

View File

@ -1389,7 +1389,8 @@ static void draw_seq_strip(const bContext *C,
if ((sseq->flag & SEQ_SHOW_OVERLAY) &&
(sseq->timeline_overlay.flag & SEQ_TIMELINE_SHOW_THUMBNAILS) &&
(ELEM(seq->type, SEQ_TYPE_MOVIE, SEQ_TYPE_IMAGE))) {
draw_seq_strip_thumbnail(v2d, C, scene, seq, y1, y2, pixelx, pixely);
draw_seq_strip_thumbnail(
v2d, C, scene, seq, y1, y_threshold ? text_margin_y : y2, pixelx, pixely);
}
if ((sseq->flag & SEQ_SHOW_OVERLAY) &&

View File

@ -55,6 +55,7 @@ typedef struct ThumbnailDrawJob {
rctf *view_area;
float pixelx;
float pixely;
float thumb_height;
} ThumbnailDrawJob;
typedef struct ThumbDataItem {
@ -108,7 +109,7 @@ static void seq_get_thumb_image_dimensions(Sequence *seq,
float pixelx,
float pixely,
float *r_thumb_width,
float *r_thumb_height,
float thumb_height,
float *r_image_width,
float *r_image_height)
{
@ -127,20 +128,15 @@ static void seq_get_thumb_image_dimensions(Sequence *seq,
}
/* Calculate thumb dimensions. */
float thumb_height = (SEQ_STRIP_OFSTOP - SEQ_STRIP_OFSBOTTOM) - (20 * U.dpi_fac * pixely);
aspect_ratio = ((float)image_width) / image_height;
float thumb_h_px = thumb_height / pixely;
float thumb_width = aspect_ratio * thumb_h_px * pixelx;
if (r_thumb_height == NULL) {
*r_thumb_width = thumb_width;
return;
}
*r_thumb_height = thumb_height;
*r_image_width = image_width;
*r_image_height = image_height;
*r_thumb_width = thumb_width;
if (r_image_width && r_image_height) {
*r_image_width = image_width;
*r_image_height = image_height;
}
}
static float seq_thumbnail_get_start_frame(Sequence *seq, float frame_step, rctf *view_area)
@ -174,7 +170,7 @@ static void thumbnail_start_job(void *data,
if (check_seq_need_thumbnails(seq_orig, tj->view_area)) {
seq_get_thumb_image_dimensions(
val->seq_dupli, tj->pixelx, tj->pixely, &frame_step, NULL, NULL, NULL);
val->seq_dupli, tj->pixelx, tj->pixely, &frame_step, tj->thumb_height, NULL, NULL);
start_frame = seq_thumbnail_get_start_frame(seq_orig, frame_step, tj->view_area);
SEQ_render_thumbnails(
&tj->context, val->seq_dupli, seq_orig, start_frame, frame_step, tj->view_area, stop);
@ -191,7 +187,7 @@ static void thumbnail_start_job(void *data,
if (check_seq_need_thumbnails(seq_orig, tj->view_area)) {
seq_get_thumb_image_dimensions(
val->seq_dupli, tj->pixelx, tj->pixely, &frame_step, NULL, NULL, NULL);
val->seq_dupli, tj->pixelx, tj->pixely, &frame_step, tj->thumb_height, NULL, NULL);
start_frame = seq_thumbnail_get_start_frame(seq_orig, frame_step, tj->view_area);
SEQ_render_thumbnails_base_set(&tj->context, val->seq_dupli, seq_orig, tj->view_area, stop);
SEQ_relations_sequence_free_anim(val->seq_dupli);
@ -243,7 +239,10 @@ static GHash *sequencer_thumbnail_ghash_init(const bContext *C, View2D *v2d, Edi
return thumb_data_hash;
}
static void sequencer_thumbnail_init_job(const bContext *C, View2D *v2d, Editing *ed)
static void sequencer_thumbnail_init_job(const bContext *C,
View2D *v2d,
Editing *ed,
float thumb_height)
{
wmJob *wm_job;
ThumbnailDrawJob *tj = NULL;
@ -273,6 +272,7 @@ static void sequencer_thumbnail_init_job(const bContext *C, View2D *v2d, Editing
tj->sequences_ghash = sequencer_thumbnail_ghash_init(C, v2d, ed);
tj->pixelx = BLI_rctf_size_x(&v2d->cur) / BLI_rcti_size_x(&v2d->mask);
tj->pixely = BLI_rctf_size_y(&v2d->cur) / BLI_rcti_size_y(&v2d->mask);
tj->thumb_height = thumb_height;
WM_jobs_customdata_set(wm_job, tj, thumbnail_freejob);
WM_jobs_timer(wm_job, 0.1, NC_SCENE | ND_SEQUENCER, NC_SCENE | ND_SEQUENCER);
WM_jobs_callbacks(wm_job, thumbnail_start_job, NULL, NULL, thumbnail_endjob);
@ -296,10 +296,8 @@ static bool sequencer_thumbnail_v2d_is_navigating(const bContext *C)
return (v2d->flag & V2D_IS_NAVIGATING) != 0;
}
static void sequencer_thumbnail_start_job_if_necessary(const bContext *C,
Editing *ed,
View2D *v2d,
bool thumbnail_is_missing)
static void sequencer_thumbnail_start_job_if_necessary(
const bContext *C, Editing *ed, View2D *v2d, bool thumbnail_is_missing, float thumb_height)
{
SpaceSeq *sseq = CTX_wm_space_seq(C);
@ -326,7 +324,7 @@ static void sequencer_thumbnail_start_job_if_necessary(const bContext *C,
WM_jobs_stop(CTX_wm_manager(C), NULL, thumbnail_start_job);
}
sequencer_thumbnail_init_job(C, v2d, ed);
sequencer_thumbnail_init_job(C, v2d, ed, thumb_height);
sseq->runtime.last_thumbnail_area = v2d->cur;
}
@ -450,7 +448,7 @@ void draw_seq_strip_thumbnail(View2D *v2d,
float pixely)
{
bool clipped = false;
float image_height, image_width, thumb_width, thumb_height;
float image_height, image_width, thumb_width;
rcti crop;
/* If width of the strip too small ignore drawing thumbnails. */
@ -464,10 +462,11 @@ void draw_seq_strip_thumbnail(View2D *v2d,
return;
}
const float thumb_height = y2 - y1;
seq_get_thumb_image_dimensions(
seq, pixelx, pixely, &thumb_width, &thumb_height, &image_width, &image_height);
seq, pixelx, pixely, &thumb_width, thumb_height, &image_width, &image_height);
float thumb_y_end = y1 + thumb_height - pixely;
float thumb_y_end = y1 + thumb_height;
float cut_off = 0;
float upper_thumb_bound = (seq->endstill) ? (seq->start + seq->len) : seq->enddisp;
@ -537,7 +536,7 @@ void draw_seq_strip_thumbnail(View2D *v2d,
ImBuf *ibuf = SEQ_get_thumbnail(&context, seq, timeline_frame, &crop, clipped);
if (!ibuf) {
sequencer_thumbnail_start_job_if_necessary(C, scene->ed, v2d, true);
sequencer_thumbnail_start_job_if_necessary(C, scene->ed, v2d, true, thumb_height);
ibuf = sequencer_thumbnail_closest_from_memory(
&context, seq, timeline_frame, last_displayed_thumbnails, &crop, clipped);