~ubuntu-branches/ubuntu/maverick/blender/maverick

« back to all changes in this revision

Viewing changes to source/blender/src/renderwin.c

  • Committer: Bazaar Package Importer
  • Author(s): Khashayar Naderehvandi, Khashayar Naderehvandi, Alessio Treglia
  • Date: 2009-01-22 16:53:59 UTC
  • mfrom: (14.1.1 experimental)
  • Revision ID: james.westby@ubuntu.com-20090122165359-v0996tn7fbit64ni
Tags: 2.48a+dfsg-1ubuntu1
[ Khashayar Naderehvandi ]
* Merge from debian experimental (LP: #320045), Ubuntu remaining changes:
  - Add patch correcting header file locations.
  - Add libvorbis-dev and libgsm1-dev to Build-Depends.
  - Use avcodec_decode_audio2() in source/blender/src/hddaudio.c

[ Alessio Treglia ]
* Add missing previous changelog entries.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/**
2
 
 * $Id: renderwin.c 14815 2008-05-12 17:41:03Z blendix $
 
2
 * $Id: renderwin.c 16632 2008-09-20 13:02:06Z ton $
3
3
 *
4
4
 * ***** BEGIN GPL LICENSE BLOCK *****
5
5
 *
100
100
#include "IMB_imbuf.h"
101
101
#include "IMB_imbuf_types.h"
102
102
 
 
103
#include "GPU_draw.h"
 
104
 
103
105
#include "blendef.h"
104
106
#include "mydevice.h"
105
107
#include "winlay.h"
424
426
        renderwin_queue_redraw(rw);
425
427
}
426
428
 
427
 
#define FTOCHAR(val) val<=0.0f? 0 : (val>=(1.0f-0.5f/255.0f)? 255 :(char)((255.0f*val)+0.5f))
428
429
 
429
430
static void renderwin_mouse_moved(RenderWin *rw)
430
431
{
674
675
        /* mywindow has to know about it too */
675
676
        mywindow_build_and_set_renderwin(winpos[0], winpos[1], winsize[0], winsize[1]+RW_HEADERY);
676
677
        /* and we should be able to draw 3d in it */
677
 
        init_gl_stuff();
 
678
        GPU_state_init();
678
679
        
679
680
        renderwin_draw(render_win, 1);
680
681
        renderwin_draw(render_win, 1);
901
902
void make_renderinfo_string(RenderStats *rs, char *str)
902
903
{
903
904
        extern char info_time_str[32];  // header_info.c
904
 
        extern unsigned long mem_in_use, mmap_in_use;
 
905
        uintptr_t mem_in_use, mmap_in_use;
905
906
        float megs_used_memory, mmap_used_memory;
906
907
        char *spos= str;
907
908
        
 
909
        mem_in_use= MEM_get_memory_in_use();
 
910
        mmap_in_use= MEM_get_mapped_memory_in_use();
 
911
 
908
912
        megs_used_memory= (mem_in_use-mmap_in_use)/(1024.0*1024.0);
909
913
        mmap_used_memory= (mmap_in_use)/(1024.0*1024.0);
910
914
        
1127
1131
        }
1128
1132
        
1129
1133
        if(anim)
1130
 
                RE_BlenderAnim(re, G.scene, G.scene->r.sfra, G.scene->r.efra);
 
1134
                RE_BlenderAnim(re, G.scene, G.scene->r.sfra, G.scene->r.efra, G.scene->frame_step);
1131
1135
        else
1132
1136
                RE_BlenderFrame(re, G.scene, G.scene->r.cfra);
1133
1137
 
1269
1273
/* set up display, render an image or scene */
1270
1274
void BIF_do_render(int anim)
1271
1275
{
1272
 
        int slink_flag = 0;
 
1276
        if (G.f & G_DOSCRIPTLINKS)
 
1277
                BPY_do_all_scripts(SCRIPT_RENDER, anim);
1273
1278
 
1274
 
        if (G.f & G_DOSCRIPTLINKS) {
1275
 
                BPY_do_all_scripts(SCRIPT_RENDER);
1276
 
                if (!anim) { /* avoid FRAMECHANGED slink in render callback */
1277
 
                        G.f &= ~G_DOSCRIPTLINKS;
1278
 
                        slink_flag = 1;
1279
 
                }
1280
 
        }
1281
 
        
1282
1279
        BIF_store_spare();
1283
1280
 
1284
1281
        do_render(anim);
1289
1286
        }
1290
1287
        if(G.scene->r.dither_intensity != 0.0f)
1291
1288
                BIF_redraw_render_rect();
1292
 
        if (slink_flag) G.f |= G_DOSCRIPTLINKS;
1293
 
        if (G.f & G_DOSCRIPTLINKS) BPY_do_all_scripts(SCRIPT_POSTRENDER);
 
1289
 
 
1290
        if (G.f & G_DOSCRIPTLINKS) BPY_do_all_scripts(SCRIPT_POSTRENDER, anim);
1294
1291
}
1295
1292
 
