Commit Graph

103325 Commits

Author SHA1 Message Date
Brecht Van Lommel
478e1ab6d3 Fix build error on Windows after BLI_read changes
Don't use posix-only ssize_t in platform independent code.

Pull Request: https://projects.blender.org/blender/blender/pulls/113493
2023-10-10 15:36:15 +02:00
Pratik Borhade
02b5ad05f6 Update drawtype when forcefield is added to empty object
For consistency, change drawtype of empty when forcefield is added to
fresh empty object.
Found this while checking #113460

Pull Request: https://projects.blender.org/blender/blender/pulls/113471
2023-10-10 15:21:41 +02:00
Campbell Barton
8d80d611e9 Use BLI_read instead of read to avoid issues with large files
Follow up to fix for #113473, similar issues exist elsewhere.
2023-10-10 22:47:35 +11:00
Campbell Barton
fa40724a72 BLI_fileops: Add 'BLI_read' wrapper to ensure the requested data is read
According to the documentation `read` isn't required to read all the
data requested. Although until recently I'd never encountered this and
none of Blender's code checks for read succeeding but not reading the
requested size.

Resolves #113473 where images over 2gb fail to load.

Ref !113474.
2023-10-10 22:27:40 +11:00
Sybren A. Stüvel
048625cc1f Anim: make bone colors library-overridable
Pose bone colors should be library-overridable, and now they are.
2023-10-10 12:05:06 +02:00
Campbell Barton
bb9b60f13d Fix build error Windows with ssize_t not being defined 2023-10-10 19:03:31 +11:00
Hans Goudey
ab9716f058 Cleanup: Access mesh bounds directly
Similar to 4eeabd274e, helps simplify fix to #111120
2023-10-10 09:31:20 +02:00
Christoph Lendenfeld
0c2afa7c17 Fix #111553: Double IK constraint not working
It seems that the code only ever converted the
first IK constraint found into a `PoseTree`.
Before #110417 constraints with zero influence were
skipped so it worked, except for the bug with the depsgraph.

After this patch the logic is the following:
From top to bottom of the constraint stack,
keep adding constraints until the first constraint with influence is added.

This ensures, that if there is only one disabled constraint,
it still gets converted into a `PoseTree`,
which is needed for the depsgraph to work correctly.

The resulting behavior from adding the first active constraint is
that the higher in the stack the constraint is, the higher its priority.

To achieve that I split off a helper function `find_ik_constraints`
that populates a vector of `bConstraint` pointers.
The code to create the `PoseTree` is still largely the same,
except I moved a few variables closer to where they are used.

Pull Request: https://projects.blender.org/blender/blender/pulls/113056
2023-10-10 09:06:28 +02:00
Campbell Barton
780bb012ce Fix integer overflow in ED_draw_imbuf_method
Prevent int overflow calculating the size of an image buffer.
2023-10-10 18:01:13 +11:00
Campbell Barton
34899ec13d Fix crash when the animation player fails to create a texture 2023-10-10 18:00:05 +11:00
Campbell Barton
7a503d160e BLI_mmap: open now checks for seek failing & exists early
Failure to seek would attempt to MMAP SIZE_T_MAX, while this would
likely fail, prefer an explicit error check instead of relying on
unreasonable requests to be rejected.
2023-10-10 15:32:13 +11:00
Campbell Barton
ae6b1ead4c Fix failure to check the error value for file-size access
Accessing the file size returns -1 on error, for file packing this
was passed directly to an allocation which would wrap around to
SIZE_T_MAX and fail to allocate. In other cases zero was treated
as an error value but -1 wasn't.

Add checks for the error return value, also warn that packing files over
2gb isn't supported.
2023-10-10 14:56:30 +11:00
Campbell Barton
cb51cc7ce8 Fix OpenEXR leak, failure to close a file when BLI_mmap_open fails 2023-10-10 14:16:04 +11:00
Campbell Barton
8b5d271c5c Fix playing back image files over 2gb in the animation player
Use size_t to store the file size.
2023-10-10 14:01:23 +11:00
Campbell Barton
3307e0afe8 Fix crash on startup with large images in the animation player
The image size was used to set the window size, large values could
make the window fail to create it's GPU context.

Resolve by constraining window size by the main display dimensions.

Even in cases where the window would succeed to create its generally
not useful to have a window larger than the screen size.
2023-10-10 13:57:44 +11:00
Campbell Barton
e03fd667f2 Fix clipped text with the animation player
The text was drawn at the very bottom left of the window.
2023-10-10 11:04:36 +11:00
Campbell Barton
256ace4c57 Fix animation player scrubbing with multiple file arguments
While passing in multiple files is supported, scrubbing both images
an movies wasn't working properly when multiple files were passed in.

