Merge branch 'master' into blender2.8
authorBastien Montagne <montagne29@wanadoo.fr>
Thu, 14 Jun 2018 10:39:52 +0000 (12:39 +0200)
committerBastien Montagne <montagne29@wanadoo.fr>
Thu, 14 Jun 2018 10:39:52 +0000 (12:39 +0200)
Conflicts:
source/blender/modifiers/intern/MOD_normal_edit.c
source/blender/windowmanager/intern/wm_files.c

1  2 
release/scripts/startup/bl_ui/properties_data_modifier.py
source/blender/makesdna/DNA_modifier_types.h
source/blender/makesrna/intern/rna_modifier.c
source/blender/modifiers/intern/MOD_normal_edit.c
source/blender/windowmanager/intern/wm_cursors.c
source/blender/windowmanager/intern/wm_event_system.c
source/blender/windowmanager/intern/wm_files.c
source/blender/windowmanager/intern/wm_init_exit.c
source/blender/windowmanager/intern/wm_keymap.c
source/blender/windowmanager/intern/wm_window.c
source/blender/windowmanager/wm_files.h

@@@ -278,11 -273,10 +279,11 @@@ static void normalEditModifier_do_radia
                            mix_limit, mix_mode, num_verts, mloop, loopnors, nos, num_loops);
        }
  
-       if (polygons_check_flip(mloop, nos, &mesh->ldata, mpoly, polynors, num_polys)) {
 -      if (do_polynors_fix && polygons_check_flip(mloop, nos, dm->getLoopDataLayout(dm), mpoly, polynors, num_polys)) {
 -              dm->dirty |= DM_DIRTY_TESS_CDLAYERS;
++      if (do_polynors_fix && polygons_check_flip(mloop, nos, &mesh->ldata, mpoly, polynors, num_polys)) {
 +              /* XXX TODO is this still needed? */
 +              // mesh->dirty |= DM_DIRTY_TESS_CDLAYERS;
                /* We need to recompute vertex normals! */
 -              dm->calcNormals(dm);
 +              BKE_mesh_calc_normals(mesh);
        }
  
        BKE_mesh_normals_loop_custom_set(mvert, num_verts, medge, num_edges, mloop, nos, num_loops,
@@@ -301,8 -295,10 +302,9 @@@ static void normalEditModifier_do_direc
          MVert *mvert, const int num_verts, MEdge *medge, const int num_edges,
          MLoop *mloop, const int num_loops, MPoly *mpoly, const int num_polys)
  {
+       const bool do_polynors_fix = (enmd->flag & MOD_NORMALEDIT_NO_POLYNORS_FIX) == 0;
        const bool use_parallel_normals = (enmd->flag & MOD_NORMALEDIT_USE_DIRECTION_PARALLEL) != 0;
  
 -      float (*cos)[3] = MEM_malloc_arrayN((size_t)num_verts, sizeof(*cos), __func__);
        float (*nos)[3] = MEM_malloc_arrayN((size_t)num_loops, sizeof(*nos), __func__);
  
        float target_co[3];
                            mix_limit, mix_mode, num_verts, mloop, loopnors, nos, num_loops);
        }
  
-       if (polygons_check_flip(mloop, nos, &mesh->ldata, mpoly, polynors, num_polys)) {
 -      if (do_polynors_fix && polygons_check_flip(mloop, nos, dm->getLoopDataLayout(dm), mpoly, polynors, num_polys)) {
 -              dm->dirty |= DM_DIRTY_TESS_CDLAYERS;
++      if (do_polynors_fix && polygons_check_flip(mloop, nos, &mesh->ldata, mpoly, polynors, num_polys)) {
 +              mesh->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
        }
  
        BKE_mesh_normals_loop_custom_set(mvert, num_verts, medge, num_edges, mloop, nos, num_loops,
@@@ -483,7 -467,7 +484,7 @@@ static void wm_file_read_post(bContext 
        CTX_wm_window_set(C, wm->windows.first);
  
        ED_editors_init(C);
-       DEG_on_visible_update(CTX_data_main(C), true);
 -      DAG_on_visible_update(bmain, true);
++      DEG_on_visible_update(bmain, true);
  
  #ifdef WITH_PYTHON
        if (is_startup_file) {
        WM_operatortype_last_properties_clear_all();
  
        /* important to do before NULL'ing the context */
-       BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_VERSION_UPDATE);
-       BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_LOAD_POST);
+       BLI_callback_exec(bmain, NULL, BLI_CB_EVT_VERSION_UPDATE);
+       BLI_callback_exec(bmain, NULL, BLI_CB_EVT_LOAD_POST);
  
 -      /* Would otherwise be handled by event loop.
 -       *
 -       * Disabled for startup file, since it causes problems when PyDrivers are used in the startup file.
 -       * While its possible state of startup file may be wrong,
 -       * in this case users nearly always load a file to replace the startup file. */
 -      if (G.background && (is_startup_file == false)) {
 -              BKE_scene_update_tagged(bmain->eval_ctx, bmain, CTX_data_scene(C));
 -      }
 -
 +#if 1
        WM_event_add_notifier(C, NC_WM | ND_FILEREAD, NULL);
 +#else
 +      WM_msg_publish_static(CTX_wm_message_bus(C), WM_MSG_STATICTYPE_FILE_READ);
 +#endif
  
        /* report any errors.
         * currently disabled if addons aren't yet loaded */
@@@ -1413,10 -1404,10 +1415,10 @@@ static int wm_homefile_write_exec(bCont
                return OPERATOR_CANCELLED;
        }
  
-       BLI_callback_exec(G.main, NULL, BLI_CB_EVT_SAVE_PRE);
+       BLI_callback_exec(bmain, NULL, BLI_CB_EVT_SAVE_PRE);
  
        /* check current window and close it if temp */
 -      if (win && win->screen->temp)
 +      if (win && WM_window_is_temp_screen(win))
                wm_window_close(C, wm, win);
  
        /* update keymaps in user preferences */
        ED_editors_flush_edits(C, false);
  
        /*  force save as regular blend file */
 -      fileflags = G.fileflags & ~(G_FILE_COMPRESS | G_FILE_AUTOPLAY | G_FILE_HISTORY);
 +      fileflags = G.fileflags & ~(G_FILE_COMPRESS | G_FILE_HISTORY);
  
-       if (BLO_write_file(CTX_data_main(C), filepath, fileflags | G_FILE_USERPREFS, op->reports, NULL) == 0) {
+       if (BLO_write_file(bmain, filepath, fileflags | G_FILE_USERPREFS, op->reports, NULL) == 0) {
                printf("fail\n");
                return OPERATOR_CANCELLED;
        }