Merge branch 'blender-v2.82-release'
authorPhilipp Oeser <info@graphics-engineer.com>
Wed, 29 Jan 2020 19:25:35 +0000 (20:25 +0100)
committerPhilipp Oeser <info@graphics-engineer.com>
Wed, 29 Jan 2020 19:29:20 +0000 (20:29 +0100)
Merge conflict in source/blender/gpu/GPU_texture.h

1  2 
source/blender/blenloader/intern/versioning_280.c
source/blender/draw/engines/workbench/workbench_forward.c

index 7377f6a62a15d84e71ad3f81a17e7b6f8647be59,afe0d728934ab194287174bd33116cf614219a29..e92ae6e73cc258bfa37808d613d97368eb463cc0
@@@ -636,29 -636,6 +636,29 @@@ static ARegion *do_versions_add_region(
    return ar;
  }
  
 +static void do_versions_area_ensure_tool_region(Main *bmain,
 +                                                const short space_type,
 +                                                const short region_flag)
 +{
 +  for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) {
 +    for (ScrArea *sa = screen->areabase.first; sa; sa = sa->next) {
 +      for (SpaceLink *sl = sa->spacedata.first; sl; sl = sl->next) {
 +        if (sl->spacetype == space_type) {
 +          ListBase *regionbase = (sl == sa->spacedata.first) ? &sa->regionbase : &sl->regionbase;
 +          ARegion *ar = BKE_area_find_region_type(sa, RGN_TYPE_TOOLS);
 +          if (!ar) {
 +            ARegion *header = BKE_area_find_region_type(sa, RGN_TYPE_HEADER);
 +            ar = do_versions_add_region(RGN_TYPE_TOOLS, "tools region");
 +            BLI_insertlinkafter(regionbase, header, ar);
 +            ar->alignment = RGN_ALIGN_LEFT;
 +            ar->flag = region_flag;
 +          }
 +        }
 +      }
 +    }
 +  }
 +}
 +
  static void do_version_bones_split_bbone_scale(ListBase *lb)
  {
    for (Bone *bone = lb->first; bone; bone = bone->next) {
@@@ -2851,35 -2828,6 +2851,35 @@@ void blo_do_versions_280(FileData *fd, 
        }
      }
  
 +    /* Files stored pre 2.5 (possibly re-saved with newer versions) may have non-visible
 +     * spaces without a header (visible/active ones are properly versioned).
 +     * Multiple version patches below assume there's always a header though. So inserting this
 +     * patch in-between older ones to add a header when needed.
 +     *
 +     * From here on it should be fine to assume there always is a header.
 +     */
 +    if (!MAIN_VERSION_ATLEAST(bmain, 283, 1)) {
 +      for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) {
 +        for (ScrArea *sa = screen->areabase.first; sa; sa = sa->next) {
 +          for (SpaceLink *sl = sa->spacedata.first; sl; sl = sl->next) {
 +            ListBase *regionbase = (sl == sa->spacedata.first) ? &sa->regionbase : &sl->regionbase;
 +            ARegion *ar_header = do_versions_find_region_or_null(regionbase, RGN_TYPE_HEADER);
 +
 +            if (!ar_header) {
 +              /* Headers should always be first in the region list, except if there's also a
 +               * tool-header. These were only introduced in later versions though, so should be
 +               * fine to always insert headers first. */
 +              BLI_assert(!do_versions_find_region_or_null(regionbase, RGN_TYPE_TOOL_HEADER));
 +
 +              ARegion *ar = do_versions_add_region(RGN_TYPE_HEADER, "header 2.83.1 versioning");
 +              ar->alignment = (U.uiflag & USER_HEADER_BOTTOM) ? RGN_ALIGN_BOTTOM : RGN_ALIGN_TOP;
 +              BLI_addhead(regionbase, ar);
 +            }
 +          }
 +        }
 +      }
 +    }
 +
      for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) {
        for (ScrArea *sa = screen->areabase.first; sa; sa = sa->next) {
          for (SpaceLink *sl = sa->spacedata.first; sl; sl = sl->next) {
            ListBase *regionbase = (sl == sa->spacedata.first) ? &sa->regionbase : &sl->regionbase;
            /* All spaces that use tools must be eventually added. */
            ARegion *ar = NULL;
 -          if (ELEM(sl->spacetype, SPACE_VIEW3D, SPACE_IMAGE) &&
 +          if (ELEM(sl->spacetype, SPACE_VIEW3D, SPACE_IMAGE, SPACE_SEQ) &&
                ((ar = do_versions_find_region_or_null(regionbase, RGN_TYPE_TOOL_HEADER)) == NULL)) {
              /* Add tool header. */
              ar = do_versions_add_region(RGN_TYPE_TOOL_HEADER, "tool header");
    {
      /* Keep this block, even when empty. */
  
 +    /* Sequencer Tool region */
 +    do_versions_area_ensure_tool_region(bmain, SPACE_SEQ, RGN_FLAG_HIDDEN);
 +
      /* Cloth internal springs */
      for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) {
        for (ModifierData *md = ob->modifiers.first; md; md = md->next) {
      }
  
      /* Pose brush IK segments. */
-     if (!DNA_struct_elem_find(fd->filesdna, "Brush", "int", "pose_ik_segments")) {
-       for (Brush *br = bmain->brushes.first; br; br = br->id.next) {
+     for (Brush *br = bmain->brushes.first; br; br = br->id.next) {
+       if (br->pose_ik_segments == 0) {
          br->pose_ik_segments = 1;
        }
      }
index e5f121a690d9e0a750d30dce4f46a832b7d1f76b,4366c87678fdc9b1dedb14c3eabbb6c45741e011..97bea58f31b7d03e77fbabde1b174bf66c41ed61
@@@ -210,7 -210,8 +210,8 @@@ WORKBENCH_MaterialData *workbench_forwa
      if (color_type == V3D_SHADING_TEXTURE_COLOR) {
        material->shgrp_object_outline = DRW_shgroup_create(sh_data->object_outline_texture_sh,
                                                            psl->object_outline_pass);
-       GPUTexture *tex = GPU_texture_from_blender(material->ima, material->iuser, GL_TEXTURE_2D);
+       GPUTexture *tex = GPU_texture_from_blender(
+           material->ima, material->iuser, NULL, GL_TEXTURE_2D);
        DRW_shgroup_uniform_texture(material->shgrp_object_outline, "image", tex);
      }
      else {
@@@ -756,7 -757,7 +757,7 @@@ void workbench_forward_cache_populate(W
          memset(gpumat_array, 0, sizeof(*gpumat_array) * materials_len);
  
          struct GPUBatch **mat_geom = DRW_cache_object_surface_material_get(
 -            ob, gpumat_array, materials_len, NULL, NULL, NULL);
 +            ob, gpumat_array, materials_len);
          if (mat_geom) {
            for (int i = 0; i < materials_len; i++) {
              if (mat_geom[i] == NULL) {