Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2022-01-11 01:23:23 +0300
committerClément Foucault <foucault.clem@gmail.com>2022-01-11 01:23:23 +0300
commit892a4927f9d97a6e591a8f07fe67bd264c2184b1 (patch)
tree58a2787c683bedbe94ff01fe0faa80e5bc59cf05 /source
parent8fe642e97ae4b860e37d90a2c2c1fe2f8e38df79 (diff)
parentfe82b8d1e8425c2e9ba30f85de20f85de274dd99 (diff)
Merge branch 'master' into tmp-vector-template
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenlib/tests/BLI_any_test.cc14
-rw-r--r--source/blender/editors/interface/interface_handlers.c7
-rw-r--r--source/blender/imbuf/intern/dds/Stream.cpp25
-rw-r--r--source/blender/makesdna/DNA_node_types.h24
-rw-r--r--source/blender/makesrna/intern/rna_nodetree.c1
-rw-r--r--source/blender/makesrna/intern/rna_render.c17
-rw-r--r--source/blender/nodes/geometry/nodes/node_geo_input_normal.cc1
7 files changed, 68 insertions, 21 deletions
diff --git a/source/blender/blenlib/tests/BLI_any_test.cc b/source/blender/blenlib/tests/BLI_any_test.cc
index 226088cf3c7..436a1d5fa4a 100644
--- a/source/blender/blenlib/tests/BLI_any_test.cc
+++ b/source/blender/blenlib/tests/BLI_any_test.cc
@@ -9,7 +9,7 @@ namespace blender::tests {
TEST(any, DefaultConstructor)
{
- Any a;
+ Any<> a;
EXPECT_FALSE(a.has_value());
}
@@ -24,11 +24,11 @@ TEST(any, AssignInt)
a = 10;
EXPECT_EQ(value, 10);
- Any b = a;
+ Any<> b = a;
EXPECT_TRUE(b.has_value());
EXPECT_EQ(b.get<int>(), 10);
- Any c = std::move(a);
+ Any<> c = std::move(a);
EXPECT_TRUE(c);
EXPECT_EQ(c.get<int>(), 10);
@@ -48,11 +48,11 @@ TEST(any, AssignMap)
map.add(4, 2);
EXPECT_EQ((a.get<Map<int, int>>().lookup(4)), 2);
- Any b = a;
+ Any<> b = a;
EXPECT_TRUE(b);
EXPECT_EQ((b.get<Map<int, int>>().lookup(4)), 2);
- Any c = std::move(a);
+ Any<> c = std::move(a);
c = c;
EXPECT_TRUE(b);
EXPECT_EQ((c.get<Map<int, int>>().lookup(4)), 2);
@@ -64,9 +64,9 @@ TEST(any, AssignAny)
{
Any<> a = 5;
Any<> b = std::string("hello");
- Any c;
+ Any<> c;
- Any z;
+ Any<> z;
EXPECT_FALSE(z.has_value());
z = a;
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index 7521ccf4e4c..6ecaead67ce 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -3762,7 +3762,12 @@ static void ui_do_but_textedit(
case EVT_VKEY:
case EVT_XKEY:
case EVT_CKEY:
- if (IS_EVENT_MOD(event, ctrl, oskey)) {
+#if defined(__APPLE__)
+ if ((event->oskey && !IS_EVENT_MOD(event, shift, alt, ctrl)) ||
+ (event->ctrl && !IS_EVENT_MOD(event, shift, alt, oskey))) {
+#else
+ if (event->ctrl && !IS_EVENT_MOD(event, shift, alt, oskey)) {
+#endif
if (event->type == EVT_VKEY) {
changed = ui_textedit_copypaste(but, data, UI_TEXTEDIT_PASTE);
}
diff --git a/source/blender/imbuf/intern/dds/Stream.cpp b/source/blender/imbuf/intern/dds/Stream.cpp
index 3dab3c35675..31bf2076ed1 100644
--- a/source/blender/imbuf/intern/dds/Stream.cpp
+++ b/source/blender/imbuf/intern/dds/Stream.cpp
@@ -26,6 +26,21 @@
static const char *msg_error_seek = "DDS: trying to seek beyond end of stream (corrupt file?)";
static const char *msg_error_read = "DDS: trying to read beyond end of stream (corrupt file?)";
+inline bool is_read_within_bounds(const Stream &mem, unsigned int cnt)
+{
+ if (mem.pos >= mem.size) {
+ /* No more data remained in the memory buffer. */
+ return false;
+ }
+
+ if (cnt > mem.size - mem.pos) {
+ /* Reading past the memory bounds. */
+ return false;
+ }
+
+ return true;
+}
+
unsigned int Stream::seek(unsigned int p)
{
if (p > size) {
@@ -40,7 +55,7 @@ unsigned int Stream::seek(unsigned int p)
unsigned int mem_read(Stream &mem, unsigned long long &i)
{
- if (mem.pos + 8 > mem.size) {
+ if (!is_read_within_bounds(mem, 8)) {
mem.set_failed(msg_error_seek);
return 0;
}
@@ -51,7 +66,7 @@ unsigned int mem_read(Stream &mem, unsigned long long &i)
unsigned int mem_read(Stream &mem, unsigned int &i)
{
- if (mem.pos + 4 > mem.size) {
+ if (!is_read_within_bounds(mem, 4)) {
mem.set_failed(msg_error_read);
return 0;
}
@@ -62,7 +77,7 @@ unsigned int mem_read(Stream &mem, unsigned int &i)
unsigned int mem_read(Stream &mem, unsigned short &i)
{
- if (mem.pos + 2 > mem.size) {
+ if (!is_read_within_bounds(mem, 2)) {
mem.set_failed(msg_error_read);
return 0;
}
@@ -73,7 +88,7 @@ unsigned int mem_read(Stream &mem, unsigned short &i)
unsigned int mem_read(Stream &mem, unsigned char &i)
{
- if (mem.pos + 1 > mem.size) {
+ if (!is_read_within_bounds(mem, 1)) {
mem.set_failed(msg_error_read);
return 0;
}
@@ -84,7 +99,7 @@ unsigned int mem_read(Stream &mem, unsigned char &i)
unsigned int mem_read(Stream &mem, unsigned char *i, unsigned int cnt)
{
- if (mem.pos + cnt > mem.size) {
+ if (!is_read_within_bounds(mem, cnt)) {
mem.set_failed(msg_error_read);
return 0;
}
diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h
index a2b8546f623..b44366642f3 100644
--- a/source/blender/makesdna/DNA_node_types.h
+++ b/source/blender/makesdna/DNA_node_types.h
@@ -106,15 +106,21 @@ typedef struct bNodeSocket {
/** MAX_NAME. */
char name[64];
- /* XXX deprecated, only used for the Image and OutputFile nodes,
- * should be removed at some point.
- */
- /** Custom storage. */
+ /** Only used for the Image and OutputFile nodes, should be removed at some point. */
void *storage;
- short type, flag;
- /** Max. number of links. Read via nodeSocketLinkLimit,
- * because the limit might be defined on the socket type. */
+ /**
+ * The socket's data type. #eNodeSocketDatatype.
+ */
+ short type;
+ /** #eNodeSocketFlag */
+ short flag;
+ /**
+ * Maximum number of links that can connect to the socket. Read via #nodeSocketLinkLimit, because
+ * the limit might be defined on the socket type, in which case this value does not have any
+ * effect. It is necessary to store this in the socket because it is exposed as an RNA property
+ * for custom nodes.
+ */
short limit;
/** Input/output type. */
short in_out;
@@ -123,6 +129,10 @@ typedef struct bNodeSocket {
/** Runtime type identifier. */
char idname[64];
+ /**
+ * The location of the sockets, in the view-space of the node editor.
+ * \note These are runtime data-- only calculated when drawing, and could be removed from DNA.
+ */
float locx, locy;
/** Default input value used for unlinked sockets. */
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index d7da36295c1..e7307e6e058 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -3070,7 +3070,6 @@ static bool rna_NodeSocket_is_output_get(PointerRNA *ptr)
static void rna_NodeSocket_link_limit_set(PointerRNA *ptr, int value)
{
- /* Does not have any effect if the link limit is defined in the socket type. */
bNodeSocket *sock = ptr->data;
sock->limit = (value == 0 ? 0xFFF : value);
}
diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c
index fcb46904e8d..65e9a140f82 100644
--- a/source/blender/makesrna/intern/rna_render.c
+++ b/source/blender/makesrna/intern/rna_render.c
@@ -98,6 +98,7 @@ const EnumPropertyItem rna_enum_bake_pass_type_items[] = {
# include "RNA_access.h"
+# include "BKE_appdir.h"
# include "BKE_context.h"
# include "BKE_report.h"
@@ -420,6 +421,16 @@ static StructRNA *rna_RenderEngine_refine(PointerRNA *ptr)
&RNA_RenderEngine;
}
+static void rna_RenderEngine_tempdir_get(PointerRNA *UNUSED(ptr), char *value)
+{
+ BLI_strncpy(value, BKE_tempdir_session(), FILE_MAX);
+}
+
+static int rna_RenderEngine_tempdir_length(PointerRNA *UNUSED(ptr))
+{
+ return strlen(BKE_tempdir_session());
+}
+
static PointerRNA rna_RenderEngine_render_get(PointerRNA *ptr)
{
RenderEngine *engine = (RenderEngine *)ptr->data;
@@ -860,6 +871,12 @@ static void rna_def_render_engine(BlenderRNA *brna)
RNA_def_property_int_sdna(prop, NULL, "resolution_y");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ prop = RNA_def_property(srna, "temporary_directory", PROP_STRING, PROP_NONE);
+ RNA_def_function_ui_description(func, "The temp directory used by Blender");
+ RNA_def_property_string_funcs(
+ prop, "rna_RenderEngine_tempdir_get", "rna_RenderEngine_tempdir_length", NULL);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+
/* Render Data */
prop = RNA_def_property(srna, "render", PROP_POINTER, PROP_NONE);
RNA_def_property_struct_type(prop, "RenderSettings");
diff --git a/source/blender/nodes/geometry/nodes/node_geo_input_normal.cc b/source/blender/nodes/geometry/nodes/node_geo_input_normal.cc
index dd991d29585..60e6b8088b4 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_input_normal.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_input_normal.cc
@@ -166,6 +166,7 @@ static void calculate_nurbs_normals(const NURBSpline &spline, MutableSpan<float3
PolySpline poly_spline;
poly_spline.resize(spline.size());
poly_spline.positions().copy_from(spline.positions());
+ poly_spline.tilts().copy_from(spline.tilts());
normals.copy_from(poly_spline.evaluated_normals());
}