[Bf-blender-cvs] [c89e73209aa] temp-T97352-3d-texturing-seam-bleeding: Fix crash painting on byte textures.

Jeroen Bakker noreply at git.blender.org
Wed Apr 20 13:23:57 CEST 2022


Commit: c89e73209aa175d18aeb9eee8db7d67a6e6467c0
Author: Jeroen Bakker
Date:   Wed Apr 20 10:42:59 2022 +0200
Branches: temp-T97352-3d-texturing-seam-bleeding
https://developer.blender.org/rBc89e73209aa175d18aeb9eee8db7d67a6e6467c0

Fix crash painting on byte textures.

===================================================================

M	source/blender/blenkernel/intern/pbvh_pixels_seams.cc

===================================================================

diff --git a/source/blender/blenkernel/intern/pbvh_pixels_seams.cc b/source/blender/blenkernel/intern/pbvh_pixels_seams.cc
index 247c6a6c38b..d70bdd0767b 100644
--- a/source/blender/blenkernel/intern/pbvh_pixels_seams.cc
+++ b/source/blender/blenkernel/intern/pbvh_pixels_seams.cc
@@ -395,15 +395,19 @@ void BKE_pbvh_pixels_fix_seams(PBVHNode *node, Image *image, ImageUser *image_us
       continue;
     }
 
-    for (SeamFix &fix : fixes.pixels) {
-      int src_offset = fix.src_pixel.y * src_image_buffer->x + fix.src_pixel.x;
-      int dst_offset = fix.dst_pixel.y * dst_image_buffer->x + fix.dst_pixel.x;
-      if (src_image_buffer->rect_float != nullptr && dst_image_buffer->rect_float != nullptr) {
+    if (src_image_buffer->rect_float != nullptr && dst_image_buffer->rect_float != nullptr) {
+      for (SeamFix &fix : fixes.pixels) {
+        int src_offset = fix.src_pixel.y * src_image_buffer->x + fix.src_pixel.x;
+        int dst_offset = fix.dst_pixel.y * dst_image_buffer->x + fix.dst_pixel.x;
         copy_v4_v4(&dst_image_buffer->rect_float[dst_offset * 4],
                    &src_image_buffer->rect_float[src_offset * 4]);
       }
-      else if (src_image_buffer->rect != nullptr && dst_image_buffer->rect != nullptr) {
-        dst_image_buffer->rect_float[dst_offset] = src_image_buffer->rect_float[src_offset];
+    }
+    else if (src_image_buffer->rect != nullptr && dst_image_buffer->rect != nullptr) {
+      for (SeamFix &fix : fixes.pixels) {
+        int src_offset = fix.src_pixel.y * src_image_buffer->x + fix.src_pixel.x;
+        int dst_offset = fix.dst_pixel.y * dst_image_buffer->x + fix.dst_pixel.x;
+        dst_image_buffer->rect[dst_offset] = src_image_buffer->rect[src_offset];
       }
     }



More information about the Bf-blender-cvs mailing list