Skip to content

CI TESTING#24

Draft
psavery wants to merge 218 commits into
masterfrom
3.0
Draft

CI TESTING#24
psavery wants to merge 218 commits into
masterfrom
3.0

Conversation

@psavery

@psavery psavery commented Jun 1, 2026

Copy link
Copy Markdown
Owner

No description provided.

psavery added 2 commits June 1, 2026 10:32
These reflect the expected import paths in newer versions of scipy.
The older ones were deprecated.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
This allows volumes to be rendered that are greater than the
OpenGL limit (typically 2048 for many GPUs) by bricking them
together.

A single voxel of overlap is present between the bricks so that
no seams are displayed.

The bricking is only performed if the volume exceeds the limit
size, so all volume rendering is the same performance if it is
smaller than the limit.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
psavery and others added 27 commits June 13, 2026 20:31
We have historically used `vtkDataArray::GetRange()/GetFiniteRange()`,
but this function is not thread-safe (due to its cache), and we have
been calling it in a background thread. I recently ran into a segmentation
fault that is probably unlikely, but we want to avoid all crashes.

So we must compute the histogram range ourselves to avoid all crashes.

The result is actually cached one level up so this shouldn't affect
performance.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Previously, if we failed to read an HDF5 file (perhaps because it
was open for writing in another process), it would kill the whole
table setup.

This makes several steps in the PyXRF source more robust to errors
like this.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Otherwise, the warning gets swallowed and it just shows up as "fail".

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
This will help prevent flakiness in the CI

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
The first issue was another case of calling OpenGL code from a background
thread instead of the GUI thread. To fix it, we added a `ThreadUtils.h`
file that provides helper functions, which allows us to consolidate
repeated code sections. Then we used this helper function in the new
volume block sections.

We also made `m_node` a QPointer and guard against it being nullptr.
That prevents another crash.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
They were just not appearing before. This was not an issue in the
packaging.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Previous scaling wouldn't work since arrays with different shapes were
not allowed. This fixes the issue by cleaning the arrays out at the end
and then putting the new arrays (with the new shapes) in.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Previously, the dialog pop-ups, including the operator dialogs, could
show up behind the main window, or if you click the main window they
would move behind the main window. This is kind of annoying - the pop-up
dialogs should remain in front.

This adds a utility function that is utilized, as well as setting parents
correctly in all of the dialogs, that fixes the issue.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
massive rip out of the legacy tomviz pipeline components
fix reentrant histogram LUT rebuild crashing color-map rescale
Instead of mentioning the environment variable, mention the UI element.
The environment variable can be confusing since it automatically overrides
whatever is in the UI.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Export NvOptimusEnablement and AmdPowerXpressRequestHighPerformance
from the executable so NVIDIA and AMD drivers pick the discrete GPU
instead of the power-saving integrated one on hybrid laptops.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Push() ignored the image origin when converting the plane center to a
slice index, and pick points were mapped with the forward display
transform instead of its inverse. Dragging the slice arrow on a volume
with a nonzero origin, or one moved or rotated in the scene, made the
plane jump to a volume face or leave the volume entirely.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Crop keeps the vtkExtractVOI output extent, which starts at the crop
minimum rather than zero. SetSliceIndex() and GetSliceIndex() assumed
a zero extent minimum while SetPlaneOrientation() and the sinks are
extent-aware, so slicing a cropped volume placed the plane outside it.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Loading a state file left ports on the app-default medium because
the saved InMemory mode is omitted. Persistence changes and transient
data drops also emitted no signals, leaving stale port badges.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
We actually don't need the transpose because the output is already
how tomviz expects it.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
The modeless dialog held a raw Node pointer, so deleting the node
while the dialog was open left OK/Apply dereferencing freed memory
and crashing in markStale(). Close the dialog on nodeRemoved and
hold the node in a QPointer so the pointer can never dangle.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
RescaleTransferFunction operates on the proxy property, which still
contained the placeholder nodes spanning the full data range, making
Reset a no-op and Auto compress the window. Sync the stripped client
state first, and match ImageJ's auto-threshold progression.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants