Merge branch 'master' into blender2.8
authorBastien Montagne <montagne29@wanadoo.fr>
Mon, 20 Mar 2017 13:37:44 +0000 (14:37 +0100)
committerBastien Montagne <montagne29@wanadoo.fr>
Mon, 20 Mar 2017 13:37:44 +0000 (14:37 +0100)
13 files changed:
intern/cycles/blender/addon/__init__.py
intern/cycles/blender/addon/presets.py
intern/cycles/blender/addon/ui.py
intern/cycles/kernel/closure/bsdf_microfacet_multi.h
release/scripts/startup/bl_operators/anim.py
release/scripts/startup/bl_ui/properties_material.py
release/scripts/startup/bl_ui/properties_particle.py
release/scripts/startup/bl_ui/properties_physics_smoke.py
release/scripts/startup/bl_ui/properties_texture.py
release/scripts/startup/bl_ui/space_view3d.py
source/blender/blenkernel/intern/blender.c
source/blender/editors/space_view3d/drawarmature.c
source/blender/windowmanager/intern/wm_files.c

index 235d19e91e87e31cd65287fb12ead4c4f8873832..eb792af7264277868763b4ae3bee12c54a2815cf 100644 (file)
@@ -107,7 +107,13 @@ def engine_exit():
     engine.exit()
 
 
+classes = (
+    CyclesRender,
+)
+
+
 def register():
+    from bpy.utils import register_class
     from . import ui
     from . import properties
     from . import presets
@@ -122,12 +128,15 @@ def register():
     properties.register()
     ui.register()
     presets.register()
-    bpy.utils.register_module(__name__)
+
+    for cls in classes:
+        register_class(cls)
 
     bpy.app.handlers.version_update.append(version_update.do_versions)
 
 
 def unregister():
+    from bpy.utils import unregister_class
     from . import ui
     from . import properties
     from . import presets
@@ -138,4 +147,6 @@ def unregister():
     ui.unregister()
     properties.unregister()
     presets.unregister()
-    bpy.utils.unregister_module(__name__)
+
+    for cls in classes:
+        unregister_class(cls)
index f97b51b629d0caac90cb0eee89270d25bb440244..82c4ffc6e5058efe31e7e5fe18b7857930adea12 100644 (file)
@@ -82,12 +82,23 @@ class AddPresetSampling(AddPresetBase, Operator):
     preset_subdir = "cycles/sampling"
 
 
+classes = (
+    AddPresetIntegrator,
+    AddPresetSampling,
+)
+
+
 def register():
-    pass
+    from bpy.utils import register_class
+    for cls in classes:
+        register_class(cls)
 
 
 def unregister():
-    pass
+    from bpy.utils import unregister_class
+    for cls in classes:
+        unregister_class(cls)
+
 
 if __name__ == "__main__":
     register()
index 0de224f6218fbbc6b3071345146fe084186f7a3f..eec897474c5881a27aa4efd40ab5c2b2deebaf2e 100644 (file)
@@ -1714,17 +1714,75 @@ def get_panels():
 
     return panels
 
+
+classes = (
+    CYCLES_MT_sampling_presets,
+    CYCLES_MT_integrator_presets,
+    CyclesRender_PT_sampling,
+    CyclesRender_PT_geometry,
+    CyclesRender_PT_light_paths,
+    CyclesRender_PT_motion_blur,
+    CyclesRender_PT_film,
+    CyclesRender_PT_performance,
+    CyclesRender_PT_layer_options,
+    CyclesRender_PT_layer_passes,
+    CyclesRender_PT_views,
+    Cycles_PT_post_processing,
+    CyclesCamera_PT_dof,
+    Cycles_PT_context_material,
+    CyclesObject_PT_motion_blur,
+    CyclesObject_PT_cycles_settings,
+    CYCLES_OT_use_shading_nodes,
+    CyclesLamp_PT_preview,
+    CyclesLamp_PT_lamp,
+    CyclesLamp_PT_nodes,
+    CyclesLamp_PT_spot,
+    CyclesWorld_PT_preview,
+    CyclesWorld_PT_surface,
+    CyclesWorld_PT_volume,
+    CyclesWorld_PT_ambient_occlusion,
+    CyclesWorld_PT_mist,
+    CyclesWorld_PT_ray_visibility,
+    CyclesWorld_PT_settings,
+    CyclesMaterial_PT_preview,
+    CyclesMaterial_PT_surface,
+    CyclesMaterial_PT_volume,
+    CyclesMaterial_PT_displacement,
+    CyclesMaterial_PT_settings,
+    CyclesTexture_PT_context,
+    CyclesTexture_PT_node,
+    CyclesTexture_PT_mapping,
+    CyclesTexture_PT_colors,
+    CyclesParticle_PT_textures,
+    CyclesRender_PT_bake,
+    CyclesRender_PT_debug,
+    CyclesParticle_PT_CurveSettings,
+    CyclesScene_PT_simplify,
+)
+
+
 def register():