For images, arguments such as "*.png" expand to multiple image files
which were each assigned a frame index of 0, this would play but stopped
scrubbing from working completely.

For movies, passing in multiple files would play back all files but
only properly scrub the first file, if other videos were longer than
the first scrubbing would jump to those.

Resolve by starting the frame index where the previous files left off.

Also resolve divide by zero when showing the indiciator for a single
frame.
2023-10-10 11:04:36 +11:00
Hans Goudey
976eaae02f Cleanup: Move BKE_object.hh to C++
Simplifies the fix to #111120, where the object bounds functions
may return a C++ type instead of `BoundBox`.

Pull Request: https://projects.blender.org/blender/blender/pulls/113462
2023-10-09 23:41:53 +02:00
Hans Goudey
4eeabd274e Cleanup: Access mesh bounds more directly
Simplifies the fix to #111120, because it is clearer that the threadsafe
Mesh access is used rather than the potentially problematic object-level
bounds access.
2023-10-09 22:31:31 +02:00
Harley Acheson
1d141e721c Fix #109968: Allow Warping on Actual Mouse Bounds
For Color Circle (and Square) and for Walk Navigation, use the actual
region bounds for mouse warping.

Pull Request: https://projects.blender.org/blender/blender/pulls/113066
2023-10-09 22:09:04 +02:00
Harley Acheson
ec59d5eac0 Fix #113008: VIEW3D Header Overlap With No Transparency
Do not treat the VIEW3D Header as overlapped if fully opaque. This
allows opening the Header Context menu from any part of it when without
transparency.

Pull Request: https://projects.blender.org/blender/blender/pulls/113032
2023-10-09 18:55:17 +02:00
Philipp Oeser
78489af86a Fix #113346: Append/Link fails if no name is specified
Removing one unnecessary check in wm_link_append_exec that caused us to
error out even though multiple files are selected. This removed check
is also done later on in the function so safety is still ensured.

Pull Request: https://projects.blender.org/blender/blender/pulls/113350
2023-10-09 18:29:49 +02:00
Harley Acheson
35d3d52508 UI: Search All Menus with Space Bar
Allow initiating the search of any named menu by pressing space bar.

Pull Request: https://projects.blender.org/blender/blender/pulls/113299
2023-10-09 16:56:16 +02:00
Bogdan Nagirniak
7d7e3d0986 Fix Hydra Storm border rendering being wrong in the viewport
Pull Request: https://projects.blender.org/blender/blender/pulls/113376
2023-10-09 16:01:58 +02:00
Miguel Pozo
2b805e777a Fix: Workbench: resolve_shader_cache initialization 2023-10-09 12:10:56 +02:00
Jacques Lucke
fbfeb24588 Fix #113416: never show inspection index warning when set to zero 2023-10-09 11:45:25 +02:00
Iliya Katueshenock
26346464e0 Fix #110666: Copy built-in attributes for masked curves type conversion
Curve type conversion can cause changing of some curves size.
Also, changing of curve type can cause deletion of unnecessary
built-in attributes and creating new ones. All of this make sense
only for converted curves. Others, unselected, should simply make
copy all old attributes, both built-in and not. This fix simply replaces
the last copy from incorrect only non-built-in, to a correct one,
for all attributes.

Pull Request: https://projects.blender.org/blender/blender/pulls/110683
2023-10-09 10:44:35 +02:00
Harley Acheson
49c62e8e16 Fix #111666: Hide Mouse in Redo Panel Inputs
When grabbing cursor with "hide" option then also hide the mouse
cursor, and show again when done.

Pull Request: https://projects.blender.org/blender/blender/pulls/113428
2023-10-08 22:18:53 +02:00
Jesse Yurkovich
4a57a56f87 Fix #113387: Memory leak with Separate by Loose Parts
Mistake in 118ec54ec7

Free the `groups` array before returning.

Pull Request: https://projects.blender.org/blender/blender/pulls/113402
2023-10-08 00:21:31 +02:00
Jacques Lucke
331247fcee Fix: don't set repeat zone output twice 2023-10-07 23:14:04 +02:00
Jacques Lucke
e299c41312 BLI: assert that hash of key is the same after inserting it in hash table
These asserts would have caught the issue fixed in the previous
commit earlier.
2023-10-07 23:14:04 +02:00
Jacques Lucke
262c67d36b Fix: instance reference does not compare equal to copy of itself
A copy has to compare equal to itself and have the same hash
when it is supposed to be used as a reference in a hash table
like `VectorSet`.

