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
diff options
context:
space:
mode:
authorRichard Antalik <richardantalik@gmail.com>2020-01-22 02:27:02 +0300
committerRichard Antalik <richardantalik@gmail.com>2020-01-22 02:59:31 +0300
commit3119a014a6e126102c67b014a55dd455dc9557e2 (patch)
tree41646ccb62bf1c7bd8fba6068e3a373e9fc527dd /source/blender/editors/space_sequencer/sequencer_draw.c
parentbda0c0847b5ef89b31d56b0d88705bafaef90616 (diff)
Fix T70415 100% proxy files playing with poor performance
Refactor code to use `eSpaceSeq_Proxy_RenderSize` or corresponding `IMB_Proxy_Size` enum items directly. `SEQ_PROXY_RENDER_SIZE_100` has assigned value 99 to distinguish from `SEQ_PROXY_RENDER_SIZE_FULL`. This caused error in image size calculation and because of that image had to be scaled. Author: EitanSomething Reviewed By: ISS Differential Revision: http://developer.blender.org/D6368
Diffstat (limited to 'source/blender/editors/space_sequencer/sequencer_draw.c')
-rw-r--r--source/blender/editors/space_sequencer/sequencer_draw.c44
1 files changed, 19 insertions, 25 deletions
diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c
index 70cb28fa937..20fba7aa919 100644
--- a/source/blender/editors/space_sequencer/sequencer_draw.c
+++ b/source/blender/editors/space_sequencer/sequencer_draw.c
@@ -1023,27 +1023,25 @@ ImBuf *sequencer_ibuf_get(struct Main *bmain,
SeqRenderData context = {0};
ImBuf *ibuf;
int rectx, recty;
- float render_size;
- float proxy_size = 100.0;
+ double render_size;
short is_break = G.is_break;
- render_size = sseq->render_size;
- if (render_size == 0) {
- render_size = scene->r.size;
- }
- else {
- proxy_size = render_size;
+ if (sseq->render_size == SEQ_PROXY_RENDER_SIZE_NONE) {
+ return NULL;
}
- if (render_size < 0) {
- return NULL;
+ if (sseq->render_size == SEQ_PROXY_RENDER_SIZE_SCENE) {
+ render_size = scene->r.size / 100.0;
+ }
+ else {
+ render_size = BKE_sequencer_rendersize_to_scale_factor(sseq->render_size);
}
- rectx = (render_size * (float)scene->r.xsch) / 100.0f + 0.5f;
- recty = (render_size * (float)scene->r.ysch) / 100.0f + 0.5f;
+ rectx = render_size * scene->r.xsch + 0.5;
+ recty = render_size * scene->r.ysch + 0.5;
BKE_sequencer_new_render_data(
- bmain, depsgraph, scene, rectx, recty, proxy_size, false, &context);
+ bmain, depsgraph, scene, rectx, recty, sseq->render_size, false, &context);
context.view_id = BKE_scene_multiview_view_id_get(&scene->r, viewname);
/* Sequencer could start rendering, in this case we need to be sure it wouldn't be canceled
@@ -1628,23 +1626,19 @@ void sequencer_draw_preview(const bContext *C,
void drawprefetchseqspace(Scene *scene, ARegion *UNUSED(ar), SpaceSeq *sseq)
{
int rectx, recty;
- int render_size = sseq->render_size;
- int proxy_size = 100.0;
- if (render_size == 0) {
- render_size = scene->r.size;
- }
- else {
- proxy_size = render_size;
- }
- if (render_size < 0) {
+ int render_size = BKE_sequencer_rendersize_to_scale_factor(sseq->render_size);
+ if (sseq->render_size == SEQ_PROXY_RENDER_SIZE_NONE) {
return;
}
- rectx = (render_size * scene->r.xsch) / 100;
- recty = (render_size * scene->r.ysch) / 100;
+ if (sseq->render_size == SEQ_PROXY_RENDER_SIZE_SCENE) {
+ render_size = scene->r.size / 100.0;
+ }
+ rectx = render_size * scene->r.xsch + 0.5;
+ recty = render_size * scene->r.ysch + 0.5;
if (sseq->mainb != SEQ_DRAW_SEQUENCE) {
- give_ibuf_prefetch_request(rectx, recty, (scene->r.cfra), sseq->chanshown, proxy_size);
+ give_ibuf_prefetch_request(rectx, recty, (scene->r.cfra), sseq->chanshown, sseq->render_size);
}
}
#endif