+    from bpy.utils import register_class
+
     bpy.types.RENDER_PT_render.append(draw_device)
     bpy.types.VIEW3D_HT_header.append(draw_pause)
 
     for panel in get_panels():
         panel.COMPAT_ENGINES.add('CYCLES')
 
+    for cls in classes:
+        register_class(cls)
+
+
 def unregister():
+    from bpy.utils import unregister_class
+
     bpy.types.RENDER_PT_render.remove(draw_device)
     bpy.types.VIEW3D_HT_header.remove(draw_pause)
 
     for panel in get_panels():
         if 'CYCLES' in panel.COMPAT_ENGINES:
             panel.COMPAT_ENGINES.remove('CYCLES')
+
+    for cls in classes:
+        unregister_class(cls)
index cea59adfebefc0cb06bf9f91cb2947880f7bbb3d..aa4b91eac4047e8ce6f65980627fbf42a89d1c56 100644 (file)
@@ -43,7 +43,7 @@ ccl_device_forceinline float D_ggx_aniso(const float3 wm, const float2 alpha)
 ccl_device_forceinline float2 mf_sampleP22_11(const float cosI, const float2 randU)
 {
        if(cosI > 0.9999f || cosI < 1e-6f) {
-               const float r = sqrtf(randU.x / (1.0f - randU.x));
+               const float r = sqrtf(randU.x / max(1.0f - randU.x, 1e-7f));
                const float phi = M_2PI_F * randU.y;
                return make_float2(r*cosf(phi), r*sinf(phi));
        }
@@ -83,7 +83,7 @@ ccl_device_forceinline float3 mf_sample_vndf(const float3 wi, const float2 alpha
        const float3 wi_11 = normalize(make_float3(alpha.x*wi.x, alpha.y*wi.y, wi.z));
        const float2 slope_11 = mf_sampleP22_11(wi_11.z, randU);
 
-       const float2 cossin_phi = normalize(make_float2(wi_11.x, wi_11.y));
+       const float2 cossin_phi = safe_normalize(make_float2(wi_11.x, wi_11.y));
        const float slope_x = alpha.x*(cossin_phi.x * slope_11.x - cossin_phi.y * slope_11.y);
        const float slope_y = alpha.y*(cossin_phi.y * slope_11.x + cossin_phi.x * slope_11.y);
 
index e1a0b3c990862f37b7f8bf3784f9a19292735e02..78fcf0dd12401972701133b2278fbed2f87f9b95 100644 (file)
@@ -28,11 +28,11 @@ if "bpy" in locals():
 import bpy
 from bpy.types import Operator
 from bpy.props import (
-        IntProperty,
-        BoolProperty,
-        EnumProperty,
-        StringProperty,
-        )
+    IntProperty,
+    BoolProperty,
+    EnumProperty,
+    StringProperty,
+)
 
 
 class ANIM_OT_keying_set_export(Operator):
@@ -115,30 +115,30 @@ class ANIM_OT_keying_set_export(Operator):
                 # Find material or lamp using this node tree...
                 id_bpy_path = "bpy.data.nodes[\"%s\"]"
                 found = False
-                
+
                 for mat in bpy.data.materials:
                     if mat.node_tree == ksp.id:
                         id_bpy_path = "bpy.data.materials[\"%s\"].node_tree" % (mat.name)
                         found = True
-                        break;
-                        
+                        break
+
                 if not found:
                     for lamp in bpy.data.lamps:
                         if lamp.node_tree == ksp.id:
                             id_bpy_path = "bpy.data.lamps[\"%s\"].node_tree" % (lamp.name)
                             found = True
-                            break;
-                    
+                            break
+
                 if not found:
-                    self.report({'WARN'}, "Could not find material or lamp using Shader Node Tree - %s" % (ksp.id))                    
+                    self.report({'WARN'}, "Could not find material or lamp using Shader Node Tree - %s" % (ksp.id))
             elif ksp.id.bl_rna.identifier.startswith("CompositorNodeTree"):
                 # Find compositor nodetree using this node tree...
                 for scene in bpy.data.scenes:
                     if scene.node_tree == ksp.id:
                         id_bpy_path = "bpy.data.scenes[\"%s\"].node_tree" % (scene.name)
-                        break;
+                        break
                 else:
-                    self.report({'WARN'}, "Could not find scene using Compositor Node Tree - %s" % (ksp.id)) 
+                    self.report({'WARN'}, "Could not find scene using Compositor Node Tree - %s" % (ksp.id))
             else:
                 idtype_list = ksp.id.bl_rna.name.lower() + "s"
                 id_bpy_path = "bpy.data.%s[\"%s\"]" % (idtype_list, ksp.id.name)
@@ -302,9 +302,11 @@ class ClearUselessActions(Operator):
     bl_label = "Clear Useless Actions"
     bl_options = {'REGISTER', 'UNDO'}
 
-    only_unused = BoolProperty(name="Only Unused",
+    only_unused = BoolProperty(
+            name="Only Unused",
             description="Only unused (Fake User only) actions get considered",
-            default=True)
+            default=True,
+            )
 
     @classmethod
     def poll(cls, context):
@@ -393,7 +395,7 @@ class UpdateAnimatedTransformConstraint(Operator):
                     except:
                         pass
                     ret = (data, new_path)
-                    #print(ret)
+                    # print(ret)
 
             return ret
 
@@ -419,4 +421,4 @@ classes = (
     BakeAction,
     ClearUselessActions,
     UpdateAnimatedTransformConstraint,
-)
\ No newline at end of file
+)
index c384600344e265e5ad0537ad8919a8c441bd7764..06ae1847d06ec76f7510455c194f417597e31fc9 100644 (file)
@@ -71,6 +71,7 @@ class MATERIAL_MT_specials(Menu):
 
 
 class MATERIAL_UL_matslots(UIList):