Just making the hash not change during a copy by hashing the
geometry component pointers instead of the geometry-set pointer
does not work because of `geometry_set_from_reference` which
assumed that changing the geometry set does not change the
hash of the reference.

For now the solution is to just not use a hash table as this
makes it easier to get corretness right. Instead, just use a
regular `Vector` to store all the references which avoids
the need for a hash function.

This can now lead to some O(n^2) behavior when adding many
references. Fortunately, this is not too common yet, as usually
one has few references but many instances that use those.
It's still something that has to be solved at some point. It's
not clear yet what approach would work best:
* Reintroduce `VectorSet` for the references and properly update
  the reference positions in the hash table after the references
  have changed.
* Add a separate `Map<Object*/Collection*, int>` for the
  deduplication.
* Do deduplication on the call-site of `add_reference` by building
  a temporary map there.
2023-10-07 23:14:04 +02:00
Germano Cavalcante
4abd59e204 Fix #113320: 'Automatic Constraint' not working in 2D editors
Caused by 586ffcd669

The condition `(t->flag & T_2D_EDIT)` went unnoticed.
2023-10-07 12:08:06 -03:00
Hans Goudey
e59a2b9a21 Fix: Incorrect rotation from 3D cursor tool node
The 3D cursor's quaternion and euler storage are not always in sync.
The quaternion rotation should be retrieved by speciffic functions,
which I had previously missed.
2023-10-07 09:08:06 -04:00
Bastien Montagne
5f7f6b65f3 Fix (unreported) crash in 'startup.blend' GP default update code.
This commit fixes two different issues in
`BLO_update_defaults_startup_blend`:
* No check were done whether a given 'paint mode' tool settings actually
  exist or not before trying to 'update' it, leading to hard crash when
  some did not.
* Only the first Scene in loaded 'startup' Main would be processed -
  nothing prevents a `startup.blend` file to have more than one scene!
2023-10-06 20:19:26 +02:00
Jacques Lucke
b04f006a4c Fix: dynamic node declaration is not resetting update-skip flag 2023-10-06 18:37:46 +02:00
Miguel Pozo
c6194afc41 Fix: Workbench: Missing texture flag
Drawing volumes would trigger an assertion after fe39456ba5.
2023-10-06 17:48:40 +02:00
Jacques Lucke
2fdb38f972 Fix: failing string search test 2023-10-06 17:27:48 +02:00
Germano Cavalcante
cf93c16775 Fix #112580: Limit Constraint with 'Affect Transform' not working properly in 'World Space'
The problem is observed with the "Limit Distance" and "Limit Location"
constraints.

There is an incorrect usage of `td->mtx` and `td->smtx` when converting
`TransData` space from local to global.

In this case, the code is concatenating matrices instead of converting
the location component space.

Also, these matrices only inform the global transformation components
of rotation and scale. They do not include location.

Since the "Limit Distance" and "Limit Location" constraints only require
the location component, it is not necessary to convert the rotation and
scale components.

So, the solution is to convert the location component space instead of
concatenating matrices.

Pull Request: https://projects.blender.org/blender/blender/pulls/112601
2023-10-06 12:19:53 -03:00
Jacques Lucke
0aa91a30dd Fix #113092: take highlighted part of search item into account in more places
When using menu-search, only the last part of a search item is highlighted.
When sorting the search results, this should be taken into account and
the highlighted words should be prioritized.

This was already partially implemented in 56e98f8ba6. Now it's also
taken into account with prefix search. For example, `TC` now prefers
`Input > Texture Coordinate` over `Texture > Checker Texture`.
2023-10-06 16:38:45 +02:00
Jacques Lucke
046155572d UI: use recent search for weighting only if the query is short
The idea is that accessing recent searches is mostly only useful when actually
searching for something very recent, which means that it would show up at the
top even if the query is empty or extremely short. If the user is typing a longer
query, it likely means that what is at the top is not what is actually desired, so
it's better to not take recent searches into account anymore.

Pull Request: https://projects.blender.org/blender/blender/pulls/113338
2023-10-06 16:16:07 +02:00
Miguel Pozo
fe39456ba5 Workbench: Fix: Performance Regressions
Optimize Workbench performance so it's on par with the previous
implementation.
Most of these changes are barely noticeable on powerful GPUs,
but can cause a notable performance improvement on old or low-end
hardware.

* Avoid unnecessary texture copies and draw directly to the viewport
   textures.
* Optimize-out depth/stencil reads, using stencil testing instead.
* Avoid using `Texture::clear` and use framebuffer clears instead.
* Avoid framebuffer state changes (always use the same attachments).
* Avoid constant variation of acquired `TextureFromPool`s.

