Revision: 29405
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29405
Author:   campbellbarton
Date:     2010-06-11 14:40:22 +0200 (Fri, 11 Jun 2010)

Log Message:
-----------
Render Branch: svn merge 
https://svn.blender.org/svnroot/bf-blender/trunk/blender -r29385:29404

Modified Paths:
--------------
    branches/render25/release/scripts/op/console_python.py
    branches/render25/release/scripts/ui/properties_game.py
    branches/render25/source/blender/blenkernel/intern/cdderivedmesh.c
    branches/render25/source/blender/blenkernel/intern/object.c
    branches/render25/source/blender/blenkernel/intern/subsurf_ccg.c
    branches/render25/source/blender/editors/space_view3d/drawobject.c
    branches/render25/source/blender/makesrna/intern/rna_ID.c
    branches/render25/source/blender/makesrna/intern/rna_curve.c
    branches/render25/source/blender/makesrna/intern/rna_particle.c
    branches/render25/source/blender/makesrna/intern/rna_scene.c

Modified: branches/render25/release/scripts/op/console_python.py
===================================================================
--- branches/render25/release/scripts/op/console_python.py      2010-06-11 
11:56:09 UTC (rev 29404)
+++ branches/render25/release/scripts/op/console_python.py      2010-06-11 
12:40:22 UTC (rev 29405)
@@ -33,7 +33,7 @@
     '''
     helper function for console operators
     currently each text datablock gets its own
-    console - bpython_code.InteractiveConsole()
+    console - code.InteractiveConsole()
     ...which is stored in this function.
 
     console_id can be any hashable type
@@ -44,21 +44,24 @@
 
     if consoles is None:
         consoles = get_console.consoles = {}
+    else:
+        # check if clearning the namespace is needed to avoid a memory leak.
+        # the window manager is normally loaded with new blend files
+        # so this is a reasonable way to deal with namespace clearing.
+        # bpy.data hashing is reset by undo so cant be used.
+        hash_prev = getattr(get_console, "consoles_namespace_hash", 0)
+        hash_next = hash(bpy.context.manager)
 
-    # clear all dead consoles, use text names as IDs
-    # TODO, find a way to clear IDs
-    '''
-    for console_id in list(consoles.keys()):
-        if console_id not in bpy.data.texts:
-            del consoles[id]
-    '''
+        if hash_prev != hash_next:
+            get_console.consoles_namespace_hash = hash_next
+            consoles.clear()
 
     console_data = consoles.get(console_id)
 
     if console_data:
         console, stdout, stderr = console_data
 
-        # XXX, bug in python 3.1.2 ?
+        # XXX, bug in python 3.1.2 ? (worked in 3.1.1)
         # seems there is no way to clear StringIO objects for writing, have to 
make new ones each time.
         import io
         stdout = io.StringIO()

Modified: branches/render25/release/scripts/ui/properties_game.py
===================================================================
--- branches/render25/release/scripts/ui/properties_game.py     2010-06-11 
11:56:09 UTC (rev 29404)
+++ branches/render25/release/scripts/ui/properties_game.py     2010-06-11 
12:40:22 UTC (rev 29405)
@@ -30,11 +30,12 @@
     def poll(self, context):
         ob = context.active_object
         rd = context.scene.render
-        return ob and ob.game and (rd.engine == 'BLENDER_GAME')
+        return ob and ob.game and (rd.engine in self.COMPAT_ENGINES)
 
 
 class PHYSICS_PT_game_physics(PhysicsButtonsPanel):
     bl_label = "Physics"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def draw(self, context):
         layout = self.layout
@@ -163,11 +164,12 @@
 
 class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel):
     bl_label = "Collision Bounds"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def poll(self, context):
         game = context.object.game
         rd = context.scene.render
-        return (game.physics_type in ('DYNAMIC', 'RIGID_BODY', 'SENSOR', 
'SOFT_BODY', 'STATIC')) and (rd.engine == 'BLENDER_GAME')
+        return (game.physics_type in ('DYNAMIC', 'RIGID_BODY', 'SENSOR', 
'SOFT_BODY', 'STATIC')) and (rd.engine in self.COMPAT_ENGINES)
 
     def draw_header(self, context):
         game = context.active_object.game
@@ -203,11 +205,12 @@
 
     def poll(self, context):
         rd = context.scene.render
-        return (rd.engine == 'BLENDER_GAME')
+        return (rd.engine in self.COMPAT_ENGINES)
 
 
 class RENDER_PT_game(RenderButtonsPanel):
     bl_label = "Game"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def draw(self, context):
         layout = self.layout
@@ -219,6 +222,7 @@
 
 class RENDER_PT_game_player(RenderButtonsPanel):
     bl_label = "Standalone Player"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def draw(self, context):
         layout = self.layout
@@ -256,6 +260,7 @@
 
 class RENDER_PT_game_stereo(RenderButtonsPanel):
     bl_label = "Stereo"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def draw(self, context):
         layout = self.layout
@@ -315,6 +320,7 @@
 
 class RENDER_PT_game_shading(RenderButtonsPanel):
     bl_label = "Shading"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def draw(self, context):
         layout = self.layout
@@ -343,6 +349,7 @@
 
 class RENDER_PT_game_performance(RenderButtonsPanel):
     bl_label = "Performance"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def draw(self, context):
         layout = self.layout
@@ -368,6 +375,7 @@
 
 class RENDER_PT_game_sound(RenderButtonsPanel):
     bl_label = "Sound"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def draw(self, context):
         layout = self.layout
@@ -390,12 +398,13 @@
 
     def poll(self, context):
         scene = context.scene
-        return (scene.render.engine == 'BLENDER_GAME') and (scene.world is not 
None)
+        return (scene.render.engine in self.COMPAT_ENGINES) and (scene.world 
is not None)
 
 
 class WORLD_PT_game_context_world(WorldButtonsPanel):
     bl_label = ""
     bl_show_header = False
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def poll(self, context):
         rd = context.scene.render
@@ -424,6 +433,7 @@
 
 class WORLD_PT_game_world(WorldButtonsPanel):
     bl_label = "World"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def draw(self, context):
         layout = self.layout
@@ -443,11 +453,12 @@
 
 class WORLD_PT_game_mist(WorldButtonsPanel):
     bl_label = "Mist"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def draw_header(self, context):
         world = context.world
 
-        self.layout.prop(world.mist, "enabled", text="")
+        self.layout.prop(world.mist, "use_mist", text="")
 
     def draw(self, context):
         layout = self.layout
@@ -455,7 +466,7 @@
         world = context.world
         wide_ui = context.region.width > narrowui
 
-        layout.active = world.mist.enabled
+        layout.active = world.mist.use_mist
         split = layout.split()
 
         col = split.column()
@@ -468,6 +479,7 @@
 
 class WORLD_PT_game_physics(WorldButtonsPanel):
     bl_label = "Physics"
+    COMPAT_ENGINES = {'BLENDER_GAME'}
 
     def draw(self, context):
         layout = self.layout

Modified: branches/render25/source/blender/blenkernel/intern/cdderivedmesh.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/cdderivedmesh.c  
2010-06-11 11:56:09 UTC (rev 29404)
+++ branches/render25/source/blender/blenkernel/intern/cdderivedmesh.c  
2010-06-11 12:40:22 UTC (rev 29405)
@@ -853,48 +853,42 @@
                }
        }
        else { /* use OpenGL VBOs or Vertex Arrays instead for better, faster 
rendering */
-               int state = 1;
-               int prevstate = 1;
                int prevstart = 0;
                GPU_vertex_setup(dm);
                GPU_normal_setup(dm);
                if( useColors && mc )
                        GPU_color_setup(dm);
                if( !GPU_buffer_legacy(dm) ) {
+                       int tottri = dm->drawObject->nelements/3;
                        glShadeModel(GL_SMOOTH);
-                       for( i = 0; i < dm->drawObject->nelements/3; i++ ) {
+
+                       for( i = 0; i < tottri; i++ ) {
                                int actualFace = dm->drawObject->faceRemap[i];
                                int drawSmooth = (mf[actualFace].flag & 
ME_SMOOTH);
-                               int dontdraw = 0;
+                               int draw = 1;
+
                                if(index) {
                                        orig = index[actualFace];
                                        if(setDrawOptions && orig == 
ORIGINDEX_NONE)
-                                               dontdraw = 1;
+                                               draw = 0;
                                }
                                else
                                        orig = actualFace;
-                               if( dontdraw ) {
-                                       state = 0;
+
+                               if(setDrawOptions && !setDrawOptions(userData, 
orig, &drawSmooth))
+                                       draw = 0;
+
+                               /* Goal is to draw as long of a contiguous 
triangle
+                                  array as possible, so draw when we hit 
either an
+                                  invisible triangle or at the end of the 
array */
+                               if(!draw || i == tottri - 1) {
+                                       if(prevstart != i)
+                                               /* Add one to the length (via 
`draw')
+                                                  if we're drawing at the end 
of the array */
+                                               
glDrawArrays(GL_TRIANGLES,prevstart*3, (i-prevstart+draw)*3);
+                                       prevstart = i + 1;
                                }
-                               else {
-                                       if(!setDrawOptions || 
setDrawOptions(userData, orig, &drawSmooth)) {
-                                               state = 1;
-                                       }
-                                       else {
-                                               state = 0;
-                                       }
-                               }
-                               if( prevstate != state && prevstate == 1 ) {
-                                       if( i-prevstart > 0 ) {
-                                               
glDrawArrays(GL_TRIANGLES,prevstart*3,(i-prevstart)*3);
-                                       }
-                                       prevstart = i;
-                               }
-                               prevstate = state;
                        }
-                       if(state==1) {
-                               
glDrawArrays(GL_TRIANGLES,prevstart*3,dm->drawObject->nelements-prevstart*3);
-                       }
                        glShadeModel(GL_FLAT);
                }
                GPU_buffer_unbind();

Modified: branches/render25/source/blender/blenkernel/intern/object.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/object.c 2010-06-11 
11:56:09 UTC (rev 29404)
+++ branches/render25/source/blender/blenkernel/intern/object.c 2010-06-11 
12:40:22 UTC (rev 29405)
@@ -1286,6 +1286,7 @@
        
        for (md=ob->modifiers.first; md; md=md->next) {
                ModifierData *nmd = modifier_new(md->type);
+               BLI_strncpy(nmd->name, md->name, sizeof(nmd->name));
                modifier_copyData(md, nmd);
                BLI_addtail(&obn->modifiers, nmd);
        }

Modified: branches/render25/source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/subsurf_ccg.c    
2010-06-11 11:56:09 UTC (rev 29404)
+++ branches/render25/source/blender/blenkernel/intern/subsurf_ccg.c    
2010-06-11 12:40:22 UTC (rev 29405)
@@ -2328,6 +2328,7 @@
        int gridInternalEdges;
        MEdge *medge = NULL;
        MFace *mface = NULL;
+       int *orig_indices;
        FaceVertWeight *qweight, *tweight;
 
        DM_from_template(&ccgdm->dm, dm, DM_TYPE_CCGDM,
@@ -2437,6 +2438,7 @@
 
        faceFlags = ccgdm->faceFlags = MEM_callocN(sizeof(char)*2*totface, 
"faceFlags");
 
+       orig_indices = (int*)ccgdm->dm.getFaceDataArray(&ccgdm->dm, 
CD_ORIGINDEX);
        for(index = 0; index < totface; ++index) {
                CCGFace *f = ccgdm->faceMap[index].face;
                int numVerts = ccgSubSurf_getFaceNumVerts(f);
@@ -2450,6 +2452,9 @@
                ccgdm->faceMap[index].startEdge = edgeNum;
                ccgdm->faceMap[index].startFace = faceNum;
 
+               if(orig_indices)
+                       orig_indices[faceNum] = origIndex;
+
                /* set the face base vert */
                *((int*)ccgSubSurf_getFaceUserData(ss, f)) = vertNum;
 

Modified: branches/render25/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- branches/render25/source/blender/editors/space_view3d/drawobject.c  
2010-06-11 11:56:09 UTC (rev 29404)
+++ branches/render25/source/blender/editors/space_view3d/drawobject.c  
2010-06-11 12:40:22 UTC (rev 29405)
@@ -868,25 +868,17 @@
 

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to