+
     def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index):
         # assert(isinstance(item, bpy.types.MaterialSlot)
         # ob = data
index 593312fc071dc02a28f19f72fc7ddb63d29b71f7..2c27c68ed9d08ce39f33052bcf9983beeb6d68e9 100644 (file)
@@ -23,11 +23,11 @@ from rna_prop_ui import PropertyPanel
 from bpy.app.translations import pgettext_iface as iface_
 
 from bl_ui.properties_physics_common import (
-        point_cache_ui,
-        effector_weights_ui,
-        basic_force_field_settings_ui,
-        basic_force_field_falloff_ui,
-        )
+    point_cache_ui,
+    effector_weights_ui,
+    basic_force_field_settings_ui,
+    basic_force_field_falloff_ui,
+)
 
 
 def particle_panel_enabled(context, psys):
@@ -108,6 +108,7 @@ def find_modifier(ob, psys):
 
 
 class PARTICLE_UL_particle_systems(bpy.types.UIList):
+
     def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index, flt_flag):
         ob = data
         psys = item
@@ -117,8 +118,10 @@ class PARTICLE_UL_particle_systems(bpy.types.UIList):
 
             layout.prop(psys, "name", text="", emboss=False, icon_value=icon)
             if md:
-                layout.prop(md, "show_render", emboss=False, icon_only=True, icon='RESTRICT_RENDER_OFF' if md.show_render else 'RESTRICT_RENDER_ON')
-                layout.prop(md, "show_viewport", emboss=False, icon_only=True, icon='RESTRICT_VIEW_OFF' if md.show_viewport else 'RESTRICT_VIEW_ON')
+                layout.prop(md, "show_render", emboss=False, icon_only=True,
+                            icon='RESTRICT_RENDER_OFF' if md.show_render else 'RESTRICT_RENDER_ON')
+                layout.prop(md, "show_viewport", emboss=False, icon_only=True,
+                            icon='RESTRICT_VIEW_OFF' if md.show_viewport else 'RESTRICT_VIEW_ON')
 
         elif self.layout_type == 'GRID':
             layout.alignment = 'CENTER'
@@ -401,7 +404,8 @@ class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel, Panel):
                 label = "ERROR"
                 icon = 'ERROR'
             box.label(label, icon=icon)
-            box.label("Iterations: %d .. %d (avg. %d)" % (result.min_iterations, result.max_iterations, result.avg_iterations))
+            box.label("Iterations: %d .. %d (avg. %d)" %
+                      (result.min_iterations, result.max_iterations, result.avg_iterations))
             box.label("Error: %.5f .. %.5f (avg. %.5f)" % (result.min_error, result.max_error, result.avg_error))
 
 
