Combining panorama scene and Sequencer effect on scene (like glow) crashed.

Found two other issues;

- on click in sequencer, the image output window didn't redraw correct, but
  only when a render window was opened. Caused by missing 'activate' call
- added a pause in dragging-frame loop to make it idle friendly
This commit is contained in:
2004-12-02 18:12:18 +00:00
parent 64620dd650
commit 47230dbf75
4 changed files with 19 additions and 12 deletions

View File

@@ -1193,6 +1193,9 @@ void RE_initrender(struct View3D *ogl_render_view3d)
if(R.r.scemode & R_DOSEQ) {
R.rectx= R.r.xsch;
R.recty= R.r.ysch;
if(R.r.mode & R_PANORAMA) {
R.rectx*= R.r.xparts;
}
if(R.rectot) MEM_freeN(R.rectot);
R.rectot= (unsigned int *)MEM_callocN(sizeof(int)*R.rectx*R.recty, "rectot");

View File

@@ -468,7 +468,7 @@ void set_special_seq_update(int val)
}
static void draw_image_seq(void)
static void draw_image_seq(ScrArea *sa)
{
SpaceSeq *sseq;
StripElem *se;
@@ -478,8 +478,6 @@ static void draw_image_seq(void)
glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
curarea->win_swap= WIN_BACK_OK;
ibuf= (ImBuf *)give_ibuf_seq( (G.scene->r.cfra));
if(special_seq_update) {
@@ -494,17 +492,18 @@ static void draw_image_seq(void)
}
if(ibuf==0 || ibuf->rect==0) return;
sseq= curarea->spacedata.first;
sseq= sa->spacedata.first;
if(sseq==0) return;
/* calc location */
x1= curarea->winrct.xmin+(curarea->winx-sseq->zoom*ibuf->x)/2;
y1= curarea->winrct.ymin+(curarea->winy-sseq->zoom*ibuf->y)/2;
x1= sa->winrct.xmin+(sa->winx-sseq->zoom*ibuf->x)/2;
y1= sa->winrct.ymin+(sa->winy-sseq->zoom*ibuf->y)/2;
rectwrite_part(curarea->winrct.xmin, curarea->winrct.ymin,
curarea->winrct.xmax, curarea->winrct.ymax,
rectwrite_part(sa->winrct.xmin, sa->winrct.ymin,
sa->winrct.xmax, sa->winrct.ymax,
x1, y1, ibuf->x, ibuf->y, (float)sseq->zoom,(float)sseq->zoom, ibuf->rect);
sa->win_swap= WIN_BACK_OK;
}
static void draw_extra_seqinfo(void)
@@ -777,7 +776,8 @@ void drawseqspace(ScrArea *sa, void *spacedata)
sseq= curarea->spacedata.first;
if(sseq->mainb==1) {
draw_image_seq();
draw_image_seq(curarea);
curarea->win_swap= WIN_BACK_OK;
return;
}

View File

@@ -64,11 +64,13 @@
#include "BKE_scene.h"
#include "BKE_ipo.h"
#include "BIF_screen.h"
#include "BIF_interface.h"
#include "BIF_toolbox.h"
#include "BSE_filesel.h"
#include "BIF_interface.h"
#include "BSE_headerbuttons.h"
#include "BIF_screen.h"
#include "BIF_space.h"
#include "BIF_toolbox.h"
#include "BSE_sequence.h"
#include "blendef.h"
@@ -1953,6 +1955,7 @@ void do_build_seqar_cfra(ListBase *seqbase, Sequence ***seqar, int cfra)
RE_initrender(NULL);
if (!G.background) {
mainwindow_make_active();
if(R.r.mode & R_FIELDS) update_for_newframe_muted();
R.flag= 0;

View File

@@ -3126,6 +3126,7 @@ static void winqreadseqspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
force_draw(0);
update_for_newframe(); /* for audio scrubbing */
}
else PIL_sleep_ms(30);
} while(get_mbut() & mousebut);