Better cleaning of logger objects in the Python Swig wrapper
Summary
!405 (merged) added several classes to redirect logs from otb to the python console. Several type of logs are handled, and this MR corrects a bug caused by the ProgressReport logs. A progress report log is for example
Writing /tmp/out.tif...: 100% [**************************************************] (0s)
since !405 (merged), this type of log was managed with the ProgressReportManager class, this class contains a std::vector of watchers (StandardOneLineFilterWatcher) to build the logs for different processes, and a logOutputCallback to redirect the logs to Python. There was one ProgressReportManager for all applications (created when importing the otbApplication module`) and watchers were added to it every time an application was created. But these watchers were never destroyed which caused the memory consumption of otb to grow over time (See this thread on the forum).
With this MR each application has its own instance of ProgressReportManager as attribute, and thus the watchers are correctly released on application destruction.
Also the ProgressReportManager class now use smart point instead of new/delete to manage memory.
Copyright
The copyright owner is CNES and has signed the ORFEO ToolBox Contributor License Agreement.
Check before merging:
- All discussions are resolved
- At least 2
👍 votes from core developers, no👎 vote. - The feature branch is (reasonably) up-to-date with the base branch
- Dashboard is green
- Copyright owner has signed the ORFEO ToolBox Contributor License Agreement
- Optionally, run
git diff develop... -U0 --no-color | clang-format-diff.py -p1 -ion latest changes and commit