@@ -423,7 +427,12 @@ class PARTICLE_PT_cache(ParticleButtonsPanel, Panel):
         phystype = psys.settings.physics_type
         if phystype == 'NO' or phystype == 'KEYED':
             return False
-        return (psys.settings.type in {'EMITTER', 'REACTOR'} or (psys.settings.type == 'HAIR' and (psys.use_hair_dynamics or psys.point_cache.is_baked))) and engine in cls.COMPAT_ENGINES
+        return (
+            (psys.settings.type in {'EMITTER', 'REACTOR'} or
+             (psys.settings.type == 'HAIR' and
+              (psys.use_hair_dynamics or psys.point_cache.is_baked))) and
+            engine in cls.COMPAT_ENGINES
+        )
 
     def draw(self, context):
         psys = context.particle_system
@@ -743,7 +752,8 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
                 layout.label(text="Fluid interaction:")
 
             row = layout.row()
-            row.template_list("UI_UL_list", "particle_targets", psys, "targets", psys, "active_particle_target_index", rows=4)
+            row.template_list("UI_UL_list", "particle_targets", psys, "targets",
+                              psys, "active_particle_target_index", rows=4)
 
             col = row.column()
             sub = col.row()
@@ -760,7 +770,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
                 row = layout.row()
                 if part.physics_type == 'KEYED':
                     col = row.column()
-                    #doesn't work yet
+                    # doesn't work yet
                     #col.alert = key.valid
                     col.prop(key, "object", text="")
                     col.prop(key, "system", text="System")
@@ -770,7 +780,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
                     col.prop(key, "duration")
                 elif part.physics_type == 'BOIDS':
                     sub = row.row()
-                    #doesn't work yet
+                    # doesn't work yet
                     #sub.alert = key.valid
                     sub.prop(key, "object", text="")
                     sub.prop(key, "system", text="System")
@@ -778,7 +788,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
                     layout.prop(key, "alliance", expand=True)
                 elif part.physics_type == 'FLUID':
                     sub = row.row()
-                    #doesn't work yet
+                    # doesn't work yet
                     #sub.alert = key.valid
                     sub.prop(key, "object", text="")
                     sub.prop(key, "system", text="System")
@@ -831,7 +841,8 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel, Panel):
             row.label(text="")
 
         row = layout.row()
-        row.template_list("UI_UL_list", "particle_boids_rules", state, "rules", state, "active_boid_rule_index", rows=4)
+        row.template_list("UI_UL_list", "particle_boids_rules", state,
+                          "rules", state, "active_boid_rule_index", rows=4)
 
         col = row.column()
         sub = col.row()
@@ -848,7 +859,7 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel, Panel):
         if rule:
             row = layout.row()
             row.prop(rule, "name", text="")
-            #somebody make nice icons for boids here please! -jahka
+            # somebody make nice icons for boids here please! -jahka
             row.prop(rule, "use_in_air", icon='TRIA_UP', text="")
             row.prop(rule, "use_on_land", icon='TRIA_DOWN', text="")
 
index e6182c2ec741cc00303c8443e5836caa4a2d9115..f2e6c1e22e3ab0b6c8d2c50e8e622f5f1b4f685a 100644 (file)
@@ -21,9 +21,9 @@ import bpy
 from bpy.types import Panel
 
 from bl_ui.properties_physics_common import (
-        point_cache_ui,
-        effector_weights_ui,
-        )
+    point_cache_ui,
+    effector_weights_ui,
+)
 
 
 class PhysicButtonsPanel:
@@ -380,23 +380,23 @@ class PHYSICS_PT_smoke_display_settings(PhysicButtonsPanel, Panel):
         do_axis_slicing = (slice_method == 'AXIS_ALIGNED')
         do_full_slicing = (axis_slice_method == 'FULL')
 
-        row = layout.row();
+        row = layout.row()
         row.enabled = do_axis_slicing
         row.prop(domain, "axis_slice_method")
 
-        col = layout.column();
+        col = layout.column()
         col.enabled = not do_full_slicing and do_axis_slicing
         col.prop(domain, "slice_axis")
         col.prop(domain, "slice_depth")
 
