diff options
author | Richard Antalik <richardantalik@gmail.com> | 2022-05-03 10:10:57 +0300 |
---|---|---|
committer | Richard Antalik <richardantalik@gmail.com> | 2022-05-03 10:10:57 +0300 |
commit | 56039e30c71da652020208508944cdc5d6abaa9b (patch) | |
tree | c264e4f79bf05039bbc3fc12719af9b1e5df62bd /source | |
parent | e62b5e867d164d6ee822e369885d979d94ac4106 (diff) | |
parent | 38a4d96a9061808677d3bc770f1482766fe3f3ed (diff) |
Merge branch 'blender-v3.2-release'
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/sequencer/SEQ_channels.h | 4 | ||||
-rw-r--r-- | source/blender/sequencer/intern/channels.c | 6 | ||||
-rw-r--r-- | source/blender/sequencer/intern/effects.c | 4 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_draw.c | 6 |
4 files changed, 13 insertions, 7 deletions
diff --git a/source/blender/sequencer/SEQ_channels.h b/source/blender/sequencer/SEQ_channels.h index 9436d5dfa32..dcfdb933940 100644 --- a/source/blender/sequencer/SEQ_channels.h +++ b/source/blender/sequencer/SEQ_channels.h @@ -29,7 +29,9 @@ char *SEQ_channel_name_get(struct ListBase *channels, const int channel_index); bool SEQ_channel_is_locked(const struct SeqTimelineChannel *channel); bool SEQ_channel_is_muted(const struct SeqTimelineChannel *channel); int SEQ_channel_index_get(const struct SeqTimelineChannel *channel); -ListBase *SEQ_get_channels_by_seq(struct ListBase *seqbase, const struct Sequence *seq); +ListBase *SEQ_get_channels_by_seq(struct ListBase *seqbase, + struct ListBase *channels, + const struct Sequence *seq); #ifdef __cplusplus } diff --git a/source/blender/sequencer/intern/channels.c b/source/blender/sequencer/intern/channels.c index 21e3461c7d0..5decee5a3bb 100644 --- a/source/blender/sequencer/intern/channels.c +++ b/source/blender/sequencer/intern/channels.c @@ -82,15 +82,15 @@ bool SEQ_channel_is_muted(const SeqTimelineChannel *channel) return (channel->flag & SEQ_CHANNEL_MUTE) != 0; } -ListBase *SEQ_get_channels_by_seq(ListBase *seqbase, const Sequence *seq) +ListBase *SEQ_get_channels_by_seq(ListBase *seqbase, ListBase *channels, const Sequence *seq) { ListBase *lb = NULL; LISTBASE_FOREACH (Sequence *, iseq, seqbase) { if (seq == iseq) { - return seqbase; + return channels; } - if ((lb = SEQ_get_channels_by_seq(&iseq->seqbase, seq))) { + if ((lb = SEQ_get_channels_by_seq(&iseq->seqbase, &iseq->channels, seq))) { return lb; } } diff --git a/source/blender/sequencer/intern/effects.c b/source/blender/sequencer/intern/effects.c index f4fc79a6572..d4dd21add4e 100644 --- a/source/blender/sequencer/intern/effects.c +++ b/source/blender/sequencer/intern/effects.c @@ -2432,7 +2432,7 @@ static ImBuf *do_multicam(const SeqRenderData *context, return NULL; } ListBase *seqbasep = SEQ_get_seqbase_by_seq(&ed->seqbase, seq); - ListBase *channels = SEQ_get_channels_by_seq(&ed->seqbase, seq); + ListBase *channels = SEQ_get_channels_by_seq(&ed->seqbase, &ed->channels, seq); if (!seqbasep) { return NULL; } @@ -2468,7 +2468,7 @@ static ImBuf *do_adjustment_impl(const SeqRenderData *context, Sequence *seq, fl ed = context->scene->ed; ListBase *seqbasep = SEQ_get_seqbase_by_seq(&ed->seqbase, seq); - ListBase *channels = SEQ_get_channels_by_seq(&ed->seqbase, seq); + ListBase *channels = SEQ_get_channels_by_seq(&ed->seqbase, &ed->channels, seq); /* Clamp timeline_frame to strip range so it behaves as if it had "still frame" offset (last * frame is static after end of strip). This is how most strips behave. This way transition diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c index 242c96903d3..02da798495b 100644 --- a/source/blender/windowmanager/intern/wm_draw.c +++ b/source/blender/windowmanager/intern/wm_draw.c @@ -702,6 +702,7 @@ static void wm_draw_window_offscreen(bContext *C, wmWindow *win, bool stereo) if (stereo && wm_draw_region_stereo_set(bmain, area, region, STEREO_LEFT_ID)) { wm_draw_region_buffer_create(region, true, use_viewport); + bool views_valid = true; for (int view = 0; view < 2; view++) { eStereoViews sview; @@ -717,8 +718,11 @@ static void wm_draw_window_offscreen(bContext *C, wmWindow *win, bool stereo) ED_region_do_draw(C, region); wm_draw_region_unbind(region); } + else { + views_valid = false; + } } - if (use_viewport) { + if (use_viewport && views_valid) { GPUViewport *viewport = region->draw_buffer->viewport; GPU_viewport_stereo_composite(viewport, win->stereo3d_format); } |