Merge branch 'master' into blender2.8
authorAntonio Vazquez <blendergit@gmail.com>
Tue, 5 Dec 2017 18:04:34 +0000 (19:04 +0100)
committerAntonio Vazquez <blendergit@gmail.com>
Tue, 5 Dec 2017 18:04:34 +0000 (19:04 +0100)
1  2 
build_files/cmake/platform/platform_win32.cmake
source/blender/blenkernel/BKE_animsys.h
source/blender/editors/space_sequencer/sequencer_edit.c

index 5cc5fb8c7d60a3b2d4b585e3d9c255a1c81ad75c,2a62ba7bf2075fb70f1dfc869a35528af87cac38..d1a19784365a5a05f992574c6a64f243e87809e3
@@@ -142,10 -142,8 +142,8 @@@ if(NOT DEFINED LIBDIR
                message(STATUS "32 bit compiler detected.")
                set(LIBDIR_BASE "windows")
        endif()
-       if(MSVC_VERSION EQUAL 1911)
-               message(STATUS "Visual Studio 2017 detected.")
-               set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_BASE}_vc14)
-       elseif(MSVC_VERSION EQUAL 1910)
+       # Can be 1910..1912
+       if(MSVC_VERSION GREATER_EQUAL 1910)
                message(STATUS "Visual Studio 2017 detected.")
                set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_BASE}_vc14)
        elseif(MSVC_VERSION EQUAL 1900)
