diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2022-01-11 01:23:23 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2022-01-11 01:23:23 +0300 |
commit | 892a4927f9d97a6e591a8f07fe67bd264c2184b1 (patch) | |
tree | 58a2787c683bedbe94ff01fe0faa80e5bc59cf05 /source | |
parent | 8fe642e97ae4b860e37d90a2c2c1fe2f8e38df79 (diff) | |
parent | fe82b8d1e8425c2e9ba30f85de20f85de274dd99 (diff) |
Merge branch 'master' into tmp-vector-template
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenlib/tests/BLI_any_test.cc | 14 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_handlers.c | 7 | ||||
-rw-r--r-- | source/blender/imbuf/intern/dds/Stream.cpp | 25 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_node_types.h | 24 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_nodetree.c | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_render.c | 17 | ||||
-rw-r--r-- | source/blender/nodes/geometry/nodes/node_geo_input_normal.cc | 1 |
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()); } |