Fix #113010

Pull Request: https://projects.blender.org/blender/blender/pulls/113251
2023-10-06 15:31:44 +02:00
Iliya Katueshenock
1a30e0597b Fix #113095: deduplicate attributes in search
Pull Request: https://projects.blender.org/blender/blender/pulls/113097
2023-10-06 14:41:33 +02:00
Jacques Lucke
271f634a84 Fix #113319: crash with out of bounds index in curve sample node
This was broken in 5063f7a725.
2023-10-06 13:58:17 +02:00
Christoph Lendenfeld
d85e7f4577 Fix #87160: Clean Keyframes only works if channels are selected
The issue was that the code filtered for selected channels,
while the expectation was that it would only filter for selected keys.

This PR changes the behavior of the operator in the following way:
* when "Clean Channels" is **disabled**, it will clean only selected keyframes, regardless of the channel selection
* when "Clean Channels" is **enabled**, it will clean selected channels regardless of keyframe selection

The same logic was applied to the Graph Editor code.
It only makes a difference in the case when "Clean Channels" is enabled.
That is because channels were automatically selected when a key was selected.

In addition to that I moved the menu entry for "Clean Channels" to the channel menu
to reduce confusion.

Another solution would have been to make the Dope Sheet select channels
when keys are selected. This might still be done in the future, but I think the
only correct fix is to change the actual operator behavior.

Pull Request: https://projects.blender.org/blender/blender/pulls/113335
2023-10-06 13:51:04 +02:00
Leon Schittek
8d15783a7e UI: display invalid cache as striped lines in the timeline
Unify the way the different state's of a cache are shown in the timeline:
* Baked: fully opaque
* Cached: slightly transparent
* Invalid cache: slightly transparent, dark diagonal stripes

This improves accessibility since patterns are easier to recognize
for colorblind or otherwise visually impaired people.

The slight transparency is done with an alpha of 0.7 and the diagonal
stripes use the cache's color at 50% value.

Implements #108196.

Pull Request: https://projects.blender.org/blender/blender/pulls/108481
2023-10-06 13:12:16 +02:00
Pratik Borhade
b5ebf31fb1 Fix #113022: Disabled menu item's text uses inner color
This fails to differentiate between active buttons and disabled buttons
for some custom themes (and also in blender light theme)

Instead use text color with 0.5 alpha value for disabled item's text.
(Don't blend between text and inner color)

Pull Request: https://projects.blender.org/blender/blender/pulls/113082
2023-10-06 12:54:14 +02:00
Sybren A. Stüvel
4c64c34f49 Fix #110874: Anim: Theme confusion with 'Pose Bone' label
Update the label of the "Bone Pose" theme setting to "Bone Pose Selected".
That is now consistent with the already-existing "Bone Pose Active"
label.

Also add tooltips that clarify what these theme colors are used for.
2023-10-06 11:46:52 +02:00
Campbell Barton
35edcf2ed6 Fix #107594: Phantom cursor motion when resizing windows under Wayland
Resizing a window in Wayland caused cursor motion events in the window
which could be seen as buttons flashing when the cursor was detected
as hovering over buttons.

This was caused by two bugs:

- Missing checks for failure to access the cursor location before
  converting the coordinates from GHOST to screen-space meant the
  wmWindow::eventstate location would move each time the location
  was updated.

- Resizing the window wasn't detecting state changes and would
  continuously send window activation events. Window activation set
  wmWindpw::addmousemove which triggered the previous bug, making the
  cursor flicker during resize.

This commit only addresses the first issue, where failure to access
the cursor location wasn't accounted for
(window activation will be fixed separately).

All GHOST_GetCursorPosition & wm_cursor_position_get calls now account
for failure, resolving uninitialized stack memory use in some cases.

This resolves similar issues for macOS, WIN32 & X11 although it seems
likely these platforms rarely fail to access the cursor location.
2023-10-06 17:12:32 +11:00
Jeroen Bakker
c801c73d79 Python: Update BGL Deprecation Warning
BGL is deprecated and will not work on Metal devices. Although the
inital plan was to remove it in Blender 4.0, We don't see any harm
to still have it in the code-base until OpenGL itself is deprecated.

Add-on developers are warned when using the BGL module that the
add-on/script will not work on all platforms.

There are still some limitations inside the GPU module that needs
a more friendly API. This API isn't clear at this time.

Pull Request: https://projects.blender.org/blender/blender/pulls/112579
2023-10-06 07:37:44 +02:00