@@@ -520,21 -518,22 +518,21 @@@ set(WINTAB_INC ${LIBDIR}/wintab/include
  if(WITH_OPENAL)
        set(OPENAL ${LIBDIR}/openal)
        set(OPENALDIR ${LIBDIR}/openal)
 -      set(OPENAL_INCLUDE_DIR ${OPENAL}/include)
 +      set(OPENAL_INCLUDE_DIR ${OPENAL}/include/AL)
        set(OPENAL_LIBPATH ${OPENAL}/lib)
        if(MSVC)
                set(OPENAL_LIBRARY ${OPENAL_LIBPATH}/openal32.lib)
        else()
                set(OPENAL_LIBRARY ${OPENAL_LIBPATH}/wrap_oal.lib)
        endif()
 -      
 +
  endif()
  
  if(WITH_CODEC_SNDFILE)
 -      set(SNDFILE ${LIBDIR}/sndfile)
 -      set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
 -      set(SNDFILE_LIBPATH ${SNDFILE}/lib) # TODO, deprecate
 -      set(SNDFILE_LIBRARIES ${SNDFILE_LIBPATH}/libsndfile-1.lib)
 -      
 +      set(LIBSNDFILE ${LIBDIR}/sndfile)
 +      set(LIBSNDFILE_INCLUDE_DIRS ${LIBSNDFILE}/include)
 +      set(LIBSNDFILE_LIBPATH ${LIBSNDFILE}/lib) # TODO, deprecate
 +      set(LIBSNDFILE_LIBRARIES ${LIBSNDFILE_LIBPATH}/libsndfile-1.lib)
  endif()
  
  if(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
index 7b3ae70b9f89eb1b527ecdb2db665bcccc8528df,a70690d402969e400026c61f17c62615fe6e0ad9..d95b4a838b8a9d6244704addbbbeb8584f142821
@@@ -35,6 -35,7 +35,7 @@@ struct ID
  struct ListBase;
  struct Main;
  struct AnimData;
+ struct FCurve;
  struct KeyingSet;
  struct KS_Path;
  struct PathResolvedRNA;
@@@ -46,7 -47,6 +47,7 @@@ struct ReportList
  struct bAction;
  struct bActionGroup;
  struct AnimMapper;
 +struct FCurve;
  
  /* ************************************* */
  /* AnimData API */
@@@ -148,7 -148,7 +149,7 @@@ char *BKE_animdata_driver_path_hack(str
                                      char *base_path);
  
  /* ************************************* */
 -/* Batch AnimData API */
 +/* Gwn_Batch AnimData API */
  
  /* Define for callback looper used in BKE_animdata_main_cb */
  typedef void (*ID_AnimData_Edit_Callback)(struct ID *id, struct AnimData *adt, void *user_data);
@@@ -179,6 -179,7 +180,6 @@@ void BKE_animsys_evaluate_animdata(stru
  void BKE_animsys_evaluate_all_animation(struct Main *main, struct Scene *scene, float ctime);
  
  /* TODO(sergey): This is mainly a temp public function. */
 -struct FCurve;
  bool BKE_animsys_execute_fcurve(struct PointerRNA *ptr, struct AnimMapper *remap, struct FCurve *fcu, float curval);
  
  /* ------------ Specialized API --------------- */
@@@ -201,8 -202,8 +202,8 @@@ void animsys_evaluate_action_group(stru
  
  struct EvaluationContext;
  
 -void BKE_animsys_eval_animdata(struct EvaluationContext *eval_ctx, struct ID *id);
 -void BKE_animsys_eval_driver(struct EvaluationContext *eval_ctx, struct ID *id, struct FCurve *fcurve);
 +void BKE_animsys_eval_animdata(const struct EvaluationContext *eval_ctx, struct ID *id);
 +void BKE_animsys_eval_driver(const struct EvaluationContext *eval_ctx, struct ID *id, struct FCurve *fcurve);
  
  /* ************************************* */
  
index 9e48ab294d91fdb6bc99db564105743a20157e76,f0d14825bb229558e9daadb7ac69e4dd5f7412f1..8f6eb064b0dbf154baf23c78f2e81ff1e7684184
@@@ -695,7 -695,7 +695,7 @@@ static Sequence *cut_seq_hard(Scene *sc
                BKE_sequence_calc(scene, seq);
        }
  
-       if ((seq->startstill) && (cutframe < seq->start)) {
+       if ((seq->startstill) && (cutframe <= seq->start)) {
                /* don't do funny things with METAs ... */
                if (seq->type == SEQ_TYPE_META) {
                        skip_dup = true;
                }
        }
        /* normal strip */
-       else if ((cutframe >= seq->start) && (cutframe <= (seq->start + seq->len))) {
+       else if ((cutframe >= seq->start) && (cutframe < (seq->start + seq->len))) {
                seq->endofs = 0;
                seq->endstill = 0;
                seq->anim_endofs += (seq->start + seq->len) - cutframe;
        }
        /* strips with extended stillframes after */
-       else if (((seq->start + seq->len) < cutframe) && (seq->endstill)) {
+       else if (((seq->start + seq->len) == cutframe) ||
+                (((seq->start + seq->len) < cutframe) && (seq->endstill)))
+       {
                seq->endstill -= seq->enddisp - cutframe;
                /* don't do funny things with METAs ... */
                if (seq->type == SEQ_TYPE_META) {
                }
                
                /* normal strip */
-               else if ((cutframe >= seqn->start) && (cutframe <= (seqn->start + seqn->len))) {
+               else if ((cutframe >= seqn->start) && (cutframe < (seqn->start + seqn->len))) {
                        seqn->start = cutframe;
                        seqn->startstill = 0;
                        seqn->startofs = 0;
                }
                
                /* strips with extended stillframes after */
-               else if (((seqn->start + seqn->len) < cutframe) && (seqn->endstill)) {
+               else if (((seqn->start + seqn->len) == cutframe) ||
+                        (((seqn->start + seqn->len) < cutframe) && (seqn->endstill)))
+               {
                        seqn->start = cutframe;
                        seqn->startofs = 0;
                        seqn->anim_startofs += ts.len - 1;
@@@ -791,7 -795,7 +795,7 @@@ static Sequence *cut_seq_soft(Scene *sc
        /* First Strip! */
        /* strips with extended stillfames before */
        
-       if ((seq->startstill) && (cutframe < seq->start)) {
+       if ((seq->startstill) && (cutframe <= seq->start)) {
                /* don't do funny things with METAs ... */
                if (seq->type == SEQ_TYPE_META) {
                        skip_dup = true;
                }
        }
        /* normal strip */
-       else if ((cutframe >= seq->start) && (cutframe <= (seq->start + seq->len))) {
+       else if ((cutframe >= seq->start) && (cutframe < (seq->start + seq->len))) {
                seq->endofs = (seq->start + seq->len) - cutframe;
        }
        /* strips with extended stillframes after */
-       else if (((seq->start + seq->len) < cutframe) && (seq->endstill)) {
+       else if (((seq->start + seq->len) == cutframe) ||
+                (((seq->start + seq->len) < cutframe) && (seq->endstill)))
+       {
                seq->endstill -= seq->enddisp - cutframe;
                /* don't do funny things with METAs ... */
                if (seq->type == SEQ_TYPE_META) {
                        seqn->endofs = ts.endofs;
                        seqn->endstill = ts.endstill;
                }
-               
                /* normal strip */
-               else if ((cutframe >= seqn->start) && (cutframe <= (seqn->start + seqn->len))) {
+               if ((cutframe >= seqn->start) && (cutframe < (seqn->start + seqn->len))) {
                        seqn->startstill = 0;
                        seqn->startofs = cutframe - ts.start;
                        seqn->endofs = ts.endofs;
                }
                
                /* strips with extended stillframes after */
-               else if (((seqn->start + seqn->len) < cutframe) && (seqn->endstill)) {
+               else if (((seqn->start + seqn->len) == cutframe) ||
+                        (((seqn->start + seqn->len) < cutframe) && (seqn->endstill)))
+               {
                        seqn->start = cutframe - ts.len + 1;
                        seqn->startofs = ts.len - 1;
                        seqn->endstill = ts.enddisp - cutframe - 1;
@@@ -1257,6 -1265,7 +1265,6 @@@ typedef struct SlipData 
        int num_seq;
        bool slow;
        int slow_offset; /* offset at the point where offset was turned on */
 -      void *draw_handle;
        NumInput num_input;
  } SlipData;
  
@@@ -1291,6 -1300,21 +1299,6 @@@ static void transseq_restore(TransSeq *
        seq->len = ts->len;
  }
  
 -static void draw_slip_extensions(const bContext *C, ARegion *ar, void *data)
 -{
 -      Scene *scene = CTX_data_scene(C);
 -      SlipData *td = data;
 -      int i;
 -
 -      for (i = 0; i < td->num_seq; i++) {
 -              Sequence *seq = td->seq_array[i];
 -
 -              if ((seq->type != SEQ_TYPE_META) && td->trim[i]) {
 -                      draw_sequence_extensions(scene, ar, seq);
 -              }
 -      }
 -}
 -
  static int slip_add_sequences_rec(ListBase *seqbasep, Sequence **seq_array, bool *trim, int offset, bool do_trim)
  {
        Sequence *seq;
@@@ -1339,6 -1363,7 +1347,6 @@@ static int sequencer_slip_invoke(bConte
        SlipData *data;
        Scene *scene = CTX_data_scene(C);
        Editing *ed = BKE_sequencer_editing_get(scene, false);
 -      ARegion *ar = CTX_wm_region(C);
        float mouseloc[2];
        int num_seq, i;
        View2D *v2d = UI_view2d_fromcontext(C);
                transseq_backup(data->ts + i, data->seq_array[i]);
        }
  
 -      data->draw_handle = ED_region_draw_cb_activate(ar->type, draw_slip_extensions, data, REGION_DRAW_POST_VIEW);
 -
        UI_view2d_region_to_view(v2d, event->mval[0], event->mval[1], &mouseloc[0], &mouseloc[1]);
  
        copy_v2_v2_int(data->init_mouse, event->mval);
@@@ -1509,6 -1536,7 +1517,6 @@@ static int sequencer_slip_modal(bContex
        Scene *scene = CTX_data_scene(C);
        SlipData *data = (SlipData *)op->customdata;
        ScrArea *sa = CTX_wm_area(C);
 -      ARegion *ar = CTX_wm_region(C);
        const bool has_numInput = hasNumInput(&data->num_input);
        bool handled = true;
  
                case RETKEY:
                case SPACEKEY:
                {
 -                      ED_region_draw_cb_exit(ar->type, data->draw_handle);
                        MEM_freeN(data->seq_array);
                        MEM_freeN(data->trim);
                        MEM_freeN(data->ts);
                                BKE_sequence_calc(scene, seq);
                        }
  
 -                      ED_region_draw_cb_exit(ar->type, data->draw_handle);
 -
                        MEM_freeN(data->seq_array);
                        MEM_freeN(data->ts);
                        MEM_freeN(data->trim);