-        row = layout.row();
+        row = layout.row()
         row.enabled = do_full_slicing or not do_axis_slicing
         row.prop(domain, "slice_per_voxel")
 
         layout.separator()
         layout.label(text="Debug:")
         layout.prop(domain, "draw_velocity")
-        col = layout.column();
+        col = layout.column()
         col.enabled = domain.draw_velocity
         col.prop(domain, "vector_draw_type")
         col.prop(domain, "vector_scale")
@@ -404,7 +404,7 @@ class PHYSICS_PT_smoke_display_settings(PhysicButtonsPanel, Panel):
         layout.separator()
         layout.label(text="Color Mapping:")
         layout.prop(domain, "use_color_ramp")
-        col = layout.column();
+        col = layout.column()
         col.enabled = domain.use_color_ramp
         col.prop(domain, "coba_field")
         col.template_color_ramp(domain, "color_ramp", expand=True)
index caeccb9bb9d5dd18879133edc8779ff43333a0a6..d05527b7ef646a961420c92984df7b796b277f26 100644 (file)
@@ -21,15 +21,15 @@ import bpy
 from bpy.types import Menu, Panel, UIList
 
 from bpy.types import (
-        Brush,
-        FreestyleLineStyle,
-        Lamp,
-        Material,
-        Object,
-        ParticleSettings,
-        Texture,
-        World,
-        )
+    Brush,
+    FreestyleLineStyle,
+    Lamp,
+    Material,
+    Object,
+    ParticleSettings,
+    Texture,
+    World,
+)
 
 from rna_prop_ui import PropertyPanel
 
@@ -60,6 +60,7 @@ class TEXTURE_MT_envmap_specials(Menu):
 
 
 class TEXTURE_UL_texslots(UIList):
+
     def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index):
         # assert(isinstance(item, bpy.types.MaterialTextureSlot)
         ma = data
@@ -198,7 +199,8 @@ class TEXTURE_PT_context_texture(TextureButtonsPanel, Panel):
         if tex_collection:
             row = layout.row()
 
-            row.template_list("TEXTURE_UL_texslots", "", idblock, "texture_slots", idblock, "active_texture_index", rows=2)
+            row.template_list("TEXTURE_UL_texslots", "", idblock, "texture_slots",
+                              idblock, "active_texture_index", rows=2)
 
             col = row.column(align=True)
             col.operator("texture.slot_move", text="", icon='TRIA_UP').type = 'UP'
@@ -1210,12 +1212,22 @@ class TEXTURE_PT_influence(TextureSlotPanel, Panel):
             row = layout.row()
 
             sub = row.row()
-            sub.active = (tex.use_map_normal or tex.use_map_warp) and not (tex.texture.type == 'IMAGE' and (tex.texture.use_normal_map or tex.texture.use_derivative_map))
+            sub.active = (
+                (tex.use_map_normal or tex.use_map_warp) and
+                not (tex.texture.type == 'IMAGE' and
+                     (tex.texture.use_normal_map or tex.texture.use_derivative_map))
+            )
             sub.prop(tex, "bump_method", text="Method")
 
-            # the space setting is supported for: derivative-maps + bump-maps (DEFAULT,BEST_QUALITY), not for normal-maps
+            # the space setting is supported for: derivative-maps + bump-maps
+            # (DEFAULT,BEST_QUALITY), not for normal-maps
             sub = row.row()
-            sub.active = (tex.use_map_normal or tex.use_map_warp) and not (tex.texture.type == 'IMAGE' and tex.texture.use_normal_map) and ((tex.bump_method in {'BUMP_LOW_QUALITY', 'BUMP_MEDIUM_QUALITY', 'BUMP_BEST_QUALITY'}) or (tex.texture.type == 'IMAGE' and tex.texture.use_derivative_map))
+            sub.active = (
+                (tex.use_map_normal or tex.use_map_warp) and
+                not (tex.texture.type == 'IMAGE' and tex.texture.use_normal_map) and
+                ((tex.bump_method in {'BUMP_LOW_QUALITY', 'BUMP_MEDIUM_QUALITY', 'BUMP_BEST_QUALITY'}) or
+                 (tex.texture.type == 'IMAGE' and tex.texture.use_derivative_map))
+            )
             sub.prop(tex, "bump_objectspace", text="Space")
 
 
index aca73aadaeec74abc71dbd2fade4b22f5dc222db..74472aca25c86f90b685f6c5829d270d252bddc8 100644 (file)
@@ -284,7 +284,8 @@ class VIEW3D_MT_transform_object(VIEW3D_MT_transform_base):
         layout.separator()
 
         layout.operator_context = 'EXEC_REGION_WIN'