1296
1293
void do_ogl_view3d_render(Render *re, View3D *v3d, int winx, int winy)
1302
1299
        if(v3d->persp==V3D_CAMOB && v3d->camera) {
1303
1300
                /* in camera view, use actual render winmat */
1304
1301
                RE_GetCameraWindow(re, v3d->camera, CFRA, winmat);
1305
 
                drawview3d_render(v3d, winx, winy, winmat);
 
1302
                drawview3d_render(v3d, NULL, winx, winy, winmat, 0);
1306
1303
        }
1307
1304
        else
1308
 
                drawview3d_render(v3d, winx, winy, NULL);
 
1305
                drawview3d_render(v3d, NULL, winx, winy, NULL, 0);
1309
1306
}
1310
1307
 
1311
1308
/* set up display, render the current area view in an image */
1334
1331
        if(render_win)
1335
1332
                render_win->flags &= ~RW_FLAGS_ESCAPE;
1336
1333
 
1337
 
        init_gl_stuff();
 
1334
        GPU_state_init();
1338
1335
        
1339
1336
        waitcursor(1);
1340
1337
 
1341
1338
        if(anim) {
1342
1339
                bMovieHandle *mh= BKE_get_movie_handle(G.scene->r.imtype);
 
1340
                unsigned int lay;
1343
1341
                int cfrao= CFRA;
 
1342
                int nfra;
1344
1343
                
1345
1344
                if(BKE_imtype_is_movie(G.scene->r.imtype))
1346
1345
                        mh->start_movie(&G.scene->r, winx, winy);
1347
1346
                
1348
 
                for(CFRA= SFRA; CFRA<=EFRA; CFRA++) {
 
1347
                for(nfra= SFRA, CFRA= SFRA; CFRA<=EFRA; CFRA++) {
1349
1348
                        /* user event can close window */
1350
1349
                        if(render_win==NULL)
1351
1350
                                break;
1352
1351
 
 
1352
                        if(nfra!=CFRA) {
 
1353
                                if(G.scene->lay & 0xFF000000)
 
1354
                                        lay= G.scene->lay & 0xFF000000;
 
1355
                                else
 
1356
                                        lay= G.scene->lay;
 
1357
 
 
1358
                                scene_update_for_newframe(G.scene, lay);
 
1359
                                continue;
 
1360
                        }
 
1361
 
1353
1362
                        do_ogl_view3d_render(re, v3d, winx, winy);
1354
1363
                        glReadPixels(0, 0, winx, winy, GL_RGBA, GL_UNSIGNED_BYTE, rr->rect32);
1355
1364
                        if((G.scene->r.scemode & R_STAMP_INFO) && (G.scene->r.stamp & R_STAMP_DRAW)) {
1384
1393
                        printf("\n");
1385
1394
                        
1386
1395
                        if(test_break()) break;
 
1396
                        nfra+= STFRA;
1387
1397
                }
1388
1398
                
1389
1399
                if(BKE_imtype_is_movie(G.scene->r.imtype))