Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/blender/sequencer/SEQ_channels.h4
-rw-r--r--source/blender/sequencer/intern/channels.c6
-rw-r--r--source/blender/sequencer/intern/effects.c4
-rw-r--r--source/blender/windowmanager/intern/wm_draw.c6
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);
}