-        layout.operator("transform.transform", text="Align to Transform Orientation").mode = 'ALIGN'  # XXX see alignmenu() in edit.c of b2.4x to get this working
+        # XXX see alignmenu() in edit.c of b2.4x to get this working
+        layout.operator("transform.transform", text="Align to Transform Orientation").mode = 'ALIGN'
 
         layout.separator()
 
index 1febeebf9eab712aebe1377b51de2cd3d6a76fe0..f661f18fbc0ddb5d2fc79dc95bfa2cfe64faf8f9 100644 (file)
@@ -157,17 +157,10 @@ void BKE_blender_userdef_set_data(UserDef *userdef)
        U = *userdef;
 }
 
-/**
- * When loading a new userdef from file,
- * or when exiting Blender.
- */
-void BKE_blender_userdef_free_data(UserDef *userdef)
+static void userdef_free_keymaps(UserDef *userdef)
 {
-#define U _invalid_access_ /* ensure no accidental global access */
-#ifdef U  /* quiet warning */
-#endif
-
-       for (wmKeyMap *km = userdef->user_keymaps.first; km; km = km->next) {
+       for (wmKeyMap *km = userdef->user_keymaps.first, *km_next; km; km = km_next) {
+               km_next = km->next;
                for (wmKeyMapDiffItem *kmdi = km->diff_items.first; kmdi; kmdi = kmdi->next) {
                        if (kmdi->add_item) {
                                keymap_item_free(kmdi->add_item);
@@ -185,8 +178,14 @@ void BKE_blender_userdef_free_data(UserDef *userdef)
 
                BLI_freelistN(&km->diff_items);
                BLI_freelistN(&km->items);
+
+               MEM_freeN(km);
        }
+       BLI_listbase_clear(&userdef->user_keymaps);
+}
 
+static void userdef_free_addons(UserDef *userdef)
+{
        for (bAddon *addon = userdef->addons.first, *addon_next; addon; addon = addon_next) {
                addon_next = addon->next;
                if (addon->prop) {
@@ -195,6 +194,21 @@ void BKE_blender_userdef_free_data(UserDef *userdef)
                }
                MEM_freeN(addon);
        }
+       BLI_listbase_clear(&userdef->addons);
+}
+
+/**
+ * When loading a new userdef from file,
+ * or when exiting Blender.
+ */
+void BKE_blender_userdef_free_data(UserDef *userdef)
+{
+#define U _invalid_access_ /* ensure no accidental global access */
+#ifdef U  /* quiet warning */
+#endif
+
+       userdef_free_keymaps(userdef);
+       userdef_free_addons(userdef);
 
        for (uiFont *font = userdef->uifonts.first; font; font = font->next) {
                BLF_unload_id(font->blf_id);
@@ -207,7 +221,6 @@ void BKE_blender_userdef_free_data(UserDef *userdef)
        BLI_freelistN(&userdef->uistyles);
        BLI_freelistN(&userdef->uifonts);
        BLI_freelistN(&userdef->themes);
-       BLI_freelistN(&userdef->user_keymaps);
 
 #undef U
 }
index d61058744d0edfe6076c571a96d37d26c9fd37ab..b0e828772411298b4e58650a6e30048f8684b0b9 100644 (file)
@@ -2578,7 +2578,6 @@ static void draw_ebones(View3D *v3d, ARegion *ar, Object *ob, const short dt)
                                                /*      Draw name */
                                                if (arm->flag & ARM_DRAWNAMES) {
                                                        mid_v3_v3v3(vec, eBone->head, eBone->tail);
-                                                       glRasterPos3fv(vec);
                                                        view3d_cached_text_draw_add(vec, eBone->name, strlen(eBone->name), 10, 0, col);
                                                }
                                                /*      Draw additional axes */
index 5292ab83cde7c0390bf8af0ca1433ab65a9ab1f0..61645d8a0917632173d36841768e21c7e0ddfa11 100644 (file)
@@ -1469,7 +1469,7 @@ void WM_OT_read_homefile(wmOperatorType *ot)
        RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE);
 
        /* So the splash can be kept open after loading a file (for templates). */
-       prop = RNA_def_boolean(ot->srna, "use_splash", true, "Splash", "");
+       prop = RNA_def_boolean(ot->srna, "use_splash", false, "Splash", "");
        RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE);
 
        /* omit poll to run in background mode */