Scope lifetime of rtw_image::fdata to load func#1724
Open
Scope lifetime of rtw_image::fdata to load func#1724
Conversation
The linear floating-point image data stored in the `rtw_image::fdata` member variable had a lifetime from image load to the class destruction. We don't need the original floating-point data after the image has been loaded. This change moves the floating-point data buffer inside the load() function. It is released before the load function returns. Resolves #1723
There was a problem hiding this comment.
Pull request overview
This PR refactors the rtw_image class to improve memory efficiency by reducing the lifetime of the floating-point image data buffer. The fdata member variable is converted from a class-level member to a local variable within the load() function, which is freed immediately after the byte conversion is complete rather than persisting until object destruction.
Key changes:
- Moved
fdatafrom class member to local variable inload()function - Updated
convert_to_bytes()to acceptfdataas a parameter instead of accessing it as a member - Simplified
width()andheight()methods by removing thefdata == nullptrcheck
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 5 comments.
| File | Description |
|---|---|
| src/TheRestOfYourLife/rtw_stb_image.h | Refactored rtw_image class to scope fdata locally within load(), eliminating class member and updating related methods |
| src/TheNextWeek/rtw_stb_image.h | Applied identical refactoring to scope fdata locally within load(), matching changes in TheRestOfYourLife version |
| books/RayTracingTheNextWeek.html | Updated documentation to reflect the code changes in rtw_image class |
| CHANGELOG.md | Added entry for the fdata lifetime improvement and standardized terminology in v4.0.2 section |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The linear floating-point image data stored in the
rtw_image::fdatamember variable had a lifetime from image load to the class destruction. We don't need the original floating-point data after the image has been loaded.This change moves the floating-point data buffer inside the load() function. It is released before the load function returns.
Resolves #1723