static int screen_opengl_render_modal(bContext *C, wmOperator *op, wmEvent *event)
{
OGLRender *oglrender= op->customdata;
-
+ int anim= RNA_boolean_get(op->ptr, "animation");
int ret;
switch(event->type) {
/* run first because screen_opengl_render_anim_step can free oglrender */
WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, oglrender->scene);
- ret= screen_opengl_render_anim_step(C, op);
+ if(anim == 0) {
+ screen_opengl_render_apply(op->customdata);
+ screen_opengl_render_end(C, op->customdata);
+ return OPERATOR_FINISHED;
+ }
+ else
+ ret= screen_opengl_render_anim_step(C, op);
/* stop at the end or on error */
if(ret == 0) {
static int screen_opengl_render_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
+ OGLRender *oglrender;
int anim= RNA_boolean_get(op->ptr, "animation");
if(!screen_opengl_render_init(C, op))
return OPERATOR_CANCELLED;
- if(!anim) {
- /* render image */
- screen_opengl_render_apply(op->customdata);
- screen_opengl_render_end(C, op->customdata);
- screen_set_image_output(C, event->x, event->y);
-
- return OPERATOR_FINISHED;
- }
- else {
- OGLRender *oglrender= op->customdata;
-
+ if(anim) {
if(!screen_opengl_render_anim_initialize(C, op))
return OPERATOR_CANCELLED;
-
- screen_set_image_output(C, event->x, event->y);
-
- WM_event_add_modal_handler(C, op);
- oglrender->timer= WM_event_add_timer(CTX_wm_manager(C), CTX_wm_window(C), TIMER, 0.01f);
-
- return OPERATOR_RUNNING_MODAL;
}
+
+ oglrender= op->customdata;
+ screen_set_image_output(C, event->x, event->y);
+
+ WM_event_add_modal_handler(C, op);
+ oglrender->timer= WM_event_add_timer(CTX_wm_manager(C), CTX_wm_window(C), TIMER, 0.01f);
+
+ return OPERATOR_RUNNING_MODAL;
}
/* executes blocking render */